Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
Geometrische Transformationen in POV-Ray
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial
  Geometrische
  Transformationen
   - Inhalt

    Elementare
    Transformationen
    - "translate<  ... >"
    - "rotate<  ... >"
    - "scale<  ... >"
    - Spiegelung

    Weitere
    Transformationen
    - "matrix<  ... >"
    - Scherung
    - transforms.inc

    - "transform {  ...  }"
       und "inverse"

    Vektoren und
    Transformationen

    Insert Menu Zusatz
    & Download
 
                                           

"rotate"   = rotieren, drehen
um eine oder mehrere Koordinatenachsen


rotation demo
rotate = rotieren, drehen
allgemeiner Syntax:
rotate <wx,wx,wz>
dies bewirkt eine Rotation (Drehung) eines Objektes um die jeweilige Koordinatenachse der 3 Grundrichtungen
um einen Winkel von wx Grad in x-Achse
um einen Winkel von wy Grad in y-Achse und
um einen Winkel von wz Grad in z-Achse.
Achtung: Die Drehung erfolgt nicht um eventuelle Symmetrieachsen durch den Mittelpunkt des Objektes und die Drehungen werden in der aufgezählten Reihenfolge ausgeführt!

"rotate< 0,90, 0>" bewirkt eine Drehung um die y-Achse um 90° (linkshändig positiv).
"rotate< 0,90,45>" bewirkt zuerst eine Drehung um die y-Achse um 90°
und dann eine Drehung um die z-Achse um 45°
"rotate< 0, 0,45> rotate< 0,90, 0>" bewirkt zuerst eine Drehung um die z-Achse um 45°
und dann eine Drehung um die y-Achse um 90°

Attention! Achtung:
Die Hintereinander-Ausführung von Drehungen
um verschiedene Achsen ist nicht kommutativ!

D.h. das Ergebnis ist von der Reihenfolge abhängig! Dies ist bei zu hastigem Erstellen von Szenenbeschreibungen eine häufig auftretende Fehlerquelle hohen Frust-Potentials!!!.

Attention! Achtung:
Die Drehung durch "rotate < , , >" erfolgt immer um die entsprechenden Achsen!
Will man dagegen eine Drehung eines Objektes um dessen Mittelpunkt bei <x1,y1,z1> um die x-, y- und/oder z-Richtung mittels rotate<xrot,yrot,zrot> bezüglich dieses Mittelpunktes erreichen, so muss man wie folgt vorgehen:
translate -<x1,y1,z1> // Erst zum Ursprung schieben! Minus beachten!
rotate<xrot,yrot,zrot>        // Dort drehen und dann ...
translate  <x1,y1,z1>  // zurück an seinen Platz schieben!

Samples rotation 640x480

Beispiel 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

Beispiel 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> }
//--------------------------------

Hinweis:
"rotate" kann sowohl auf Körper, als auch auf andere Objekte wie Lichtquellen, aber auch Texturen("texture"), Farbmuster ("pigment"), scheinbare Oberflächenverformungen ("normal") angewandt werden. Hierzu muss das entsprechende Kommando lediglich innerhalb der Klammern des entsprechenden Objektes stehen!


translate | rotate | scale | matrix | Scherung | transforms.inc | transform | Vektor-Transformationen
top

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