// 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] = ; #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)