lehrkraefte:blc:math:povray:lektion2

Differences

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

Link to this comparison view

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 'translate' können Objekte verschoben werden, z.B.  
 +<code povray> 
 +sphere { <0,0,0>,
 +  pigment { color rgb x } // rot 
 +  translate <1,2,1> // Kugel hat jetzt neu (1,2,1) als Zentrum 
 +
 +</code> 
 +==== rotate ==== 
 +Mit 'rotate' können Objekte gedreht werden (rechtsdrehend um die $x$-, $y$- oder $z$-Achse). Winkelangabe in Grad.  
 + 
 +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 { <0,0,0>,<1,1,1>  // Einheitswürfel 
 +  pigment { color rgb y } // grün 
 +  rotate 45*z  // Dreht den Würfel nach rechts hinten 
 +
 +</code> 
 + 
 +==== scale ==== 
 +Mit 'scale' können Objekte gestreckt werden. Entweder wird der Streckfaktor als Zahl, oder ein Vektor mit Streckfaktoren in die 3 Achsenrichtungen angegeben: 
 +<code povray> 
 +sphere { <0,1,0>,
 +  pigment { color rgb z } // blau 
 +  scale <1,1,0.2>  // Streckt mit 0.2 in z-Richtung -> kommt flach heraus ;-) 
 +
 +</code> 
 +**Achtung**: Es wird immer bezüglich dem Nullpunkt gestreckt. Man sollte die Objekte um den Nullpunkt zentrieren (falls nötig mit 'translate'), dann strecken und am Schluss noch an die richtige Position schieben. 
 +==== torus ==== 
 +Ein Torus ist eine Art Veloschlauch. Dieser kann durch die Angabe von 2 Radien spezifiziert werden: Distanz von der "Radachse" zur Schlauchmitte und Radius des Schlauchrohres. Siehe  http://www.povray.org/documentation/view/3.7.0/288/ 
 + 
 +Ein so definierter Torus hat sein Zentrum immer im Ursprung und liegt in der $x/z$-Ebene. 
 + 
 +<code povray> 
 +torus {1, 0.1 
 +  pigment {color rgb x+y} // gelb 
 +
 +</code> 
 + 
 +<hidden Code-Vorlage für Torus (komplette Szene mit Koordinatensystem)> 
 +<code povray torus.pov> 
 +// Das ist ein Kommentar und bewirkt nichts. 
 +  
 +// 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 <15,5,8>    // Position der Kamera 
 +      look_at <0, 0, 1>    // Blickrichtung (erscheint im Bildmittelpunkt) 
 +      angle 35             // Ö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) 
 +
 +  
 +  
 +// Boden 
 +plane {  
 +  z,0        // Ebene, senkrecht zu z=<0,0,1>, mit Abstand 0 zum Ursprung 
 +  pigment {  // Schachbrett, durchsichtig (t steht für transmit, hier 80% lichtdurchlässig 
 +    checker color rgbt <1,1,1,0.8>, color rgbt <0.2,0.2,0.2,0.8> 
 +  } 
 +
 +  
 + 
 +// x-Achse  
 +cylinder { <-1,0,0>, <4,0,0>, 0.1  // Zylinder vom Ursprung 0=<0,0,0> zum Punkt 2*<1,0,0>=<2,0,0>, Raddiu 0.1 
 +  pigment { color rgb <1,0,0> }  // Farbe rot 
 +
 +  
 +cone { 4*x, 0.2, 4.4*x, 0  // Kegel von <2,0,0> zu <2.4,0,0>, Startradius 0.2, Endradius 0 
 +  pigment { color rgb x }  // Farble blau z=<0,0,1> 
 +
 + 
 +// 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 <2,0,0> zu <2.4,0,0>, Startradius 0.2, Endradius 0 
 +  pigment { color rgb z }  // Farble blau z=<0,0,1> 
 +
 +             
 +torus {1, 0.1 
 +  pigment {color rgb x+y} // gelb 
 +
 +</code> 
 +</hidden> 
 +==== Aufgabe 1 ==== 
 +Verwenden Sie 'rotate' und 'translate', um die Tori an die gewünschte Position zu bringen. 
 +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/y$-Ebene), der beide Tori von aussen berührt. Anstatt zu rechnen, vewenden Sie translate und rotate. 
 + 
 +==== 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: 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:
  
Line 21: Line 147:
 </code> </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/blc/math/povray/lektion2.1493902749.txt.gz
  • Last modified: 2017/05/04 14:59
  • by Ivo Blöchliger