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
|
|
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°
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!!!.
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!
|
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>}
//---------------------------------- |
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!
|
|