//Description: // whirling sierpinski triangle forms // camera angle and position changes to match size of objects // glass textures // translation of objects along camera axis mean that all levels // can be seen fully, and larger objects are allowed without overlap //Author: Ben Scheele //Date: 8-26-2003 /* for the animation, use this as the .ini file, or simply insert the switches into the command line window [300X300 AA .3 ] +w300 +h300 +ki-2 +kf2 +kfi1 +kff90 +A0.3 */ #version 3.5; global_settings{ max_trace_level 6 } #declare Clock2 = pow(sin(4.85*clock/pi),2); #if(clock <= 0) #declare pan = -y*clock*.1; #declare zoom = 2.25 - clock*.5; #else #declare pan = y*Clock2*.1; #declare zoom = 2.25 + clock*.82; #end camera { location -36*z + pan up y right x angle zoom look_at pan } light_source{ <-50,-100,-50> rgb 1 } light_source{ <50,180,-180> rgb 1 } background{ rgb <.6,.6,.75> } #declare a = 2; #declare Unit1 = sphere{ 0, .4 } #declare Unit2 = union{ object{ Unit1 translate <-.5,.5/sqrt(3),1> } object{ Unit1 translate -1/sqrt(3)*y+z } object{ Unit1 translate <.5,.5*sqrt(3),1> } } #declare b = .5; #declare n = 0; #while (n <= 5 ) #declare Unit2 = union{ object{ Unit2 scale b translate .5/sqrt(3)*y*clock } object{ Unit2 scale b translate .5/sqrt(3)*y*clock rotate 120*z } object{ Unit2 scale b translate .5/sqrt(3)*y*clock rotate -120*z } } object{ Unit2 pigment{ color rgbf <.755-.1*n,0,.1+.15*n,.5-.05*n> transmit .5-.05*n } finish{ specular 0.7 roughness 0.001 brilliance .004 phong .3 diffuse .8 reflection{ 0.1, 0.9 falloff .5 metallic .15 } conserve_energy } interior{ ior 1.5 caustics 1.5 fade_distance .5 fade_power 2 } rotate clock*30*z } #declare n = n + 1; #end