// Last edited on 2004-03-13 20:08:17 by stolfi
// Exemplo de arquivo de descricao de cena para POV-ray

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

#declare ctr = < 00.00, 00.00, 8.00 >;
#declare camDir = < 25.00, 60.00, 12.00 >;

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

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

light_source {
   3 * < 10.0, 20.0, 40.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.75, 0.80, 0.85 > }

#declare raio = 2.000;

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

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

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

#declare cinza = 
  texture {
    pigment { color rgb < 0.45, 0.45, 0.45 > }
  }

#declare verde = 
  texture {
    pigment { color rgb < 0.00, 1.00, 0.00 > }
  }
#declare azul = 
  texture {
    pigment { color rgb < 0.00, 0.00, 1.00 > }
  }
#declare amarelo = 
  texture {
    pigment { color rgb < 1.00, 1.00, 0.00 > }
  }
#declare branco = 
  texture {
    pigment { color rgb < 1.00, 1.00, 1.00 > }
  }

#declare preto =
  texture {
     pigment { color rgb < 0.40, 0.40, 0.40 > }
  }

  
#declare cor_espelho = < 0.7, 0.7, 0.7 >;
#declare tx_espelho =
  texture{
    pigment{ rgb cor_espelho }
    finish{
      ambient 0.05 diffuse 0.05
      reflection cor_espelho
      specular 0.02 roughness 0.05
    }
  }

#declare bola =
  sphere {
    < 2.00, 2.00, 2.00 >, 2.00 
    texture {amarelo}
  }

#declare pneu_aux =
  torus{ 
    2.5 , 1.0 
    texture {azul}
  }

#declare eixo =
  cylinder{
    <-2.5, 0 ,0>,
    < 2.5, 0 ,0>, 0.5
    texture {azul}
  }

#declare pneu_aux_2 =
   union{
     object { pneu_aux }
     object { eixo } 
   }

#declare pa = <0,0,3>;
#declare pb = <-3,0,3>;
#declare pos = (1-clock)*pa + clock*pb;

#declare pneu =
   object { pneu_aux_2
      rotate < 0, -clock*360, 0>
      translate pos
   }

#declare dois_pneus =
  union{
    object{ pneu translate <-8,0,0>}
    object{ pneu translate <12,0,0>}
  }

#declare l_f = 
   text {
      ttf "arial.ttf"
      "f  me", 
      0.30, 0
      rotate <90,0,0>
      scale <-10,-10, 10>
      translate <15,-1.5,0>
      }

#declare nada = 
   text {
      ttf "arial.ttf"
      ".", 
      0.30, 0
      }

#if (clock > 0.75)
#declare texto = l_f
#else 
#declare texto = nada
#end

#declare chao =
  plane { <0, 0, 1>, 0
  texture   { tinta_B }
 }
  
#declare poste =
lathe {
  cubic_spline
  6,
  <0, 0>, <0, 8>, <0.75, 5.0>, <0.5, 1.0>, <2, 0>, <0, 0>
  rotate<90, 0, 0>
  translate<-15, -5, 0>
  scale<0, 0, 3>
  texture {vermelho}
 }

#declare pista = 
 prism {
  linear_spline
  0, 0.2, 5,
  <-15,-3>, <20,-3>, <20,3>, <-15,3>, <-15,-3>
  rotate<90,0,0>
  texture {cinza}
 }

#declare bandeira1 = 
 prism {

  cubic_spline

  0, 1, 18,

  <0,1>, <0,0>, <1,1>, <2,0>, <3,-1>, <4,0>, <4,4>, <0,0>, <1,0>, 
  <0,2>, <4,4>, <3,3>, <2,4>, <1,5>, <0,4>, <0,0>, <4,4>, <2,0>

 }

#declare bandeira_aux =
union{
   object {bandeira1}
   object {bandeira1 texture {branco} translate<0,0,2>}
   object {bandeira1 translate <0,0,4>}
}

#declare bandeira =
object {bandeira_aux translate <-18,-5,12>}


// Aqui está a cena, finalmente:
union{
   object {bandeira}
   object {chao}
   object {pista}
   object {poste}
   object {dois_pneus}
   object {texto}
}