lehrkraefte:blc:math:povray:lektion3

Falls noch nicht gemacht, studieren Sie die Beispiele zu Wiederholungen mit einer while-Schleife.

Speichern Sie folgenden Code (bzw. kopieren Sie diesen) und erzeugen (rendern) Sie das Bild.

twister.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 <5,1,3>    // 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)
}
 
// Boden
plane { 
  z,-1        // Ebene, senkrecht zu z=<0,0,1>, mit Abstand -1 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>
  }
}
 
#declare n=32;  // Anzahl Schritte
#declare i=0;   // Variable, die im while-loop hochgezaehlt wird
#while (i<n)    // Solange wie i<n, wiederhole alles zwischen hier und #end
  cone { <0,0,0>, 0.1, 0.3*z, 0   // Kegel vom Nullpunkt mit Spitze auf z-Achse
    // Farbe. Sinus, Cosinus erwarten Argumente in Radiant (2*pi entspricht 360 Grad)
    pigment { color rgb <(cos(i*2*pi/n)+1)/2, (cos(i*2*pi/n+2*pi/3)+1)/2, (cos(i*2*pi/n+4*pi/3)+1)/2> }
    // Ein bisschen Transformationsmagie...
    rotate i/n*360*x
    translate y
    rotate i/n*360*z
    // Weil's halt schoen ist.
    finish { phong 0.95 reflection 0.99 conserve_energy }
  } // Ende des Kegels
  #declare i=i+1;  // Erhoehe die Variable i um 1
#end //while
  • Studieren und verstehen Sie die “Transformationsmagie” im obigen Code.
  • Ändern Sie den Code so ab, dass sich der Kegel zwei oder gar viel mal dreht.
  • Fügen Sie einen dünnen Torus mit Radius 1 um den Ursprung in der $x$/$y$-Ebene ein.
  • Ändern Sie den Code so ab, dass der Kegel “zentriert” auf dem Torus sind.
  • Studieren und verstehen Sie wie die Farbgebung im obigen Code funktioniert.
  • Was sind die “Frequenzen” und Phasen der Farbkanäle?
  • Verdoppeln Sie die Frequenz für rot.
  • Ändern Sie den Code so, dass die Kegel auf eine Spirale nach aussen laufen.
  • Die Spirale soll 2 oder 3 Umdrehungen machen.
  • Setzen Sie viele sich schneidende Kugeln zu einem Torus zusammen.
  • Verändern sie die $z$-Koordinate der Kugeln so, dass eine Federspiriale entseht.
  • Variieren Sie die $z$-Koordinaten der Kugeln mit einer Cosinusfunktion (der Torus verläuft dann wellenförmig rauf und runter).

Schneckenhäuser können durch “logarithmische” Spiralen beschrieben werden. Kurz, pro Umdrehung wird der Radius nicht um eine konstante Strecke grösser, sondern pro Umdrehung wird der Radius mit einer konstanten Zahl $\lambda$ multipliziert (typischerweise zwischen 1.2 und 3). Der Radius lässt sich als Funktion der Anzahl Umdrehungen $\omega$ beschreiben: $r(\omega)=r_0 \cdot \lambda^{\omega}$, wobei $r_0$ der Radius bei 0 Umdrehungen ist.

  • Ordnen Sie Kugeln entlang einer logarithmischen Spirale an. Die Spirale soll mindestens 3 Umdrehungen machen.
  • Programmieren Sie die Radien der Kugeln proportional zum Radius der Spirale.
  • Programmieren Sie die $z$-Koordinate der Kugeln proportional zum Radius der Spirale.
  • Fassen Sie Ihr Schneckenhaus mit union { …. } zusammen. Erzeugen Sie ein zweites “Schneckenhaus”, das den Gang darstellt. Dieses zweite Schneckenhaus kann vom ersten mit difference { haus1 haus2 } subtrahiert, bzw. ausgeschnitten werden.

Programmieren Sie eine Wendeltreppe.

  • lehrkraefte/blc/math/povray/lektion3.txt
  • Last modified: 2017/05/12 07:43
  • by Ivo Blöchliger