Home
- POV-Ray Tutorial
Trasformazioni
Geometriche
- Indice
Trasformazioni
di Base
- "translate< ... >"
- "rotate< ... >"
- "scale< ... >"
- Immagine speculare
Altre
Trasformazioni
- "matrix< ... >"
- scorrimento elastico
- transforms.inc
- "transform{ ...}"
e "inverse"
Vettori e
Trasformazioni
Insert Menu Add-on
& download
|
"rotate"
rotazione, girare intorno di un'asse
|
|
rotate = rotazione, girare intorno di un'asse
Sintassi generale:
rotate <wx,wx,wz>
questo causa una rotazione di un'oggetto intorno a un delle tre assi fundamentali
con un angolo di wx gradi intorno alle asse x,
con un angolo di wy gradi intorno alle asse y e
con un angolo di wz gradi intorno alle asse z.
Attenzione: Le rotazioni non sono applicati relativo di
uno assi qualunque di simmetria local del centro di un oggetto!
Le rotazioni saranno applicati in ordine come sono scritto!
|
"rotate< 0,90, 0>" causa una rotazione intorno a l'asse y con 90 gradi (senso à "mano sinistra" positive!).
"rotate< 0,90,45>" primo causa una rotazione intorno a l'asse y con 90 gradi e poi
un'altra rotazione intorno a l'asse z con 45 gradi.
"rotate< 0, 0,45> rotate< 0,90, 0>"
primo causa una rotazione intorno a l'asse z con 45 gradi
e poi un'altra rotazione intorno a l'asse y con 90 gradi.
Attenzione:
Sequenze di rotazioni intorno a assi differenti non sono commutativo - cioè non si puo scambiarle!
Cioè il resultato dipende al ordine d'applicazione!
Qui è un enorme potenziale di frustrazioni se non siamo abbastanza prudenti!!!.
Attenzione:
La rotation con
"rotate < , , >" è realizzata sempre intorno
gli assi delle coordinate!
Una rotatione di un oggetto con il centro à
<x1,y1,z1> intorno alle asse x, y o z
con rotate<xrot,yrot,zrot>
relativo il suo centro dobbiamo realizzare cosi:
translate -<x1,y1,z1> // Primo: muovere al centro di sistema di coordinate! Attenzione: minus!
rotate<xrot,yrot,zrot> // Qui voltare l'oggetto e poi ...
translate <x1,y1,z1> // spostare indietro al suo posto!
|
Esempio 1:
|
#declare YellowSmarty =
sphere{<0,0,0>,1
scale <1,0.5,1>
translate<4,0,0>
texture{
pigment{ color rgb<1,0.65,0>}
finish { diffuse 0.9
phong 1}}} //--
object{YellowSmarty rotate<0,0, 90>}
object{YellowSmarty rotate<0,0,105>}
object{YellowSmarty rotate<0,0,120>}
object{YellowSmarty rotate<0,0,135>}
object{YellowSmarty rotate<0,0,150>}
object{YellowSmarty rotate<0,0,165>}
object{YellowSmarty rotate<0,0,180>}
//---------------------------------
#declare Zylinder_1 =
cylinder{<0,0,0>,<0,3,0>,0.2
translate<0,0,5>
texture{
pigment{ color NeonPink}
finish { diffuse 0.9
phong 1}}} //--
object{Zylinder_1 rotate<0, 0,0>}
object{Zylinder_1 rotate<0, 15,0>}
object{Zylinder_1 rotate<0, 30,0>}
object{Zylinder_1 rotate<0, 45,0>}
object{Zylinder_1 rotate<0, 60,0>}
object{Zylinder_1 rotate<0, 75,0>}
object{Zylinder_1 rotate<0, 90,0>}
object{Zylinder_1 rotate<0,105,0>}
object{Zylinder_1 rotate<0,120,0>}
object{Zylinder_1 rotate<0,135,0>}
object{Zylinder_1 rotate<0,150,0>}
object{Zylinder_1 rotate<0,165,0>}
object{Zylinder_1 rotate<0,180,0>}
//---------------------------------- |
Esempio 2:
|
#declare Ring=
union{
object{YellowSmarty rotate<0, 0,0>}
object{YellowSmarty rotate<0, 30,0>}
object{YellowSmarty rotate<0, 60,0>}
object{YellowSmarty rotate<0, 90,0>}
object{YellowSmarty rotate<0,120,0>}
object{YellowSmarty rotate<0,150,0>}
object{YellowSmarty rotate<0,180,0>}
object{YellowSmarty rotate<0,210,0>}
object{YellowSmarty rotate<0,240,0>}
object{YellowSmarty rotate<0,270,0>}
object{YellowSmarty rotate<0,300,0>}
object{YellowSmarty rotate<0,330,0>}
cylinder{<0,-1,0>,<0,1,0>,0.2
texture{
pigment{ color NeonPink}
finish { diffuse 0.9
phong 1} } }
}// end of union //---------------
object{Ring}
object{Ring translate<4,1,4> }
//-------------------------------- |
Consiglio:
Possiamo usare "translate" anche con altri oggetti come
sorgenti di luce ("light_source"), testure ("texture"),
disegni di colori ("pigment") e con strutture simulate della superficie ("normal").
|
|