#include "colors.inc" #declare Show_Simple = 1; #declare Show_Iter = 1; #declare Warp = <1,1,0.5>; #declare Xoff = sqrt(Warp.x*Warp.x-Warp.z*Warp.z); #declare PRad = 1; #declare SRad = 2; #declare cnt = 0; // The sun... sphere { cnt, SRad pigment{rgb<0,1,1>} } #if (Show_Simple) #declare Elliptical_Position = vrotate(x,y*360*clock)*Warp; #declare SimpScale = 10; sphere { Elliptical_Position*SimpScale, PRad pigment{rgb<1,0,0>} translate } torus { 10, 0.15 pigment{rgb<0.3,0.3,0.3>} scale Warp translate Xoff*x} #debug concat("\nSIMPLE: <",vstr(3,Elliptical_Position,",",8,5),">\n") #end #if (Show_Iter) #declare pos = -x*3; #declare vel = +z/2.5; #local clk = 0; #local dt = 0.0001; #while (clk < clock*17.422) #local _rad = vlength(pos-cnt); #local _off = vnormalize(cnt-pos); #if (0 & (_off.z<0.0002) & (_off.z>-0.0002) & (_off.x<0)) #debug concat("CLK = ",str(clk,8,4)," VNORM=<",vstr(3,_off,",",8,5), ">\n") #end #local _grv = 1/_rad/_rad * _off; // *M1*M2*G #declare pos = pos + vel*dt + _grv*dt*dt/2; #declare vel = vel + _grv*dt; #local clk = clk+dt; #end sphere { (pos-cnt)*5, PRad pigment{rgb<0,1,0>} translate cnt } // -3..0.94750 * 5 ==> a = 9.86875, xoff = 1.02625 torus { 1, 0.01 pigment{rgb<0.3,0.3,0.3>} scale <9.86875,1,8.75> translate <-5.13125,0,0> } #debug concat("\nITERATED: <",vstr(3,pos,",",8,5),">\n") #end cylinder { -100*x, 100*x, 0.2 pigment{rgb<1,1,1>}} plane { y, -20 pigment{rgb<.6,.6,.6>} } camera {location <0, 100, 0> look_at <0, 0, 0> angle 35} light_source {<50, 100, 50> rgb 1 shadowless}