Descrizioni ed esempi per POV-Ray di Friedrich A. Lohmüller
Trasformazioni Geometriche con POV-Ray -
English English English
Français français
Deutsch Deutsch

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


rotation demo
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! 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! 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!

Samples rotation 640x480

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>}
//----------------------------------
Samples rotation 640x480

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").


translate | rotate | scale | matrix | scorrimento elastico | transforms.inc | transform | trasformazioni di vettori
top

© Friedrich A. Lohmüller, 2006
www.f-lohmueller.de