4.4.7.4        Estrusione Conica ed Affusolamento.



Nel nostro prisma, la frase linear_sweep è in effetti facoltativa. Questa specifica il tipo di estrusione (linear è il tipo predefinito) che viene adottato qualora non se ne specifichino altri. Esiste tuttavia un altro tipo di estrusione estremamente utile : l'estrusione conica. Il concetto è analogo a quello del prisma visto in precedenza, eccetto che mentre estrudiamo la nostra curva dalla prima quota alla seconda, la ingrandiamo dalle dimensioni di un singolo punto fino a quando, raggiunta la seconda quota, la curva ha ripreso le dimensioni originali della curva da cui l'abbiamo ottenuta. Per avere un idea di ciò a cui servono questi effetti, sostituiamo il nostro prisma con questo (vedi file prismdm5.pov)

prism {
conic_sweep
linear_spline
0, // quota 1
1, // quota 2
5, // il numero di punti che formano la curva...
<4,4>,<-4,4>,<-4,-4>,<4,-4>,<4,4>
rotate <180, 0, 0>
translate <0, 1, 0>
scale <1, 4, 1>
pigment { gradient y scale .2 }
}

Fig. 34-Creare una piramide Usando l'Estrusione Conica

La colorazione gradient è stata scelta per definire meglio il nostro oggetto senza dover mettere a posto subito luci e macchina fotografica, ma quando lo renderizziamo, cosa abbiamo ottenuto ? Una piramide a strisce orizzontali ! Per ora possiamo riconoscere la spline lineare che unisce i quattro vertici di un quadrato ed il famoso punto finale che serve per chiudere la curva.
Nota tutte le trasformazioni nella frase di dichiarazione dell'oggetto. Queste necessitano di una piccola spiegazione. La parte riguardante
rotate e translate è semplice. Normalmente un oggetto conico parte nel pieno delle sue dimensioni in cima e si restringe fino ad un punto per y=0, ma naturalmente otterremmo un oggetto capovolto, se vogliamo fare una piramide. Allora la capovolgiamo attorno all'asse delle x per metterla dritta e, dato che in effetti abbiamo ruotato la piramide intorno all'asse x, la trasliamo in modo di metterla nella stessa posizione in cui era quando abbiamo iniziato.
La parte relativa al comando
scale serve per proporzionare il tutto in modo che si adatti a questo esempio. La base è un quadrato di lato 8, ma l'altezza è di solo un'unità e quindi l'abbiamo ristretta un poco nel senso della larghezza. A questo punto pensiamo : "perché non traslare il quadrato di partenza da y=0 a Y=4 per evitare tutto questo lavoro ?" Ecco un punto importante ! Per vedere perché non funzionerebbe, proviamo a metterlo in pratica (vedi file prismdm6.pov). Assicuriamoci di rimuovere la frase scale e poi sostituiamo la linea

1, //quota 2

con

4, //quota 2

che regola la seconda quota a 4, poi renderizziamo di nuovo e vediamo se l'effetto è lo stesso.

Fig. 35-La stessa piramide con l'altezza modificata

Ehi ! L'altezza è corretta, ma la base della nostra piramide è immensa ! Cosa abbiamo sbagliato ? Semplice. La base, per come l'abbiamo descritta con i punti che abbiamo usato, si trova a y=1 indipendentemente dal valore della seconda quota. Ma se impostiamo la seconda quota ad un valore maggiore di 1, dopo che la piramide ha superato y=1, continua ad allargarsi uniformemente. Per evitare di perdere il controllo di un prisma conico, è sempre meglio impostare la seconda altezza ad 1 e usare un'istruzione scale per dimensionare l'altezza. In questo modo possiamo essere sempre sicuri che gli angoli della base restino dove vogliamo.
Questo conduce ad un'altra cosa interessante sulle estrusioni coniche. Cosa facciamo se per un qualche motivo non vogliamo che l'estrusione avvenga fino in cima ? Cosa facciamo se vogliamo ottenere, invece di una piramide, qualcosa che assomigli di più ad uno ziggurat ? Facile. Dopo avere rimesso ad uno la seconda quota ed avere rimesso a posto la frase
scale, cambiamo la linea

0, //quota 1

in

2 //quota 1

Fig. 36-Dopo aver aumentato la prima altezza

Quando renderizziamo di nuovo, vediamo che l'estrusione si ferma prima di finire in un punto, dandoci una piramide tronca. Quanto esattamente sia tronca dipende da quanto sono vicini i valori della prima e della seconda quota.