// Last edited on 2007-07-23 19:55:12 by stolfi
// Processed by remove-cam-lights

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

#declare azul =
  texture {
    pigment { color rgb < 0.10, 0.80, 1.00 > }
    finish { diffuse 0.5 roughness 0.005 ambient 0.1 }
  }

#declare vermelho =
  texture {
    pigment { color rgb < 1.00, 0.00, 0.00 > }
    finish { diffuse 0.3 }
  }

#declare verde =
  texture {
    pigment { color rgb < 0, 1, 0 > }
    finish { diffuse 0.3 }
  }

#declare cabeca =
  sphere {
    < 0, 0, 0 >
    0.8
    texture { verde }
  }

#declare olho =
  sphere {
    < 0, 0, 0 >
    0.2
    texture { azul }
  }

#declare boca =
  sphere {
    < 0, 0, 0 >
    0.4
    texture { vermelho }
  }

#macro mao()
  sphere { < 0, -0.2, 0 >, 0.4 }
#end

#macro antebraco(alfa)
  union {
    cylinder { < 0, 0, 0 > , < 0, -2, 0 > , 0.3 }
    object { mao()
      rotate alfa*x
      translate -2*y
    }
  }
#end

#macro braco(beta, alfa)
  union {
    cylinder { < 0, 0, 0 > , < 0, -2, 0 > , 0.3 }
    object { antebraco(alfa)
      rotate beta*x
      translate -2*y
    }
  }
#end

#macro pe()
  box {
    < -0.3, 0, 0 >,
    < 0.3, -0.8, 0.6 >
  }
#end

#macro canela(alfa)
  union {
    cylinder { < 0, 0, 0 > , < 0, -2, 0 > , 0.3 }
    object { pe()
      rotate alfa*x
      translate -2*y
    }
  }
#end

#macro perna(beta, alfa)
  union {
    cylinder { < 0, 0, 0 > , < 0, -2, 0 > , 0.3 }
    object { canela(alfa)
      rotate beta*x
      translate -2*y
    }
  }
#end

#macro corpo(gama, omeg, beta, alfa, gama1, omeg1, beta1, alfa1, gama2, omeg2, beta2, alfa2, gama3, omeg3, beta3, alfa3)
  union {
    box { < -1, -0.5, -2 >, < 1, 0.5, 2 > }
    object { braco(beta, alfa)
      rotate gama*z
      rotate omeg*x
      translate ( 1*x + 1.5*z )
    }
    object { braco(beta1, alfa1)
      scale < -1, 1, 1 >
      rotate gama1*z
      rotate omeg1*x
      translate ( -1*x + 1.5*z )
    }
    object { perna(beta2, alfa2)
      rotate gama2*z
      rotate omeg2*x
      translate ( 0.8*x + -2*z )
    }
    object { perna(beta3, alfa3)
      scale < -1, 1, 1 >
      rotate gama3*z
      rotate omeg3*x
      translate ( -0.8*x + -2*z )
    }
    object { cabeca translate 2.8*z }
    object { olho translate (3*z + -0.5*y + 0.5*x) }
    object { olho translate (3*z + -0.5*y + -0.5*x) }
    object { boca translate (2.6*z + -0.45*y) }
  }
#end

#if (clock <= 0.2 )
  #declare A1 = 45 - 175*clock;
#end

#if ((clock > 0.2) & (clock <= 0.8))
  #declare A1 = 10;
#end

#if (clock > 0.8 )
  #declare A1 = 10 + 80*clock;
#end

#declare A2 = 45 + 90*sin(clock*225);

#if ( clock <= 0.4 )
  #declare A3 = -90 + 90*sin(clock*450);
#end

#if ((clock > 0.4) & (clock <= 0.8))
  #declare A3 = -90;
#end

#if (clock > 0.8 )
  #declare A3 = -90 + clock*90;
#end

#if (clock <= 0.2 )
  #declare A5 = -45 + 175*clock;
#end

#if ((clock > 0.2) & (clock <= 0.8))
  #declare A5 = -10;
#end

#if (clock > 0.8 )
  #declare A5 = -10 - 80*clock;
#end

#declare A6 = 45 + 45*sin(clock*450);

#if ( clock <= 0.4 )
  #declare A7 = -90 + 90*sin(clock*450);
#end

#if ((clock > 0.4) & (clock <= 0.8))
  #declare A7 = -90;
#end

#if (clock > 0.8 )
  #declare A7 = -90 + clock*90;
#end

#if (clock <= 0.2 )
  #declare A9 = 20 - 100*clock;
#end

#if ((clock > 0.2) & (clock <= 0.8))
  #declare A9 = 0;
#end

#if (clock > 0.8 )
  #declare A9 = 45*clock;
#end

#if (clock <= 0.2 )
  #declare A10 = 80 + 50*clock;
#end

#if ((clock > 0.2) & (clock <= 0.6))
  #declare A10 = 90 - clock*150;
#end

#if ((clock > 0.6) & (clock <= 0.8))
  #declare A10 = 0;
#end

#if (clock > 0.8 )
  #declare A10 = 90*clock;
#end

#if ( clock <= 0.2 )
  #declare A11 = 45 - clock*225;
#end

#if (clock > 0.2 )
  #declare A11 = 90 + 90*sin(150*clock);
#end

#if (clock <= 0.2 )
  #declare A13 = -20 + 100*clock;
#end

#if ((clock > 0.2) & (clock <= 0.8))
  #declare A13 = 0;
#end

#if (clock > 0.8 )
  #declare A13 = -45*clock;
#end

#if (clock <= 0.2 )
  #declare A14 = 80 + 50*clock;
#end

#if ((clock > 0.2) & (clock <= 0.6))
  #declare A14 = 90 - clock*150;
#end

#if ((clock > 0.6) & (clock <= 0.8))
  #declare A14 = 0;
#end

#if (clock > 0.8 )
  #declare A14 = 90*clock;
#end

#if ( clock <= 0.2 )
  #declare A15 = 45 - clock*225;
#end

#if ((clock > 0.2) & (clock <= 0.6))
  #declare A15 = 90 + 90*sin(150*clock);
#end

#if ( (clock > 0.6) & (clock <= 0.8) )
  #declare A15 = 180 - clock*225;
#end

#if ( clock > 0.8 )
  #declare A15 = 0;
#end

#declare A4 = -45;

#declare A8 = -45;

#declare A12 = -90;

#declare A16 = -90;

object { corpo(A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16) texture { verde } }

// Original camera parameters:
// #local cam_ctr = <0,0,0>
// #local cam_vec = <8.00,-10.00,1.00>
// #local cam_sky = z

#include "camlight.inc"
camlight(<0,0,0>,<7,-10,5>,15.0,z,1.0)