// Circular shaped solar sail space vehicle // Scale is 1 unit per 1 meter // Written for POV-Ray v2.0/2.2 // In this revision, the sail is split into vanes, which can be adjusted to // steer the vessel. #include "colors.inc" #include "shapes.inc" #include "textures.inc" /* This view is not a close up. To render a close up, set the multiplier on the camera location to 7, and the support thicknesses to .2 */ camera { location <4,4,6>*50 look_at <0,0,0> } #declare Sail_Thickness = 0.02 // I would have made this 2 microns like // the heliogyro, but POV Ray can't make // cylinders that thin. #declare Sail_Texture = texture{Silver_Texture} #declare Sail_Inner_Radius = 20 #declare Sail_Radius = 200 #declare Support_Thickness = .5 #declare Hub_Support_Color = pigment{Gray65} #declare Hub_Height = 5 #declare Hub_Texture = texture{Chrome_Metal} #declare Hub_Radius = 2 #declare Vane_Distance = 2 // Vanes translate out this distance so that gaps // appear between them when the sail is flat. // a cone which cuts the sail cylinder into a vane #declare Cone_Radius = 82.8427124746 // Sail_Radius*tan(pi/8) #declare Cone_Length = Sail_Radius #declare Vane_Rotation = 0 // Vane pitch in degrees // vane supports which extend from the hub, composed of cylinders // whose endpoints are described here #declare Support_Hub_x = 1.91503374 // -Hub_Radius*sin(180-180/#vanes-acos(Hub_Radius/Sail_Inner_Radius)) #declare Support_Hub_y = Hub_Height #declare Support_Hub_z = -.5767545 // -Hub_Radius*cos(180-180/#vanes-acos(Hub_Radius/Sail_Inner_Radius)) #declare Support_Vane_x = 7.6536686473 // Sail_Inner_Radius*sin(180/#vanes) #declare Support_Vane_y = 0 #declare Support_Vane_z = 18.4775906502 // Sail_Inner_Radius*cos(180/#vanes) #declare Starry_Sky = pigment { spotted color_map { [0.0 color Black] [0.95 color Black] [1.0 color White] } } #declare Hub = cylinder{ <0,-Hub_Height,0>, <0,Hub_Height,0>, Hub_Radius texture{Hub_Texture} } #declare Support = union{ cylinder{, , Support_Thickness } cylinder{, , Support_Thickness } cylinder{, , Support_Thickness } cylinder{, , Support_Thickness } pigment{Hub_Support_Color} } #declare Sheet = intersection{ difference{ cylinder{<0,Sail_Thickness/2,0>,<0,-Sail_Thickness/2,0>,Sail_Radius} cylinder{<0,Sail_Thickness,0>,<0,-Sail_Thickness,0>,Sail_Inner_Radius} texture{Sail_Texture} } cone{<0,0,0>,0,,Cone_Radius} texture{Sail_Texture} translate x*Vane_Distance } #declare Ring_Support = cylinder { , <-Support_Vane_x,Support_Vane_y,Support_Vane_z>, Support_Thickness pigment{Hub_Support_Color} } #declare Vane = union{ object{Sheet} object{Support} object{Ring_Support} } #declare Sail = union{ // this vane is set outwards, indicating that a maneuver is being conducted // by letting this vane translate outwards, which offsets the solar pressure // from the center of mass union{ object{Sheet translate x*10} object{Support} object{Ring_Support} rotate <0,0*45,0> } object{Vane rotate <0,1*45,0> } object{Vane rotate <0,2*45,0> } object{Vane rotate <0,3*45,0> } object{Vane rotate <0,4*45,0> } object{Vane rotate <0,5*45,0> } object{Vane rotate <0,6*45,0> } object{Vane rotate <0,7*45,0> } } union{ object{Hub} object{Sail} } sphere { <0,0,0>, 4000 pigment{Starry_Sky} } light_source { <20, 500, 20> color White }