// Last edited on 2003-04-12 07:55:43 by stolfi
#include "colors.inc"

#declare ctr = <  9.3, 2,   0 >;
// #declare cam = < -5.3, 2, -15 >;
#declare cam = < -15.3, 2, -5 >;

camera {
    location ctr + 1.2*cam
    right 1.2*x up 0.4*y
    look_at ctr
}
  light_source { 20*(vrotate(cam, -20*y) + 5*y) color 1.2*White }
  background {White}


  #declare i=0;
  #declare j=0;
  #declare k=0;
  #declare estante = box {< 1, 1, -3>,<3, 4,2>}
  #declare g= seed (123456);
  #declare r = 1*rand(g);
  #declare bola = sphere {<1,1,-2>,r}
  #declare anel = torus{r,r/3}
  #declare luneta= cylinder{<1,1,1>,<1.5,1,1.8>,r*0.5}
  #declare caixa= box{<1.1,1,-3>,<1.3,1.5,-2.5>}
  #declare pratileira= box{<0.9,1.3,-4>,<1.8,2.1,3>}


  #while (i<=5)
   #if (mod(i,2)!=0)
   union{
   difference{
   object{estante translate <i*2+i, 0,0> pigment{Blue}}
   object{pratileira translate <i*2+i, 0.7,0>pigment{White}}
   object{pratileira translate <i*2+i+1.3, 0.7,0>pigment{White}}
   object{pratileira translate <i*2+i, 1.7,0>pigment{White}}
   object{pratileira translate <i*2+i+1.3,1.7,0>pigment{White}}
   }

   #while (j<=i)
   object{bola translate <i*2+i, 1.6,j-3> pigment {color rgb <rand(g)*1,0,0>}}
   object{bola translate <i*2+i+1.2, 1.6,j-3> pigment {color rgb
<rand(g)*1,0,0>}}
   object{caixa translate <i*2+i, 2.2,j-3> pigment {color rgb
<0,3*rand(g),0>}}
   object{caixa translate <i*2+i+1.2,2.2,j-3>pigment {color rgb
<0,3*rand(g),0>}}
   #declare j=j+1;
   #end
   }
   #else
   union{
   difference{
   object{estante translate <i*2+i, 0,0> pigment{Green}}
   object{pratileira translate <i*2+i, 0.7,0>pigment{White}}
   object{pratileira translate <i*2+i+1.3, 0.7,0>pigment{White}}
   object{pratileira translate <i*2+i, 1.7,0>pigment{White}}
   object{pratileira translate <i*2+i+1.3,1.7,0>pigment{White}}
   }
   # while(k<=i)
   object{anel translate <i*2+i+1, 2.2,k-2.5> pigment {color rgb
<0,rand(g)*2-0.5,rand(g)*1>}}
   object{anel translate <i*2+i+2.5,2.2,k-2.5> pigment {color rgb
<0,rand(g)*2-0.5,rand(g)*1>}}
   object{luneta translate <i*2+i, 2.7,k-3.3> pigment {color rgb
<rand(g)*1,2*rand(g)-0.3,0>}}
   object{luneta translate <i*2+i+1.2,2.7,k-3.3> pigment {color rgb
<rand(g)*1,2*rand(g)-0.3,0>}}
   #declare k=k+1;
   #end
   }
   #end
   #declare i=i+1;
   #end