Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:blc:math:povray:lektion2 [2017/05/04 13:49] – [Aufgabe 2] Ivo Blöchliger | lehrkraefte:blc:math:povray:lektion2 [2017/05/05 07:33] (current) – [torus] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ===== Lektion vom Freitag 5. Mai 2017 ===== | ||
| + | ===== Aufgabe 0 ==== | ||
| + | Studieren Sie folgende Abschnitte und probieren Sie die Codeschnipsel aus, indem Sie diese in eine Szene mit Kamera und Licht kopieren (und evtl. ein Koordinatensystem). | ||
| + | ==== translate ==== | ||
| + | Mit ' | ||
| + | <code povray> | ||
| + | sphere { < | ||
| + | pigment { color rgb x } // rot | ||
| + | translate < | ||
| + | } | ||
| + | </ | ||
| + | ==== rotate ==== | ||
| + | Mit ' | ||
| + | |||
| + | 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. | ||
| + | <code povray> | ||
| + | box { < | ||
| + | pigment { color rgb y } // grün | ||
| + | rotate 45*z // Dreht den Würfel nach rechts hinten | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== scale ==== | ||
| + | Mit ' | ||
| + | <code povray> | ||
| + | sphere { < | ||
| + | pigment { color rgb z } // blau | ||
| + | scale < | ||
| + | } | ||
| + | </ | ||
| + | **Achtung**: | ||
| + | ==== torus ==== | ||
| + | Ein Torus ist eine Art Veloschlauch. Dieser kann durch die Angabe von 2 Radien spezifiziert werden: Distanz von der " | ||
| + | |||
| + | Ein so definierter Torus hat sein Zentrum immer im Ursprung und liegt in der $x/ | ||
| + | |||
| + | <code povray> | ||
| + | torus {1, 0.1 | ||
| + | pigment {color rgb x+y} // gelb | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <hidden Code-Vorlage für Torus (komplette Szene mit Koordinatensystem)> | ||
| + | <code povray torus.pov> | ||
| + | // Das ist ein Kommentar und bewirkt nichts. | ||
| + | |||
| + | // Kamera | ||
| + | camera { | ||
| + | sky < | ||
| + | right < | ||
| + | location < | ||
| + | look_at <0, 0, 1> // Blickrichtung (erscheint im Bildmittelpunkt) | ||
| + | angle 35 // Öffnungswinkel der Kamera | ||
| + | } | ||
| + | |||
| + | // Lichtquellen | ||
| + | light_source { | ||
| + | < | ||
| + | color rgb < | ||
| + | } | ||
| + | light_source { | ||
| + | < | ||
| + | color rgb < | ||
| + | } | ||
| + | |||
| + | |||
| + | // Boden | ||
| + | plane { | ||
| + | z,0 // Ebene, senkrecht zu z=< | ||
| + | pigment { // Schachbrett, | ||
| + | checker color rgbt < | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | // x-Achse | ||
| + | cylinder { < | ||
| + | pigment { color rgb < | ||
| + | } | ||
| + | |||
| + | cone { 4*x, 0.2, 4.4*x, 0 // Kegel von < | ||
| + | pigment { color rgb x } // Farble blau z=< | ||
| + | } | ||
| + | |||
| + | // y-Achse | ||
| + | cylinder { -y, 4*y, 0.1 | ||
| + | pigment { color rgb y } | ||
| + | } | ||
| + | |||
| + | cone { 4*y, 0.2, 4.4*y, 0 | ||
| + | pigment { color rgb y } | ||
| + | } | ||
| + | |||
| + | // z-Achse | ||
| + | cylinder { -z, 4*z, 0.1 | ||
| + | pigment { color rgb z } | ||
| + | } | ||
| + | |||
| + | cone { 4*z, 0.2, 4.4*z, 0 // Kegel von < | ||
| + | pigment { color rgb z } // Farble blau z=< | ||
| + | } | ||
| + | | ||
| + | torus {1, 0.1 | ||
| + | pigment {color rgb x+y} // gelb | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | ==== Aufgabe 1 ==== | ||
| + | Verwenden Sie ' | ||
| + | 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/ | ||
| + | |||
| + | ==== 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} } | ||
| + | </ | ||
| + | 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, | ||
| + | |||
| + | <code povray> | ||
| + | // Speichern in die Variable schneemann (wird noch nichts angezeigt) | ||
| + | #declare schneemann = union { | ||
| + | sphere { < | ||
| + | sphere { < | ||
| + | } | ||
| + | |||
| + | // Objekt gebrauchen: | ||
| + | object { schneemann | ||
| + | pigment { color rgb 1 } // Weiss | ||
| + | } | ||
| + | object { schneemann | ||
| + | pigment { color rgb x } // Rot | ||
| + | translate < | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== 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} | ||
| + | } | ||
| + | </ | ||
| + | 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: | ||
| + | * 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 | ||
| + | |||
| + | {{: | ||