// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_aviao = texture{ pigment{ color rgb < 0.90, 0.90, 0.90 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_grade = texture{ pigment{ color rgb < 0.0, 0.0, 0.0 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } // ====================================================================== // DESCRIÇÃO DA CENA #include "textures.inc" #include "eixos.inc" #include "retalho.inc" #declare raio = 2.000; // Partes da cena: #declare asa1 = box{ < 12, 1, 3 >, < 14, 9, 4 > texture{ tx_aviao } } #declare asa2 = box{ < 12, -9, 3 >, < 14, -1, 4 > texture{ tx_aviao } } #macro deform(P, param) #local cons = 1*sin(param*pi*P.y); #end #macro deform2(P, param) #local cons = -0.5*sin(param*pi*P.y); #end #macro deform3(P, param) #local cons = -1*sin(param*pi*P.y); #end #macro aviao(z11, z12, z13, z14, z21, z22, z23, z24, z31, z32, z33, z34, a21, a22, a23, a24, a31, a32, a33, a34, b21, b22, b23, b24, b31, b32, b33, b34, c21, c22, c23, c24, c31, c32, c33, c34, w21, w22, w23, w24, w31, w32, w33, w34, w41, w42, w43, w44 ) union{ /* Pontos de conexao */ // Bico - Frente #local z41 = (z31+a21)/2; #local z42 = (z32+a22)/2; #local z43 = (z33+a23)/2; #local z44 = (z34+a24)/2; #local a11 = z41; #local a12 = z42; #local a13 = z43; #local a14 = z44; // Frente - Meio #local a41 = (a31+b21)/2; #local a42 = (a32+b22)/2; #local a43 = (a33+b23)/2; #local a44 = (a34+b24)/2; #local b11 = a41; #local b12 = a42; #local b13 = a43; #local b14 = a44; // Meio -Tras #local b41 = (b31+c21)/2; #local b42 = (b32+c22)/2; #local b43 = (b33+c23)/2; #local b44 = (b34+c24)/2; #local c11 = b41; #local c12 = b42; #local c13 = b43; #local c14 = b44; // Tras - Rabo #local c41 = (c31+w21)/2; #local c42 = (c32+w22)/2; #local c43 = (c33+w23)/2; #local c44 = (c34+w24)/2; #local w11 = c41; #local w12 = c42; #local w13 = c43; #local w14 = c44; /* Partes da esquerda */ object{ retalho( z11, z12, z13, z14, z21, z22, z23, z24, z31, z32, z33, z34, z41, z42, z43, z44, 0.005, tx_grade, tx_aviao ) } object{ retalho( a11, a12, a13, a14, a21, a22, a23, a24, a31, a32, a33, a34, a41, a42, a43, a44, 0.005, tx_grade, tx_aviao ) } object{ retalho( b11, b12, b13, b14, b21, b22, b23, b24, b31, b32, b33, b34, b41, b42, b43, b44, 0.005, tx_grade, tx_aviao ) } object{ retalho( c11, c12, c13, c14, c21, c22, c23, c24, c31, c32, c33, c34, c41, c42, c43, c44, 0.005, tx_grade, tx_aviao ) } object{ retalho( w11, w12, w13, w14, w21, w22, w23, w24, w31, w32, w33, w34, w41, w42, w43, w44, 0.005, tx_grade, tx_aviao ) } /* Partes da direita */ object{ retalho( z11, z12, z13, z14, z21, z22, z23, z24, z31, z32, z33, z34, z41, z42, z43, z44, 0.005, tx_grade, tx_aviao ) scale < 1, -1, 1 > } object{ retalho( a11, a12, a13, a14, a21, a22, a23, a24, a31, a32, a33, a34, a41, a42, a43, a44, 0.005, tx_grade, tx_aviao ) scale < 1, -1, 1 > } object{ retalho( b11, b12, b13, b14, b21, b22, b23, b24, b31, b32, b33, b34, b41, b42, b43, b44, 0.005, tx_grade, tx_aviao ) scale < 1, -1, 1 > } object{ retalho( c11, c12, c13, c14, c21, c22, c23, c24, c31, c32, c33, c34, c41, c42, c43, c44, 0.005, tx_grade, tx_aviao ) scale < 1, -1, 1 > } object{ retalho( w11, w12, w13, w14, w21, w22, w23, w24, w31, w32, w33, w34, w41, w42, w43, w44, 0.005, tx_grade, tx_aviao ) scale < 1, -1, 1 > } object{ asa1 } object{ asa2 } } #end #macro aviao_deformado(param, z11, z12, z13, z14, z21, z22, z23, z24, z31, z32, z33, z34, a21, a22, a23, a24, a31, a32, a33, a34, b21, b22, b23, b24, b31, b32, b33, b34, c21, c22, c23, c24, c31, c32, c33, c34, w21, w22, w23, w24, w31, w32, w33, w34, w41, w42, w43, w44 ) union{ #local d21 = a21 + deform(a21, param); #local d22 = a22 + deform(a22, param); #local d23 = a23 + deform(a23, param); #local d24 = a24 + deform(a24, param); #local d31 = a31 + deform(a31, param); #local d32 = a32 + deform(a32, param); #local d33 = a33 + deform(a33, param); #local d34 = a34 + deform(a34, param); #local e21 = b21 + deform2(b21, param); #local e22 = b22 + deform2(b22, param); #local e23 = b23 + deform2(b23, param); #local e24 = b24 + deform2(b24, param); #local e31 = b31 + deform2(b31, param); #local e32 = b32 + deform2(b32, param); #local e33 = b33 + deform2(b33, param); #local e34 = b34 + deform2(b34, param); #local f21 = c21 + deform3(c21, param); #local f22 = c22 + deform3(c22, param); #local f23 = c23 + deform3(c23, param); #local f24 = c24 + deform3(c24, param); #local f31 = c31 + deform3(c31, param); #local f32 = c32 + deform3(c32, param); #local f33 = c33 + deform3(c33, param); #local f34 = c34 + deform3(c34, param); object { aviao(z11, z12, z13, z14, z21, z22, z23, z24, z31, z32, z33, z34, d21, d22, d23, d24, d31, d32, d33, d34, e21, e22, e23, e24, e31, e32, e33, e34, f21, f22, f23, f24, f31, f32, f33, f34, w21, w22, w23, w24, w31, w32, w33, w34, w41, w42, w43, w44 ) } } #end // Aqui está a cena, finalmente: union{ object{ eixos(3.00) } object{ aviao_deformado(clock, < -3, 0, 2.5 >, < -3, 0, 2.5 >, < -3, 0, 2.5 >, < -3, 0, 2.5 >, < -2, 0, 2.0 >, < -2, 2, 2.0 >, < -2, 2, 3.0 >, < -2, 0, 3.0 >, < -1, 0, 1.0 >, < -1, 4, 1.0 >, < -1, 4, 4.0 >, < -1, 0, 4.0 >, < 2, 0, 0 >, < 2, 4, 0 >, < 2, 4, 5 >, < 2, 0, 5 >, < 4, 0, 0 >, < 4, 4, 0 >, < 4, 4, 6 >, < 4, 0, 6 >, < 10, 0, 0 >, < 10, 4, 0 >, < 10, 4, 6 >, < 10, 0, 6 >, < 18, 0, 0 >, < 18, 4, 0 >, < 18, 4, 6 >, < 18, 0, 6 >, < 22, 0, 0 >, < 22, 4, 0 >, < 22, 4, 3 >, < 22, 0, 3 >, < 25, 0, 0 >, < 25, 3, 0 >, < 25, 3, 2 >, < 25, 0, 2 >, < 26.25, 0.00, 0 >, < 26.25, 2.50, 0 >, < 26.25, 2.50, 6 >, < 26.25, 0.00, 6 >, < 26.25, 0.00, 0 >, < 26.25, 1.25, 0 >, < 26.25, 1.25, 6 >, < 26.25, 0.00, 6 >, < 26.25, 0.00, 0 >, < 26.25, 0.00, 0 >, < 26.25, 0.00, 6 >, < 26.25, 0.00, 6 > ) } } #include "camlight.inc" #declare centro_cena = < 9.00, 0.00, 1.00 >; #declare raio_cena = 20.0; #declare dir_camera = < -20.00, 20.00, 8.00 >; #declare dist_camera = 50.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)