#include "colors.inc" camera { // Uncomment this location statement and comment out the other location statement to have an animated sequence // You will also need to change your POVRAY.INI file to include the lines // Initial_Frame=1 // Final_Frame=60 // location <60*sin(clock*360/60), 9, 60*cos(clock*360/60)> location <50, 10, -35> look_at <0, 10, 0> angle 36 } light_source { <500, 1000, -300> White } plane { y, -1.5 pigment { checker Green White } } background { color SkyBlue } #declare Sky = sky_sphere { pigment { gradient y color_map { [0.75 color CornflowerBlue] [1.00 color MidnightBlue] } scale 2 translate <-1, -1, -1> } pigment { bozo turbulence 0.6 octaves 7 omega .49876 lambda 2.5432 color_map { [0.0 color rgbf<.75, .75, .75, 0.1>] [0.4 color rgbf<.9, .9, .9, .9>] [0.7 color rgbf<1, 1, 1, 1>] } scale 6/10 scale <1, 0.3, 0.3> } pigment { bozo turbulence 0.6 octaves 8 omega .5123 lambda 2.56578 color_map { [0.0 color rgbf<.375, .375, .375, 0.2>] [0.4 color rgbf<.45, .45, .45, .9>] [0.6 color rgbf<0.5, 0.5, 0.5, 1>] } scale 6/10 scale <1, 0.3, 0.3> } } sky_sphere { Sky } #declare ladder1 = union { #declare Ycount=0; #while (Ycount < 54) cylinder { <10-Ycount*10/54, Ycount*20/54, 0>, <10-Ycount*10/54, Ycount*20/54, 1> 0.1 } #declare Ycount=Ycount+1; #end cylinder { <10, 0, 0>, <-0.50, 21, 0> 0.1 } cylinder { <10, 0, 1>, <-0.5, 21, 1> 0.1 } } #declare ladder2 = union { #declare Ycount=0; #while (Ycount < 18) cylinder { <10-Ycount*10/18, Ycount*20/18, 1>, <10-Ycount*10/18, Ycount*20/18, 2> 0.1 } #declare Ycount=Ycount+1; #end cylinder { <10, 0, 1>, <-0.5, 21, 1> 0.1 } cylinder { <10, 0, 2>, <-0.5, 21, 2> 0.1 } } #declare ladder3 = union { #declare Ycount=0; #while (Ycount < 18) cylinder { <-10+Ycount*10/18, Ycount*20/18, 0>, <-10+Ycount*10/18, Ycount*20/18, 1> 0.1 } #declare Ycount=Ycount+1; #end cylinder { <-10, 0, 0>, <0.5, 21, 0> 0.1 } cylinder { <-10, 0, 1>, <0.5, 21, 1> 0.1 } } #declare ladder4 = union { #declare Ycount=0; #while (Ycount < 10) cylinder { <0+Ycount*5/10, Ycount*10/10, 0>, <0+Ycount*5/10, Ycount*10/10, 1> 0.1 } #declare Ycount=Ycount+1; #end cylinder { <0, 0, 0>, <5, 10, 0> 0.1 } cylinder { <0, 0, 1>, <5, 10, 1> 0.1 } } #declare ladder5 = union { #declare Ycount=0; #while (Ycount < 10) cylinder { <0-Ycount*5/10, Ycount*10/10, 0>, <0-Ycount*5/10, Ycount*10/10, 1> 0.1 } #declare Ycount=Ycount+1; #end cylinder { <0, 0, 0>, <-5, 10, 0> 0.1 } cylinder { <0, 0, 1>, <-5, 10, 1> 0.1 } } object { ladder1 pigment { Brown } } object { ladder1 pigment { Brown } translate z*9 } object { ladder2 pigment { Brown } } object { ladder2 pigment { Brown } translate z*7 } object { ladder3 pigment { Brown } } object { ladder3 pigment { Brown } translate z*1 } object { ladder3 pigment { Brown } translate z*8 } object { ladder3 pigment { Brown } translate z*9 } object { ladder4 pigment { Brown } } object { ladder4 pigment { Brown } translate z*1 } object { ladder4 pigment { Brown } translate z*8 } object { ladder4 pigment { Brown } translate z*9 } object { ladder5 pigment { Brown } } object { ladder5 pigment { Brown } translate z*1 } object { ladder5 pigment { Brown } translate z*8 } object { ladder5 pigment { Brown } translate z*9 } // Top bar cylinder { <0, 20, 0>, <0, 20, 10> 0.2 } // Back brace cylinder { <-5, 10, 0>, <0, 20, 10> 0.2 } // Back brace cylinder { <-5, 10, 10>, <0, 20, 0> 0.2 } #declare platform_side = union { cylinder { <0, 0, 0>, <0, 2, 0> 0.1 } cylinder { <0.3, 0, 0>, <0.3, 2, 0> 0.1 } cylinder { <0.6, 0, 0>, <0.6, 2, 0> 0.1 } cylinder { <0.9, 0, 0>, <0.9, 2, 0> 0.1 } cylinder { <1.2, 0, 0>, <1.2, 2, 0> 0.1 } cylinder { <1.5, 0, 0>, <1.5, 2, 0> 0.1 } cylinder { <1.8, 0, 0>, <1.8, 2, 0> 0.1 } cylinder { <2.1, 0, 0>, <2.1, 2, 0> 0.1 } cylinder { <0, 2, 0>, <2.1, 2, 0> 0.1 } } #declare platform_1 = union { cylinder { <0, 0, 0.666>, <0, 2, 0.666> 0.1 } cylinder { <0, 0, 1.333>, <0, 2, 1.333> 0.1 } cylinder { <0, 0, 2>, <0, 2, 2> 0.1 } cylinder { <0, 0, 2.666>, <0, 2, 2.666> 0.1 } cylinder { <0, 0, 3.333>, <0, 2, 3.333> 0.1 } cylinder { <0, 0, 4>, <0, 2, 4> 0.1 } cylinder { <0, 0, 4.666>, <0, 2, 4.666> 0.1 } cylinder { <0, 0, 5.333>, <0, 2, 5.333> 0.1 } cylinder { <0, 0, 6>, <0, 2, 6> 0.1 } cylinder { <0, 0, 6.666>, <0, 2, 6.666> 0.1 } cylinder { <0, 0, 7.333>, <0, 2, 7.333> 0.1 } cylinder { <0, 0, 8>, <0, 2, 8> 0.1 } cylinder { <0, 2, 0>, <0, 2, 8> 0.1 } } #declare platform_base = box { <0,0,0>, <2.1,0.1,8> } #declare platform_strut1 = cylinder {<1, 0, 0>, <0.5, -1.0, 0> 0.1 } #declare platform_strut2 = cylinder {<2, 0, 0>, <1, -2, 0> 0.1 } #declare platform_struts = union { object{ platform_strut1 } object{ platform_strut1 translate z*1 } object{ platform_strut1 translate z*7} object{ platform_strut1 translate z*8 } object{ platform_strut2 } object{ platform_strut2 translate z*1 } object{ platform_strut2 translate z*7} object{ platform_strut2 translate z*8 } } #declare platform = union { object { platform_side pigment { Brown } translate x*7 translate y*6 translate z*1 } object { platform_side pigment { Brown } translate x*7 translate y*6 translate z*9 } object { platform_1 pigment { Brown } translate x*9.1 translate y*6 translate z*1 } object { platform_base pigment { Brown } translate x*7 translate y*6 translate z*1 } object { platform_struts pigment { Brown } translate x*7 translate y*6 translate z*1 } } object { platform } //#declare telescope = union { // difference { // cylinder { <-5, 0, 5>, <11, 8, 5> 2 // } // cylinder { <-4.9, 0.1, 5>, <11.1, 8.1, 5> 1.9 // } // } // difference { // cylinder { <10.9, 7.9, 5>, <11, 8, 5> 2.1 // } // cylinder { <10.9, 7.9, 5>, <11.1, 8.1, 5> 1.9 // } // } // } #declare rad=1.6 #declare telescope = union { difference { cylinder { <0, 0, 0>, <0, 17, 0> rad } cylinder { <0, 0.1, 0>, <0, 17.1, 0> rad-0.1 } } difference { cylinder { <0, 16.9, 0>, <0, 17, 0> rad+0.1 } cylinder { <0, 16.8, 0>, <0, 17.1, 0> rad-0.1 } } box { , } box { , } box { , } box { , } box { , } box { , } box { , } box { , } box { , } box { , } } object { telescope rotate z*-61 translate x*-7 translate y*2 translate z*5 pigment { Grey } } #declare base_wheel = cylinder { <0, -0.5, 0>, <0, -0.5, 0.5> 0.5 pigment { Black } } // Add structure to the side of frames #declare side_of_sideframe = union { cylinder { <0, 0, -7>, <0, 20, 0> 0.2 } cylinder { <-5, 0, -5>, <-5, 10, 0> 0.2 } cylinder { <5, 0, -5>, <5, 10, 0> 0.2 } cylinder { <0, 0, 17>, <0, 20, 10> 0.2 } cylinder { <-5, 0, 15>, <-5, 10, 10> 0.2 } cylinder { <5, 0, 15>, <5, 10, 10> 0.2 } cylinder { <-2.5, 15, 0>, <0, 15, -7/4> 0.2 } cylinder { <2.5, 15, 0>, <0, 15, -7/4> 0.2 } cylinder { <-5, 10, 0>, <0, 10, -7/2> 0.2 } cylinder { <5, 10, 0>, <0, 10, -7/2> 0.2 } cylinder { <-7.5, 5, 0>, <-5, 5, -5/2> 0.2 } cylinder { <7.5, 5, 0>, <5, 5, -5/2> 0.2 } cylinder { <-5, 5, -5/2>, <0, 5, -3*7/4> 0.2 } cylinder { <5, 5, -5/2>, <0, 5, -3*7/4> 0.2 } cylinder { <10, 0, 5>, <10, 0, 0> 0.2 } object { base_wheel rotate y*-90 translate x*10 translate z*5 } cylinder { <10, 0, 0>, <5, 0, -3*7/4> 0.2 } object { base_wheel rotate y*-60 translate x*10 } cylinder { <5, 0, -3*7/4>, <0, 0, -7> 0.2 } object { base_wheel rotate y*-30 translate x*5 translate z*-3*7/4 } cylinder { <0, 0, -7>, <-5, 0, -3*7/4> 0.2 } object { base_wheel translate z*-7 } cylinder { <-5, 0, -3*7/4>, <-10, 0, 0> 0.2 } object { base_wheel rotate y*30 translate x*-5 translate z*-3*7/4 } cylinder { <-10, 0, 0>, <-10, 0, 5> 0.2 } object { base_wheel rotate y*60 translate x*-10 } } #declare sideframe = union { cylinder { <-10, 0, 0>, <0, 20, 0> 0.2 } cylinder { <10, 0, 0>, <0, 20, 0> 0.2 } cylinder { <-7.5, 5, 0>, <7.5, 5, 0> 0.2 } cylinder { <-5, 10, 0>, <5, 10, 0> 0.2 } cylinder { <-2.5, 15, 0>, <2.5, 15, 0> 0.2 } cylinder { <0, 0, 0>, <-5, 10, 0> 0.2 } cylinder { <0, 0, 0>, <5, 10, 0> 0.2 } cylinder { <-5, 0, 0>, <2.5, 15, 0> 0.2 } cylinder { <5, 0, 0>, <-2.5, 15, 0> 0.2 } } object { sideframe pigment { Brown } } object { sideframe translate z*10 pigment { Brown } } object { side_of_sideframe pigment { Brown } } object { side_of_sideframe rotate y*180 translate z*10 pigment { Brown } } #declare plank1 = union { box { <0, 0, 0>, <20, 1, 0.1> rotate x*10 } } #declare plank2 = union { box { <0, 0, 0>, <10, 1, 0.1> rotate x*10 } } #declare plank3 = union { box { <0, 0, 0>, <12, 1, 0.1> rotate x*10 } } #declare plank4 = union { box { <0, 0, 0>, <8, 1, 0.1> rotate x*10 } } #declare wall1 = union { #declare Ycount=0; #while (Ycount < 20) object { plank1 pigment { Brown } translate y*Ycount*1.1 } #declare Ycount=Ycount+1; #end } #declare wall2 = union { #declare Ycount=0; #while (Ycount < 20) object { plank2 pigment { Brown } translate y*Ycount*1.1 } #declare Ycount=Ycount+1; #end } #declare wall3 = union { #declare Ycount=0; #while (Ycount < 20) object { plank3 pigment { Brown } translate y*Ycount*1.1 } #declare Ycount=Ycount+1; #end } #declare wall4 = union { #declare Ycount=0; #while (Ycount < 20) object { plank4 pigment { Brown } translate y*Ycount*1.1 } #declare Ycount=Ycount+1; #end } #declare wall5 = union { #declare Ycount=0; #while (Ycount < 7) object { plank4 pigment { Brown } translate y*Ycount*1.1 } #declare Ycount=Ycount+1; #end } #declare gable_end_remove1 = union { box { <0, 0, -1>, <-20, 30, 1> rotate z*-60 } box { <0, 0, -1>, <-20, 30, 1> rotate z*-120 translate x*-6 translate y*15 } } #declare gable_end_remove2 = union { box { <0, 0, -1>, <-20, 30, 1> rotate z*-60 } box { <0, 0, -1>, <-20, 30, 1> rotate z*-120 translate x*-6 translate y*12 } } #declare gable_end1 = difference { object { wall1 } object { gable_end_remove1 } } #declare gable_end2 = difference { object { wall3 } object { gable_end_remove2 } } #declare roof = difference { object { wall2 } box { <0, 12, -1>, <20, 22, 1> } } #declare roof2 = difference { object { wall5 } box { <0, 12, -1>, <20, 22, 1> } } #declare observatory = union { union { object { wall1 scale 0.15 translate x*-5 translate z*-10 } // Door box { <-4.3, 0, -10.1>, <-3, 3, -9.9> } } union { difference { object { wall1 scale 0.15 rotate y*180 translate x*-2 translate z*-11.5 } // hole in side for window box { <-4.5, 2, -11.6>, <-2.7, 3, -11.4> } } // Frames for windows in observatory cylinder { <-4.5, 2.5, -11.5>, <-2.7, 2.5, -11.5> 0.05 } cylinder { <-4.05, 2, -11.5>, <-4.05, 3, -11.5> 0.05 } cylinder { <-3.6, 2, -11.5>, <-3.6, 3, -11.5> 0.05 } cylinder { <-3.15, 2, -11.5>, <-3.15, 3, -11.5> 0.05 } } object { wall2 scale 0.15 rotate y*90 translate x*-5 translate z*-10 } object { wall2 scale 0.15 rotate y*270 translate x*-2 translate z*-11.5 } object { gable_end1 scale 0.15 translate x*-5 translate z*-10 translate y*3.3 } object { gable_end1 scale 0.15 translate x*-5 translate z*-11.5 translate y*3.3 } object { roof scale 0.15 rotate y*90 rotate z*60 translate z*-10 translate y*3.3 translate x*-2 } object { roof scale 0.15 rotate y*90 rotate z*120 translate z*-10 translate y*4.2 translate x*-3.35 } } // end of declaration of observatory object { observatory scale 1.3 translate z*16 translate x*-1 } #declare working_room = union { union { object { wall3 scale 0.15 translate x*-5 translate z*-10 } } union { difference { object { wall3 scale 0.15 rotate y*180 translate x*-3 translate z*-11.1 } // hole in side for window box { <-3.5, 2, -11.2>, <-4.5, 3, -11.0> } } // Frames for windows in working room cylinder { <-4, 2, -11.1>, <-4, 3, -11.1> 0.05 } cylinder { <-3.5, 2.5, -11.1>, <-4.5, 2.5, -11.1> 0.05 } } union { object { wall4 scale 0.15 rotate y*90 translate x*-5 translate z*-10 } box { <-5.1, 0, -11>, <-4.9, 3, -10> } } union { difference { object { wall4 scale 0.15 rotate y*270 translate x*-3 translate z*-11 } // hole in side for window box { <-2.9, 2.5, -10.5>, <-3.3, 3, -10> } } // Frames for windows in working room cylinder { <-3, 2.5, -10.25>, <-3, 3, -10.25> 0.05 } cylinder { <-3, 2.75, -10.5>, <-3, 2.75, -10> 0.05 } } object { gable_end2 scale 0.15 translate x*-5 translate z*-10 translate y*3.3 } object { gable_end2 scale 0.15 translate x*-5 translate z*-11.2 translate y*3.3 } object { roof2 scale 0.15 rotate y*90 rotate z*60 translate z*-10 translate y*3.3 translate x*-3 } object { roof2 scale 0.15 rotate y*90 rotate z*120 translate z*-10 translate y*3.8 translate x*-3.9 } } // end of declaration of working_room object { working_room scale 1.3 translate z*21 translate x*-1 } # declare bannisters = union { cylinder { <2, .5, 0>, <2, 2, 0> 0.1 } cylinder { <2, 2.75, 2.75>, <2, 4.25, 2.75> 0.1 } cylinder { <2, 5, 5>, <2, 6.5, 5> 0.1 } cylinder { <2, 5, 6>, <2, 6.5, 6> 0.1 } cylinder { <2, 5, 7>, <2, 6.5, 7> 0.1 } // Handrail cylinder { <2, 2, 0>, <2, 6.5, 5> 0.1 } cylinder { <2, 6.5, 5>, <2, 6.5, 7> 0.1 } } #declare stair_plank = union { box { <0, 0, 0>, <2, .1, .5> } } #declare stairs = union { object { stair_plank translate y*.5 translate z*.5 } object { stair_plank translate y*1 translate z*1 } object { stair_plank translate y*1.5 translate z*1.5 } object { stair_plank translate y*2 translate z*2 } object { stair_plank translate y*2.5 translate z*2.5 } object { stair_plank translate y*3 translate z*3 } object { stair_plank translate y*3.5 translate z*3.5 } object { stair_plank translate y*4 translate z*4 } object { stair_plank translate y*4.5 translate z*4.5 } object { stair_plank translate y*5 translate z*5 } // Platform at top of stairs box { <0, 5, 5>, <2, 5.1, 7> } // Sides to stairs box { <0, 0, 0>, <-0.1, 0.2, 7> rotate x*-45} box { <2, 0, 0>, <2.1, 0.2, 7> rotate x*-45} object { bannisters } } object { stairs pigment { Brown } translate x*8.5 rotate y*30 scale 0.8 } #declare block = union { cylinder { <0, 0, 0>, <0, 0, 0.5> 0.2 } cylinder { <0, 0.5, 0>, <0, 0.5, 0.5> 0.2 } box { <-0.05, -0.3, -0.1> <.05, 0.8, 0> } box { <-0.05, -0.3, 0.6> <.05, 0.8, 0.5> } } # declare rope = cylinder { <3.7,12.4,5>, <-0.2,19,5> 0.05} object { rope } object { rope translate x*1} object { rope translate x*2} object { rope translate x*0.4} object { rope translate x*1.4} object { rope translate x*2.4} cylinder { <-4,0,0>, <0,19,5> 0.05} # declare block3 = union { object { block rotate z*20} object { block rotate z*20 translate x*1} object { block rotate z*20 translate x*2} } object {block3 translate y*19 translate z*5 } box { <-0.5,19.3,4.9>, <2.5,19.5,5.1> } object {block3 translate y*12 translate x*4 translate z*5 } box { <3.5,11.7,4.9>, <6.5,11.6,5.1> } cylinder { <5, 11.6, 5>, <5.4, 10.7, 5>, 0.1 } #declare block2 = cylinder { <0, 0, 0>, <0, 0, 0.5> 0.2 } # declare rope2 = cylinder { <6.3,7,1.5>, <-0.2,19.5,1.5> 0.05} object { block2 translate z*1.5 translate y*7 translate x*6.5 } object { block2 translate z*1.5 translate y*19.5 } object { rope2 } object { rope2 translate x*.4 } cylinder { <-4,0,0>, <-0.2,19.5,1.5> 0.05}