background{ color rgb < 0.75, 0.80, 0.85 > } #include "eixos.inc" #include "grau_1.inc" #include "grau_2.inc" #include "grau_3.inc" #include "grau_4.inc" #local tx = texture{ pigment{ color rgb 6*< 0.128, 0.128, 0.128 > } finish{ diffuse 0.9 ambient 0.1 } } #macro interpola1(ti, t0, v0, t1, v1) #local ss = (ti - t0)/(t1 - t0); #local vv = ((1 - ss) * v0) + (ss * v1); vv #end #macro interpola3(ti, ta, tb, v0, v1, v2, v3) #local v01 = interpola1(ti, ta, v0, tb, v1); #local v02 = interpola1(ti, ta, v1, tb, v2); #local v03 = interpola1(ti, ta, v2, tb, v3); #local v012 = interpola1(ti, ta, v01, tb, v02); #local v123 = interpola1(ti, ta, v02, tb, v03); #local v0123 = interpola1(ti, ta, v012, tb, v123); v0123 #end #macro interpola3_multi(ti, n, pini, p1, p2, pfin) #local k = int(ti); #if (k = 0) #local q0 = pini; #else #local q0 = (p2[k-1]+p1[k])/2; #end #local q1 = p1[k]; #local q2 = p2[k]; #if (k != n - 1) #local q3 = (p2[k]+p1[k+1])/2; #else #local q3 = pfin; #end #local pt = interpola3(ti, k, k+1, q0, q1, q2, q3); pt #end #include "bezpoly.inc" #macro liga_pontos(np, pini, p1, p2, pfin, nb, raio) union{ object{ bezpoly_multi(np, pini, p1, p2, pfin, 0.9*raio) } #local ti = 0; #while (ti < np) //#debug concat("!! ti = ", str(ti, 0, 3), "\n") #local centro = interpola3_multi(ti, np, pini, p1, p2, pfin); sphere{ centro, raio texture{ tx } } #local ti = ti + np/nb; #end } #end #macro teste() #local n = 3; #local pini = < 0,-4,-3 >; #local p1 = array[n]; #local p1[0] = <4,-3,1>; #local p1[1] = <4,0,-4>; #local p1[2] = <4,6,-2>; #local p2 = array[n]; #local p2[0] = <-4,-2,2>; #local p2[1] = <-4,2,2>; #local p2[2] = <-4,8,4>; #local pfin = < 0,4,4 >; liga_pontos(n, pini, p1, p2, pfin, 100, 0.2) #end union{ //object{ eixos(3.00) } //object{ grau_1() translate < 0,0,3 >} //object{ grau_2() translate < 0,2,3 >} //object{ grau_3() translate < 0,4,3 >} //object{ grau_4() translate < 0,6,3 >} object{ grau_1() translate < 0,-4,-3 >} object{ grau_3() translate < 0,4,4 >} teste() } #include "eixos.inc" //object{ eixos(7) } #declare cmin = < -5,-6,-5 >; #declare cmax = < +5,+9,+7 >; box{ cmin, texture{ pigment{ color rgb <0.80,0.70,0.60> } finish {diffuse 0.7 ambient 0.3 } } } #include "camlight.inc" #declare centro_cena = (cmin + cmax)/2; #declare raio_cena = 0.55*vlength(cmin - cmax); #declare dir_camera = < 35.00, 20.00, 10.00 >; #declare dist_camera = 7*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)