//Stephen Lavedas based on an idea and original code by Ken Tyler //2-17-99 camera{location<5,5,25>look_at 0*y} light_source{< 0, 5,100>rgb 1} light_source{< 0, 5,-100>rgb 1} // original working code #declare XDim = 0.05; #declare YZDim = 0.75; #declare SPD = 0.25; //Segments per Degree... (0.5 is 1 segment for 2 degrees) #declare Type = 1; //1 is sphere 2 is hemi-sphere 4 is quarter sphere #declare MaxA = 180 * SPD; #declare MaxB = (360 * SPD)/Type; #declare Radius = YZDim * (360 * SPD)/(2*pi); //Circumference = 2pir #declare HalfDome_1 = union { #declare aa = 0; #while (aa < MaxA) #declare bb = 0; #while (bb < MaxB) box{ -.5,.5 scale // Box scale translate <-Radius, 0.00, 0> // Translate from origin rotate <0.0, 0.00,-bb/SPD> // rotate for first vertical section of dome #declare Max = 90; #declare cc = bb; #if (Type = 4) scale <1.0, 1.00,1-pow(bb/Max,2) + 0.01> #else #if (Type = 2) #if (cc > Max) #declare cc = cc - Max; scale <1.0, 1.00,1 - pow(1 - cc/Max,2) + 0.01> #else scale <1.0, 1.00,1 + pow(cc/Max,2) + 0.01> #end #else //This would be for a sphere, but I haven't figured it out yet #end #end rotate <0.0, aa/SPD, 0.00> // rotate scaled section horizontily to form dome translate <0.0, 0.75, 0.00> // Translate bottom edge to y*0 } #declare bb = bb+1; #end #declare aa = aa+1; #end } #declare Tex = texture{pigment{rgb 1} finish{ambient .4 diffuse .2}} object{HalfDome_1 rotate 180*y texture{Tex}}