7.5.2.11 Superfici
di Rotazione
Le superfici di rotazione (SOR, ovvero
surface of revolution) sono generate ruotando una curva attorno
all'asse delle y. La curva è composta di punti che descrivono la
dipendenza del raggio dall'altezza sull'asse di rotazione. La sintassi
dell'oggetto SOR è :
sor {
NUMERO_DI_PUNTI,
<PUNTO0>, <PUNTO1>, ..., <PUNTOn-1>
[ open ]
[ sturm ]
}
I punti da <PUNTO0>
a <PUNTOn-1>
sono vettori a due dimensioni composti dal raggio e dall'altezza corrispondente,
cioè la posizione sull'asse di rotazione. Questi punti sono collegati
insieme da una curva e ruotati attorno all'asse delle y, a formare l'oggetto
SOR. Il primo e l'ultimo punto sono utilizzati come punti di controllo
della curva. La funzione utilizzata per calcolare la curva che congiunge
i punti è simile alla funzione spline utilizzata per gli oggetti
lathe. La differenza è che gli oggetti SOR sono meno flessibili,
poiché devono sottostare alle leggi che regolano tutte le funzioni
matematiche e cioè che ad ogni punto dell'asse y deve corrispondere
al massimo un punto della funzione, cioè un valore di raggio. Non
si possono usare curve chiuse per un oggetto SOR.
La parola chiave open
ti permette di rimuovere le chiusure alle estremità dell'oggetto.
Se viene utilizzata, non si dovrebbe usare l'oggetto SOR in oggetti CSG,
poiché potrebbe dare risultati errati.
L'oggetto SOR è utile per creare bottiglie, vasi ed oggetti simili.
Un semplice vaso potrebbe essere :
#declare Vaso = sor {
7,
<0.000000, 0.000000>
<0.118143, 0.000000>
<0.620253, 0.540084>
<0.210970, 0.827004>
<0.194093, 0.962025>
<0.286920, 1.000000>
<0.468354, 1.033755>
open
}
Ci si potrebbe chiedere perché
ci sia bisogno di un oggetto SOR quando si ha già a disposizione
un oggetto 'lathe', molto più flessibile. Il motivo è molto
semplice. I test di intersezione con un oggetto SOR richiedono di risolvere
un'equazione di terzo grado, mentre un oggetto lathe richiede la risoluzione
di un'equazione di sesto (e si ha bisogno di una spline cubica per ottenere
la stessa gradualità nella curva). Dato che la maggior parte degli
oggetti SOR e lathe sono costituiti da parecchi punti, ciò comporterà
una grossa differenza nel tempo di rendering. Inoltre, le soluzioni dell'equazione
di terzo grado sono più accurate.
Se l'oggetto non viene calcolato correttamente, si può utilizzare
il metodo di Sturm, più lento, ma più accurato.
Le seguenti spiegazioni sono per il lettore interessato all'aspetto matematico
dell'oggetto SOR. Sebbene non sia necessario leggerle, possono essere d'aiuto
per capire come esso viene calcolato.
La funzione che viene ruotata attorno all'asse delle y per ottenere l'oggetto
SOR è :
r^2 = f(h) = A*h^3 + B*h^2 + C*h + D
Dove r è il raggio e
h è l'altezza. Dato che questa è una funzione cubica
in h, è sufficientemente versatile e permette di ottenere
curve regolari.
La curva stessa è definita da un insieme di n punti P(i),
con i che varia tra 0 ed n-1, che vengono interpolati utilizzando
una funzione per ogni segmento della curva. Un segmento j con j
che varia tra 1 ed n-3 va dal punto P(j) al P(j+1)
ed utilizza i punti P(j-1) e P(j+2) per determinare la pendenza
della curva alle estremità. Se ci sono n punti, otterremo
n-3 segmenti. Ciò significa che sono necessari almeno quattro
punti per ottenere una curva. I coefficienti A(j), B(j),
C(j), D(j) sono calcolati per ogni segmento per mezzo delle
equazioni :
dove r(j) è il raggio ed h(j)
è l'altezza del punto P(j).
La figura sotto mostra la configurazione dei punti P(i), la posizione
del segmento j, e la curva definita da questo segmento.
![]() |
Fig. 204 - J-esimo segmento di un gruppo di n-3 segmenti in una configurazione composta da n punti. Il punto descrive la curva di una superficie dii rotazione.
![]() |
![]() |
![]() |