//MC930 //Turma: A //Nome: Rodolfo Udo Labsch //RA: 086015 // ====================================================================== // Includes #include "eixos.inc" #include "texturas.inc" #include "camlight.inc" #include "retalho.inc" // ====================================================================== // Variáveis para uso na cena #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #declare asa = box{<0,0,0>, <1,5,.25> texture{tx_fosca} rotate<0,0,30> translate<1,0,1>} #local A23= <4,1,1.5>; #local A32= <4.5,.25,1>; #local A33= <4,1,.5>; #local B22= <1,1.5,2>; #local B23= <2,1.5,2>; #local B32= <1,2,0>; #local B33= <2,2,0>; #local C22= <-.5,1.5,2>; #local C23= <-1,1,2>; #local C24= <-1.5,.5,2>; #local C32= <-.5,1.5,.25>; #local C33= <-1,1,.5>; #local C34= <-1.5,.5,1.5>; #macro interpola2(ta, A, tb, B, tt) #local r=(tt-ta)/(tb-ta); (r*A+(1-r)*B); #end #macro interpola4(ta,A,B,C,D,td,tt) #local AB=interpola(ta,A,td,B,tt); #local BC=interpola(ta,B,td,C,tt); #local CD=interpola(ta,C,td,D,tt); #local ABC=interpola(ta,AB,td,BC,tt) #local BCD=interpola(ta,BC,td,CD,tt); #local ABCD=interpola(ta,ABC,td,BCD,tt); ABCD #end //////////////////////////////----macro aviao #macro aviao(A23,A32,A33, B22,B23,B32,B33, C22,C23,C24,C32,C33,C34) #local A31= ; #local A21= A31; #local A22= A32; #local A42= ; #local A43= ; #local A12= ; #local A13= ; #local B42= ; #local B43= ; #local B12= ; #local B13= ; #local C42= ; #local C43= ; #local C44= ; #local C12= ; #local C13= ; #local C14= ; //junção entre C e B #local B11= (B12+C12)/2; #local C11= B11; #local B21= (B22+C22)/2; #local C21= B21; #local B31= (B32+C32)/2; #local C31= B31; #local B41= (B42+C42)/2; #local C41= B41; //junção entre B e A #local B14= (B13+A13)/2; #local A14= B14; #local B24= (B23+A23)/2; #local A24= B24; #local B34=(B33+A33)/2; #local A34= B34; #local B44=(B43+A43)/2; #local A44= B44; //bico #local A11= (A12+A21)/2; #local A41= (A31+A42)/2; #declare parteB = //corpo retalho(B11,B12,B13,B14, B21,B22,B23,B24, B31,B32,B33,B34, B41,B42,B43,B44, 0.000001,tx_fosca,tx_fosca ) #declare parteC = //cauda retalho(C11,C12,C13,C14, C21,C22,C23,C24, C31,C32,C33,C34, C41,C42,C43,C44, 0.000001,tx_fosca,tx_fosca ) #declare parteA = //bico retalho(A11,A12,A13,A14, A21,A22,A23,A24, A31,A32,A33,A34, A41,A42,A43,A44, 0.0000002,tx_fosca,tx_fosca ) object{parteB} object{parteC} object{parteA} object{parteB scale<1,-1,1>} object{parteC scale<1,-1,1>} object{parteA scale<1,-1,1>} object{asa} object{asa scale<1,-1,1>} #end //////////////////////////////////----- fim macro aviao #macro aviao_deformado(A23,A32,A33, B22,B23,B32,B33, C22,C23,C24,C32,C33,C34, d1,d2) #local DA23=A23+deform1(A23)*d1+deform2(A23)*d2; #local DA32=A32+deform1(A32)*d1+deform2(A32)*d2; #local DA33=A33+deform1(A33)*d1+deform2(A33)*d2; #local DB22=B22+deform1(B22)*d1+deform2(B22)*d2; #local DB23=B23+deform1(B23)*d1+deform2(B23)*d2; #local DB32=B32+deform1(B32)*d1+deform2(B32)*d2; #local DB33=B33+deform1(B33)*d1+deform2(B33)*d2; #local DC22=C22+deform1(C22)*d1+deform2(C22)*d2; #local DC23=C23+deform1(C23)*d1+deform2(C23)*d2; #local DC24=C24+deform1(C24)*d1+deform2(C24)*d2; #local DC32=C32+deform1(C32)*d1+deform2(C32)*d2; #local DC33=C33+deform1(C33)*d1+deform2(C33)*d2; #local DC34=C34+deform1(C34)*d1+deform2(C34)*d2; aviao(DA23,DA32,DA33, DB22,DB23,DB32,DB33, DC22,DC23,DC24,DC32,DC33,DC34) #end #macro deform1(p) #end #macro deform2(p) #local cons1=0; #local cons2=0; #if(p.x<0) #local cons1=-2*p.x+(1-p.z); #local cons2=-(1-p.z); #end #end #macro interpola(ta, va, tb, vb, tt) #local s=(tt-ta)/(tb-ta); ((1-s)*va+s*vb); #end ///////////////////////////////////////////////////////////////// // Trajetória do avião #local A2=<0,1,1>; #local A3=<-1,2,2>; #local B2=<-3,2,3>; #local B3=<-4,1,3>; #local C2=<-4,-1,2>; #local C3=<-3,-2,1>; #local D2=<-1,-2,0>; #local D3=<0,-1,0>; #local A4=(A3+B2)/2; #local B1=A4; #local B4=(B3+C2)/2; #local C1=B4; #local C4=(C3+D2)/2; #local D1=C4; #local D4=(D3+A2)/2; #local A1=D4; //////////////////////////////////////////////////////////////// //Angulo #local alfa2=<0,0,30>; #local alfa3=<0,0,60>; #local beta2=<0,0,120>; #local beta3=<0,0,150>; #local gama2=<0,0,210>; #local gama3=<0,0,240>; #local delta2=<0,0,300>; #local delta3=<0,0,330>; #local alfa4=(alfa3+beta2)/2; #local beta1=alfa4; #local beta4=(beta3+gama2)/2; #local gama1=beta4; #local gama4=(gama3+delta2)/2; #local delta1=gama4; #local delta4=<0,0,(delta3.z+alfa2.z+360)/2>; #local alfa1=<0,0,delta4.z-360>; /////////////////////////////////////////////////////////////// //Predio///// // ====================================================================== // Variáveis para uso na cena #local p11= <0,0,3>; #local p12= <2,2,3>; #local p13= <-2,2,3>; #local p14= <-1,4,3>; #local p21= <0,0,2>; #local p22= <2,2,2>; #local p23= <-2,2,2>; #local p24= <-1,4,2>; #local p31= <0,0,1>; #local p32= <2,2,1>; #local p33= <-2,2,1>; #local p34= <-1,4,1>; #local p41= <0,0,0>; #local p42= <2,2,0>; #local p43= <-2,2,0>; #local p44= <-1,4,0>; #declare tx_bandeira = texture{ uv_mapping pigment{ image_map{jpeg "flag.jpg" }} } #declare tecido = retalho(p11,p12,p13,p14, p21,p22,p23,p24, p31,p32,p33,p34, p41,p42,p43,p44, 0.00001,tx_fosca,tx_bandeira ) #declare predio = box{ <0,0,0>, <5,5,7>} #declare imagem = pigment{ image_map{ jpeg "outdoor.jpg" } scale<2.6,1.1,1.1> rotate<0,90,0> rotate<90,0,0> } #declare imagem2 = pigment{ image_map{ png "cartaz2.png" } scale<2.6,1.1,1.1> rotate<0,90,0> rotate<90,0,0> } #declare outdoor = box{<0,0,0>, <.5,3,1> texture{imagem} translate<-.5,0,0>} #declare outdoor2 = box{<0,0,0>, <.5,3,1> texture{imagem2} translate<-.5,0,0>} #declare mastro = cylinder{<0,0,0>, <0,0,8>, .2 texture{branco} } #macro pred(cor,cartaz) object{ eixos(3.00) } union{ object{tecido translate<0,0,5>} object{mastro} scale<.5,.5,.5> translate<0,0,7> } object{ predio texture{cor}} #if(cartaz = 1) object{ outdoor translate<5.02,1,5>} #else object{ outdoor2 translate<5.02,1,5>} #end #end #declare rua = box{<-1,-10,0> <1,10,.5> texture{preto} }; // ====================================================================== // Objetos na cena object{ chao texture{ tx_xadrez } } object{ eixos(3.00) } #macro quadro(tempo) #declare i=-10; #while (i<10) union{ #if (mod(i,4) = 0) pred(branco,1) scale<.2,.2,.2> #else pred(verde,0) scale<.3,.3,.1> #end translate<-5,i,0> } #declare i=i+2; #end object{rua} #declare i=-10; #while (i<10) union{ #if (mod(i,4) = 0 ) pred(branco,0) scale<.2,.2,.2> #else pred(vermelho,1) scale<.1,.3,.5> #end rotate<0,0,180> translate<5,i,0> } #declare i=i+2; #end #local t0=0.00; #local t1=0.25; #local t2=0.50; #local t3=0.75; #local t4=1.00; union{ aviao_deformado(A23,A32,A33, B22,B23,B32,B33, C22,C23,C24,C32,C33,C34, 0,0) scale<.5,.5,.5> rotate<0,0,90> #if((tempo>=t0)&(tempo=t1)&(tempo=t2)&(tempo=t3)&(tempo<=t4)) rotate interpola4(t3,delta1,delta2,delta3,delta4,t4,tempo) translate interpola4(t3,D1,D2,D3,D4,t4,tempo) #end } #end // ====================================================================== //Instruções de camera #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 10.0; #declare dir_camera = < -7, 0, 2.00 >; #declare dist_camera = 10; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz) quadro(clock)