// Author: Qam1 // Name: Solar System Screensaver // License: Public Domain // Version: 321-1 // Shortcut: Ctrl+D,0 // Description: Screensaver of various happenings in the Solar System. 321 events in all! // Made on Stellarium Version 0.21.0 // This is the pause in seconds between each event // feel free to change to your likeing spd = 7; // core.setDeltaTAlgorithm("WithoutCorrection"); LabelMgr.deleteAllLabels(); // Number of Events l = 321; degstring = "\u00B0"; SolarSystem.setFlagLightTravelTime(true); StelSkyDrawer.setFlagLuminanceAdaptation(false); SolarSystem.setLabelsAmount(20); SolarSystem.setFlagMoonScale(4); LandscapeMgr.setFlagAtmosphere(true); LandscapeMgr.setCurrentLandscapeID("ocean"); y = core.getScreenHeight()/768; x = core.getScreenWidth()/1024; eg = GridLinesMgr.getFlagEquatorGrid(); ob = SolarSystem.getFlagOrbits(); id = new Array(length=l); for(i=1; i 0) { // Dir = 1 , just put it above the horizon if (Math.abs(dir) == 1 || dir == 4) { ag = 0 au = 0 while (ag == 0) { au = au + 1; core.setObserverLocation(long, lat, alt, 0, "", p1); core.wait(0.1); pData = core.getObjectInfo(p2); palt = pData["altitude"]; if (palt > 20) { ag = 7 } long = long + 45 if (long > 180) { long = -179 } if (au == 10) { lat = -lat } } } // Dir = 1, just put it above the horizon // Sun below horizon just after dark / before dawn if (Math.abs(dir) == 2) { d = dir / Math.abs(dir); q = 0 while (q == 0) // sun up { core.wait(.1); pData = core.getObjectInfo("Sun"); palt = pData["altitude"]; if (palt > 5) { q = 1 } else { long = long + 75 * d if (long > 180) { long = -179 } if (long < -180) { long = 179; } } core.setObserverLocation(long, lat, alt, 0, "", p1); } //q0 while (q == 1) // sun down { core.wait(.1); pData = core.getObjectInfo("Sun"); palt = pData["altitude"]; if (palt < -20) { q = 2 } else { long = long + 25 * d if (long > 180) { long = -179 } if (long < -180) { long = 179; } } core.setObserverLocation(long, lat, alt, 0, "", p1); } //q1 while (q == 2) // sun back to -18 { core.wait(0.1); pData = core.getObjectInfo("Sun"); palt = pData["altitude"]; if (palt > -19) { q = 3 } else { long = long + 1 * -d if (long > 180) { long = -179 } if (long < -180) { long = 179; } } // else core.setObserverLocation(long, lat, alt, 0, "", p1); } //q2 while (q == 3) // Planet up { core.wait(0.1); pData = core.getObjectInfo(p2); palt = pData["altitude"]; if (palt > 5) { q = 4 } else { long = long - d*2 if (palt < -5) { long = long - d*2 } if (long > 180) { long = -179 } if (long < -180) { long = 179; } } // else core.setObserverLocation(long, lat, alt, 0, "", p1); } //q3 } // Sun below horizon just after dark / before dawn // Oppositionish if (dir == 3) { q = 0 while (q == 0) // below horizon { core.setObserverLocation(long, lat, alt, 0, "", p1); core.wait(.1); pData = core.getObjectInfo(p2); palt = pData["altitude"]; if (palt < 0) { q = 1 } else { long = long + 45 if (long > 180) { long = -179 } } } while (q == 1) // above horizon { long = long + 45 if (long > 180) { long = -179 } core.setObserverLocation(long, lat, alt, 0, "", p1); core.wait(.1); pData = core.getObjectInfo(p2); palt = pData["altitude"]; if (palt > 0) { q = 2 } } lalt = 0; while (q == 2) // goto top { long = long + 20 if (long > 180) { long = -179 } core.setObserverLocation(long, lat, alt, 0, "", p1); core.wait(.1); pData = core.getObjectInfo(p2); palt = pData["altitude"]; if (palt < lalt) { q = 3 } lalt = palt } while (q == 3) // goto slow { long = long - 5 if (long < -180) { long = 179 } core.setObserverLocation(long, lat, alt, 0, "", p1); core.wait(.1); pData = core.getObjectInfo(p2); palt = pData["altitude"]; if (palt < lalt) { q = 4 } lalt = palt } } //dir3 long = long + 20 if (long > 180) { long = -179 } // Oppositionish // Eclipse if (dir == 4) { core.setObserverLocation(long, lat, alt, 0, "", p1); core.wait(.1); core.wait(0.1); pData = core.getObjectInfo(p2); alpha1 = pData["ra"]; sData = core.getObjectInfo("Sun"); alpha2 = sData["ra"]; if (alpha1 < 0) { alpha1 = 360 + alpha1; } if (alpha2 < 0) { alpha2 = 360 + alpha2; } dir = 1 if (alpha1 < alpha2) { dir = -1 } bd = Math.abs(alpha1 - alpha2); blong = long; q = 0 while (q < 2) { long = long + dir core.setObserverLocation(long, lat, alt, 0, "", p1); core.wait(.1); pData = core.getObjectInfo(p2); alpha1 = pData["ra"]; sData = core.getObjectInfo("Sun"); alpha2 = sData["ra"]; if (alpha1 < 0) { alpha1 = 360 + alpha1; } if (alpha2 < 0) { alpha2 = 360 + alpha2; } plex = Math.abs(alpha1 - alpha2); if (plex < bd) { bd = plex blong = long q = 0 } else { q = q + 1 } } //q<2 core.setObserverLocation(blong, lat, alt, 0, "", p1); } //dir4 // Eclipse } // dir >0 if (dir < 5) { core.wait(spd); } SolarSystem.setFlagOrbits(ob); LandscapeMgr.setFlagAtmosphere(true); GridLinesMgr.setFlagEquatorGrid(eg); LabelMgr.deleteAllLabels(); }