This is an old revision of the document!
Lektion vom Freitag 5. Mai 2017
translate
Mit 'translate' können Objekte verschoben werden, z.B.
sphere { <0,0,0>,1 pigment { color rgb x } // rot translate <1,2,1> // Kugel hat jetzt neu (1,2,1) als Zentrum }
rotate
Mit 'rotate' können Objekte gedreht werden (rechtsdrehend um die $x$-, $y$- oder $z$-Achse). Winkelangabe in Grad.
Rechtsdrehend heisst, dass wenn der Daumen der rechten Hand in Richtung der Drehachse zeigt, wird das Objekt in Richtung der Finger um die Achse gedreht.
box { <0,0,0>,<1,1,1> // Einheitswürfel pigment { color rgb y } // grün rotate 45*z // Dreht den Würfel nach rechts hinten }
scale
Mit 'scale' können Objekte gestreckt werden. Entweder wird der Streckfaktor als Zahl, oder ein Vektor mit Streckfaktoren in die 3 Achsenrichtungen angegeben:
sphere { <0,1,0>,1 pigment { color rgb z } // blau scale <1,1,0.2> // Streckt mit 0.2 in z-Richtung -> kommt flach heraus ;-) }
torus
Ein Torus ist eine Art Veloschlauch. Dieser kann durch die Angabe von 2 Radien spezifiziert werden: Distanz von der “Radachse” zur Schlauchmitte und Radius des Schlauchrohres. Siehe http://www.povray.org/documentation/view/3.7.0/288/
Ein so definierter Torus hat sein Zentrum immer im Ursprung und liegt in der $x/z$-Ebene.
torus {1, 0.1 pigment {color rgb x+y} // gelb }
Aufgabe 1
Verwenden Sie 'rotate' und 'translate', um die Tori an die gewünschte Position zu bringen. Laden Sie ebenfalls ihr Koordinatensytem (mit #include) in ihre Szene.
Erstellen Sie folgende Szenen:
- Torus, der auf der $x/y$-Ebene liegt (d.h. diese berührt).
- Einen zweiten, gleich grossen Torus, der in $y$-Richtung verschoben ist und den ersten von aussen berührt.
- Einen dritten Torus (ebenfalls auf der $x/y$-Ebene), der beide Tori von aussen berührt. Anstatt zu rechnen, vewenden Sie translate und rotate.
Aufgabe 2
Programmieren Sie drei Tori, die ineinander hängen und sich exakt von innen her berühren. Der mittlere Torus ist natürlich um 90 Grad gedreht.
union, declare, object
Objekte können zu einem Objekt zusammengefasst werden und dann als Ganzes manipuliert werden. Das ist vor allem dann nützlich, wenn man Objekt verschieben, drehen und/oder kopieren möchte:
// Speichern in die Variable schneemann (wird noch nichts angezeigt) #declare schneemann = union { sphere { <0,0,0.5>, 0.5 } sphere { <0,0,1.5>, 0.5} } // Objekt gebrauchen: object { schneemann pigment { color rgb 1 } // Weiss } object { schneemann pigment { color rgb x } // Rot translate <0,2,0> // Verschieben }