Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    Bedingte Anweisungen - Anwendungen -
English English English

Home
- POV-Ray Tutorial

  - Bedingte
    Anweisungen

  Verzweigungen
   #if(...) ... #else ... #end
    > in Schleifen
    - in Macros
    - in Animationen
    - Ein-/Ausschalten von Teilen
   #switch(...) #case(..) ...
          #range(..) ... #end
    - Auswahl-Listen

  Existenz-Überprüfungen
   #ifdef(...) #ifndef(...)
    - Check in Include-Dateien
    - Defaults in Include-Dateien

  Schleifen
  Prechecked, Postchecked,
  Count-controlled, Early-Exit
   #while(...)... #end
   #for(...)... #end
    - Beispiele:
    - Schleifen in POV-Ray
    - Schleifen, Sinus, Kosinus
                                       

Verzweigungen in Schleifen              

Ein Beispiel für den Gebrauch der Einfach-Verzweigung #if ... #else... #end in Schleifen:

a) Mit einer While-Schleife:
union{
 #local Nr = 0;     // Start-Wert
 #local EndNr = 20; // End-Wert
 #while (Nr< EndNr)
   sphere{ <0,0,0>,0.25
  #if(  Nr/2 = int(Nr/2) )
        // d.h. nur bei gerade Zahlen
        texture{ pigment{ color rgb<1,0.65,0>}
                 finish { phong 1}
               }
        scale<1,1.5,1>

  #else // bei ungeraden
        texture{ pigment{ color rgb<1,0,0.35>}
                 finish { phong 1}
               }
        scale<1.5,1,1>

  #end // end of "#if( Nr/2 = int (Nr/2)"
  translate<1,0.25,0>
  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 -------------------
a) Mit einer For-Schleife:
union{
 #local EndNr = 20; // End-Wert
//#for(Var.,Start,End,Step)
 #for (Nr, 0, EndNr-1, 1)
   sphere{ <0,0,0>,0.25
  #if(  Nr/2 = int(Nr/2) )
        // d.h. nur bei gerade Zahlen
        texture{ pigment{ color rgb<1,0.65,0>}
                 finish { phong 1}
               }
        scale<1,1.5,1>

  #else // bei ungeraden
        texture{ pigment{ color rgb<1,0,0.35>}
                 finish { phong 1}
               }
        scale<1.5,1,1>

  #end // end of "#if( Nr/2 = int (Nr/2)"
  translate<1,0.25,0>
  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 -------------------
#if ... #else ... #end

top

 
© Friedrich A. Lohmüller, 2010
homepage:http://www.f-lohmueller.de
 
Visitors:
(since May-1999)
Thanks for your visit!