7.6.8.8.2        Ripetizione



Il warp 'ripetizione' (repeat) fa sì che una parte del pattern venga ripetuta all'infinito. Taglia una 'fetta' del pattern e ne crea copie multiple affiancate. Questo tipo di warp ha molti usi, ma è stato originariamente concepito per riprodurre l'effetto tipico dell'impiallacciatura. L'impiallacciatura si ottiene ricavando fette di legno molto sottili da un tronco e incollandole su un altro materiale di supporto. L'effetto è quello di un motivo di anelli affiancati, ma ogni componente è in realtà spesso circa 8/10 di millimetro.
La sintassi per il warp
repeat è la seguente :

warp { repeat VETTORE offset VETTORE flip VETTORE }

Il vettore repeat specifica la direzione in cui il vettore si ripete e la larghezza dell'area che viene ripetuta. Questo vettore deve essere su un asse. In altre parole, due delle sue tre componenti devono essere uguali a zero. Ad esempio :

pigment {
wood
warp {repeat 2*x}
}

significa che da x=0 ad x=2 hai il pattern come è normalmente, ma da x=2 a x=4 ottieni lo stesso pattern, spostato di due unità nella direzione +x. Sfortunatamente si ottengono copie esatte e ciò non è molto realistico. Il vettore offset, facoltativo, trasla il pattern ogni volta che esso si ripete. Per esempio:

pigment {
wood
warp {repeat x*2 offset z*0.05}
}

significa che otteniamo la prima copia del pattern, da x=0 a x=2, con il pattern preso a z=0, ma tra x=2 e x=4 POV-Ray lo calcola per z=0.05. Nell'intervallo da x=4 a x=6 viene calcolato per z=0.10 ecc. In questo modo ogni copia del pattern è leggermente diversa dalla precedente. Non ci sono restrizioni sul vettore offset.
Infine, il vettore
flip (capovolgi) fa ribaltare il pattern nella direzione specificata. La prima copia del pattern nella direzione positiva non è ribaltata, mentre della seconda e di tutte le copie 'pari' otterremo l'immagine speculare. Il vettore flip è un vettore a tre componenti booleane, cioè ogni componente specifica se il pattern deve essere capovolto lungo un dato asse. Per esempio :

pigment {
wood
warp {repeat 2*x flip <1,1,0>}
}

significa che ogni copia 'pari' del pattern sarà capovolta rispetto agli assi x e y ma non rispetto all'asse z. Tutti i valori diversi da zero significano che il pattern deve essere capovolto.