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 all’inizio 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 l’oggetto che vogliamo. Vogliamo che le lettere si trovino sul piano x-y con la O centrata sull’origine. 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