Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ~~NOTOC~~ ====== 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. <WRAP center round todo> Öffne die folgende Datei im POV-Ray-Editor. {{ :lehrkraefte:snr:mathematik:klasse-2:2022-23:povray:torus-fuer-trafos.pov |}} * 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: <code povray> translate <0, -2, 3> </code> * 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 alle ''translate''-Befehle): <code povray> rotate <30, 0, 0> // Drehung um die x-Achse um 30 Grad und um 0 Grad um die anderen beiden Achsen. </code> * 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 um ''alpha'' Grad um die x-Achse, dann um ''beta'' Grad um die y-Achse und am Ende um ''gamma'' 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 alle ''rotate''-Befehle): <code povray> scale 0.5 </code> * Teste auch andere Streckfaktoren. </WRAP> ==== Aufgabe 1 ==== <WRAP center round todo> (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. </WRAP> <!-- VON IVO KOPIERT: ==== 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. Tip: Mit folgender Anweisung, innerhalb eines Objekts, können Sie dieses spiegelnd machen: <code povray> finish { phong 0.95 reflection {0.95} } </code> Spiegelnde Objekte leben von ihrer Umgebung. Fügen Sie z.B. einen Himmel hinzu. ==== 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: <code povray> // 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 } </code> ==== Aufgabe 3 ==== Folgender Code erzeugt einen halben Torus: <code povray> #declare rund = difference { // Halber torus (in x/z-Ebene, Teil mit positiver x-Koordinate torus {1, 0.2} plane {x, 0} } object{rund pigment{color rgb x} } </code> Bauen Sie daraus ein Kettenglied (mit zwei halben Tori und zwei Zylindern). Definieren Sie dann eine neue Variable (z.B. kettenglied) und stellen Sie dann wieder eine Kette dar. Mit Hilfe von [[lehrkraefte:blc:math:povray:while|Wiederholungen]], stellen Sie folgendes dar: * eine Kette mit vielen Gliedern * eine Kette die im Kreis geschlossen ist * ein Kettenhemd, mit runden gliedern (bzw. zwei-dimensionale Kette) * Hängende Kette entlang einer Parabel {{:lehrkraefte:blc:math:povray:kette2.jpg?direct&400|}} --> lehrkraefte/snr/mathematik/klasse-2/2022-23/povray/trafos.txt Last modified: 2023/06/28 07:07by Olaf Schnürer