// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2010-03-04 15:44:01 by stolfi

// ======================================================================
// CORES E TEXTURAS

#include "colors.inc"
#include "textures.inc"
#include "woods.inc"
#include "stones.inc"

background{ color rgb < 1, 1, 1 > }

#declare tx = texture{
      pigment { color Blue }
      finish { phong 1 }

}

#declare tx_chao = 
  texture{
    pigment{ color rgb < 0.00, 0.00, 0.00 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }
  
// aviao para elefantes
// 6 retalhos de bezier (3 retalhos - metade do objeto - e reflete outro igual)
// juntas suaves:
// local A14 = (A13 + B12)/2, B11 = A14

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

// Partes da cena:


 
   
#declare chao = 
  box{ <-20,-20,-1>, <+20,+20,0>}
  
#include "retalho.inc"

#declare lateral =

	union {
		#local base = 0;
		#local alt = 0.25;
		#local larg = 0.8;
		#local prof = 0.25;
		#declare altura = alt*3;
		#declare larguraLateral = base+larg*3;

		#local p21 = <base,   		prof*2,	alt/2>;
		#local p22 = <base+larg, 	prof*2, 	alt/2>;
		#local p23 = <base+larg*2, prof*2, 	alt/2>;
		#local p24 = <base+larg*3, prof*2, 	alt/2>;
		
		#local p11 = < base, 			(p21.y+(-p21.y))/2, 	0>;
		#local p12 = <base+larg, 	(p22.y+(-p22.y))/2, 	0>;
		#local p13 = <base+larg*2, (p23.y+(-p23.y))/2, 	0>;
		#local p14 = <base+larg*3, (p24.y+(-p24.y))/2, 	0>;

		#local p31 = <base,   		prof*2, 	alt*2>;
		#local p32 = <base+larg, 	prof*2, 	alt*2>;
		#local p33 = <base+larg*2, prof*2, 	alt*2>;
		#local p34 = <base+larg*3, prof*2, 	alt*2>;

		#local p41 = <base,   		(p31.y+(-p31.y))/2, 	alt*3>;
		#local p42 = <base+larg, 	(p32.y+(-p32.y))/2, 	alt*3>;
		#local p43 = <base+larg*2, (p33.y+(-p33.y))/2, 	alt*3>;
		#local p44 = <base+larg*3, (p34.y+(-p34.y))/2, 	alt*3>;
		
  		object{retalho(p11,p12,p13,p14,p21,p22,p23,p24,
  					  p31,p32,p33,p34,p41,p42,p43,p44, 
  					  0.005,tx,tx)}
		}
		
#declare bico =

	union {
		#local base = 0;
		#local alt = 0.25;
		#local larg = 0.2;
		#local prof = 0.25;
		#local incrAlt = 0.2;
		#local meioAltura = altura/2;

		#local p21 = <base,   		0,			meioAltura>;
		#local p22 = <base+larg, 	prof*2, 	p12.z+incrAlt>;
		#local p23 = <base+larg*2, prof*2, 	p13.z+incrAlt>;
		#local p24 = <base+larg*3, prof*2, 	p14.z+incrAlt>;
		
		#local p11 = < base, 			0, 					meioAltura>;
		#local p12 = <base+larg, 	(p22.y+(-p22.y))/2, 	alt>;
		#local p13 = <base+larg*2, (p23.y+(-p23.y))/2, 	alt/2>;
		#local p14 = <base+larg*3, (p24.y+(-p24.y))/2, 	0>;

		#local p31 = <base,   		0, 		meioAltura>;
		#local p32 = <base+larg, 	prof*2, 	p22.z+incrAlt>;
		#local p33 = <base+larg*2, prof*2, 	p23.z+incrAlt>;
		#local p34 = <base+larg*3, prof*2, 	p24.z+incrAlt>;

		#local p41 = <base,   		0, 						meioAltura>;
		#local p42 = <base+larg, 	(p32.y+(-p32.y))/2, 	p32.z+incrAlt>;
		#local p43 = <base+larg*2, (p33.y+(-p33.y))/2, 	p33.z+incrAlt>;
		#local p44 = <base+larg*3, (p34.y+(-p34.y))/2, 	altura>;
		
		#declare alturaBico = p44.z;
		#declare larguraBico = p44.x;
		
  		object{retalho(p11,p12,p13,p14,p21,p22,p23,p24,
  					  p31,p32,p33,p34,p41,p42,p43,p44, 
  					  0.005,tx,tx)}
		}
		
#declare asa = 
  box{ <larguraBico+0.5,0,altura/2>, <larguraBico+1,larguraLateral,altura/2+0.1>}
 

#declare aviao = 
	union {
		object {lateral translate x*larguraBico}
		object {lateral rotate 180*z translate (larguraLateral+larguraBico)*x}
		object {bico}
		object {bico scale <1,-1,1>}
  	}
	
#include "eixos.inc"

// Aqui está a cena, finalmente:

union{
  object{ eixos(3.00) }
  object{ chao texture{Silver_Metal}}
  object{ aviao texture{tx}}
  object{ asa texture{tx}}
  object{ asa texture{tx} scale<1,-1,1>}
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 3.0;
#declare dir_camera = < -1, 1, 1 >;
#declare dist_camera = 3.0;
#declare intens_luz = 2.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)