Difference between revisions of "HowTo:Use macros and loops"

From POV-Wiki
Jump to navigation Jump to search
(Add source tag for highlighting POV SDL)
Line 1: Line 1:
 +
Loops and Macros are usually created to do one set of code thousands of times. The beauty of the loop is that the code can reference an array or a spline to write a rollercoaster track or a roadway such that very complicated scenes can be created with the use of simple declared variables.
 +
 
== Loops ==
 
== Loops ==
Loops are usually created to do one set of code thousands of times. The beauty of the loop is that the code can reference an array or a spline to write a rollercoaster track or a roadway such that very complicated scenes can be created with the use of simple structures.
 
  
 
Loops may be constructed through the use of the #while statement. A typical loop may be constructed as follows.
 
Loops may be constructed through the use of the #while statement. A typical loop may be constructed as follows.
Line 31: Line 32:
 
#end
 
#end
 
</source>
 
</source>
 +
 +
== Macros ==

Revision as of 22:00, 8 December 2007

Loops and Macros are usually created to do one set of code thousands of times. The beauty of the loop is that the code can reference an array or a spline to write a rollercoaster track or a roadway such that very complicated scenes can be created with the use of simple declared variables.

Loops

Loops may be constructed through the use of the #while statement. A typical loop may be constructed as follows.

#declare step = 0;
#declare steps = 100;
#while (step <= steps)
  #sphere { step*x, 0.4 pigment {Blue} }
  #declare step = step + 1;
#end

Nested loops may be created to generate a two or three dimensional aspect to the scene. Beware that creating extra nested loops will dramatically increase the parse time for the scene.

The following nested loop will draw a series of Blue balls on the XZ plain

#declare xpos = 0;
#declare zpos = 0;
#declare xfinal = 10;
#declare zfinal = 10;
#while (xpos <= xfinal)
  #while (zpos <= zfinal)
    #sphere { <xpos,0,zpos> 0.4 pigment {Blue} }
    #declare zpos = zpos + 1;
  #end
  #declare xpos = xpos + 1;
  #declare zpos = 0;
#end

Macros