9.7.7  Bucles anidados de tipo mixto

Es perfectamente posible poner un bucle "for" dentro de un bucle de otro tipo, y viceversa. Otra vez, sólo se debe ser cuidadoso (con la experiencia se hace más sencillo).

Por ejemplo, suponga que queremos crear 50 esferas colocadas al azar dentro de la esfera de unidad.

Entonces la distinción es clara: Primero necesitamos un bucle para crear 50 esferas (uno tipo "for" es suficiente) y entonces necesitamos otro bucle dentro de él para calcular la ubicación de la esfera. Se parecerá a esto:

#declare S = seed(0);
#declare Index = 1;
#while(Index <= 50)

#declare Point = <2*rand(S)-1, 2*rand(S)-1, 2*rand(S)-1>;
#while(vlength(Point) > 1)
#declare Point = <2*rand(S)-1, 2*rand(S)-1, 2*rand(S)-1>;
#end

sphere { Point, .1 }

#declare Index = Index + 1;
#end

Hay algunas cosas importantes qué notar en este ejemplo específico: