// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-09-04 15:25:26 by stolfi

// ======================================================================
// CÂMERA 

camera {
  location  <  8.00, 4.00, 2.00 >  // Posição do observador.
  right     -1.00*x                // Largura RELATIVA da imagem.
  up        0.75*y                 // Altura RELATIVA da imagem.      
  sky       z                      // Qual direção é "para cima"?
  look_at   <  0.00, 0.00, 0.00 >  // Para onde a câmera está apontando.
} 
// Nota: os parâmetros "right" e "up" devem ter a mesma proporção
// que os parâmetros ${WIDTH} e ${HEIGHT} no Makefile.

// ======================================================================
// 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.75, 0.80, 0.85 > }

#declare raio = 2.000;


#declare cor_Amarela = <1, 0.8, 0.1>;

#declare tinta_Amarela = 
  texture {
    pigment { rgb cor_Amarela }
    finish {
      ambient 0.05 diffuse 0.55
      reflection 0.4 * cor_Amarela
      specular 0.2 roughness 0.05
    }
  }

#declare cor_Verde = < 0.1, 1.00, 1.00 >;

#declare tinta_Verde = 
  texture {
    finish {
      ambient 0.1 diffuse 0.1 reflection 0.25
      specular 1 roughness 0.001
    }
    pigment { color cor_Verde filter 1 }
  }  


#declare cor_Vermelha = < 1.00, 0.10, 0.10 >;

#declare tinta_Vermelha = 
  texture {
    finish {
      ambient 0.1 diffuse 0.1 reflection 0.25
      specular 1 roughness 0.001
    }
    pigment { color cor_Vermelha filter 1 }
  } 
  
#declare base =
  torus {
    3.5,0.2
    texture { tinta_Amarela }
    rotate 90*x
  }

#declare cilindro1 =
  cylinder {
    < 2, 5.00, 2 >,
    < 2, -5.00, 2 >,
    1
    rotate 110*z
    texture { tinta_Amarela }
  }

#declare cilindro2 =
  cylinder {
    < -1.75, 5.00, 2 >,
    < -1.75, -5.00, 2 >,
    1
    rotate 110*z
    texture { tinta_Amarela }
  }

#declare corpo =
  lathe {
    linear_spline
    5,
    <3.5,1.5>, <3.5,0>, <3,0>, <3,1.5>, <3.5,1.5>
    texture { tinta_Amarela }
    rotate 90*x
  }
 
#declare pedraMaior = 
  lathe {
    linear_spline
    4,
    <0,0.75>, <0.25,0.5>, <0.25,0.25>, <0,0>
    texture { tinta_Vermelha }
    rotate 90*x
    translate <3.2,1.3,0.75>
  }

#declare pedra = 
  lathe {
    linear_spline
    3,
    <0,0.5>, <0.25,0.25>, <0,0>
    texture { tinta_Verde }
    interior { ior 1.6  }
    rotate 90*x
    translate <3.2,1.3,0.2>
  }

plane { z,-1.4
  texture{
    pigment { checker <0,0,0>, <1,1,1> }
    finish { ambient 0.1 diffuse 0.9 }
    scale 5
  }  
}

// Aqui está a cena, finalmente:

union{
  union{
    union{
      union{
        difference{
          difference{
            union{
              object { base } 
              object { corpo }
            }
            object { cilindro1}
          }
          object { cilindro2 }
        }
        object { pedra }
      }
      object { pedra rotate 40*z }
    }
    object { pedra rotate -40*z }
  }
  object { pedraMaior }
}