// Based upon source by Louis Bellotto #include "colors.inc" #declare index = 0; global_settings { assumed_gamma 1.80 max_trace_level 10 } #declare VP = 2*; camera { perspective location VP up y right image_width*x/image_height angle 60 sky <0,0,1> look_at <0,0,0> } light_source { VP color White } background { color <0,0,0> } // Create a triangular facet approximation to a sphere // Return the number of facets created. // The number of facets will be (4^iterations) * 8 #macro CreateNSphere (iterationNumber) #local i = 0; #local it = 0; #local pointA = <0,0,0>; #local pointB = <0,0,0>; #local pointC = <0,0,0>; #local p = array[6]; #local p[0] = < 0, 0, 1>; #local p[1] = < 0, 0,-1>; #local p[2] = <-1/sqrt(2.0),-1/sqrt(2.0), 0>; #local p[3] = < 1/sqrt(2.0),-1/sqrt(2.0), 0>; #local p[4] = < 1/sqrt(2.0), 1/sqrt(2.0), 0>; #local p[5] = <-1/sqrt(2.0), 1/sqrt(2.0), 0>; // --- Create the level 0 object #declare facettes[0][0]=p[0];#declare facettes[0][1]=p[3];#declare facettes[0][2]=p[4]; #declare facettes[1][0]=p[0];#declare facettes[1][1]=p[4];#declare facettes[1][2]=p[5]; #declare facettes[2][0]=p[0];#declare facettes[2][1]=p[5];#declare facettes[2][2]=p[2]; #declare facettes[3][0]=p[0];#declare facettes[3][1]=p[2];#declare facettes[3][2]=p[3]; #declare facettes[4][0]=p[1];#declare facettes[4][1]=p[4];#declare facettes[4][2]=p[3]; #declare facettes[5][0]=p[1];#declare facettes[5][1]=p[5];#declare facettes[5][2]=p[4]; #declare facettes[6][0]=p[1];#declare facettes[6][1]=p[2];#declare facettes[6][2]=p[5]; #declare facettes[7][0]=p[1];#declare facettes[7][1]=p[3];#declare facettes[7][2]=p[2]; #local nt=8; #if (iterationNumber > 0) // -- Bisect each edge and move to the surface of a unit sphere #declare it=0; #while (it, 1 pigment { color MediumWood transmit 0.90 } finish { ambient 0.40 diffuse 0.60 } } */