// Last edited on 2007-07-23 23:32:57 by stolfi
// Processed by remove-cam-lights

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

#declare chao =
  plane { <0, -1, 0>, 8.9
        texture {
                pigment{
                         checker  color rgb <1, 1, 1> color rgb <1, 0.7, 0.7> scale 2
                }
        }
  }

#declare Tinta_White =
  texture {
    pigment { color rgb < 1.00, 1.00, 1.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.05 }
}
#declare Tinta_Gold =
  texture {
    pigment { color rgb < 1.00, 0.80, 0.10 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.05 reflection 0.3 }
}

#declare quadril =
box {
 <-0.7,-3,-1.1>,
 <0.7,-5,1.1>
 texture {
  Tinta_White
 }
}

#declare cabeca =
sphere {
 <0,1,0>, 1.5
 texture {
  Tinta_White
 }
}
#declare pescoco =

cylinder {
  <0, 0, 0>,
  <0, -1, 0>, 0.5
 texture {
  Tinta_White
 }
}
#declare tronco =
cylinder {
 <0, -1, 0>,
 <0, -3, 0>, 1
 texture {
  Tinta_White
 }
}

#declare perna_sup =
cylinder {
 <0, -5, 0.3>
 <0, -7.1, 1>, 0.5
 texture {
  Tinta_White
 }
}
#declare perna_inf =
cylinder {
 <0, -6.9, 1>
 <0, -9, 0.7>, 0.4
 texture {
  Tinta_White
 }
}

#declare pe =
box {
 <-0.5, -9, 0.2>
 <0.5, -9.2, 1.2>
 texture {
  Tinta_White
 }
}

#macro tronc(
  angulo_braco_esquerdo_a, angulo_braco_esquerdo_b, angulo_braco_esquerdo_c,
  angulo_braco_direito_a, angulo_braco_direito_b, angulo_braco_direito_c,
  angulo_perna_esquerda_abertura, angulo_perna_direita_abertura,
         angulo_coxa_direita_before, angulo_coxa_esquerda_before,
         angulo_ant_esquerdo, angulo_ant_direito, angulo_perna_esquerdo, angulo_perna_direito,
  angulo_mao_esquerda, angulo_mao_direita, angulo_pe_esquerdo, angulo_pe_direito)
union{
 #declare angulo_coxa_direita = angulo_coxa_direita_before - 90;
 #declare angulo_coxa_esquerda = angulo_coxa_esquerda_before - 90;
 cylinder {
  <0, -1, 0>,
  <0, -3, 0>, 1
  texture {
   Tinta_White
  }
 }

 object{ braco(angulo_ant_esquerdo, angulo_mao_esquerda)
  rotate<angulo_braco_esquerdo_a, angulo_braco_esquerdo_b, angulo_braco_esquerdo_c>
  translate <0, -1 , 0.7>
 }

 object{ braco(angulo_ant_direito, angulo_mao_direita)
  rotate<angulo_braco_direito_a, angulo_braco_direito_b, angulo_braco_direito_c>
  translate <0, -1 , 0.7>
  scale <1, 1, -1>
 }

 object{ braco(-angulo_perna_direito, angulo_pe_esquerdo)
  rotate<angulo_coxa_esquerda, 90, angulo_perna_direita_abertura>
  translate <0, 4.8 , 0.8>
  scale <1, -1, 1>
 }

 object{ braco(-angulo_perna_esquerdo, angulo_pe_direito)
  rotate<angulo_coxa_direita, 90, angulo_perna_esquerda_abertura>
  translate <0, 4.8 , 0.8>
  scale <1, -1, -1>
 }
}

#end

#declare ja = 0;
#macro antebraco(angulo_mao)
 union {
  cylinder {
   <0, 0, 0>,
   <0, 0, 2>, 0.4
   texture{
    Tinta_White
   }
  }
  box {
   <-0.5, 0.0, 0>
   <0.5, 0.1, 1.5>
   texture {
    Tinta_White
   }
   rotate < angulo_mao, 0, 0>
   translate <0, 0, 1.8>
  }
  #if (ja < 2)
  #declare ja = ja + 1;

  cone {
   <-0.7, 0, 2>, 0.3,
   <-0.7, -5, 2>, 0.0
   texture {
    Tinta_Gold
   }
   rotate < angulo_mao, 0, 0>
   translate <0, 0, 1>

  }
  cylinder {
   <-0.7,0,2>
   <-0.7,1,2>, 0.2
   texture {
    Tinta_Gold
   }
   rotate < angulo_mao, 0, 0>
   translate <0, 0, 1>
  }
  #end
 }
#end

#macro braco(angulo_ant, angulo_mao)
 union {

  cylinder {
   <0, 0, 0>,
   <0, 0, 2>, 0.45
   texture {
    Tinta_White
   }
  }
  object{antebraco(angulo_mao)
   rotate<angulo_ant, 0, 0>
   translate <0, 0, 1.8>
  }
 }
#end

#declare clock1 =  0.4;

        #declare angulo_braco_direito_a = -90;
 #declare angulo_braco_direito_b = -90;
 #declare angulo_braco_direito_c = -90;
 #declare angulo_mao_esquerda = 0;
 #declare angulo_mao_direita = 0;
 #declare angulo_pe_esquerdo  = 90;
 #declare angulo_pe_direito   = 90;

 #declare angulo_ant_esquerdo = 0;
 #declare angulo_ant_direito = 0;

 #declare angulo_perna_esquerdo  = 0;
 #declare angulo_perna_direito   = 0;

        #declare angulo_coxa_direita = 0;
 #declare angulo_coxa_esquerda = 0;

 #declare angulo_perna_esquerda_abertura = 0;
 #declare angulo_perna_direita_abertura = 0;

        #declare angulo_braco_esquerdo_a = -90;
 #declare angulo_braco_esquerdo_b = -90;
 #declare angulo_braco_esquerdo_c = -90;

        #declare angulo_braco_direito_a = -90;
 #declare angulo_braco_direito_b = -90;
 #declare angulo_braco_direito_c = -90;

#if (clock < 0.5)
 #declare angulo_ant_esquerdo = clock*140;
 #declare angulo_braco_direito_a = -clock*140 - 90;
#else
 #declare angulo_ant_esquerdo = (1 - clock)*140;
 #declare angulo_braco_direito_a = -(1 - clock)*140 - 90;
#end

#if (clock <= 0.25)

 #declare angulo_coxa_direita =  320*clock;
 #declare angulo_perna_direito  = 120*clock;

 #declare angulo_coxa_esquerda =  -200*(clock);
 #declare angulo_perna_esquerdo  = 120*clock;
 #declare angulo_pe_esquerdo  = 90 - 320*(clock);
#end
#if (clock > 0.25 & clock <= 0.5)

 #declare angulo_coxa_direita =  320*(0.5 - clock);
 #declare angulo_perna_direito  = 120*(0.5 - clock);

 #declare angulo_coxa_esquerda =  -200*(0.5 - clock);
 #declare angulo_perna_esquerdo  = 120*(0.5 - clock);
 #declare angulo_pe_esquerdo  = 90 - 320*(0.5 - clock);
#end

#if (clock > 0.5 & clock <= 0.75)

 #declare angulo_coxa_esquerda =  320*(clock - 0.5);
 #declare angulo_perna_esquerdo  = 120*(clock - 0.5);

 #declare angulo_coxa_direita =  -200*(clock - 0.5);
 #declare angulo_perna_direito  = 120*(clock - 0.5);
 #declare angulo_pe_direito  = 90 - 320*(clock - 0.5);
#end
#if (clock > 0.75)

 #declare angulo_coxa_esquerda =  320*(1 - clock);
 #declare angulo_perna_esquerdo  = 120*(1 - clock);

 #declare angulo_coxa_direita =  -200*(1 - clock);
 #declare angulo_perna_direito  = 120*(1 - clock);
 #declare angulo_pe_direito  = 90 - 320*(1 - clock);
#end

#declare tot =
union{
 tronc(
      angulo_braco_esquerdo_a, angulo_braco_esquerdo_b, angulo_braco_esquerdo_c,
      angulo_braco_direito_a, angulo_braco_direito_b, angulo_braco_direito_c,
      angulo_perna_esquerda_abertura, angulo_perna_direita_abertura,
             angulo_coxa_direita, angulo_coxa_esquerda,
             angulo_ant_esquerdo, angulo_ant_direito, angulo_perna_direito, angulo_perna_esquerdo,
             angulo_mao_esquerda, angulo_mao_direita, angulo_pe_esquerdo, angulo_pe_direito)
 object {cabeca}
 object {pescoco}
 object {quadril}
}

#if (clock < 0.5)
 #declare al = cos(angulo_coxa_esquerda*pi/180)*2 + sin(angulo_perna_esquerdo*pi/180)*3 + cos(angulo_pe_esquerdo*pi/180);
#else
 #declare al = cos(angulo_coxa_direita*pi/180)*2 + sin(angulo_perna_direito*pi/180)*3 + cos(angulo_pe_direito*pi/180);
#end

object {tot
 translate <0, -al, clock>
}

// chao

// Original camera parameters:
// #local cam_ctr = <0,-2,0>
// #local cam_vec = (<2,2,15>-<0,-2,0>)
// #local cam_sky = y

#include "camlight.inc"
// camlight(<0,-2,0>,<10,10,10>,20.0,y,1.0)
camlight(<0,-3,0>,<10,5,-7>,22.0,y,1.0)