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

#include "eixos.inc"
#include "texturas.inc"
#include "camlight.inc"

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

#declare chao =
  box{ <-20,-20,-3>, <+20,+20,0> }

#declare corpo=
  box{<0,0,0>,<.5,1,2>
  texture{branco}}
#declare coxa=
  box{<0,0,0>,<.5,.5,1>
  texture{branco}}
#declare canela=
  box{<0,0,0>,<.5,.5,1>
  texture{branco}}
#declare pe=
  box{<0,0,0>,<.5,1,.5>
        texture{branco}}
#declare bloco=
  box{<0,0,0>,<3,5,2>
        texture{tx_fosca}
        translate<-1.5,-1.5,0>}

#macro canela_pe(a)
 object{pe translate<0,0,-.5>
        rotate<-90+a,0,0>
        translate<0,.5,.5>}
 object{canela
        translate<0,0,.5>
        }
#end

#macro CCP(beta,a)//canela, coxa, pé
  object{
        union{canela_pe(a)}
        translate<0,0,-1.5>
        rotate<-beta,0,0>
        translate<0,0,1.5>
        }
  object{coxa
        translate<0,0,1.5>
        }

#end

#macro tudo(alfa,beta,a)
  object{
        union{CCP(beta,a)}
        translate<0,-.5,-2.5>
        rotate<alfa,0,0>
        translate<0,.5,2.5>
        }
  object{corpo
        translate<0,-.5,2.5>
        }
#end

#macro armacao(fase) //vai de 0 até 1
#local fase0=0;
#local fase1=.5;
#local fase2=1;

#if((fase>=fase0)&(fase<=fase1))
 #declare alfa=interpola(fase0,45,fase1,90,fase);
#end
#if((fase>=fase1)&(fase<=fase2))
 #declare alfa=interpola(fase1,90,fase2,45,fase);
#end

#if((fase>=fase0)&(fase<=fase1))
 #declare beta=interpola(fase0,45,fase1,90,fase);
#end
#if((fase>=fase1)&(fase<=fase2))
 #declare beta=interpola(fase1,90,fase2,45,fase);
#end

#if((fase>=fase0)&(fase<=fase1))
 #declare a=interpola(fase0,90,fase1,90,fase);
#end
#if((fase>=fase1)&(fase<=fase2))
 #declare a=interpola(fase1,90,fase2,90,fase);
#end

tudo(alfa,beta,a)
#end//fim do macro armacao

#macro voo(h,fase)
#local fase0=0;
#local fase1=.5;
#local fase2=1;

#if((fase>=fase0)&(fase<=fase1))
 #declare alfa=interpola(fase0,45,fase1,0,fase);
#end
#if((fase>=fase1)&(fase<=fase2))
 #declare alfa=interpola(fase1,0,fase2,45,fase);
#end

#if((fase>=fase0)&(fase<=fase1))
 #declare beta=interpola(fase0,45,fase1,0,fase);
#end
#if((fase>=fase1)&(fase<=fase2))
 #declare beta=interpola(fase1,0,fase2,45,fase);
#end

#if((fase>=fase0)&(fase<=fase1))
 #declare a=interpola(fase0,90,fase1,45,fase);
#end
#if((fase>=fase1)&(fase<=fase2))
 #declare a=interpola(fase1,45,fase2,90,fase);
#end

#if((fase>=fase0)&(fase<=fase1))
 #declare altura=interpola(fase0,0,fase1,h,fase);
#end
#if((fase>=fase1)&(fase<=fase2))
 #declare altura=interpola(fase1,h,fase2,0,fase);
#end

union{
        tudo(alfa,beta,a)
        translate<0,0,altura>
        }
#end //final do macro voo

#macro voo_geral(h,p,q,fase)
  #local r=interpola(0,p,1,q,fase);
  union{voo(h,fase)
        translate r
        }
#end //fim voo_geral

#macro armacao_geral(p,fase)
 union{armacao(fase)
        translate p
        }
#end//fim armacao_geral

#macro quadro(tempo)

#local t0=0.00;
#local t1=0.25;
#local t2=0.50;
#local t3=0.75;
#local t4=1.00;

#local A=<0,0,2>;
#local B=<0,5,0>;
#local C=<0,10,2>;

object{bloco}
object{bloco
        translate<0,10,0>}

#if((tempo>=t0)&(tempo<=t1))
 #local fase=interpola(t0,0,t1,1,tempo);
 object{armacao_geral(A,fase)}
 #declare centro_cena = A;
#end
#if((tempo>=t1)&(tempo<=t2))
 #local fase=interpola(t1,0,t2,1,tempo);
 object{voo_geral(4,A,B,fase)}
 #declare centro_cena = interpola(t1,A,t2,B,tempo);
#end
#if((tempo>=t2)&(tempo<=t3))
 #local fase=interpola(t2,0,t3,1,tempo);
 object{armacao_geral(B,fase)}
 #declare centro_cena = B;
#end
#if((tempo>=t3)&(tempo<=t4))
 #local fase=interpola(t3,0,t4,1,tempo);
 object{voo_geral(4,B,C,fase)}
 #declare centro_cena = interpola(t3,B,t4,C,tempo);
#end

#declare raio_cena = 6.0;
#declare dir_camera = < 7.00, 0.00, 10.00 >;
#declare dist_camera = 16.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)

#end//fim do macro total

quadro(clock)