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 14:59] Ivo Blöchliger [union] |
lehrkraefte:blc:math:povray:lektion2 [2017/05/05 09:33] (current) Ivo Blöchliger [torus] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Lektion vom Freitag 5. Mai 2017 ===== | ===== 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). | ||
- | ==== union ==== | + | ==== 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, | 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, | ||
Line 21: | Line 147: | ||
</ | </ | ||
+ | ==== 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 | ||
+ | |||
+ | {{: |