// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

#macro quadro(tt)

#include "textures.inc"

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

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

#declare tx_fosca =
  texture{
    pigment{ color rgb < 1.00, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.85, 0.30 > }
    finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.02 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2
  }

#declare arquibancada =
  texture{
    pigment{ color rgb < 0, 1, 1.00 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_escada =
  texture{
    pigment{ color rgb < 1.00, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_pele =
  texture{
    pigment{ color rgb < 1.00, 0.721, 0.513 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

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

#declare tx_camisa_2 =
  texture{
    pigment{ checker color rgb < 0, 0, 0 >, color rgb < 1, 1, 1 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 0.15
  }

#declare tx_junta =
  texture{
    pigment{ color rgb < 1.00, 0.00, 0.00 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_verde =
  texture{
    pigment{ color rgb < 0, 1, 0 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_chao =
                texture {
                  pigment { color rgb < 0.30, 0.80, 0.20 > }
                  finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
                }

#declare chao =
  box{
                  < 10, 10, -17>,
                  < -10, -10, -16 >
                  texture{tx_chao}
                }

#declare chassi =

        union {

                        box{<2,-2,0,> , <-2,2,1>

                        texture{tx_verde}

                }

                sphere {

                        <0,0,2> , 1.5
                        texture {tx_fosca}

                }

                cylinder{

                        <3, 0, 0.5>,
                        <-3, 0, 0.5>,
                        0.5
                        texture {tx_plastico}
                }

                sphere {

                        <3,0,0.5> , 0.5
                        texture {tx_plastico}

                }

                sphere {

                        <-3,0,0.5> , 0.5
                        texture {tx_plastico}

                }
        }

#macro pe()
        union{
                cylinder{
                        <0, 0, 0>,
                        <0, +2, 0>
                        0.5
                        texture {tx_pele}
                }

                sphere{
                        <0,2,0>
                        0.5
                        texture {tx_pele}

                }

                sphere{
                        <0,0,0>
                        0.5
                        texture {tx_verde}

                }

        }
#end

#macro anteperna (gama)
        union{

                cylinder{
                        <0, 0, 0>,
                        <0, 0, -5>
                        0.5
                        texture {tx_pele}
                }

                sphere{
                        <0,0,0>
                        0.5
                        texture {tx_verde}

                }

                object{pe() rotate gama*x translate -5*z}

        }
#end

#macro perna (teta, gama)
        union{

                cylinder{
                        <0, 0, 0>,
                        <0, 5, 0>
                        0.5
                        texture {tx_pele}
                }

                sphere{
                        <0,0,0>
                        0.5
                        texture {tx_junta}

                }

                object{anteperna(gama) rotate teta*x translate 5*y}

        }
#end

#macro corpo (alfa ,teta, gama)
        union{
                object{chassi translate <0, 0, -0.5>}

                object{perna(teta, gama) rotate (-1)*alfa*x translate 3*x}
                object{perna(teta, gama) rotate (-1)*alfa*x translate -3*x}
        }
#end

#macro interpola (ta, va, tb, vb, tt)

  #local s= (tt-ta)/(tb-ta);
  ((1-s)*va+s*vb)

#end

#declare t0 = 0.000;
#declare t1 = 0.250;
#declare t2 = 0.500;
#declare t3 = 0.750;
#declare t4 = 1.000;

#declare gama0   = 0;
#declare gama1  = 60;
#declare gama2  = 0;
#declare gama3  = 0;
#declare gama4  = 0;

#declare teta0   = 60;
#declare teta1   = -40;
#declare teta2   = 0;
#declare teta3   = 60;
#declare teta4   = 60;

#declare alfa0    = 70;
#declare alfa1    = 10;
#declare alfa2    = 0;
#declare alfa3    = 70;
#declare alfa4    = 70;

#declare altura0 = 0;
#declare altura1 = -10;
#declare altura2 = 0;
#declare altura3 = 15;
#declare altura4 = 0;

#if ((clock >= t0) & (clock <= t1))
  #declare gama   = interpola (t0, gama0, t1, gama1, clock);
  #declare teta   = interpola (t0, teta0, t1, teta1, clock);
  #declare alfa   = interpola (t0, alfa0, t1, alfa1, clock);
  #declare altura = interpola (t0, altura0, t1, altura1, clock);
#end

#if ((clock >= t1) & (clock <= t2))

  #declare gama   = interpola (t0, gama1, t1, gama2, clock);
  #declare teta   = interpola (t1, teta1, t2, teta2, clock);
  #declare alfa   = interpola (t1, alfa1, t2, alfa2, clock);
  #declare altura = interpola (t1, altura1, t2, altura2, clock);
#end

#if ((clock >= t2) & (clock <= t3))
  #declare gama   = interpola (t0, gama2, t1, gama3, clock);
  #declare teta   = interpola (t1, teta2, t2, teta3, clock);
  #declare alfa   = interpola (t1, alfa2, t2, alfa3, clock);
  #declare altura = interpola (t2, altura2, t3, altura3, clock);
#end

#if ((clock >= t3) & (clock <= t4))
  #declare gama   = interpola (t0, gama3, t1, gama4, clock);
  #declare teta   = interpola (t1, teta3, t2, teta4, clock);
  #declare alfa   = interpola (t1, alfa3, t2, alfa4, clock);
  #declare altura = interpola (t3, altura3, t4, altura4, clock);
#end

background{ color rgb < 1, 1, 1 > }

union {
object {corpo (alfa, teta, gama) translate <0,0, altura>}

object {chao}
}

#include "eixos.inc"

#include "eixos.inc"
#include "camlight.inc"
#declare centro_cena = < 6.00, 6.00, 5.00 >;
#declare raio_cena =  15; //40.0;
#declare dir_camera =  <4 ,2, 2>;  //< 30, 12, 25.00 >;
#declare dist_camera =  20;  //40.0;
#declare intens_luz = 1.50;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)

#end

quadro(clock)