Informationen für die nachfolgenden Aufgaben

  1. Variable:
  2. Es gibt globale (die fürs ganze Programm benötigt werden) und lokale (die nur für einen Programmteil benutzt werden) Variable.

    Die globalen Variablen werden mit #declare definiert und durch ein Semikolon abgeschlossen.
    Die lokalen Variablen werden mit #local definiert und durch ein Semikolon abgeschlossen.

    Beispiel für eine globale Variable ist eine eigene Farbdefinition, für eine lokale Variable ein Zähler in einer Zählschleife.

  3. Zählschleifen
  4. haben in PoVRay dieselbe Struktur wie in PHP:

            #local zaehler=0;
    
               #while (zaehler<13)
                  cylinder {0,0,0> <4,0,0> 0.4
                     pigment {Yellow}
                     rotate <0,0,zaehler*30>
    
                           }//Ende Zylinder
    
               #local zaehler=zaehler+1;
               #end   // probier's mal aus!
    


    Zunächst wird die Zählvariable initialisiert, dann folgt #while mit der Abbruchbedingung in runder Klammer, danach in aufzählender Form die Anweisungen.
    Die Zählvariable muss dann verändert werden, sodass die Abbruchbedingung auch erreicht werden kann, sonst gibt's eine Endlosschleife.!
    Die Schleife wird durch #end abgeschlossen.

  5. If-Abfragen
  6. kennst du ebenfalls aus PHP:

    #if (Bedingung)
       ......... Anweisungen............
    #else
       ......... andere Anweisungen.....
    #end


    Mehrfach-Abfragen mit switch, case und break werden ebenfalls analog der Syntax von PHP programmiert.

  7. Die Verwendung von mod (modulo)
  8. mod ist ein Schlüsselwort, um bei einer Division den ganzzahligen Rest zu bestimmen. So ist z.B 17 mod 3 = 2, denn 17 : 3 = 5 Rest 2.

    Syntax in PoVRay: mod (17, 3) liefert 2 als Ergebnis und kann gut in if-Abfragen eingebaut werden.

    Beispiel zum Einfärben der Koordinatenachsen mit modulo:

    Mit Hilfe einer Zählschleife werden kleine verschiedenfarbige Zylinder aneinander gesetzt, je nachdem, ob der Zähler gerade oder ungerade ist, d. h. ob bei einer Division durch 2 der Rest 0 oder 1 ergibt, wird die Farbe des Zylinders anders festgelegt.

        #local zae = - 10;
         #while (zae < 10)
           cylinder{<0,0,-zae>,  <0,0,-(zae+1)>, 0.1
             texture { #if (mod(zae, 2)=0) pigment {color Red}
                       #else pigment {color Blue}
                       #end
                      } // Ende Texture
                   }//Ende Zylinder
         #local zae=zae+1;
         #end
    
    


  9. Constructive Solid Geometry: (CSG)

  10. Die mathematischen Mengenoperationen Schnittmenge (intersection), Vereinigungsmenge (union) und Differenzmenge (difference) werden ebenfalls in PoVRay angeboten:

    Mit UNION. DIFERENCE und INTERSECTION können Körper zusammengesetzt werden:



    Beide Anweisungen werden zum Verbinden von verschieden Objekten zu neuen Objekten benutzt, solche Objekte kann man gemeinsam einfärben und / oder zusammen transformieren (scale, rotate, translate). So kann man z. B. ein Mensch-Ärgere-Dich-nicht-Männchen oder eine Schachfigur aus verschiedenen Grundkörpern zusammensetzen. Setzt man z.B. um ein programmiertes Koordinatensystem union {...........}, so kann es mit einem einzigen translate-Befehl verschoben werden, ebenso gedreht und / oder vergrößert. Auch genügt nun eine einzige Zuweisung eines Materials oder einer Farbe.


  11. Prozeduren (Oberbegriff zu Funktionen), in PoVRay Makros genannt
  12. sind Programmteile, denen Variablen übergeben werden. Diese werden dann in der Prozedur verarbeitet. Als Rückgabe an das Programm kann ein Objekt, ein Vektor, eine Zahl, ... vorkommen.

    Der Vorteil:
    eine Prozedur (Makro) ist immer wieder verwendbar. Jemand hat z.B. mit CSG einen Bleistift als Makro programmiert, dabei sollen die Variablen, Länge, Dicke und Farbe übergeben werden. Dann kann mit dem Aufruf Bleistift (10, 0.8, Red) ein Bleistift schnell programmiert werden, und viele weitere kleinere, größere, dickere, dünnere, gelbe, grüne, blaue ... können problemlos ins Bild integriert werden, ohne riesige Programmteile immer wieder kopieren zu müssen.

    Makros können dann in eine INCLUDE-Datei ausgelagert werden, sodass das Skript kurz und übersichtlich bleibt.


© 2010 Asti PoVRay-Site Mathematische Streiflichter Algorithmische Kunst