// Last edited on 2003-12-07 20:25:47 by stolfi
// Exemplo de arquivo de descricao de cena para POV-ray

// ======================================================================

#declare ctr = < 0.00, 0.00, 0.00 >;
#declare camDir = < 40.00, 70.00, 30.00 >;

camera {
  location   ctr + 0.65*camDir
  right      -1.00*x
  up         0.75*y
  sky        z
  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, +10.0 >             // Posição da lâmpada.
  color rgb 0.8 * < 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 dourado = 
  texture {
    pigment { color rgb<0.90, 0.80, 0.50> }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare eixoX =
  cylinder {
  <0.00, 0.00, 0.00>,
  <100.00, 0.00, 0.00>
  0.50
  texture { 
    pigment { color rgb <1.00, 0.00, 0.00> } 
  }
  }

#declare eixoY =
  cylinder {
  <0.00, 0.00, 0.00>,
  <0.00, 100.00, 0.00>
  0.50
  texture { 
    pigment { color rgb <0.00, 1.00, 0.00> }
  }
  }

#declare eixoZ =
  cylinder {
  <0.00, 0.00, 0.00>,
  <0.00, 0.00, 100.00>
  0.50
  texture {
    pigment { color rgb <0.00, 0.00, 1.00> }
  }  
  }

#declare corpo =
  difference {
    object {
      sphere { 
  <0, 0, 0>, 12 
  texture { dourado }
      }
    }
    object {
  box {
    <100, -100, 0>
    <-100, 100, 100>
  }
    }
  }

#declare cabeca =
  sphere {
      <0, 12, -2>, 2
      texture { dourado }
  }

#declare esp = 0.50;
#declare pos = 2.00;

#declare pernas =
  union {
#declare fonte = seed(12345);
#declare i=0;
#while (i<12)
    #declare ang1 = -20*rand(fonte);
    #declare ang2 = -40*rand(fonte);
    #declare ang3 = -60*rand(fonte);
    #declare ang4 = -80*rand(fonte);  

    #declare parte =
        cylinder {
      <0.00, 0.00, 0.00>,
      <pos, 0.00, 0.00>
      esp
      texture { dourado }
        }


    #declare perna1 = 
      union {
        object { 
      parte
      rotate ang1*y
      translate <pos, 0.00, 0.00>
        }
        object { parte }
      }

    #declare perna2 =
      union {
        object {
    perna1
    rotate ang2*y
    translate <pos, 0.00, 0.00>
        }
        object { parte }
      }

    #declare perna3 =
      union {
        object {
      perna2
      rotate ang3*y
      translate <pos, 0.00, 0.00>
        }
        object { parte }
      }

    #declare perna4 =
        object {
      perna3
      rotate ang4*y
        }

    object {
  perna4
  rotate (i*30)*z
  #if (i<3)
    #declare posX = (i*6);
    translate posX*x
    translate (sqrt(144-(posX*posX)))*y
  #else
  #if (i<6)
    #declare posX = (12-((i-3)*6));
    translate posX*x
    translate (-sqrt(144-(posX*posX)))*y
  #else
  #if (i<9)
    #declare posX = (((i-6)*6)-12);
    translate posX*x
    translate (-sqrt(144-(posX*posX)))*y
  #else
    #declare posX = (((i-9)*6)-12);
    translate posX*x
    translate ((sqrt(144-(posX*posX))))*y
  #end
  #end
  #end

    }

    #declare i=i+1;
#end
  }

union{
  object{ corpo }
  object{ cabeca }
  object { pernas }
}