// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2023-12-28 16:35:27 by stolfi // Raio da grade debug: // #declare rdb = 0.015; #declare rdb = 0; background{ color rgb < 240/255, 243/255, 246/255 > } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.950, 0.870, 0.950 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare tx_roxo = texture{ pigment{ color rgb < 0.60, 0.1, 0.60 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } scale 2.0 } #declare tx_vermelho = texture{ pigment{ color rgb < 0.80, 0.0, 0.17 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } scale 2.0 } #declare tx_azul = texture{ pigment{ color rgb < 0.17, 0.80, 0.80 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } scale 2.0 } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #include "retalho.inc" #macro poltrona(pos, rot, altura, largura, inclinacao) //--------------------------------- // azul - corpo #local A = array[4][4]; #local A[0][0] = <0, 0.2, 0.5>; #local A[0][1] = <0.5, 0.2, 0.5>; #local A[0][2] = <1, 0.2, 0.5>; #local A[0][3] = <1.5, 0.2, 0.5>; #local A[1][0] = <0, 0.5, 0.8>; #local A[1][1] = <0.5, 0.5, 0.8>; #local A[1][2] = <1, 0.5, 0.8>; #local A[1][3] = <1.5, 0.5, 0.8>; #local A[2][0] = <0, 0.25, 1>; #local A[2][1] = <0.5, 0.25, 1>; #local A[2][2] = <1, 0.25, 1>; #local A[2][3] = <1.5, 0.25, 1>; #local A[3][0] = <0, 1, 1.25>; #local A[3][1] = <0.5, 1, 1.25>; #local A[3][2] = <1, 1, 1.25>; #local A[3][3] = <1.5, 1, 1.25>; //--------------------------------- //--------------------------------- // cabeca - roxo 1 #local R1 = array[4][4]; #local R1[0][0] = A[3][0]; #local R1[0][1] = A[3][1]; #local R1[0][2] = A[3][2]; #local R1[0][3] = A[3][3]; //-- calcula #local R1[1][0] = 2*R1[0][0] - A[2][0]; #local R1[1][1] = 2*R1[0][1] - A[2][1]; #local R1[1][2] = 2*R1[0][2] - A[2][2]; #local R1[1][3] = 2*R1[0][3] - A[2][3]; #local R1[2][0] = <0, 0.7, 2.2>; #local R1[2][1] = <0.5, 0.7, 2.2>; #local R1[2][2] = <1, 0.7, 2.2>; #local R1[2][3] = <1.5, 0.7, 2.2>; #local R1[3][0] = <0, 2, 2.2>; #local R1[3][1] = <0.5, 2, 2.2>; #local R1[3][2] = <1, 2, 2.2>; #local R1[3][3] = <1.5, 2, 2.2>; //--------------------------------- //--------------------------------- // pés - roxo 2 #local R2 = array[4][4]; #local R2[0][0] = <0, -1.5, 0.4>; #local R2[0][1] = <0.5, -1.5, 0.4>; #local R2[0][2] = <1, -1.5, 0.4>; #local R2[0][3] = <1.5, -1.5, 0.4>; #local R2[1][0] = <0, -0.5, 0.8>; #local R2[1][1] = <0.5, -0.5, 0.8>; #local R2[1][2] = <1, -0.5, 0.8>; #local R2[1][3] = <1.5, -0.5, 0.8>; #local R2[3][0] = A[0][0]; #local R2[3][1] = A[0][1]; #local R2[3][2] = A[0][2]; #local R2[3][3] = A[0][3]; //-- calcula #local R2[2][0] = 2*R2[3][0] - A[1][0]; #local R2[2][1] = 2*R2[3][1] - A[1][1]; #local R2[2][2] = 2*R2[3][2] - A[1][2]; #local R2[2][3] = 2*R2[3][3] - A[1][3]; //--------------------------------- //--------------------------------- // braço - vermelho #local V = array[4][4]; #local V[0][0] = A[0][0]; #local V[0][1] = 2*V[0][0] - A[0][1]; #local V[0][2] = <-1, 0.2, 0.8>; #local V[0][3] = <-1, 0.2, 0.5>; #local V[1][0] = A[1][0]; #local V[1][1] = 2*V[1][0] - A[1][1]; #local V[1][2] = <-1, 0.5, 0.8>; #local V[1][3] = <-1, 0.5, 0.5>; #local V[2][0] = A[2][0]; #local V[2][1] = 2*V[2][0] - A[2][1]; #local V[2][2] = <-1, 0.25, 0.8>; #local V[2][3] = <-1, 0.25, 0.5>; #local V[3][0] = A[3][0]; #local V[3][1] = 2*V[3][0] - A[3][1]; #local V[3][2] = <-1, 1, 1.25>; #local V[3][3] = <-1, 1, 1.25>; //--------------------------------- //--------------------------------- // suporte da cadeira #local topo = (A[0][0] + A[0][3] + A[3][0] + A[3][3])/4; #local base1 = topo + <0, 0.5, -0.5>; #local suporte1 = cylinder{ topo, base1, 0.15 texture{ tx_roxo } }; #local ligacao = sphere{ base1, 0.30 texture{ tx_azul }} #local base2 = base1 + <0, 0, -1.5>; #local suporte2 = cylinder{ base1, base2, 0.15 texture{ tx_roxo } }; #local roda = sphere{ base2, 0.60 texture{ tx_vermelho }} //--------------------------------- union{ union{ object{ retalho(A, rdb, cret0, 3) } object{ retalho(R1, rdb, cret1, 3) } object{ retalho(R2, rdb, cret2, 3) } object{ retalho(V, rdb, cret3, 3) } #if (rdb = 0) object{ suporte1 } object{ ligacao } object{ suporte2 } #end object{ roda } translate <-A[0][0].x, -A[0][0].y, -A[0][0].z> translate pos } union{ object{ retalho(A, rdb, cret4, 3) } object{ retalho(R1, rdb, cret5, 3) } object{ retalho(R2, rdb, cret6, 3) } object{ retalho(V, rdb, cret7, 3) } translate 0.0001*<-2,-2,2> // Para evidenciar a sobreposição -- Prof. rotate 0.01*<1,2,3> // Para evidenciar a sobreposição -- Prof. translate <-A[0][0].x, -A[0][0].y, -A[0][0].z> translate <-A[0][3].x, 0, 0> // scale <-1, 1, 1> // translate pos } rotate rot + scale } #end #declare duas = true; #declare cmin = < -2.5, -2.0, -3.5 >; #declare cmax = < +2.5, +3.0, +3.0 >; #if (duas) #declare disp = < 2.5, 0, 0>; #declare cmin = cmin - disp; #declare cmax = cmax + disp; union{ object{ poltrona(<0,0,0>, 90*z, 1.00, 1.00, +35) translate -disp } object{ poltrona(<0,0,0>, 0*z, 1.25, 0.75, -35) translate +disp } } #else object{ poltrona(<0,0,0>, 0*z, 1.00, 1.00, -10) } #end #if (rdb = 0) object{ chao translate (cmin.z - 1)*z texture{ tx_xadrez } } #end #include "eixos.inc" // #if (rdb > 0) object{ eixos(5.0) } #end #include "gaiola.inc" #if (rdb > 0) object{ gaiola(cmin,cmax) } #end #if (rdb = 0) object{ gaipiso(cmin,cmax) } #end #declare centro_cena = (cmin + cmax)/2; #declare raio_cena = 0.50*vlength(cmax-cmin); #declare dist_camera = 7*raio_cena; #include "camlight.inc" #declare dir_camera = < 7, -5, 3 >; #declare intens_luz = 0.80; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)