La directiva While con POV-Ray

Directivas 1. Transformaciones Lineales

En esta sección deseo demostrar algunos usos elementales de la directiva  while en POV-Ray.
En este los usos de while se utilizan para la colocación regular de objetos. Las muestras siguientes desean demostrar una  directiva sola y jerarquizada.

La directiva #while permite construir un bucle que, facilita el posicionamiento de múltiples objetos siguiendo un patrón, aunque puede servir para muchos mas usos.

Nota: Todos los archivos de la escena de POV-Ray de las muestras siguientes puedes descargarlas (extensión: pov, alternando también como archivos de texto del txt!). La mayoría de los archivos de la escena de POV-Ray de la muestra utilizan el archivo "axis_xyz.inc" del include para el sistema coordinado. Este archivo se puede descargar aquí: como archivo de "inc" o como archivo de "txt" ( renombrar archivo a "inc"!).

Primero consideramos una sola directiva while de la cual coloque pequeñas esferas a lo largo del eje de x axis de x = 5 a x = +5:

//------------------------------------
#declare Ball =
 sphere{<0,0,0>,0.5
	texture{pigment{color Red}
                finish {ambient 0.15
                        diffuse 0.85
                        phong 1}
               }
        }
#declare NrX = -5;     // start
#declare EndNrX = 5; // end
#while (NrX < EndNrX+1)
 object{Ball translate }

 #declare NrX = NrX + 1;  //next Nr

#end // ------------- end of loop ----




Archivo de la escena para POV-Rayo: pov o: txt


Ahora veremos un segundo ciclo que modifica valores de Z a Z=0 a Z=+5 y obtenemos un rectangulo completo de objetos identicos..
//------------------------------------
#declare Boxy =
 box {<0,0,0>,< 1,1,1> scale 0.5
 	texture{pigment{color White}
                finish {ambient 0.1
                        diffuse 0.9}}}
#declare DistanceX = 1.00;
#declare DistanceZ = 1.00;
#declare NrX = 0;      // startX
#declare EndNrX = 7;   // endX
#while (NrX < EndNrX) // <-- loop X
 #declare NrZ = 0;     // start
 #declare EndNrZ = 7;  // end
 #while (NrZ < EndNrZ) // <- loop Z
 object{Boxy
        translate}
  #declare NrZ = NrZ + 1;  // next NrZ
 #end // --------------- end of loop Z
 #declare NrX = NrX + 1;// next NrX
#end // ------------- end of loop X --


Archivo de la escena para POV-Ray: pov o: txt


Es posible modificar la directiva, con otra directiva adicional,de Y a Y=0 a Y= +5. Con este último ciclo obtenemos un cubo formado por objetos idénticos.

//------------------------------------
#declare DX = 1.00;
#declare DY = 1.00;
#declare DZ = 1.00;
#declare NrX = 0;      // startX
#declare EndNrX = 5;   // endX
#while (NrX < EndNrX)
 #declare NrY = 0;     // startY
 #declare EndNrY = 5;  // endY
 #while (NrY < EndNrY)
  #declare NrZ = 0;    // startZ
  #declare EndNrZ = 5; // endZ
  #while (NrZ < EndNrZ)
  object{Boxy
         translate
            
        }
  #declare NrZ = NrZ+1;// next NrZ
  #end // ---------- end of loop Z
 #declare NrY = NrY+1;// next NrY
 #end // ---------- end of loop Y
 #declare NrX = NrX+1;// next NrX
#end // ----------- end of loop X ----


Archivo de la escena para POV-Ray: pov o: txt


Con este último ejemplo las posibilidades de obtener transformaciones lineales a traves de while no se agotará en nuestro mundo tridimensional.

Manual original de: © Friedrich A. Lohmüller, 2004. Traducido y retocado por: brto71 -rendermania.org


Rendermania © Copyright 2002/2005 Rendermania.org