// CORES E TEXTURAS

#declare tx_fosca = 
  texture{
    pigment{ color rgb < 1, 1, 1 > }
    finish{ diffuse 0.9 ambient 0.1 }
 	}

#declare tx_fosca2 = 
  texture{
    pigment{ color rgb < 1, 0, 1 > }
    finish{ diffuse 0.9 ambient 0.1 }
 	}

#declare tx_fosca3 = 
  texture{
    pigment{ color rgb < 0.3, 0.6, 0.154 > }
    finish{ diffuse 0.9 ambient 0.1 }
 	}

#declare tx_fosca4 = 
  texture{
    pigment{ color rgb < 1, 0, 0 > }
    finish{ diffuse 0.9 ambient 0.1 }
 	}
// ======================================================================
// DESCRIÇÃO DA CENA 


#macro pe(tamanho, textura)
	union{
		sphere { 
			<0,0,0>, tamanho
		}
		cylinder {
			<0, tamanho, 0>, <0, tamanho + 2*tamanho, 0> tamanho
		}
		texture{textura}
	}
#end

#macro canela(tamanho, textura, alfa)
	union{
		union{
			sphere { 
				<0,0,0>, tamanho
			}
			cylinder {
				<0, tamanho, 0>, <0, tamanho + 10, 0> tamanho
			}
			texture{textura}
		}
		object{
			pe(tamanho, textura)
			rotate<0,0,alfa>
			translate<0,2*tamanho+10,0>
		}
	
	}
#end

#macro perna(tamanho, textura, alfa, beta)
	union{
		union{
			sphere { 
				<0,0,0>, tamanho
			}
			cylinder {
				<0, tamanho, 0>, <0, tamanho + 7, 0> tamanho
			}
			texture{textura}
		}
		object{
			canela(tamanho, textura,alfa)
			rotate<0,0,beta>
			translate<0,2*tamanho+7,0>
		}
	
	}
#end

#macro bixo_doido(textura,alfa1,alfa2,alfa3,alfa4,alfa5,alfa6,
													beta1,beta2,beta3,beta4,beta5,beta6)
	union{
		box {
			<-16,-6,-6>, <16,6,0> 
			texture {
				textura
			}	
		}
		object{
			perna(1,textura, alfa1,beta1)
			rotate <-90,-90,90>
			translate<0,6,0>
		}
		object{
			perna(1,textura, alfa2,beta2)
			rotate <90,-90,90>
			translate<0,-6,0>
		}
		object{
			perna(1,textura, alfa3,beta3)
			rotate <-90,-90,90>
			translate<10,6,0>
		}
		object{
			perna(1,textura, alfa4,beta4)
			rotate <90,-90,90>
			translate<10,-6,0>
		}
		object{
			perna(1,textura, alfa5,beta5)
			rotate <-90,-90,90>
			translate<-10,6,0>
		}
		object{
			perna(1,textura, alfa6,beta6)
			rotate <90,-90,90>
			translate<-10,-6,0>
		}
	}
#end

// Partes da cena:
#include "eixos.inc"
#declare alfa1 = 10;
#declare alfa2 = 40;
#declare alfa3 = 60;
#declare alfa4 = -30;
#declare alfa5 = 90;
#declare alfa6 = -30;
#declare beta1 = 10;
#declare beta2 = 40;
#declare beta3 = 60;
#declare beta4 = -30;
#declare beta5 = 90;
#declare beta6 = -30;
object{bixo_doido(tx_fosca,alfa1,alfa2,alfa3,alfa4,alfa5,alfa6,
									beta1,beta2,beta3,beta4,beta5,beta6)}


#include "camlight.inc"
#declare centro_cena = < 0,0,0>;
#declare raio_cena = 30;
#declare dir_camera = < 4,1,3 >;
#declare dist_camera = 5*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)