Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
English   English English version

Oktagon - Achteck Themen Yin und Yang

 
Stern  

Die Konstruktion eines Sterns.

Objekte:    "box".
Methoden: "union", "intersection", "inverse", "#while"

Die Konstruktion im Detail Schritt für Schritt:

Wir verwenden als Ausgangsform einen Quader ("box"). Um eine klar definierte Länge der Strahlen der Sternfigur zu erhalten wird dieser Quader um den Faktor Wurzel aus 2 vergrößert. (Dann sind die Diagonalen seiner Flächen 2 Einheiten lang!)

  box { <-1,-1,-1>,< 1,1,1> 
        scale <1,1,1>*sqrt(2)
      }
Der Quader wird um die z-Achse um 45 Grad gedreht.

  box { <-1,-1,-1>,< 1,1,1> 
        scale <1,1,1>*sqrt(2)
        rotate<0,0,45>
      }
Dann wird der Quader in y-Richtung gestaucht und anschliesend um die x-Achse um 45 Grad gedreht. Diese Form wird danach als neues Objekt "Ray_Profile" deklariert.
  #declare Ray_Profile =
   box { <-1,-1,-1>,< 1,1,1> 
        scale <1,1,1>*sqrt(2)
        rotate<0,0,45>
        scale <1,0.36,1> 
      }
Das neue Objekt wird an der xy-Ebene in z-Richtung mittels "scale<1,1,-1>" gespiegelt und dann wird die Schittmenge ("intersection") der beiden so entstandenen Körper gebildet.
 intersection{
   object{ Ray_Profile }  
   object{ Ray_Profile scale<1,1,-1>}
   }
Um auch Sterne mit einer ungeraden Anzahl von Strahlen bilden zu können muß eine Hälfte dieser Form durch Subtraktion eines Quaders (=intersection mit dem Inversen) beseitigt werden. Die entstehende Figur bildet einen Strahl des Sterns und wird daher als neues Objekt "'Ray" deklariert.
#declare Ray =
 intersection{
   object{ Ray_Profile }  
   object{ Ray_Profile scale<1,1,-1>}
   box{<-2,-1,-1>,<0,1,1> inverse}
   }
Die Stahlen des Sterns werden nun mit einer While-Schleife um die y-Achse gedreht angeordnet. Beim rechten Bild wurde der Strahl mittels " scale<1,0,5,0.5> " schlanker gemacht.
Der so entstandene Stern besitzt einen Radius von 2 Einheiten.
union{
 #local Nr = 0;     // start 
 #local EndNr = 5;  // end
 #while (Nr < EndNr) 
 object{Ray rotate<0,Nr*360/EndNr,0>}
 #local Nr = Nr + 1;// next Nr
 #end // ------------- end of loop 
rotate<0,0,0> 
translate<0,0,0>  
} // end of union
Zugehörige Szenenbeschreibung für POV-Ray:
".txt"-Datei oder ".pov"-Datei


Oktagon - Achteck Themen Yin und Yang

© Friedrich A. Lohmüller, 2003     email email: (legacy email redacted)