// Last edited on DATE TIME by stolfi
// Visão de Samsa - por Gilberto Sgarbi Filho - RA 001754
// ======================================================================

#declare ctr = <0, 0, 0>;
#declare camDir = < 40, 20, 12 >;

camera {
  location   ctr + 1.10*camDir
  right      -1.00*x
  up         0.75*y
  sky        y
  look_at    ctr
}
 

// ======================================================================
// FONTES DE LUZ

light_source {
  10 * < +50.0, +30.0, +50.0 >              // Posição da lâmpada.
  color rgb 1.2 * < 1.00, 1.00, 1.00 >   // Intensidade e cor da luz.
} 

light_source {
  10 * < +50.0, -10.0, +20.0 >             // Posição da lâmpada.
  color rgb 0.5 * < 1.00, 1.00, 1.00 >   // Intensidade e cor da luz.
} 

// ======================================================================
// DESCRIÇÃO DA CENA 

background{ color rgb < 0.75, 0.80, 0.85 > }

#declare raio = 2.5;

#declare cor_cristal =  < 0.60, 0.30, 0.70 >;
#declare tx_cristal =
  texture {
    finish { specular 1.5 roughness 0.01 }
    pigment { color cor_cristal}
  }

#declare corpo = 
  sphere {
    < 0, 0, 0>, 1.5
    texture { tx_cristal }
  }

#declare numBracos = 3 ;

#declare parteBasica = 
  union {
    box { <-0.5,1,-3.5>, <0,0,0.5> }  // Descrição da parte básica: L = 3
    sphere { <0,0.5,-3.5>, 0.5 }
    pigment {color rgb <0.5, 0.8, 0.5>}
  }
  
    
// Junção das partes do braço:

#declare i=1;
//#while (i<=numBracos)
  #declare alfa = -45 + 45*i ;  
  #declare beta =  20 + 10*i ;  
  #declare gama =  35 + 10*i ;  
  #declare delta = -100 + 10*i ;  
  
  #declare mao = 
   union{
    object { parteBasica
      rotate <0,0,0> * delta * x
      translate 9
    }
  }

  #declare antebraco = 
   union{
    object { mao
      rotate <0,0,0> * gama * x
      translate 6
    }
   }

  #declare braco =
   object { antebraco  
    rotate  <0,0,0> * beta * x
    translate 3
   }

  #declare ombro =
   object { braco  
    rotate  <0,0,0> * alfa * x
    //translate <0,0,0>
   }
  
  #declare pata =  
    union {
      object { corpo }
      object { mao pigment {color rgb <0.8, 0.5, 0.2>} } 
      object { antebraco }
      object { braco }
      object { ombro }
  }
  
  union {
    object {pata }
  }
  
  
  #declare i=i+1;
//#end