Transformationen
Aufgabe 1: Translationen, Rotationen und Streckungen (am Beispiel eines Torus)
Ein Torus ist eine Art
- Veloschlauch (genau dessen äussere Oberfläche).
Alternativ ist ein Torus die Oberfläche eines Rettungsrings oder eines Donuts.
Öffne die folgende Datei im POV-Ray-Editor.
- Verstehe, wie das Objekt
torus
definiert ist. - Translation = Verschiebung: Mit dem Befehl
translate
können Objekte verschoben werden. Teste dies, indem du direkt hinter der Zeile mit den vielen Sternen die folgende Zeile ergänzt:
translate <0, -2, 3>
- Teste auch Verschiebungen um andere Vektoren, um den Befehl
translate
besser zu verstehen. - Rotation = Drehung: Mit dem Befehl
rotate
können Objekte gedreht werden. Teste dies, indem du direkt hinter die Zeile mit den vielen Sternen die folgende Zeile ergänzt (lösche zuvor alletranslate
-Befehle):
rotate <30, 0, 0> // Drehung um die x-Achse um 30 Grad und um 0 Grad um die anderen beiden Achsen.
- Teste auch Drehungen um andere Winkel und um andere Koordinatenachsen, um den Befehl
rotate
besser zu verstehen. - Erklärung:
- Der Befehl
rotate <alpha, beta, gamma>
dreht zuerst umalpha
Grad um die x-Achse, dann umbeta
Grad um die y-Achse und am Ende umgamma
Grad um die z-Achse. - Alle Drehungen sind rechtsdrehend; dies bedeutet: Wenn der Daumen der rechten Hand in Richtung der Drehachse zeigt, wird das Objekt in Richtung der Finger um die Achse gedreht.
- Empfehlung: Jeweils nur um eine Koordinatenachse drehen
- Skalierung = Streckung: Mit dem Befehl
scale
können Objekte gestreckt werden. Streckzentrum ist der Ursprung des Koordinatensystems. Teste dies, indem du direkt hinter der Zeile mit den vielen Sternen die folgende Zeile ergänzt (lösche zuvor allerotate
-Befehle):
scale 0.5
- Teste auch andere Streckfaktoren.
Aufgabe 1
(Ausgehend von der in der vorigen Aufgabe verwendeten Datei:)
Verwende die gerade erlernten Transformationsbefehle translate
, rotate
und scale
, um eine Szene mit den folgenden Objekten zu erstellen. Sie enthält:
- einen ersten Torus (mit Schachbrettmuster wie in der vorigen Aufgabe), der auf der $x$-$y$-Ebene liegt (d.h. diese berührt);
- einen zweiten, genauso grossen Torus, der aus dem ersten durch Verschiebung in $y$-Richtung hervorgeht und diesen von aussen berührt.
- einen dritten Torus (ebenfalls auf der $x$-$y$-Ebene), der beide Tori von aussen berührt. Dieser Torus soll per scale erzeugt werden, so dass er genauso viele Schachbrettfelder hat wie die anderen beiden Tori.
Bonus
- Erstelle eine neue Szene aus zwei ineinander verschlungenen Tori: Der erste Torus liegt in beliebiger Lage, der zweite “umschlingt” diesen. Zusatz: Wähle die Radien so, dass der zweite Torus das “Loch” des ersten Torus ganz ausfüllt.
- Erstelle eine neue Szene aus mehrenen aufeinanderliegenden Tori, so dass der nächsthöhere Torus jeweils aus dem darunterliegenden durch Streckung um einen fixen Faktor (etwa 0.8) hervorgeht. Hinweis: Du wirst Pythagoras verwenden müssen.