// MC930 - Exemplo de main.pov para o trabalho final // Last edited on 2000-12-14 09:07:40 by mc726 // MONUMENTO #include "colors.inc" #include "stones.inc" #declare centro_do_monumento = < 0, 0, 1 >; #declare pe_direito = 3; #declare raio_panetone = 10.4; #declare dist_ponte = 5; #declare larg_ponte = 2; #declare dist_panetones = 2*raio_panetone+dist_ponte; #declare expessura_div = .25; #declare larg_parapeito = 3; #declare num_parapeitos = 20; #declare ang_parapeito = 10; #declare passagem = 1.2; #declare alt_elev = 1.0; #declare elevacao = box { <-10*raio_panetone,0,0>, <10*raio_panetone,-10*raio_panetone,alt_elev> } #declare furo_elev = cylinder { <0,0,-.1>, <0,0,alt_elev+.5>, raio_panetone+passagem } #declare alt_banco = 0.5; #declare dist_banco = 0.4; #declare banco = difference { cylinder { <0,0,alt_banco-.2>, <0,0,alt_banco>, raio_panetone+passagem } cylinder { <0,0,alt_banco-.5>, <0,0,alt_banco+.5>, raio_panetone+passagem-dist_banco } } #declare passarela = difference { cylinder { <0,0,0>, <0,0,alt_elev+.2>, raio_panetone+passagem+.2 } object {furo_elev} } #declare escada = union { #declare i = 0; #while (i < 5) box { <0,0,0>, } #declare i = i+1; #end } #declare rampa = intersection { box { <.1,0,0> <-dist_ponte/2+passagem+.2,50,-alt_elev> } box { <0,0,0> <-dist_ponte/2+passagem+.2,50,-alt_elev> rotate x*-15 } translate <0,0,alt_elev> } #declare passarelas = difference { union { object { passarela translate <-dist_panetones/2,0,0> } object { passarela translate } object { banco translate <-dist_panetones/2,0,0> } object { banco translate } } union { box { <-dist_panetones/2,1,-.1>, } box { <-dist_panetones/2,0,-.1>, <-2,10*raio_panetone,alt_elev+.5> rotate z*30 } box { , <2,10*raio_panetone,alt_elev+.5> rotate -z*30 } } } #declare chao = union { object {passarelas} object {rampa} object {escada} difference { object {elevacao} union { object { furo_elev translate <-dist_panetones/2,0,0> } object { furo_elev translate } } } texture {pigment { color rgb <.8,.8,.8> } } } #declare panetone = cylinder { <0,0,0>, <0,0,2*pe_direito>, raio_panetone } #declare divisoria = cylinder { <0,0,0>, <0,0,expessura_div>, raio_panetone+1 } #declare ponte = box { <0,0,0>, } #declare cat1 = raio_panetone+1+1.3*sin(radians(ang_parapeito)) -expessura_div*cos(radians(ang_parapeito))/2; #declare cat2 = larg_parapeito/2; #declare corrimao = torus { sqrt(cat1*cat1+cat2*cat2)-.03,.05 rotate x*90 } #declare corrimoes = difference { union { object { corrimao translate<-dist_panetones/2,0,pe_direito+1.3> } object { corrimao translate } } box { <-dist_panetones/2,-larg_ponte/2,0>, } texture { pigment {color rgb <1,.5,0>}} } #declare prof_coluna = .4; #declare exp_coluna = .3; #declare alt_incl = pe_direito-.8; #declare ang_coluna = 20; #declare coluna = union { box { <0,0,0>, } intersection { box { <0,0,alt_incl>, <1.2,exp_coluna,pe_direito> } box { <0,-.1,alt_incl>, <5,exp_coluna+.1,pe_direito> rotate y*-ang_coluna } } translate <0,-exp_coluna/2,0> } #declare colunas = union { #declare i = 0; #while (i < num_parapeitos) object { coluna translate rotate z*(360/num_parapeitos)*(i+.5) translate<-dist_panetones/2,0,0> } object { coluna translate rotate z*(360/num_parapeitos)*(i+.5) translate } object { coluna translate rotate z*((360/num_parapeitos)*(i+.5)) translate<-dist_panetones/2,0,0> } object { coluna translate rotate z*((360/num_parapeitos)*(i+.5)) translate } #declare i = i+1; #end texture {pigment { color rgb <.8,.8,.8> } } } #declare parapeito = union { box { <-expessura_div,0,0>, <0,larg_parapeito,1.5> } box { <-expessura_div,0,1.5>, <.1,larg_parapeito,1.4> } translate<0,-larg_parapeito/2,0> rotate y*ang_parapeito } #declare refletor = box { <-expessura_div,0,0>, <0,larg_parapeito,-.8> translate<0,-larg_parapeito/2,0> rotate y*-ang_parapeito*2.5 } #declare teto = union { object { divisoria translate <-dist_panetones/2,0,2*pe_direito> } object { divisoria translate } object { ponte translate <-dist_ponte/2,-larg_ponte/2,2*pe_direito> } object { refletor rotate z*90 translate <0,larg_ponte/2,2*pe_direito> } object { refletor rotate z*270 translate <0,-larg_ponte/2,2*pe_direito> } #declare i = 1; #while (i < num_parapeitos) object { refletor translate rotate z*(360/num_parapeitos)*i translate<-dist_panetones/2,0,0> } object { refletor translate rotate z*((360/num_parapeitos)*i+180) translate } #declare i = i+1; #end texture {pigment { color rgb <.8,.8,.8> } } } #declare divisorias = union { object { divisoria translate <-dist_panetones/2,0,pe_direito> } object { divisoria translate } object { ponte translate <-dist_ponte/2,-larg_ponte/2,pe_direito> } object { parapeito rotate z*90 translate <0,larg_ponte/2,pe_direito> } object { parapeito rotate z*270 translate <0,-larg_ponte/2,pe_direito> } #declare i = 1; #while (i < num_parapeitos) object { parapeito translate rotate z*(360/num_parapeitos)*i translate<-dist_panetones/2,0,0> } object { parapeito translate rotate z*((360/num_parapeitos)*i+180) translate } #declare i = i+1; #end texture {pigment { color rgb <.8,.8,.8> } } } #declare panetones = union { object { panetone translate <-dist_panetones/2,0,0> } object { panetone translate } texture{ pigment{ brick } rotate <90,0,0> scale .1 //finish{ diffuse 0.05 ambient 0.05 reflection 0.90 } } } #declare monumento = union { object {panetones} object {divisorias} object {corrimoes} object {colunas} object {teto} object {chao} } // PAVIMENTO #declare pavimento = plane{ z, 0 texture{ pigment{ color rgb <.8,.8,.8> } finish{ diffuse 0.9 ambient 0.05 specular 0.3 roughness 0.1 } } } // FUNDO background{ color rgb < 0.0, 0.75, 1.0 > } // EIXOS #declare eixos_cartesianos = union { cylinder { <0,0,0>, <1,0,0>, 0.02 pigment { color rgb <1,0,0> } } cylinder { <0,0,0>, <0,1,0>, 0.02 pigment { color rgb <0,1,0> } } cylinder { <0,0,0>, <0,0,1>, 0.02 pigment { color rgb <0,0,1> } } } //object { eixos_cartesianos } object { pavimento } object { monumento } // CÂMARA #declare centro_da_cena = centro_do_monumento; #declare raio_da_cena = 5.0; #declare direcao_da_camera = vnormalize( < 1, 3, .8 > ); #declare dist_da_camera = 6.0 * raio_da_cena; #declare pos_da_camera = centro_da_cena + dist_da_camera * direcao_da_camera; camera { location pos_da_camera right < -0.64, 0.00, 0.00 > up < 0.00, 0.48, 0.00 > sky z look_at centro_da_cena } // ILUMINAÇÃO #declare direcao_da_luz = vrotate(direcao_da_camera, < 10, 10, 10 >); #declare intens_da_luz = 1.25; light_source { 20 * raio_da_cena * direcao_da_luz color rgb intens_da_luz * < 1, 1, 1 > }