lehrkraefte:blc:math:povray:lektion4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:math:povray:lektion4 [2017/05/17 20:06] – created Ivo Blöchligerlehrkraefte:blc:math:povray:lektion4 [2017/05/19 08:06] (current) Ivo Blöchliger
Line 1: Line 1:
 +{{:lehrkraefte:blc:math:povray:vermessen.jpg?direct|}}
  
 +{{:lehrkraefte:blc:math:povray:vermessung.ods|}}
 +
 +===== Aufgabe 0 =====
 +
 +Speichern / Kopieren Sie folgenden Code und fügen den fehlenden Code unten ein (im Moment Kommentare).
 +
 +<code povray schnecke.pov>
 +// Kamera
 +camera { 
 +  sky <0,0,1>           // Vektor, der festlegt, wo oben ist.
 +  right <-4/3,0,0>     // Bildverhältnis 4:3, plus Spiegelung für rechtsdrehendes System
 +  location <10,2,5>    // Position der Kamera
 +  look_at <0, 0, 0>    // Blickrichtung (erscheint im Bildmittelpunkt)
 +  angle 30             // Öffnungswinkel der Kamera
 +}
 + 
 +// Lichtquellen
 +light_source { 
 +  <6,-2,8>              // Position des Lichts
 +  color rgb <1,1,1>     // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1)
 +}
 +light_source { 
 +  <3,10,3>              // Position des Lichts
 +  color rgb <1,1,1>     // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1)
 +}
 +
 +plane {z,0
 +  pigment  {granite scale 10}
 +  normal { bozo }
 +  finish { reflection 0.9}
 +}
 +
 +#declare umdrehung=-4; // Start der Umdrehungen
 +#declare ende=2;       // Ende der Umdrehungen
 +#declare sf=1.6;     // Streckfaktor pro Umdrehung
 +#declare schritte=50;  // 50 Schritte pro Umdrehung
 +  
 +#while (umdrehung<ende)    // Solange wie umdrehung<ende wiederhole alles zwischen hier und #end
 +  #declare r = pow(sf,umdrehung);  // sf hoch umdrehung
 +  
 +  //
 +  // Eine Kugel an die Position <0,r,0> mit kleinem Radius platzieren
 +  // und danach um umdrehung*360 um die z-Achse drehen
 +  //
 +  // HIER FEHLT IHR CODE
 +
 +  #declare umdrehung = umdrehung + 1/schritte;
 +#end //while
 +
 +</code>
 +
 +Das Bild sollte etwa wie folgt aussehen: {{:lehrkraefte:blc:math:povray:l4-a0-schnecke.png?direct|}}
 +
 +===== Aufgabe 1 =====
 +Variieren Sie jetzt den Radius der Kugeln so, dass der Kugelradius proportional zu $r$ ist.
 +Passen Sie eventuell die Kameraeinstellungen an. Mögliches Resultat: {{:lehrkraefte:blc:math:povray:l4-a1-schnecke.png?direct|}}
 +
 +===== Aufgabe 2 =====
 +Die $z$-Koordinate der Kugeln soll nun ebenfalls linear mit dem Radius variieren. Die $z$-Koordinate soll grösser (höher) für kleine Werte von $r$ sein und für grössere $r$ dann kleiner werden. Mögliches Resultat:{{:lehrkraefte:blc:math:povray:l4-a2-schnecke.png?direct|}}
 +
 +
 +===== Aufgabe 3 =====
 +Die **Modulo**-Operation 'mod(a,b)' berechnet den Rest der ganzzahligen Division a/b. Z.B. ist mod(128,10) = 8, MOD(128,5) = 3, mod(128,16) = 0, etc.
 +
 +  - Vor der while-Schleife, definieren Sie eine weitere Variable 'num' und initialisieren Sie diese auf 0.
 +  - Vor dem Ende der while-Schleife, zählen Sie die Variable 'num' um 1 hoch (inkremieren).
 +  - Mittels **if/else/end** können Dinge nur unter bestimmten Bedingung ausgeführt werden. Ersetzen Sie die "pigment-Zeile" der Kugel durch folgende fünf Zeilen, die je nachdem, die eine oder andere pigment-Zeile einfügen:
 +
 +<code povray>
 +    #if (mod(num,2) = 0)
 +      pigment {color rgb x}
 +    #else 
 +      pigment {color rgb z}
 +    #end
 +
 +</code>
 +Variieren Sie nun die Farbe der Kugeln (gibt wohl noch schönere Fabrkombinationen als rot/blau)...
 +Mögliches Resultat: {{:lehrkraefte:blc:math:povray:l4-a3-schnecke.png?direct|}}
 +
 +Es ist auch möglich ohne if/else/end auszukommen, indem man die Farbe wie folgt definiert:
 +<code povray>
 +    pigment { color rgb <mod(num,2), 0, 1-mod(num,2)> }
 +</code>
 +
 +===== Aufgabe 4 =====
 +Ersetzen Sie die Kugeln durch dünne Tori, so dass man ins Schneckenhaus hinein sieht. Z.B. so:
 +{{:lehrkraefte:blc:math:povray:l4-a4-schnecke.png?direct|}}
 +
 +===== Aufgabe 5 =====
 +Platzieren Sie auf jedem 7. Torus einen Stachel. Z.B. so: {{:lehrkraefte:blc:math:povray:l4-a5-schnecke.png?direct|}}
 +
 +===== Aufgabe 6 =====
 +Der Code von Aufgabe 5 enthält wohl einige Wiederholungen, was die Transformationen angeht. 
 +Vor der while-Schleife, definieren Sie ein Objekt 'teil', das in der $y/z$ Ebene um den Ursprung zentriert ist.
 +<code povray>
 +#declare teil = union {
 +   // lauter tolle Dinge hier (Kugel, Tori, Tori mit Stacheln etc...
 +}
 +</code>
 +
 +Das 'teil' wird jetzt in der while-Schleife verwendet und entsprechend transformiert und in der Grösse angepasst (scale):
 +<code povray>
 +   object { teil
 +      scale 0.5*r  // oder was auch immer passt.
 +      // veschieben und Drehen...
 +    }
 +</code>
 +
 +Das 'teil' kann nun selbst wieder mit einer while-Schleife definiert werden (innerhalb von union) um z.B. so etwas so erzeugen:
 +
 +{{:lehrkraefte:blc:math:povray:l4-a6-schnecke.png?direct&400|}}
 +
 +Ein einzelnes 'teil' ist in blau abgebildet. Das 'teil' besteht aus Kugeln, die in zwei Achsenrichtungen mit 0.2 gestreckt wurden.
 +
 +
 +===== Weitere Anregungen =====
 +  * Platzieren Sie Lichtquellen im Schneckenhaus drin
 +  * Variieren Sie die Farbe kontinuierlich (Farbverlauf, wie z.B. ein Regenbogen)
 +  * Drehen Sie das 'teil' zusätzlich um die Gangachse.