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

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

#include "colors.inc"

camera {
  location  <  30.00, 15.00, 15.00 >  // Posição do observador.
  right     -0.75*x                // Largura RELATIVA da imagem.
  up        1.00*y                 // Altura RELATIVA da imagem.      
  sky       y                      // Qual direção é "para cima"?
  look_at   <  0.00, 10.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 t_dourado = 
  texture {
    pigment { Gold }
    finish { 
	diffuse 0.5 
	specular 0.1 
	roughness 0.05 
	ambient 0.05 
	reflection {
		0.5
		metallic
	}
	phong .5
        phong_size 25
	}
  }

#declare t_rubi = 
  texture {
    pigment { Red filter 1}
    finish { 
	diffuse 0.25 
	specular 0.2
	roughness 0.001 
	ambient 0.1 
	reflection 0.25
	}
  }

#declare tinta_C = 
  texture {
    pigment { color rgbf < 0.90, 0.90, 0.90, 0.9 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }
  
#declare corpo = object {
  lathe {
    linear_spline
    9,
    <10,1>, <8,3>, <9,8>, <8.75,7.5>, <8.25,9>, <7.75,8.5>, <7.25, 9.5>, <7, 9>, <6.75, 10>
    texture{ t_dourado }
  }
}

#declare apoio = object {
  lathe {
    linear_spline
    2,
    <0,0>, <1.5,4.5>
    texture{ t_dourado }
  }
  translate 15*y
}

#declare rubizao = object {
  lathe {
    linear_spline
    6,
    <0,0>, <0.75,0.5>, <1.5,1.5>, <1.5,2>, <0.75, 3>, <0, 3.5>
    texture { t_rubi }
//    material {ior 1.5}
  }
  translate 18*y
}

#declare torus_base = object {
	torus {
		7, 2
		texture{ t_dourado }
	}
	translate 3*y
}

#declare torus_topo = object {
	torus {
		7, 2
		texture{ t_dourado }
	}
	rotate 90*z
	rotate -10*y
	translate 9*y
}

#declare rubi = object {
  sphere {
    < 0.00, 0.00, 0.00 >, 0.50 
    texture { t_rubi }
//    material {ior 1.5}
    translate 9*x 
    translate 3*y
  }
}

#declare rubis = object {
	union {
	 object {
	  rubi
	  translate -3*y
	  rotate 0*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 10*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 20*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 30*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 40*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 50*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 60*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 70*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 80*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 100*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 110*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 120*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 130*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 140*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 150*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 160*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 170*z
	  rotate -10*y
	  translate 9*y
	 }
	 object {
	  rubi
	  translate -3*y
	  rotate 180*z
	  rotate -10*y
	  translate 9*y
	 }
	}
}

union {
	plane { y, 0
		texture {
			pigment { checker Gold, Red}
			finish {ambient 0.1 diffuse 0.9}
			scale 0.5
		}
	}
	corpo
	torus_base
	apoio
	torus_topo
	rubizao
	rubis
	object {
		rubis
		rotate 90*y
	}
	object {
		torus_topo
		rotate 90*y
	}
	object {
		rubi
	}
	object {
		rubi
		rotate 10*y
	}
	object {
		rubi
		rotate 20*y
	}
	object {
		rubi
		rotate 30*y
	}
	object {
		rubi
		rotate 40*y
	}
	object {
		rubi
		rotate 50*y
	}
	object {
		rubi
		rotate 60*y
	}
	object {
		rubi
		rotate 70*y
	}
	object {
		rubi
		rotate 80*y
	}
	object {
		rubi
		rotate 90*y
	}
	object {
		rubi
		rotate 100*y
	}
	object {
		rubi
		rotate 110*y
	}
	object {
		rubi
		rotate 120*y
	}
	object {
		rubi
		rotate 130*y
	}
	object {
		rubi
		rotate 140*y
	}
	object {
		rubi
		rotate 150*y
	}
	object {
		rubi
		rotate 160*y
	}
	object {
		rubi
		rotate 170*y
	}
	object {
		rubi
		rotate 180*y
	}
	object {
		rubi
		rotate -10*y
	}
	object {
		rubi
		rotate -20*y
	}
	object {
		rubi
		rotate -30*y
	}
	object {
		rubi
		rotate -40*y
	}
	object {
		rubi
		rotate -50*y
	}
	object {
		rubi
		rotate -60*y
	}
	object {
		rubi
		rotate -70*y
	}
	object {
		rubi
		rotate -80*y
	}
	object {
		rubi
		rotate -90*y
	}
	object {
		rubi
		rotate -100*y
	}
	object {
		rubi
		rotate -110*y
	}
	object {
		rubi
		rotate -120*y
	}
	object {
		rubi
		rotate -130*y
	}
	object {
		rubi
		rotate -140*y
	}
	object {
		rubi
		rotate -150*y
	}
	object {
		rubi
		rotate -160*y
	}
	object {
		rubi
		rotate -170*y
	}
}