4.4.6 Poligoni.
I poligoni possono essere usati per
costruire oggetti planari con un numero qualunque di lati, come quadrati,
rettangoli, pentagoni, esagoni, ottagoni, ecc. Un poligono è definito
da un certo numero di punti che descrivono la sua forma. Dato che i poligoni
devono essere chiusi, il primo punto deve essere ripetuto allinizio ed
alla fine della serie dei punti. Nel prossimo esempio, costruiremo le lettere
P O V con un unico poligono. Cominciamo ad occuparci dei punti di cui abbiamo
bisogno per descrivere loggetto che vogliamo. Vogliamo che le lettere
si trovino sul piano x-y con la O centrata sullorigine. Le lettere si
estendono da y=0 ad y=1. Abbiamo quindi i seguenti punti per le lettere
(la coordinata z è uguale a zero e quindi può essere tralasciata).
Lettera P (poligono esterno): <-0.8, 0.0>, <-0.8, 1.0>, <-0.3, 1.0>, <-0.3, 0.5>, <-0.7, 0.5>, <-0.7, 0.0>
Lettera P (poligono interno): <-0.7, 0.6>, <-0.7, 0.9>, <-0.4, 0.9>, <-0.4, 0.6>
Lettera O (poligono esterno): <-0.25, 0.0>, <-0.25, 1.0>, < 0.25, 1.0>, < 0.25, 0.0>
Lettera O (poligono interno): <-0.15, 0.1>, <-0.15, 0.9>, < 0.15, 0.9>, < 0.15, 0.1>
Lettera V: <0.45, 0.0>, <0.30, 1.0>,
<0.40, 1.0>, <0.55, 0.1>, <0.70, 1.0>, <0.80, 1.0>,
<0.65, 0.0>
Sia la P che la O hanno un buco, mentre
la lettera V consiste di un solo poligono. Cominceremo dalla V perché
è più semplice da definire delle altre due. Creiamo un nuovo
file detto polygdem.pov e vi aggiungiamo il seguente testo.
camera {
orthographic
location <0, 0, -10>
right 1.3 * 4/3 * x
up 1.3 * y
look_at <0, 0.5, 0>
}
light_source { <25, 25, -100> color rgb 1 }
polygon {
8,
<0.45, 0.0>, <0.30, 1.0>, // Letter "V"
<0.40, 1.0>, <0.55, 0.1>,
<0.70, 1.0>, <0.80, 1.0>,
<0.65, 0.0>,
<0.45, 0.0>
pigment { color rgb <1, 0, 0> }
}
Come abbiamo già notato, il
poligono deve essere chiuso aggiungendo le coordinate del primo punto alla
fine della sequenza. Un poligono chiuso è sempre definito da una
sequenza di punti che termina con lo stesso punto con il quale è
iniziata.
Dopo avere fatto la V, continueremo con la lettera P. Dato che essa ha
un buco, dobbiamo trovare il modo di ritagliarlo dalla lettera iniziale.
Questo è molto semplice ; definiamo la parte esterna della
P, che è un poligono chiuso ed aggiungiamo la sequenza di punti
che descrive il buco, anch'essa un poligono chiuso. E' tutto quello che
c'è da fare. Nell'immagine ci sarà un buco dove i due poligoni
si sovrappongono. In generale, otterremo buchi tutte le volte che un numero
pari di poligoni si sovrappongono all'interno di una singola frase polygon.
Un sub-poligono è definito da una sequenza 'chiusa' di punti. La
lettera P consiste di due sub-poligoni, uno per la parte esterna ed uno
per il buco. Dato che il poligono che rappresenta il buco si sovrappone
all'altro, otterremo il buco. Dopo avere capito come funzionano sub-poligoni
multipli in una singola frase polygon,
è semplice aggiungere la O. Infine, otteniamo la parola P O V completa.
polygon {
30,
<-0.8, 0.0>, <-0.8, 1.0>, // Lettera "P"
<-0.3, 1.0>, <-0.3, 0.5>, // Parte esterna
<-0.7, 0.5>, <-0.7, 0.0>,
<-0.8, 0.0>,
<-0.7, 0.6>, <-0.7, 0.9>, // foro
<-0.4, 0.9>, <-0.4, 0.6>,
<-0.7, 0.6>
<-0.25, 0.0>, <-0.25, 1.0>, // Lettera "O"
< 0.25, 1.0>, < 0.25, 0.0>, // parte esterna
<-0.25, 0.0>,
<-0.15, 0.1>, <-0.15, 0.9>, // foro
< 0.15, 0.9>, < 0.15, 0.1>,
<-0.15, 0.1>,
<0.45, 0.0>, <0.30, 1.0>, // Lettera "V"
<0.40, 1.0>, <0.55, 0.1>,
<0.70, 1.0>, <0.80, 1.0>,
<0.65, 0.0>,
<0.45, 0.0>
pigment { color rgb <1, 0, 0> }
}
![]() |
Fig 29-La parola "POV" fatta con poligoni
![]() |
![]() |
![]() |