// Last edited on 2003-11-27 12:02:30 by stolfi
// Exemplo de arquivo de descricao de cena para POV-ray
#include "colors.inc"
#include "metals.inc"

// ======================================================================

#declare ctr = < 0.00, 0.00, 0.00 >;
#declare camDir = < 0.00,-6, -4.00 >;

camera {
  location   ctr + 10.00*camDir
  right      1.00*x
  up         0.75*y
  sky        z
  look_at    ctr
}

// ======================================================================
// FONTES DE LUZ

light_source {
  10 * < +50.0, +30.0, +50.0 >              // Posição da lâmpada.
  color rgb 1.2 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

light_source {
  10 * <+-50.0, -10.0, +10.0 >             // Posição da lâmpada.
  color rgb 0.8 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

// ======================================================================
// DESCRIÇÃO DA CENA 

background{ color rgb < 0.2, 0.50, 0.65 > }

#declare prato = difference{
                       cylinder{<10,0,0>,<10,-3,0>,2 pigment{Blue}}
                       sphere{<10,2.5,0>,1 pigment{Blue}}
                       }
#declare colher=union{
                     cylinder {<10,0,6>,<13,0,6>,0.5 pigment{Gray}}
                     difference{sphere{<8.5,0.5,6>1.5 pigment{Gray}}
                                sphere{<8.5,0.5,6>0.5 pigment{Gray}}
                                box{<7,-3,4.5>,<10,-0.5,7.5> pigment{Gray}}
                               }
                      }

#declare logo= text{
                    ttf "arial.ttf"
                    "Fome ZERO"
                    0.1,0 scale <2,2,20> translate <0,0,10>
                   }

#declare chegada=union{
                    prism{linear_spline
                         0
                         3
                         8
                   <4,-2>,<1,-2>,<-1,-2>,<-1,7>,<1,7>,<4,7>,<4,2>,<5,2>
                   pigment{checker pigment{White},pigment{Black}}
                   rotate 90*z
                   }
                   lathe{linear_spline
                        4,
                   <4,3>,<3,3>,<2,2>,<1,2>
                   pigment{checker pigment{White},pigment{Black}}
                   }
                   }

                         
//prato
#if (clock<0.5)
  //movimento para esquerda
  #declare tp=clock/0.5;
  #declare pos=(1-tp)*<10,0,0>+tp*<-10,0,0>;
#else
 #if (clock<0.8)
   //movimento para direita
   #declare tp=(clock-0.5)/(0.8-0.5);
   #declare pos=(1-tp)*<-10,0,0>+tp*<10,0,0>;
#else
   #declare tp=(clock-0.8)/(1.0-0.8);
   #declare pos=(1-tp)*<10,0,0>+tp*<0,0,0>;
 #end
#end

//colher
#if (clock<0.5)
  //movimento para esquerda
  #declare tc=clock/0.5;
  #declare pos1=(1-tc)*<8.5,0,6>+tc*<-10,0,6>;
#else
 #if (clock<0.8)
   //movimento para direita
   #declare tc=(clock-0.5)/(0.8-0.5);
   #declare pos1=(1-tc)*<-10,0,6>+tc*<10,0,6>;
#else
   #declare tc=(clock-0.8)/(1.0-0.8);
   #declare pos1=(1-tc)*<10,0,6>+tc*<1,0,6>;
 #end
#end


//texto
#if (clock>0.8)
  #declare tt=(clock-0.8)/(1.0-0.8);
  #declare pos3=(1-tt)*<0,-2,10>+tt*<0,0,10>;
#end

//chegada
#if(clock<1)
 #declare pf=<0,0,0>*clock;
#else
 #declare pf=<0,0,0>*clock;
#end

// Aqui está a cena, finalmente:
#if (clock<0.8)
object{prato translate pos}
object{colher translate pos1}
object{chegada translate pf}
#else
object{prato translate pos}
object{colher translate pos1}
object{logo pigment{Red} translate pos3}
object{chegada translate pf}
#end