|
|
||
Die Konstruktion eines Sterns.Objekte: "box".
| ||
![]() |
![]() |
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. |
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 |
|