// Atividade 12
#include "retalho-simples.inc"


#declare n=10;
#declare m=15;
#declare NV = 3;
#declare NH = 3;

#declare P = array[NH][NV][4][4];
#declare PP = array[4][4];


#macro preenche(nv, nh)
#local horizontal = 0;
#local vertical = 0;
	#for(h,0,nh-1,1)
		#for(ve,0,nv-1,1)
			#for(i,0,3,1)
				#for(j,0,3,1)
					#declare P[h][ve][i][j] = <i+horizontal,j+vertical,0>;
				#end
			#end
			#local vertical = vertical+3;
		#end
		#local vertical = 0;
		#local horizontal = horizontal+3;
	#end
#end



#macro carroceria(nv, nh)
	union{
		#for(h,0,nh-1,1)
			#for(ve,0,nv-1,1)
				#for(i,0,3,1)
					#for(j,0,3,1)
						#declare PP[i][j] = P[h][ve][i][j];
					#end
				#end
				object{retalho(PP,0.015,tx_xadrez,cor_parede)}
			#end
		#end
	}
#end

// Calcula a media cartesiana entre dois pontos e atribui ela a esses pontos
#macro costura()
	#local Temp = <0,0,0>;
	
#end


// CORES E TEXTURAS
background{ color rgb < 0.750, 0.800, 1> }

#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.0, 0.0, 0.00 >, color rgb < 0.98, 0.98, 0.98 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2.0
  }

#declare cor_parede =
  texture{
    pigment{ color rgb < 0.8, 0.8, 0.8 > }
  }	

// ORGANIZAÇÃO DA CENA
#include "eixos.inc"



object{ eixos(3.00) }
preenche(3, 3)

//Alteração Manual da matriz para levantar o teto do carro
#declare P[1][1][0][0] = <3,3,2>;
#declare P[1][1][0][1] = <3,4,2>;
#declare P[1][1][0][2] = <3,5,2>;
#declare P[1][1][0][3] = <3,6,2>;

#declare P[1][1][1][0] = <4,3,2>;
#declare P[1][1][1][1] = <4,4,2>;
#declare P[1][1][1][2] = <4,5,2>;
#declare P[1][1][1][3] = <4,6,2>;

#declare P[1][1][2][0] = <5,3,2>;
#declare P[1][1][2][1] = <5,4,2>;
#declare P[1][1][2][2] = <5,5,2>;
#declare P[1][1][2][3] = <5,6,2>;

#declare P[1][1][3][0] = <6,3,2>;
#declare P[1][1][3][1] = <6,4,2>;
#declare P[1][1][3][2] = <6,5,2>;
#declare P[1][1][3][3] = <6,6,2>;
object{carroceria(3,3)}


// CAMERA E AFINS
#include "camlight.inc"
#declare centro_cena = < 0, 0, 0 >;
#declare raio_cena = 15.0;
#declare dir_camera = < 10, 10, 7 >;
#declare dist_camera = 2*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)