Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    POV-Ray Beispiele - Die Erstellung von Objekten für POV-Ray
English English English

Home
- POV-Ray Tutorial

  - POV-Ray Beispiele
    Inhaltsübersicht
  - Geometrie
  - Architektur
  - Technik
    - Leiter
    - Masten
    - Geländer
    - Brücke
    - Röhren
    - Rohrabzweigung
    - Rohr-Absperrhahn
    - Kette
    - Drahtspule
    - Torpedo
    - Cruise Missile
    - Rakete
    - Rad
    - Truck
    - Propeller
    - Flugzeug
    - Kanu
    - Gitarrenbody
    - 7-Segment Display
    - Flachbandkabel
    - Kabelbaum
                                       
 
Wheel

Rad mit Speichen
- mit und ohne #while-Anweisung -

Ein Beispiel für die Verwendung von While-Schleifen
Objekte:    "torus", "cylinder", "sphere".
Methoden: "union", "#declare", "#while loop".

a) Ohne while-Schleife

 ...
#declare SpeichenAnzahl = 16;
#declare W = 360/SpeichenAnzahl;
//------------------------------------ wheel --
union{
torus{0.9,0.20 rotate<90,0,0>
         texture{Rim_tex}} // rim - Felge
torus{1.0,0.25 rotate<90,0,0>
         texture{Tiretex}} // tire - Reifen
 cylinder{<0,0,-0.10>,<0,0, 0.10>,0.20
         texture{Hub_tex}} // hub  - Nabe
 cylinder{<0,0,-0.12>,<0,0, 0.12>,0.15
         texture{Hub_tex}} // hub  - Nabe
//------------- ohne   #while loop:  -------<<1 
union{  // Speichen
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 0*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 1*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 2*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 3*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 4*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 5*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 6*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 7*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 8*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0, 9*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0,10*W>}
 cylinder{<0,0,0>,<1,0,0>,0.05 rotate<0,0,11*W>}
 texture{Spoke_tex}
 }
//----------------------------------------- <<2 
translate<0,1.25,0>
rotate<0,0,0>} // end of union
//----------------------------------------- end  
Example while loop

Statt der detailierten einzelnen Aufzählung sich nur gering verändernder Anweisungen kann man in derartigen Fällen eine Wiederholungs-Schleife verwenden. Dies reduziert nicht nur die Schreibarbeit beträchtlich (sicher: man kann Textpassagen auch mit "cut and paste" leicht vervielfältigen!), sondern erlaubt es auch die Anzahl der Elemente, ebenso wie die Schrittweite in der sie wiederholt werden sollen, problemlos und schnell zu verändern.

b) Mit while-Schleife

 ...
//or from <<1  until <<2
 // --- mit while loop ----------- >>1 
#declare Nr = 0;
#declare EndNr = SpeichenAnzahl;
// Speichen:
#while ( Nr < EndNr )
  cylinder {<-1,0,0>,<1,0,0>, 0.05
            rotate<0,0,360/EndNr*Nr>
            texture{Spoke_tex}}
  #declare Nr = Nr +1;
#end // --------------------------- >>2    
...
Example while loop
Zugehörige Szenenbeschreibung
für POV-Ray:
"wheel_1.txt"-Datei
oder "wheel_1.pov"-Datei

POV-Ray verwendet als Wiederholungs-Schleife die while-Schleife. Ob der zwischen "#while" und dem zugehörigen "#end" liegende Teil ausgeführt wird, entscheidet sich durch die hinter "#while" in Klammern stehende Bedingung. Dies geschieht bereits vor Ausführung der Anweisungen in diesem Teil.
Es handelt sich dabei um die aus Programmiersprachen bekannte "vorhergeprüfte Schleife" - sogenannter "pro-checked loop". Eine aus vielen Programmiersprachen mit dem Befehl "repeat ... until" bekannte "nachhergeprüfte Schleife" - sogenannter "post-checked loop" - gibt es in POV-Ray bislang nicht. Dies ist kein gravierender Mangel, da sich jede dieser Schleifen durch Umformulieren der Abbruchbedingung in eine Schleife der anderen Art umwandeln läßt.

With while-loops also the placing of many elements
is no problem:

Example while loop
Die Szenenbeschreibung für POV-Ray:
"wheel_2.txt" oder "wheel_2.pov"
top
© Friedrich A. Lohmüller, 2009
www.f-lohmueller.de