// MC930 - Trabalho prático 3 - 1s2003
// Last edited on 2003-05-27 20:40:28 by stolfi
// Artur Manoel Passos RA 001388

#include "colors.inc"

background{ Turquoise }

plane{
  <0,1,0>,-12
  texture{
    pigment{ checker 
      color rgb <1,1,1>,
      color rgb <1,0.9,0.7>
    }
    finish { ambient 0.1 diffuse 0.9 specular 0.2 roughness 0.1 }
    scale 3
  }
}

camera {
  location  <  50.00, 0.00, 0.00 >
  right     <  0.60, 0.00, 0.00 >
  up        <  0.00, 0.00, 0.60 >
  sky       <  0.00, 1.00, 0.00 >
  look_at   <  0.00, 0.00, -3.00 >
} 

light_source {
  10*< 45.00, 30.00, 20.00 >
  color rgb < 1.20, 1.20, 1.20 >
}

light_source {
  10*< 45.00, 20.00, -20.00 >
  color rgb < 0.60, 0.60, 0.60 >
}

#if (clock<=0.25)
  #declare GRAU2 = -clock*200;
  #declare GRAU2b = 0;
  #declare GRAU3 = -25 + (clock*400);
  #declare GRAU3b = 25 - (clock*100);
#else 
  #if (clock <=0.5)
    #declare GRAU2 = -50 + (clock-0.25)*200;
    #declare GRAU2b = 0;
    #declare GRAU3 =  50 - ((clock-0.25)*100);
    #declare GRAU3b = 25 - (clock*100);
  #else 
    #if (clock <=0.75)
      #declare GRAU2 = 0;
      #declare GRAU2b = -(clock-0.5)*200;
      #declare GRAU3 = 25 - ((clock-0.5)*100);
      #declare GRAU3b = -25 + ((clock-0.5)*400);
    #else 
      #declare GRAU2 = 0;
      #declare GRAU2b = -50 + (clock-0.75)*200;
      #declare GRAU3 = 25 - (clock-0.5)*100;
      #declare GRAU3b = 50 - ((clock-0.75)*100);
    #end
  #end
#end


#declare GRAU1 = -1*GRAU3 - GRAU2;
#declare GRAU1b = -1*GRAU3b - GRAU2b;

#declare peperna1 = union {
cylinder{ <0, 0, 0> <0, 6, 0> 1.1 pigment {DarkBrown}  }
sphere { <0, 0, -0.5> 1.2 pigment {Copper} scale <1, 0.8, 2> rotate <GRAU1, 0, 0>} // Pé 
}

#declare perna1 = union {
cylinder { <0, 6, 0> <0, 0, 0> 1.2 pigment {DarkBrown} } // Coxa
sphere { <0, 0, 0> 1.3 pigment {DarkBrown}}              // Joelho 
object {peperna1 translate <0, -6, 0> rotate <GRAU2, 0, 0>}
}

#declare peperna2 = union {
cylinder{ <0, 0, 0> <0, 6, 0> 1.1 pigment {DarkBrown}  }
sphere { <0, 0, -0.5> 1.2 pigment {Copper} scale <1, 0.8, 2> rotate <GRAU1b, 0, 0>} // Pé 
}

#declare perna2 = union {
cylinder { <0, 6, 0> <0, 0, 0> 1.2 pigment {DarkBrown} } // Coxa
sphere { <0, 0, 0> 1.3 pigment {DarkBrown}}              // Joelho 
object {peperna2 translate <0, -6, 0> rotate <GRAU2b, 0, 0>}
}

#declare cabeca = union {
cylinder{ <0, 5, 0> <0, 6.5, 0> 1.1 pigment {DarkBrown}} // Pescoço
sphere { <0, 8, 0> 2.2 pigment {DarkBrown}} // Cabeça
sphere { <2.2, 4 ,-1> 0.5  pigment {Copper} scale <1, 2, 0.5> } // Orelha direita
sphere { <-2.2, 4 ,-1> 0.5  pigment {Copper} scale <1, 2, 0.5> } // Orelha esquerda
}

#declare resto = union {
sphere { <2.1, 4.2, 0>, 2 pigment {DarkBrown} }  // Ombro direito
sphere { <-2.1, 4.2, 0>, 2 pigment {DarkBrown} } // Ombro direito
cylinder{ <2.1,4.2, 0> <5.6, 1.7, -3.5> 1 pigment {DarkBrown} } // Braço direito
cylinder{ <-2.1,4.2, 0> <-6.6, 1.7, -1.5> 1 pigment {DarkBrown} } // Braço esquerdo
sphere { <5.6, 1.7, -3.5> 1.1 pigment {DarkBrown} } // Cotovelo direito
sphere { <-6.6, 1.7, -1.5> 1.1 pigment {DarkBrown} } // Cotovelo esquerdo
cylinder{ <5.6, 1.7, -3.5> <2.2, 0.7, -6.5> 1 pigment {DarkBrown} } // Antebraço direito
cylinder{ <-6.6, 1.7, -1.5> <-7, 5.8, -2.5> 1 pigment {DarkBrown} } // Antebraço esquerdo
sphere { <2.2, 0.7, -6.5,> 1.2 pigment {Copper} } //Mão direita
sphere { <-7, 5.8, -2.5> 1.2 pigment { Copper } } // Mão esquerda
}

#declare corpo = union {
object {cabeca translate <0, 3, 0>}
object {resto translate <0, 3, 0>}
sphere { <0, 0, 0>, 2 pigment {DarkBrown} scale <1.5, 3, 1> translate <0, 3, 0> }// Tronco
object {perna1 translate <0, -6, 0> rotate <GRAU3, 0, 10> translate <0.9, 0.6, 0>}
object {perna2 translate <0, -6, 0> rotate <GRAU3b, 0,-10> translate <-0.9, 0.6, 0>}
}

object {corpo translate <0, 0, -6*clock>}