#include "retalho.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> texture{tx_xadrez}} #macro interpola(ti,t0,v0,t1,v1) #local ss = (ti-t0)/(t1-t0); #local vv = (1-ss)*v0+ss*v1; vv #end #macro bezier2(ti,t0,t1,p0,p1,p2) #local b1 = interpola(ti,t0,p0,t1,p1); #local b2 = interpola(ti,t0,p1,t1,p2); interpola(ti,t0,b1,t1,b2) #end #macro bezier3(ti,t0,t1,p0,p1,p2,p3) #local b1 = bezier2(ti,t0,t1,p0,p1,p2); #local b2 = bezier2(ti,t0,t1,p1,p2,p3); interpola(ti,t0,b1,t1,b2) #end #macro testa_interpola_1(p0,p1,n,raio) union{ #local i = 0; #while (i < n) sphere{ interpola(i,0,p0,n,p1), raio } #local i = i+1; #end } #end #macro interpola_3_multi(ti,p0,n,P1,P2,pf) #local inter = array[n+1]; #local i = 0; #local inter[0] = p0; #local inter[n] = pf; #while(i=n) #local k=n-1; #end bezier3(ti-k,0,1,inter[k],P1[k],P2[k],inter[k+1]) #end #macro testa_interpola_3_multi(p0,pf,P1,P2,n,k,raio) union{ #local i = 0; #while (i < k) sphere{ interpola_3_multi(n*i/k,p0,n,P1,P2,pf), raio } #local i = i+1; #end } #end #macro interpolaMesh(p0,p1,rat) #local arrayInt = array[4]; #local i = 0; #while (i<4) #local arrayInt[i] = interpola(rat,0,p0[i],1,p1[i]); #local i = i+1; #end arrayInt #end #macro intFacil(p0,p1,rat) interpola(rat,0,p0,1,p1) #end #declare chairBody0 = array[4] {<-1,0,5>,<-0.7,-0.2,5.2>,<-0.4,-0.3,5.4>,<0,-0.3,5.4>} #declare chairBody1 = array[4] {<-1.2,-1,0>,<-0.8,-1.5,0>,<-0.4,-1.7,0>,<0,-1.7,0>} #declare chairBody2 = array[4] {<-1.2,1,3.5>,<-0.8,1,3>, <-0.4,1,2.87>,<0,1,2.87>} #declare chairBody4 = array[4] {<-1.2,1.2,1>,<-0.8,1.2,1>,<-0.4,1.2,1>,<0,1.2,1>} #declare chairBody3 = interpolaMesh(chairBody2,chairBody4,0.7) #declare chairBody5 = array[4] {<-1.2,1.35,0.3>,<-0.8,1.35,0.3>,<-0.4,1.35,0.3>, <0,1.35,0.3>} #declare chairBody6 = array[4] {<-1.2,2,0.6>,<-0.8,2,0.6>,<-0.4,2,0.6>,<0,2,0.6>} #declare chairBodyUpper = array[4] {chairBody0,chairBody1,chairBody2,chairBody3} #declare chairBodyMiddle = array[4] {chairBody3,chairBody4,chairBody5,chairBody6} //#declare arm0 = array[4] {intFacil(chairBody0[0],chairBody1[0],0.8),chairBody1[0],chairBody2[0],intFacil(chairBody2[0],chairBody3[0],0.2)} #declare a00 = bezier3(0.5,0,1,chairBody0[0],chairBody1[0],chairBody2[0],chairBody3[0]); #declare a01 = bezier3(0.6,0,1,chairBody0[0],chairBody1[0],chairBody2[0],chairBody3[0]); #declare a02 = bezier3(0.8,0,1,chairBody0[0],chairBody1[0],chairBody2[0],chairBody3[0]); #declare a03 = bezier3(1.0,0,1,chairBody0[0],chairBody1[0],chairBody2[0],chairBody3[0]); #declare int00 = bezier3(0.5,0,1,chairBody0[1],chairBody1[1],chairBody2[1],chairBody3[1]); #declare int01 = bezier3(0.6,0,1,chairBody0[1],chairBody1[1],chairBody2[1],chairBody3[1]); #declare int02 = bezier3(0.8,0,1,chairBody0[1],chairBody1[1],chairBody2[1],chairBody3[1]); #declare int03 = bezier3(1.0,0,1,chairBody0[1],chairBody1[1],chairBody2[1],chairBody3[1]); #declare a10 = intFacil(int00,a00,2); #declare a11 = intFacil(int01,a01,2); #declare a12 = intFacil(int02,a02,2); #declare a13 = intFacil(int03,a03,2); #declare arm0 = array[4] {a00,a01,a02,a03} #declare arm1 = array[4] {a10,a11,a12,a13} #declare arm2 = array[4] {<-1.2,0,3>,<-1.2,0.3,3.1>,<-1.2,0.7,3.2>,<-1.2,1,3.1>} #declare arm3 = array[4] {<-1.6,0,3>,<-1.6,0.3,3.1>,<-1.6,0.7,3.2>,<-1.6,1,3.1>} //#declare arm3 = array[4] {a00,<-1.2,0.3,2>,<-1.2,0.7,2>,a03} #declare arm = array[4] {arm0,arm1,arm2,arm3} #declare leg0 = arm0 #declare leg1 = array[4] {int00,int01,int02,int03} #declare leg2 = array[4] {<0,0,0>,<0,0,0.3>,<0,0,0.7>,<0,0,1>} #declare leg3 = array[4] {<-2,-0.2,0>,<-2,0.3,0>,<-2,0.7,0>,<-2,1.5,0>} #declare leg = array[4] {leg0,leg1,leg2,leg3} #declare t_point= texture{ pigment{ color rgb < 1, 0, 0 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } #declare raio_armacao = 0; #macro halfChair(scaleVec) union{ retalho (chairBodyUpper,raio_armacao,tx_vidro,t_point,0,0,1,1) retalho (chairBodyMiddle,raio_armacao,tx_vidro,t_point,0,0,1,1) retalho (arm,raio_armacao,tx_vidro,t_point,0,0,1,1) retalho (leg,raio_armacao,tx_vidro,t_point,0,0,1,1) scale scaleVec } #end union { halfChair(<-1,1,1>) halfChair(<1,1,1>) } #include "camlight.inc" #declare centro_cena = < 0, 0.5, 2.5>; #declare raio_cena = 5.2; #declare dir_camera = < 0.5, 0.5, 0.5 >; #declare dist_camera = raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)