// Persistence of Vision Ray Tracer Scene Description File // File: solar-system_orrery_ver1.pov // Vers: 3.6 // Desc: Solar System orrery, scaled simulation of planets // Date: 2009.035 // Auth: bob hughes // Note: this is free to use and modify without credit given /* Notes about scale used, and most importantly expect inaccuracies and errors. Data from wikipedia.org. Inner planets (Mercury, Venus, Earth/Moon, Mars) are 4:1 of outer "gas giant" planets (Jupiter, Saturn, Uranus, Neptune); Dwarf planets (Pluto/Charon, Ceres, Eris) are 4:1 of Earth, or 16:1 of Jupiter. Sun is 1:50 (or 1/50th) scale of inner planets, or 1:12.5 of gas giant planets. Orbit scale of inner planets is 1:1500 of their respective planet sizes; Jupiter orbit is 1:750 of the gas giants' diameter scale, Saturn orbit is 1:1000, Uranus 1:1500, Neptune 1:2000 (also Pluto 1:2000). Pluto orbit scale is 1:5.333 of Earth orbit scale, or 1:2.667 of Jupiter orbit scale, 1:2 of Uranus and 1:1 of Neptune. Moon orbit distance scale is 1:25, Charon orbit distance is 1:4, relative their diameters (not solar system scale). Numbers used for sun/planet/moon/asteroid diameters are double that of orbit distances, hence this remark to clarify that. Camera does not move closer or farther (metric/standard switch accomodates scale difference), only FOV changes. camera (near end of file) is set up for square images. */ //cmd:-w640 -h640 +a /* ************************************************************************* **************************************************************** */ // number of planet (Earth=3), 0 for Sun, 4.5 for asteroid Ceres; -1 Moon, -3 Earth. Also 10 for Eris (dwarf planet). #local ViewPoint = 0; /* greater than 0 and higher than 1 possible (>1.25 needed for Pluto aphelion, >1.6 for Eris aphelion, when Sun is ViewPoint), smaller number magnifies view (0.03 Earth/Moon) and larger widens view (1 for whole solar system at Years=0). */ #local Zoom = 1; // when ViewPoint=0 (Sun) all planets seen with Zoom=1 at Years=0, 1/3 shows inner planets out to Jupiter. /* degrees above (rotated around <0,0,0>) ecliptic */ #local ViewElevation = 0; // 0 side view, 90 overhead view (negative numbers or >90 perfectly acceptable yet possibly disorienting). /* degrees sideways (rotated around <0,0,0>) */ #local ViewAzimuth = 0; // 0 to 360 turn // number of years, or fraction of year, and for animation use clock keyword (can be any range). #local Years = 0; /* 0.7625+(0.0125*clock) for moon shadow on earth, clock*(29.530588/365.2424) for 1 moon orbit, clock*(25.38/365.25) for 1 sun rotation. 196.05+clock*0.05 for Pluto eclipsing Sun while orbiting near default camera location (ViewPoint=0 Zoom=1 ViewElevation=0 ViewAzimuth=0 */ // metric or standard #local Metric = no; // prevents unwanted shadows cast between planets (also speeds render), need to specify a ViewPoint to keep a planet. #local RemoveExtraPlanets = no; // use air or not #local Atmosphere = no; /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ // number of days in year #local EarthYear = 365.256366; /* 0.985609105 correction for Earth orbit to make only one complete 360 degree circle. */ #local Time = EarthYear*0.985609105*Years; global_settings { #if (version<3.7) assumed_gamma 1 #end //ambient_light 2 /* photons { //count 20000 spacing 0.02 media 50 } */ } /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ */ #declare SolarFlares= density { marble density_map { [0.45 rgb 0] [0.475 rgb <1,0.25,0.1>] [0.525 rgb <1,0.75,0.1>] [0.55 rgb 0] } turbulence 0.5 phase clock rotate <60,-30,-60> } // SUN /* rotation 25.38 days (at equator) */ #declare Sun= union { sphere { 0, #if (Metric=no) 864900/100000 #else 1392000/100000 #end pigment { image_map { jpeg "sun-map" map_type 1 } } finish { ambient 1 diffuse 0 } } sphere { 0, #if (Metric=no) 1000000/100000 #else 1620000/100000 #end pigment { rgbt 1 } interior { media { emission 1 density { spherical density_map { [0 rgb 0] [0.2 SolarFlares] } } #if (Metric=no) scale 1000000/100000 #else scale 1620000/100000 #end } } hollow on } rotate Time*(EarthYear/25.38)*-y // rotation #if (Metric=no) translate 4324.5/100000*-x // Sun/Earth barycenter mi #else translate 6959.6/100000*-x // Sun/Earth barycenter km #end rotate Time*-y #if (Metric=no) translate 461057.4/100000*-x // Sun/Jupiter barycenter mi #else translate 742000/100000*-x // Sun/Jupiter barycenter km #end rotate Time*(EarthYear/4331.572)*-y // Jupiter-coupled revolution around barycenter #if (Metric=no) translate 253415.7/100000*-x // Sun/Saturn barycenter mi #else translate 407833/100000*-x // Sun/Saturn barycenter km #end rotate Time*(EarthYear/10832.327)*-y #if (Metric=no) translate 77841/100000*-x // Sun/Uranus barycenter mi #else translate 125272.95/100000*-x // Sun/Uranus barycenter km #end rotate Time*(EarthYear/30799.095)*-y #if (Metric=no) translate 144870.75/100000*-x // Sun/Neptune barycenter mi #else translate 233146.87/100000*-x // Sun/Neptune barycenter km #end rotate Time*(EarthYear/60190)*-y } light_source { 0, 3 // 9 for better seeing of distant planets looks_like { Sun } #if (Metric=no) area_light <17.3,0,0>,<0,0,17.3>, 12, 12 jitter adaptive 1 circular orient #else area_light <27.84,0,0>,<0,0,27.84>, 12, 12 jitter adaptive 1 circular orient #end fade_distance 62 fade_power 1 // using Earth location (62*x) as a reference point /* photons { reflection off refraction on } */ } /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&& */ #if (RemoveExtraPlanets=yes) #switch (ViewPoint) #case (-3) #declare Earth= // EARTH /* rotation 1 day (0.99726968 day sidereal, or 23.93447232 hours); tilt 23.439281°; orbit 29.783 km/sec; 365.256366 days; inclination 0° (ecliptic, or 1°34'43.3" {J2000} to invariable plane); ascending node 348.73936°; arg. perihelion 114.20783°; precession of tilt 25765 years */ #if (Atmosphere=yes) union { sphere { 0, #if (Metric=no) 7960/2000 #else 12810/2000 #end pigment { rgbt 1 } interior { ior 1.0003 media { scattering { 1, <0.1,0.5,1> } density { spherical density_map { [0 rgb 0] [0.0095 rgb <0.5,0.75,1>/100] [0.0125 rgb <0.5,0.75,1>] } #if (Metric=no) scale 7960/2000 #else scale 12810/2000 #end } } } hollow on } #end sphere { 0, #if (Metric=no) 7860/2000 #else 12756/2000 #end pigment { image_map { jpeg "earth-map" map_type 1 } } finish { ambient 0.025 diffuse 0.6 specular 0.15 roughness 0.025 } #if (Atmosphere=yes) } #end rotate <0,-Time*EarthYear,0> // rotation rotate 23.439281*x // tilt #if (Metric=no) translate 2902/2000*-x // barycenter or offset due to moon #else translate 4670/2000*-x // barycenter or offset due to moon #end rotate 5.15*z // orbit inclination (due to Earth/Moon barycenter orbit) } object { Earth rotate <0,Time,0> // anti-motion to retain tilt orientation #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y #if (Metric=no) translate 1553312/1500000*-x // mi move to perihelion #else translate 2499813/1500000*-x // km move to perihelion #end } #break #case (-1) #declare Moon= //MOON /* rotation 27.3217 days; tilt 6.688°; orbit 1 km/sec; 27.3217 days (29.53 days synodic); inclination 5.15° (18.28° to 28.58° to Earth's equator, 1.53° from ecliptic); eccentricity 0.0549; ascending node (?) August 28, 2007; descending node (?) March 3, 2007; precession of orbit 6793 days; recession rate from Earth 3.8 cm/year; */ sphere { 0, #if (Metric=no) 2160/2000 #else 3476/2000 #end pigment { image_map { jpeg "moon-map" map_type 1 } } finish { ambient 0.025 diffuse 0.5 specular 0.009 roughness 0.03 } rotate <-6.688,Time*(EarthYear/27.3217),0> // anti-motion to retain tilt orientation (-6.688?) #if (Metric=no) translate (251655+225558)/2/25000*x // mi aphelion and perihelion average #else translate (384400+363000)/2/25000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/27.3217)*-y // revolution (around Earth) #if (Metric=no) translate 13048.5/25000*-x // mi move to perigee #else translate 21000/25000*-x // km move to perigee #end rotate (23.5+5.15)*z // inclination } object { Moon // plus Earth location rotate <0,Time,0> // anti-motion to retain tilt orientation #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y // revolution (around Sun) #if (Metric=no) translate 1553312/1500000*-x // mi move to perihelion #else translate 2499813/1500000*-x // km move to perihelion #end } #break #case (0) /* object { Sun } */ #break #case (1) #declare Mercury= // MERCURY /* rotation 58.646 days; tilt 0°; orbit 47.87 km/sec; 87.969 days; inclination 7.005° (3.38° Sun's equator); ascending node 48.331°; arg. perihelion 29.124°; */ sphere { 0, #if (Metric=no) 3032/2000 #else 4880/2000 #end pigment { image_map { jpeg "mercury-map" map_type 1 } } finish { ambient 0.025 diffuse 0.5 specular 0.01 roughness 0.1 } rotate Time*(EarthYear/58.646)*-y // rotation rotate <0,Time*(EarthYear/87.969),0> // anti-revolution and tilt (negligible for Mercury) #if (Metric=no) translate (43382210+28583820)/2/1500000*x // mi aphelion and perihelion average #else translate (69816900+46001200)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/87.969)*-y // revolution #if (Metric=no) translate 7399195/1500000*-x // mi move to perihelion #else translate 11907850/1500000*-x // km move to perihelion #end rotate 7.005*z // orbit inclination } object { Mercury } #break #case (2) #declare Venus= // VENUS /* rotation 243.0185 days; tilt 177.3°; orbit 35.02 km/sec; 224.70069 days; inclination 3.39471°; ascending node 76.67069°; arg. perihelion 54.85229°; */ sphere { 0, #if (Metric=no) 7521/2000 #else 12104/2000 #end pigment { image_map { jpeg "venus-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.05 roughness 0.1 } rotate Time*(EarthYear/243.0185)*-y // rotation rotate <177.3,Time*(EarthYear/224.70069),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (67693488+66782651)/2/1500000*x // mi aphelion and perihelion average #else translate (108942109+107476259)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/224.70069)*-y // revolution #if (Metric=no) translate 455418.5/1500000*-x // mi move to perihelion point #else translate 732925/1500000*-x // km move to perihelion point #end rotate 3.39471*z // orbit inclination } object { Venus } #break #case (3) #declare Earth= // EARTH /* rotation 1 day (0.99726968 day sidereal, or 23.93447232 hours); tilt 23.439281°; orbit 29.783 km/sec; 365.256366 days; inclination 0° (ecliptic, or 1°34'43.3" {J2000} to invariable plane); ascending node 348.73936°; arg. perihelion 114.20783°; precession of tilt 25765 years */ #if (Atmosphere=yes) union { sphere { 0, #if (Metric=no) 7960/2000 #else 12756/2000 #end pigment { rgbt 1 } interior { ior 1.1 media { absorption <0.01,0.2,0.3> scattering { 1, 1-<0.05,0.8,0.99> } density { spherical density_map { [0 rgb 0] [0.0095 rgb 1/100] // [0.0125 rgb 1] } #if (Metric=no) scale 7960/2000 #else scale 12756/2000 #end } } } hollow on } #end sphere { 0, #if (Metric=no) 7860/2000 #else 12756/2000 #end pigment { image_map { jpeg "earth-map" map_type 1 } } finish { ambient 0.025 diffuse 0.6 specular 0.15 roughness 0.025 } #if (Atmosphere=yes) } #end rotate <0,-Time*EarthYear,0> // rotation rotate 23.439281*x // tilt #if (Metric=no) translate 2902/2000*-x #else translate 4670/2000*-x #end rotate 5.15*z // orbit inclination (due to Moon and Earth barycenter) } #declare Moon= //MOON /* rotation 27.3217 days; tilt 6.688°; orbit 1 km/sec; 27.3217 days (29.53 days synodic); inclination 5.15° (18.28° to 28.58° to Earth's equator, 1.53° from ecliptic); eccentricity 0.0549; ascending node (?) August 28, 2007; descending node (?) March 3, 2007; precession of orbit 6793 days; recession rate from Earth 3.8 cm/year; */ sphere { 0, #if (Metric=no) 2160/2000 #else 3476/2000 #end pigment { image_map { jpeg "moon-map" map_type 1 } } finish { ambient 0.025 diffuse 0.5 specular 0.009 roughness 0.03 } rotate <-6.688,Time*(EarthYear/27.3217),0> // orbit anti-motion (for axial tilt hold) {uncertain about x rotation here} //rotate 6.688*-z // tilt?? #if (Metric=no) translate (251655+225558)/2/25000*x // mi aphelion and perihelion average #else translate (384400+363000)/2/25000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/27.3217)*-y // revolution (around Earth) #if (Metric=no) translate 13048.5/25000*-x // mi move to perihelion point #else translate 21000/25000*-x // km move to perihelion point #end rotate (23.5+5.15)*z // orbit inclination } #declare EarthMoon= // EARTH/MOON union { object { Earth } object { Moon } rotate <0,Time,0> // orbit anti-motion (for axial tilt hold) {axial tilt (z rotation) pre-stated for Earth/Moon} #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y // revolution #if (Metric=no) translate 1553312/1500000*-x // mi move to perihelion point #else translate 2499813/1500000*-x // km move to perihelion point #end /* photons { target reflection off refraction on collect on } */ } object { EarthMoon } #break #case (4) #declare Mars= // MARS /* rotation 1.025957 days; tilt 25.19°; orbit 24.077 km/sec; 686.971 days; inclination 1.85° (5.65° Sun's equator); ascending node 49.562°; arg. perihelion 286.537°; */ sphere { 0, #if (Metric=no) 4220/2000 #else 6792/2000 #end pigment { image_map { jpeg "mars-map" map_type 1 } } finish { ambient 0.025 diffuse 0.6 specular 0.02 roughness 0.1 } rotate Time*EarthYear/1.025957)*-y // rotation rotate <25.19,Time*(EarthYear/686.971),0> // orbit anti-motion (for axial tilt hold) and axial tilt (x rotation) #if (Metric=no) translate (154851480+128418163)/2/1500000*x // mi aphelion and perihelion average #else translate (249209300+206669000)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/686.971)*-y // revolution #if (Metric=no) translate 13216658.5/1500000*-x // mi orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #else translate 21270150/1500000*-x // km orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #end rotate 1.85*z // orbital inclination } object { Mars } #break #case (4.5) #declare Ceres= // CERES /* rotation 0.3781 days; tilt 3°; orbit 17.882 km/sec; 1679.819 days; inclination 10.586712°; ascending node 80.40696°; arg. perihelion 73.15073° */ sphere { 0, #if (Metric=no) 302.8/500 // 282.5 polar radius mi #else 487.3/500 // 454.7 polar radius km #end pigment { image_map { jpeg "ceres-map" map_type 1 } } finish { ambient 0.025 diffuse 0.6 specular 0.02 roughness 0.1 } rotate Time*(EarthYear/0.3781)*-y // rotation rotate <3,Time*(EarthYear/1679.819),0> // orbit anti-motion (for axial tilt hold) and axial tilt (x rotation) #if (Metric=no) translate (278273734+237003140)/2/2000000*x // mi aphelion and perihelion average #else translate (447838164+381419582)/2/2000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/1679.819)*-y // revolution #if (Metric=no) translate 20635297/2000000*-x // mi orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #else translate 33209291/2000000*-x // km orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #end rotate 10.586712*z // orbital inclination } object { Ceres } #break #case (5) #declare Jupiter= // JUPITER /* rotation 0.413541667 day; tilt 3.13°; orbit 13.07 km/sec; 4331.572 days; inclination 1.305° (6.09° Sun's equator); ascending node 100.492°; arg. perihelion 275.066°; */ sphere { 0, #if (Metric=no) 88846/8000 // 41541 polar radius #else 142984/8000 // 66854 polar radius #end pigment { image_map { jpeg "jupiter-map" map_type 1 } } finish { ambient 0.025 diffuse 0.8 specular 0.04 roughness 0.1 } scale <1.0125,0.9875,1> // flattening (not fact-based) rotate Time*(EarthYear/0.413541667)*-y // rotation rotate <3.13,Time*(EarthYear/4331.572),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (507362503+460148731)/2/3000000*x // mi aphelion and perihelion average #else translate (816520800+740537600)/2/3000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/4331.572)*-y // revolution #if (Metric=no) translate 23606886/3000000*-x // mi move to perihelion point #else translate 37991600/3000000*-x // km move to perihelion point #end rotate 1.305*z // orbit inclination } object { Jupiter } #break #case (6) #declare Saturn= // SATURN /* rotation 0.444 day; tilt 26.73°; orbit 9.69 km/sec; 10832.327 days; inclination 2.48524° (5.51 Sun's equator); ascending node 113.642 811°; arg. perihelion 336.013 862°; */ union { sphere { 0, #if (Metric=no) 74898/8000 // polar radius 33780 mi #else 120534/8000 // polar radius 54364 km #end pigment { image_map { jpeg "saturn-map" map_type 1 } } finish { ambient 0.025 diffuse 0.8 specular 0.04 roughness 0.1 } scale <1.025,0.975,1> // flattening (not fact-based) rotate Time*(EarthYear/0.444)*-y // rotation } disc // rings (not fact-based) { 0,y, #if (Metric=no) 155000/8000, 55000/8000 #else 249448/8000, 88514/8000 #end pigment { onion color_map { [0.6 rgbt <0.75,0.5,0.25,1>] [0.75 rgbt <0.75,0.5,0.25,0>] [0.8 rgb <0.75,0.5,0.25>] [0.85 rgb <0.75,0.75,0.5>] [0.9125 rgb <0.75,0.75,0.5>] [0.925 rgbt 1] [0.95 rgbt 1] [0.967 rgb <0.75,0.75,0.25>] } #if (Metric=no) scale 155000/8000 #else scale 249448/8000 #end } finish { ambient 0.025 diffuse 0.9 specular 0.06 roughness 0.03 } } rotate <26.73,Time*(EarthYear/10832.327),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (940337046+841071241)/2/4000000*x // mi aphelion and perihelion average #else translate (1513325783+1353572956)/2/4000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/10832.327)*-y // revolution #if (Metric=no) translate 49632902.5/4000000*-x // mi move to perihelion point #else translate 79876414/4000000*-x // km move to perihelion point #end rotate 2.48524*z // orbit inclination } object { Saturn } #break #case (7) #declare Uranus= // URANUS /* rotation -0.71833 day; tilt 97.77°; orbit 6.81 km/sec; 30799.095 days; inclination 0.772556° (6.48 sun's equator); ascending node 73.989821°; arg. perihelion 96.541318°; */ union { sphere { 0, #if (Metric=no) 31763/8000 // 31035 mi polar radius #else 51118/8000 // 49946 km polar radius #end pigment { image_map { jpeg "uranus-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.04 roughness 0.1 } rotate Time*(EarthYear/0.71833)*-y // rotation } disc // rings (not fact-based) { 0,y, #if (Metric=no) 64000/8000, 44000/8000 #else 102998/8000, 70811/8000 #end pigment { onion color_map { [0.67 rgbt <0.5,0.5,0.25,1>] [0.7 rgbt <0.5,0.5,0.25,0>] [0.7 rgbt 1] [0.775 rgb 1] [0.8 rgb <0.5,0.5,0.25>] [0.825 rgbt 1] [0.85 rgbt 1] [0.875 rgb <0.5,0.5,0.5>] [0.9 rgb <0.5,0.5,0.5>] [0.9 rgbt 1] [0.975 rgbt 1] [1 rgb <0.5,0.5,0.25>] } #if (Metric=no) scale 64000/8000 #else scale 102998/8000 #end } finish { ambient 0.025 diffuse 0.2 specular 0.02 roughness 0.08 } } transform { rotate <97.77,Time*(EarthYear/30799.095),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (1866859854+1708111169)/2/6000000*x // mi aphelion and perihelion average #else translate (3004419704+2748938461)/2/6000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/30799.095)*-y // revolution #if (Metric=no) translate 79374342.5/6000000*-x // mi move to perihelion point #else translate 127740622/6000000*-x // km move to perihelion point #end rotate 0.772556*z // orbit inclination } } object { Uranus } #break #case (8) #declare Neptune= // NEPTUNE /* rotation 0.6713 day; tilt 28.32°; orbit 5.43 km/sec; 60190 days; inclination 1.767975° (6.43° sun's equator); ascending node 131.794310°; arg. perihelion 265.646853° */ sphere { 0, #if (Metric=no) 30775/8000 // 30250 mi polar radius #else 49528/8000 // 48682 km polar radius #end pigment { image_map { jpeg "neptune-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.04 roughness 0.1 } rotate Time*(EarthYear/0.6713)*-y // rotation rotate <28.32,Time*(EarthYear/60190),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (2829691160+2766929154)/2/8000000*x // mi aphelion and perihelion average #else translate (4553946490+4452940833)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/60190)*-y // revolution #if (Metric=no) translate 31381003/8000000*-x // mi move to perihelion point #else translate 50502829/8000000*-x // km move to perihelion point #end rotate 1.767975*z // orbit inclination } object { Neptune } #break #case (9) #declare PlutoCharon= // PLUTO/CHARON union { // PLUTO /* rotation 6.387 days; tilt 119.591°; orbit 4.666 km/sec; 90613.3 days; inclination 17.14175° (11.88° sun's equator); ascending node 110.30347°; arg. perihelion 113.76329°; */ sphere { 0, #if (Metric=no) 1485/500 #else 2390/500 #end pigment { image_map { jpeg "pluto-map" map_type 1 } } finish { ambient 0.025 diffuse 0.8 specular 0.05 roughness 0.07 } #if (Metric=no) translate 1264.5/1000*-x // miles offset due to barycenter #else translate 2035/1000*-x // kilometers offset due to barycenter #end } // CHARON /* rotation 6.387 days; tilt 112.783° to ecliptic (0.001° to Pluto's equator); */ sphere { 0, #if (Metric=no) 750/500 #else 1207/500 #end pigment { image_map { jpeg "charon-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.04 roughness 0.08 } #if (Metric=no) translate (12161-1264.5)/1000*x // miles offset due to barycenter #else translate (19571-2035)/1000*x // kilometers offset due to barycenter #end } rotate <0,Time*(EarthYear/6.387),0> // planet/moon orbit rotate 119.591*x // Pluto/Charon mutual orbit inclination rotate <0,Time*(EarthYear/90613.3),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (4583000000+2757000000)/2/8000000*x // mi aphelion and perihelion average #else translate (7376000000+4437000000)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/90613.3)*-y // revolution #if (Metric=no) translate 913000000/8000000*-x // mi move to perihelion point #else translate 1469331072/8000000*-x // km move to perihelion point #end rotate 17.14175*z // orbit inclination } object { PlutoCharon } #break #case (10) #declare Eris= // ERIS/DYSNOMIA union { // ERIS /* rotation 1/3 days; tilt ?°; orbit 3.436 km/sec; 203334.675 days; inclination 44.187°; ascending node 35.8696°; arg. perihelion 151.4305° */ sphere { 0, #if (Metric=no) 1677.7/500 #else 2700/500 #end pigment { wrinkles color_map { [0 rgb <0.4,0.35,0.3>/2] [0.2 rgb <0.45,0.35,0.3>] [0.7 rgb <0.35,0.35,0.35>] [1 rgb <0.35,0.35,0.35>*2] } scale 0.75 } finish { ambient 0.025 diffuse 0.6 specular 0.03 roughness 0.09 } rotate <0,Time*(EarthYear/0.333333),0> // rotation } // DYSNOMIA sphere { 0, #if (Metric=no) 124/500 #else 200/500 #end pigment { wrinkles color_map { [0 rgb <0.4,0.4,0.4>/2] [0.3 rgb <0.45,0.35,0.35>] [0.6 rgb <0.3,0.25,0.2>] [1 rgb <0.3,0.25,0.2>*2] } scale 0.05 } finish { ambient 0.025 diffuse 0.5 specular 0.02 roughness 0.1 } #if (Metric=no) translate 23221/1000*x // miles moon orbit distance #else translate 37370/1000*x // kilometers moon orbit distance #end rotate <0,Time*(EarthYear/15.774),142> // moon orbit revolution and inclination } rotate <0,Time*(EarthYear/203334.675),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (9.072e9+3.51e9)/2/8000000*x // mi aphelion and perihelion average #else translate (14.6e9+5.65e9)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/203334.675)*-y // revolution #if (Metric=no) translate 2.781e9/8000000*-x // mi move to perihelion point #else translate 4.4756e9/8000000*-x // km move to perihelion point #end rotate 44.187*z // orbit inclination } object { Eris } #break #end #else // if RemoveExtraPlanets=no #if (ViewPoint!=1) #declare Mercury= // MERCURY /* rotation 58.646 days; tilt 0°; orbit 47.87 km/sec; 87.969 days; inclination 7.005° (3.38° Sun's equator); ascending node 48.331°; arg. perihelion 29.124°; */ sphere { 0, #if (Metric=no) 3032/2000 #else 4880/2000 #end pigment { image_map { jpeg "mercury-map" map_type 1 } } finish { ambient 0.025 diffuse 0.5 specular 0.01 roughness 0.1 } rotate Time*(EarthYear/58.646)*-y // rotation rotate <0,Time*(EarthYear/87.969),0> // anti-revolution and tilt (negligible for Mercury) #if (Metric=no) translate (43382210+28583820)/2/1500000*x // mi aphelion and perihelion average #else translate (69816900+46001200)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/87.969)*-y // revolution #if (Metric=no) translate 7399195/1500000*-x // mi move to perihelion #else translate 11907850/1500000*-x // km move to perihelion #end rotate 7.005*z // orbit inclination } object { Mercury } #end #if (ViewPoint!=2) #declare Venus= // VENUS /* rotation 243.0185 days; tilt 177.3°; orbit 35.02 km/sec; 224.70069 days; inclination 3.39471°; ascending node 76.67069°; arg. perihelion 54.85229°; */ sphere { 0, #if (Metric=no) 7521/2000 #else 12104/2000 #end pigment { image_map { jpeg "venus-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.05 roughness 0.1 } rotate Time*(EarthYear/243.0185)*-y // rotation rotate <177.3,Time*(EarthYear/224.70069),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (67693488+66782651)/2/1500000*x // mi aphelion and perihelion average #else translate (108942109+107476259)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/224.70069)*-y // revolution #if (Metric=no) translate 455418.5/1500000*-x // mi move to perihelion point #else translate 732925/1500000*-x // km move to perihelion point #end rotate 3.39471*z // orbit inclination } object { Venus } #end #if (ViewPoint!=3|ViewPoint!=-3) #declare Earth= // EARTH /* rotation 1 day (0.99726968 day sidereal, or 23.93447232 hours); tilt 23.439281°; orbit 29.783 km/sec; 365.256366 days; inclination 0° (ecliptic, or 1°34'43.3" {J2000} to invariable plane); ascending node 348.73936°; arg. perihelion 114.20783°; precession of tilt 25765 years */ #if (Atmosphere=yes) // not fact-based union { sphere { 0, #if (Metric=no) 8860/2000 #else 12756/2000 #end pigment { rgbt 1 } interior { ior 1.0003 media { scattering { 1, <0.1,0.5,1> } density { spherical density_map { [0 rgb 0] [0.0095 rgb <0.5,0.75,1>/100] [0.0125 rgb <0.5,0.75,1>] } #if (Metric=no) scale 8860/2000 #else scale 12756/2000 #end } } } hollow on } #end sphere { 0, #if (Metric=no) 7860/2000 #else 12756/2000 #end pigment { image_map { jpeg "earth-map" map_type 1 } } finish { ambient 0.025 diffuse 0.6 specular 0.15 roughness 0.025 } #if (Atmosphere=yes) } #end rotate <0,-Time*EarthYear,0> // rotation rotate 23.439281*x // tilt #if (Metric=no) translate 2902/2000*-x // barycenter or offset due to moon #else translate 4670/2000*-x // barycenter or offset due to moon #end rotate 5.15*z // orbit inclination (due to Earth/Moon barycenter orbit) } object { Earth rotate <0,Time,0> // anti-motion to retain tilt orientation #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y #if (Metric=no) translate 1553312/1500000*-x // mi #else translate 2499813/1500000*-x // km #end } #end #if (ViewPoint!=-1|ViewPoint!=3) #declare Moon= //MOON /* rotation 27.3217 days; tilt 6.688°; orbit 1 km/sec; 27.3217 days (29.53 days synodic); inclination 5.15° (18.28° to 28.58° to Earth's equator, 1.53° from ecliptic); eccentricity 0.0549; ascending node (?) August 28, 2007; descending node (?) March 3, 2007; precession of orbit 6793 days; recession rate from Earth 3.8 cm/year; */ sphere { 0, #if (Metric=no) 2160/2000 #else 3476/2000 #end pigment { image_map { jpeg "moon-map" map_type 1 } } finish { ambient 0.025 diffuse 0.5 specular 0.009 roughness 0.03 } rotate -6.688*z // tilt? rotate <0,Time*(EarthYear/27.3217),0> // anti-motion to retain tilt orientation (6.688?) #if (Metric=no) translate (251655+225558)/2/25000*x // mi aphelion and perihelion average #else translate (384400+363000)/2/25000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/27.3217)*-y // revolution (around Earth) #if (Metric=no) translate 13048.5/25000*-x // mi move to perigee #else translate 21000/25000*-x // km move to perigee #end rotate (23.5+5.15)*z // inclination } object { Moon // plus Earth location rotate <0,Time,0> // anti-motion to retain tilt orientation #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y // revolution (around Sun) #if (Metric=no) translate 1553312/1500000*-x // mi move to perihelion #else translate 2499813/1500000*-x //km move to perihelion #end } #end #if (ViewPoint!=4) #declare Mars= // MARS /* rotation 1.025957 days; tilt 25.19°; orbit 24.077 km/sec; 686.971 days; inclination 1.85° (5.65° Sun's equator); ascending node 49.562°; arg. perihelion 286.537°; */ sphere { 0, #if (Metric=no) 4220/2000 #else 6792/2000 #end pigment { image_map { jpeg "mars-map" map_type 1 } } finish { ambient 0.025 diffuse 0.6 specular 0.02 roughness 0.1 } rotate Time*(EarthYear/1.025957)*-y // rotation rotate <25.19,Time*(EarthYear/686.971),0> // orbit anti-motion (for axial tilt hold) and axial tilt (x rotation) #if (Metric=no) translate (154851480+128418163)/2/1500000*x // mi aphelion and perihelion average #else translate (249209300+206669000)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/686.971)*-y // revolution #if (Metric=no) translate 13216658.5/1500000*-x // mi orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #else translate 21270150/1500000*-x // km orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #end rotate 1.85*z // orbital inclination } object { Mars } #end #if (ViewPoint!=4.5) #declare Ceres= // CERES /* rotation 0.3781 days; tilt 3°; orbit 17.882 km/sec; 1679.819 days; inclination 10.586712°; ascending node 80.40696°; arg. perihelion 73.15073° */ sphere { 0, #if (Metric=no) 302.8/500 // 282.5 polar radius mi #else 487.3/500 // 454.7 polar radius km #end pigment { image_map { jpeg "ceres-map" map_type 1 } } finish { ambient 0.025 diffuse 0.6 specular 0.02 roughness 0.1 } rotate Time*(EarthYear/0.3781)*-y // rotation rotate <3,Time*(EarthYear/1679.819),0> // orbit anti-motion (for axial tilt hold) and axial tilt (x rotation) #if (Metric=no) translate (278273734+237003140)/2/2000000*x // mi aphelion and perihelion average #else translate (447838164+381419582)/2/2000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/1679.819)*-y // revolution #if (Metric=no) translate 20635297/2000000*-x // mi orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #else translate 33209291/2000000*-x // km orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #end rotate 10.586712*z // orbital inclination } object { Ceres } #end #if (ViewPoint!=5) #declare Jupiter= // JUPITER /* rotation 0.413541667 day; tilt 3.13°; orbit 13.07 km/sec; 4331.572 days; inclination 1.305° (6.09° Sun's equator); ascending node 100.492°; arg. perihelion 275.066°; */ sphere { 0, #if (Metric=no) 88846/8000 // 41541 polar radius #else 142984/8000 // 66854 polar radius #end pigment { image_map { jpeg "jupiter-map" map_type 1 } } finish { ambient 0.025 diffuse 0.8 specular 0.04 roughness 0.1 } scale <1.0125,0.9875,1> // flattening (not fact-based) rotate Time*(EarthYear/0.413541667)*-y // rotation rotate <3.13,Time*(EarthYear/4331.572),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (507362503+460148731)/2/3000000*x // mi aphelion and perihelion average #else translate (816520800+740537600)/2/3000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/4331.572)*-y // revolution #if (Metric=no) translate 23606886/3000000*-x // mi move to perihelion point #else translate 37991600/3000000*-x // km move to perihelion point #end rotate 1.305*z // orbit inclination } object { Jupiter } #end #if (ViewPoint!=6) #declare Saturn= // SATURN /* rotation 0.444 day; tilt 26.73°; orbit 9.69 km/sec; 10832.327 days; inclination 2.48524° (5.51 Sun's equator); ascending node 113.642 811°; arg. perihelion 336.013 862°; */ union { sphere { 0, #if (Metric=no) 74898/8000 // polar radius 33780 mi #else 120534/8000 // polar radius 54364 km #end pigment { image_map { jpeg "saturn-map" map_type 1 } } finish { ambient 0.025 diffuse 0.8 specular 0.04 roughness 0.1 } scale <1.025,0.975,1> // flattening (not fact-based) rotate Time*(EarthYear/0.444)*-y // rotation } disc // rings (not fact-based) { 0,y, #if (Metric=no) 155000/8000, 55000/8000 #else 249448/8000, 88514/8000 #end pigment { onion color_map { [0.6 rgbt <0.75,0.5,0.25,1>] [0.75 rgbt <0.75,0.5,0.25,0>] [0.8 rgb <0.75,0.5,0.25>] [0.85 rgb <0.75,0.75,0.5>] [0.9125 rgb <0.75,0.75,0.5>] [0.925 rgbt 1] [0.95 rgbt 1] [0.967 rgb <0.75,0.75,0.25>] } #if (Metric=no) scale 155000/8000 #else scale 249448/8000 #end } finish { ambient 0.025 diffuse 0.9 specular 0.06 roughness 0.03 } } rotate <26.73,Time*(EarthYear/10832.327),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (940337046+841071241)/2/4000000*x // mi aphelion and perihelion average #else translate (1513325783+1353572956)/2/4000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/10832.327)*-y // revolution #if (Metric=no) translate 49632902.5/4000000*-x // mi move to perihelion point #else translate 79876414/4000000*-x // km move to perihelion point #end rotate 2.48524*z // orbit inclination } object { Saturn } #end #if (ViewPoint!=7) #declare Uranus= // URANUS /* rotation -0.71833 day; tilt 97.77°; orbit 6.81 km/sec; 30799.095 days; inclination 0.772556° (6.48 sun's equator); ascending node 73.989821°; arg. perihelion 96.541318°; */ union { sphere { 0, #if (Metric=no) 31763/8000 // 31035 mi polar radius #else 51118/8000 // 49946 km polar radius #end pigment { image_map { jpeg "uranus-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.04 roughness 0.1 } rotate Time*(EarthYear/0.71833)*-y // rotation } disc // rings (not fact-based) { 0,y, #if (Metric=no) 64000/8000, 44000/8000 #else 102998/8000, 70811/8000 #end pigment { onion color_map { [0.67 rgbt <0.5,0.5,0.25,1>] [0.7 rgbt <0.5,0.5,0.25,0>] [0.7 rgbt 1] [0.775 rgb 1] [0.8 rgb <0.5,0.5,0.25>] [0.825 rgbt 1] [0.85 rgbt 1] [0.875 rgb <0.5,0.5,0.5>] [0.9 rgb <0.5,0.5,0.5>] [0.9 rgbt 1] [0.975 rgbt 1] [1 rgb <0.5,0.5,0.25>] } #if (Metric=no) scale 64000/8000 #else scale 102998/8000 #end } finish { ambient 0.025 diffuse 0.4 specular 0.02 roughness 0.08 } } transform { rotate <97.77,Time*(EarthYear/30799.095),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (1866859854+1708111169)/2/6000000*x // mi aphelion and perihelion average #else translate (3004419704+2748938461)/2/6000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/30799.095)*-y // revolution #if (Metric=no) translate 79374342.5/6000000*-x // mi move to perihelion point #else translate 127740622/6000000*-x // km move to perihelion point #end rotate 0.772556*z // orbit inclination } } object { Uranus } #end #if (ViewPoint!=8) #declare Neptune= // NEPTUNE /* rotation 0.6713 day; tilt 28.32°; orbit 5.43 km/sec; 60190 days; inclination 1.767975° (6.43° sun's equator); ascending node 131.794310°; arg. perihelion 265.646853° */ sphere { 0, #if (Metric=no) 30775/8000 // 30250 mi polar radius #else 49528/8000 // 48682 km polar radius #end pigment { image_map { jpeg "neptune-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.04 roughness 0.1 } rotate Time*(EarthYear/0.6713)*-y // rotation rotate <28.32,Time*(EarthYear/60190),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (2829691160+2766929154)/2/8000000*x // mi aphelion and perihelion average #else translate (4553946490+4452940833)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/60190)*-y // revolution #if (Metric=no) translate 31381003/8000000*-x // mi move to perihelion point #else translate 50502829/8000000*-x // km move to perihelion point #end rotate 1.767975*z // orbit inclination } object { Neptune } #end #if (ViewPoint!=9) #declare PlutoCharon= // PLUTO/CHARON union { // PLUTO /* rotation 6.387 days; tilt 119.591°; orbit 4.666 km/sec; 90613.3 days; inclination 17.14175° (11.88° sun's equator); ascending node 110.30347°; arg. perihelion 113.76329°; */ sphere { 0, #if (Metric=no) 1485/500 #else 2390/500 #end pigment { image_map { jpeg "pluto-map" map_type 1 } } finish { ambient 0.025 diffuse 0.8 specular 0.05 roughness 0.07 } #if (Metric=no) translate 1264.5/1000*-x // miles #else translate 2035/1000*-x // kilometers #end } // CHARON /* rotation 6.387 days; tilt 112.783° to ecliptic (0.001° to Pluto's equator); */ sphere { 0, #if (Metric=no) 750/500 #else 1207/500 #end pigment { image_map { jpeg "charon-map" map_type 1 } } finish { ambient 0.025 diffuse 0.7 specular 0.04 roughness 0.08 } #if (Metric=no) translate (12161-1264.5)/1000*x // miles #else translate (19571-2035)/1000*x // kilometers #end } rotate <0,Time*(EarthYear/6.387),0> // planet/moon orbit rotate 119.591*x // Pluto/Charon mutual orbit inclination rotate <0,Time*(EarthYear/90613.3),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (4583000000+2757000000)/2/8000000*x // mi aphelion and perihelion average #else translate (7376000000+4437000000)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/90613.3)*-y // revolution #if (Metric=no) translate 913000000/8000000*-x // mi move to perihelion point #else translate 1469331072/8000000*-x // km move to perihelion point #end rotate 17.14175*z // orbit inclination } object { PlutoCharon } #end #if (ViewPoint!=10) #declare Eris= // ERIS/DYSNOMIA union { // ERIS /* rotation 1/3 days; tilt ?°; orbit 3.436 km/sec; 203334.675 days; inclination 44.187°; ascending node 35.8696°; arg. perihelion 151.4305° */ sphere { 0, #if (Metric=no) 1677.7/500 #else 2700/500 #end pigment { wrinkles color_map { [0 rgb <0.4,0.35,0.3>/2] [0.2 rgb <0.45,0.35,0.3>] [0.7 rgb <0.35,0.35,0.35>] [1 rgb <0.35,0.35,0.35>*2] } scale 0.75 } finish { ambient 0.025 diffuse 0.6 specular 0.03 roughness 0.09 } rotate <0,Time*(EarthYear/0.333333),0> } // DYSNOMIA sphere { 0, #if (Metric=no) 124/500 #else 200/500 #end pigment { wrinkles color_map { [0 rgb <0.4,0.4,0.4>/2] [0.3 rgb <0.45,0.35,0.35>] [0.6 rgb <0.3,0.25,0.2>] [1 rgb <0.3,0.25,0.2>*2] } scale 0.05 } finish { ambient 0.025 diffuse 0.5 specular 0.02 roughness 0.1 } #if (Metric=no) translate 23221/1000*x // miles moon orbit distance #else translate 37370/1000*x // kilometers moon orbit distance #end rotate <0,Time*(EarthYear/15.774),142> // moon orbit and inclination } rotate <0,Time*(EarthYear/203334.675),0> // anti-revolution retains tilt orientation #if (Metric=no) translate (9.072e9+3.51e9)/2/8000000*x // mi aphelion and perihelion average #else translate (14.6e9+5.65e9)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/203334.675)*-y // revolution #if (Metric=no) translate 2.781e9/8000000*-x // mi move to perihelion point #else translate 4.4756e9/8000000*-x // km move to perihelion point #end rotate 44.187*z // orbit inclination } object { Eris } #end #end // all or one planet switch /* Camera Views */ #declare SunView= transform { } #declare MercuryView= transform { #if (Metric=no) translate (43382210+28583820)/2/1500000*x // mi aphelion and perihelion average #else translate (69816900+46001200)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/87.969)*-y // revolution #if (Metric=no) translate 7399195/1500000*-x // mi #else translate 11907850/1500000*-x // km #end rotate 7.005*z // orbit inclination } #declare VenusView= transform { #if (Metric=no) translate (67693488+66782651)/2/1500000*x // mi aphelion and perihelion average #else translate (108942109+107476259)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/224.70069)*-y // revolution #if (Metric=no) translate 455418.5/1500000*-x // mi move to perihelion point #else translate 732925/1500000*-x // km move to perihelion point #end rotate 3.39471*z // orbit inclination } #declare EarthMoonView= transform { #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y // revolution #if (Metric=no) translate 1553312/1500000*-x // mi move to perihelion point #else translate 2499813/1500000*-x // km move to perihelion point #end } #declare EarthView= transform { #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y // revolution #if (Metric=no) translate 1553312/1500000*-x // mi move to perihelion point #else translate 2499813/1500000*-x // km move to perihelion point #end } #declare MoonView= transform { #if (Metric=no) translate (251655+225558)/2/25000*x // mi aphelion and perihelion average #else translate (384400+363000)/2/25000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/27.3217)*-y // revolution (around Earth) #if (Metric=no) translate 13048.5/25000*-x // mi #else translate 21000/25000*-x // km #end rotate (23.5+5.15)*z // inclination // plus Earth location #if (Metric=no) translate (94509130+91402506)/2/1500000*x // mi aphelion and perihelion average #else translate (152097701+147098074)/2/1500000*x // km aphelion and perihelion average #end rotate Time*-y // revolution (around Sun) #if (Metric=no) translate 1553312/1500000*-x // mi #else translate 2499813/1500000*-x //km #end } #declare MarsView= transform { #if (Metric=no) translate (154851480+128418163)/2/1500000*x // mi aphelion and perihelion average #else translate (249209300+206669000)/2/1500000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/686.971)*-y // revolution #if (Metric=no) translate 13216658.5/1500000*-x // mi orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #else translate 21270150/1500000*-x // km orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #end rotate 1.85*z // orbital inclination } #declare CeresView= transform { #if (Metric=no) translate (278273734+237003140)/2/2000000*x // mi aphelion and perihelion average #else translate (447838164+381419582)/2/2000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/1679.819)*-y // revolution #if (Metric=no) translate 20635297/2000000*-x // mi orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #else translate 33209291/2000000*-x // km orbit offset (after subtraction of perihelion from aphelion plus perihelion average) #end rotate 10.586712*z // orbital inclination } #declare JupiterView= transform { #if (Metric=no) translate (507362503+460148731)/2/3000000*x // mi aphelion and perihelion average #else translate (816520800+740537600)/2/3000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/4331.572)*-y // revolution #if (Metric=no) translate 23606886/3000000*-x // mi move to perihelion point #else translate 37991600/3000000*-x // km move to perihelion point #end rotate 1.305*z // orbit inclination } #declare SaturnView= transform { #if (Metric=no) translate (940337046+841071241)/2/4000000*x // mi aphelion and perihelion average #else translate (1513325783+1353572956)/2/4000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/10832.327)*-y // revolution #if (Metric=no) translate 49632902.5/4000000*-x // mi move to perihelion point #else translate 79876414/4000000*-x // km move to perihelion point #end rotate 2.48524*z // orbit inclination } #declare UranusView= transform { #if (Metric=no) translate (1866859854+1708111169)/2/6000000*x // mi aphelion and perihelion average #else translate (3004419704+2748938461)/2/6000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/30799.095)*-y // revolution #if (Metric=no) translate 79374342.5/6000000*-x // mi move to perihelion point #else translate 127740622/6000000*-x // km move to perihelion point #end rotate 0.772556*z // orbit inclination } #declare NeptuneView= transform { #if (Metric=no) translate (2829691160+2766929154)/2/8000000*x // mi aphelion and perihelion average #else translate (4553946490+4452940833)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/60190)*-y // revolution #if (Metric=no) translate 31381003/8000000*-x // mi move to perihelion point #else translate 50502829/8000000*-x // km move to perihelion point #end rotate 1.767975*z // orbit inclination } #declare PlutoView= transform { #if (Metric=no) translate (4583000000+2757000000)/2/8000000*x // mi aphelion and perihelion average #else translate (7376000000+4437000000)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/90613.3)*-y // revolution #if (Metric=no) translate 913000000/8000000*-x // mi move to perihelion point #else translate 1469331072/8000000*-x // km move to perihelion point #end rotate 17.14175*z // orbit inclination } #declare ErisView= transform { #if (Metric=no) translate (9.072e9+3.51e9)/2/8000000*x // mi aphelion and perihelion average #else translate (14.6e9+5.65e9)/2/8000000*x // km aphelion and perihelion average #end rotate Time*(EarthYear/203334.675)*-y // revolution #if (Metric=no) translate 2.781e9/8000000*-x // mi move to perihelion point #else translate 4.4756e9/8000000*-x // km move to perihelion point #end rotate 44.187*z // orbit inclination } /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ */ camera { //orthographic #if (Metric=no) location -620*z #else location -1000*z #end up y right x look_at 0 angle 67*Zoom rotate transform { #switch (ViewPoint) #case (-3) EarthView #break #case (-1) MoonView #break #case (0) SunView #break #case (1) MercuryView #break #case (2) VenusView #break #case (3) EarthMoonView #break #case (4) MarsView #break #case (4.5) CeresView #break #case (5) JupiterView #break #case (6) SaturnView #break #case (7) UranusView #break #case (8) NeptuneView #break #case (9) PlutoView #break #case (10) ErisView #break #end } // end transform } // end camera