4.4.2.1        Tipi di Componenti ed Altre Funzioni.



Quello che abbiamo visto fino ad ora è interessante, ma limitato. POV-Ray ha un po' di trucchi extra che rendono più utili i blob. Per esempio, come abbiamo visto , possiamo assegnare texture alle singole componenti dei blob e possiamo anche applicare trasformazioni individuali (traslare, ruotare, scalare) per stringere, torcere e schiacciare parti del blob a seconda delle nostre necessità. Forse ancora più interessante, il codice del blob è stato esteso a componenti cilindriche.
Prima di passare ai cilindri, dovrebbe forse essere detto che la vecchia descrizione delle componenti usata nelle precedenti versioni di POV-Ray funziona ancora. Allora tutti i componenti erano sfere e quindi non era necessario specificare
sphere oppure cylinder. Una componente 'vecchio stile' aveva la forma :
component STRENGTH, RADIUS, <CENTER>
Che ha lo stesso effetto di una componente sferica, come abbiamo già visto sopra. Questo serve solo per garantire la compatibilità all'indietro. Se abbiamo già file di POV-Ray con blob delle versioni precedenti, questo è il momento in cui abbiamo bisogno di riconoscere quelle componenti. Notiamo che le componenti 'vecchio stile' non mettevano parentesi graffe attorno a STRENGTH, RADIUS, <CENTER> e naturalmente, non possiamo trasformarle o assegnare loro materiali indipendentemente e così se stiamo semplicemente traducendo un vecchio file contenente blob in un nuovo file di POV-Ray convertire componenti 'vecchio stile' nelle nuove componenti (comunque sferiche) non porterebbe molti vantaggi. Ed ora, qualcosa di diverso : le componenti cilindriche. Si potrebbe obiettare che tutto quello di cui avevamo bisogno per descrivere una componente cilindrica in un blob era di mettere in fila molte componenti sferiche. Che va bene, se ci piace dovere scrivere di più e anche se assumiamo che questo cilindro sia orientato lungo un asse. Altrimenti dovremmo ricavarci la posizione matematica di ogni componente per tenerle in linea. Ora non più ! Sono arrivate le componenti cilindriche.
Rimpiazziamo il blob dell'ultimo esempio con questo e renderizziamo. A proposito, possiamo anche sbarazzarci delle sfere trasparenti.

blob {
threshold .65
cylinder { <-.75,-.75,0>, <.75,.75,0>, .5, 1 }
pigment { Blue }
finish { phong 1 }
}

Fig. 17-Blob cilindrico

Abbiamo solo una componente cilindrica in modo da poterne vedere la forma iniziale. Non è proprio un vero cilindro, assomiglia di più ad una salsiccia, essendo un cilindro chiuso da due semisfere. Pensiamolo come una linea di componenti sferiche lungo una linea retta. Come per la stessa dichiarazione della componente : semplice, logica, esattamente come ci saremmo aspettati (ammesso che siamo rimasti svegli fino ad ora) : assomiglia molto alla dichiarazione di un oggetto 'cilindro', con vettori che specificano le due estremità ed un valore che fornisce il raggio del cilindro. Ovviamente, l'ultimo valore è la forza della componente. Come per le componenti sferiche, la forza determinerà la natura ed il grado dell'interazione di questa componente con le sue compagne. Allora, diamo a questo ragazzo qualcosa con cui interagire, no ?