├── art ├── arrow.svg ├── selection.svg └── moon.svg ├── readme.md ├── COPYING ├── src ├── style.css ├── starcalc.js ├── suncalc.js ├── nightsky.js └── index.htm └── data └── 750.csv /art/arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /art/selection.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Night Sky 2 | 3 | ## About 4 | 5 | Night Sky is an HTML5 based night sky viewer, displaying the 750 brightest stars and the moon. 6 | 7 | ## Demo 8 | 9 | [http://www.mpetroff.net/files/nightsky/](http://www.mpetroff.net/files/nightsky/) 10 | 11 | ## License 12 | 13 | Night Sky is distributed under the MIT License. For more information, read the file `COPYING` or peruse the license [online](http://www.opensource.org/licenses/MIT). 14 | 15 | ## Credits 16 | 17 | Moon calculations are done using [SunCalc](https://github.com/mourner/suncalc), which is [BSD-licensed](https://github.com/mourner/suncalc/blob/master/LICENSE), and star calculations are based on this library. 18 | 19 | Star data is based on the [HYG star database archive](https://github.com/astronexus/HYG-Database). 20 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Matthew Petroff 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so, 8 | subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | overflow: hidden; 4 | color: #fff; 5 | font-family: 'Source Sans Pro', sans-serif; 6 | width: 100%; 7 | background: #0a0a1a; 8 | } 9 | 10 | #container { 11 | background: #0a0a1a; 12 | width: 100%; 13 | } 14 | 15 | h2 { 16 | margin: 0; 17 | } 18 | 19 | .info { 20 | position: absolute; 21 | top: 20px; 22 | left: 20px; 23 | } 24 | 25 | #moon { 26 | position: absolute; 27 | top: 0px; 28 | left: 0px; 29 | height: 50px; 30 | width: 50px; 31 | } 32 | 33 | .buttons { 34 | position: absolute; 35 | bottom: 20px; 36 | right: 20px; 37 | } 38 | 39 | #locationDialog { 40 | position: absolute; 41 | width: 250px; 42 | left: -moz-calc(50% - 125px); 43 | left: -webkit-calc(50% - 125px); 44 | left: calc(50% - 150px); 45 | top: -moz-calc(50% - 150px); 46 | top: -webkit-calc(50% - 150px); 47 | top: calc(50% - 150px); 48 | } 49 | 50 | #locationFields { 51 | display: none; 52 | } 53 | 54 | .panel { 55 | padding: 20px; 56 | } 57 | 58 | .black { 59 | color: #000; 60 | } 61 | 62 | h1 { 63 | margin-top: 0; 64 | } 65 | 66 | #nav { 67 | position: absolute; 68 | bottom: 20px; 69 | left: 20px; 70 | height: 50px; 71 | width: 50px; 72 | } 73 | -------------------------------------------------------------------------------- /src/starcalc.js: -------------------------------------------------------------------------------- 1 | /* 2 | StarCalc, a library for calculating star positions 3 | (c) 2014, Matthew Petroff 4 | Based on SunCalc, (c) 2011-2013, Vladimir Agafonkin 5 | https://github.com/mourner/suncalc 6 | */ 7 | 8 | (function () { "use strict"; 9 | 10 | // shortcuts for easier to read formulas 11 | 12 | var PI = Math.PI, 13 | sin = Math.sin, 14 | cos = Math.cos, 15 | tan = Math.tan, 16 | asin = Math.asin, 17 | atan = Math.atan2, 18 | acos = Math.acos, 19 | rad = PI / 180; 20 | 21 | 22 | // date/time constants and conversions 23 | 24 | var dayMs = 1000 * 60 * 60 * 24, 25 | J1970 = 2440588, 26 | J2000 = 2451545; 27 | 28 | function toJulian(date) { 29 | return date.valueOf() / dayMs - 0.5 + J1970; 30 | } 31 | function toDays(date) { 32 | return toJulian(date) - J2000; 33 | } 34 | 35 | 36 | // general calculations for position 37 | 38 | function getAzimuth(H, phi, dec) { 39 | return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); 40 | } 41 | function getAltitude(H, phi, dec) { 42 | return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); 43 | } 44 | function getSiderealTime(d, lw) { 45 | return rad * (280.16 + 360.9856235 * d) - lw; 46 | } 47 | 48 | var StarCalc = {}; 49 | 50 | StarCalc.getStarPosition = function (date, lat, lng, c) { 51 | 52 | var lw = rad * -lng, 53 | phi = rad * lat, 54 | d = toDays(date), 55 | 56 | H = getSiderealTime(d, lw) - c.ra / 12 * Math.PI, 57 | h = getAltitude(H, phi, c.dec / 180 * Math.PI); 58 | //console.log(getAzimuth(H, phi, c.dec / 180 * Math.PI)); 59 | // altitude correction for refraction 60 | h = h + rad * 0.017 / tan(h + rad * 10.26 / (h + rad * 5.10)); 61 | 62 | return { 63 | azimuth: getAzimuth(H, phi, c.dec / 180 * Math.PI), 64 | altitude: h, 65 | vmag: c.vmag, 66 | name: c.name, 67 | pname: c.pname, 68 | dist: c.dist 69 | }; 70 | }; 71 | 72 | 73 | // export as AMD module / Node module / browser variable 74 | 75 | if (typeof define === 'function' && define.amd) { 76 | define(StarCalc); 77 | } else if (typeof module !== 'undefined') { 78 | module.exports = StarCalc; 79 | } else { 80 | window.StarCalc = StarCalc; 81 | } 82 | 83 | }()); 84 | -------------------------------------------------------------------------------- /src/suncalc.js: -------------------------------------------------------------------------------- 1 | /* 2 | (c) 2011-2013, Vladimir Agafonkin 3 | SunCalc is a JavaScript library for calculating sun/mooon position and light phases. 4 | https://github.com/mourner/suncalc 5 | */ 6 | 7 | (function () { "use strict"; 8 | 9 | // shortcuts for easier to read formulas 10 | 11 | var PI = Math.PI, 12 | sin = Math.sin, 13 | cos = Math.cos, 14 | tan = Math.tan, 15 | asin = Math.asin, 16 | atan = Math.atan2, 17 | acos = Math.acos, 18 | rad = PI / 180; 19 | 20 | // sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas 21 | 22 | 23 | // date/time constants and conversions 24 | 25 | var dayMs = 1000 * 60 * 60 * 24, 26 | J1970 = 2440588, 27 | J2000 = 2451545; 28 | 29 | function toJulian(date) { 30 | return date.valueOf() / dayMs - 0.5 + J1970; 31 | } 32 | function fromJulian(j) { 33 | return new Date((j + 0.5 - J1970) * dayMs); 34 | } 35 | function toDays(date) { 36 | return toJulian(date) - J2000; 37 | } 38 | 39 | 40 | // general calculations for position 41 | 42 | var e = rad * 23.4397; // obliquity of the Earth 43 | 44 | function getRightAscension(l, b) { 45 | return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); 46 | } 47 | function getDeclination(l, b) { 48 | return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); 49 | } 50 | function getAzimuth(H, phi, dec) { 51 | return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); 52 | } 53 | function getAltitude(H, phi, dec) { 54 | return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); 55 | } 56 | function getSiderealTime(d, lw) { 57 | return rad * (280.16 + 360.9856235 * d) - lw; 58 | } 59 | 60 | 61 | // general sun calculations 62 | 63 | function getSolarMeanAnomaly(d) { 64 | return rad * (357.5291 + 0.98560028 * d); 65 | } 66 | function getEquationOfCenter(M) { 67 | return rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)); 68 | } 69 | function getEclipticLongitude(M, C) { 70 | var P = rad * 102.9372; // perihelion of the Earth 71 | return M + C + P + PI; 72 | } 73 | function getSunCoords(d) { 74 | 75 | var M = getSolarMeanAnomaly(d), 76 | C = getEquationOfCenter(M), 77 | L = getEclipticLongitude(M, C); 78 | 79 | return { 80 | dec: getDeclination(L, 0), 81 | ra: getRightAscension(L, 0) 82 | }; 83 | } 84 | 85 | 86 | var SunCalc = {}; 87 | 88 | 89 | // calculates sun position for a given date and latitude/longitude 90 | 91 | SunCalc.getPosition = function (date, lat, lng) { 92 | 93 | var lw = rad * -lng, 94 | phi = rad * lat, 95 | d = toDays(date), 96 | 97 | c = getSunCoords(d), 98 | H = getSiderealTime(d, lw) - c.ra; 99 | 100 | return { 101 | azimuth: getAzimuth(H, phi, c.dec), 102 | altitude: getAltitude(H, phi, c.dec) 103 | }; 104 | }; 105 | 106 | 107 | // sun times configuration (angle, morning name, evening name) 108 | 109 | var times = [ 110 | [-0.83, 'sunrise', 'sunset' ], 111 | [ -0.3, 'sunriseEnd', 'sunsetStart' ], 112 | [ -6, 'dawn', 'dusk' ], 113 | [ -12, 'nauticalDawn', 'nauticalDusk'], 114 | [ -18, 'nightEnd', 'night' ], 115 | [ 6, 'goldenHourEnd', 'goldenHour' ] 116 | ]; 117 | 118 | // adds a custom time to the times config 119 | 120 | SunCalc.addTime = function (angle, riseName, setName) { 121 | times.push([angle, riseName, setName]); 122 | }; 123 | 124 | 125 | // calculations for sun times 126 | 127 | var J0 = 0.0009; 128 | 129 | function getJulianCycle(d, lw) { 130 | return Math.round(d - J0 - lw / (2 * PI)); 131 | } 132 | function getApproxTransit(Ht, lw, n) { 133 | return J0 + (Ht + lw) / (2 * PI) + n; 134 | } 135 | function getSolarTransitJ(ds, M, L) { 136 | return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); 137 | } 138 | function getHourAngle(h, phi, d) { 139 | return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); 140 | } 141 | 142 | 143 | // calculates sun times for a given date and latitude/longitude 144 | 145 | SunCalc.getTimes = function (date, lat, lng) { 146 | 147 | var lw = rad * -lng, 148 | phi = rad * lat, 149 | d = toDays(date), 150 | 151 | n = getJulianCycle(d, lw), 152 | ds = getApproxTransit(0, lw, n), 153 | 154 | M = getSolarMeanAnomaly(ds), 155 | C = getEquationOfCenter(M), 156 | L = getEclipticLongitude(M, C), 157 | 158 | dec = getDeclination(L, 0), 159 | 160 | Jnoon = getSolarTransitJ(ds, M, L); 161 | 162 | 163 | // returns set time for the given sun altitude 164 | function getSetJ(h) { 165 | var w = getHourAngle(h, phi, dec), 166 | a = getApproxTransit(w, lw, n); 167 | 168 | return getSolarTransitJ(a, M, L); 169 | } 170 | 171 | 172 | var result = { 173 | solarNoon: fromJulian(Jnoon), 174 | nadir: fromJulian(Jnoon - 0.5) 175 | }; 176 | 177 | var i, len, time, angle, morningName, eveningName, Jset, Jrise; 178 | 179 | for (i = 0, len = times.length; i < len; i += 1) { 180 | time = times[i]; 181 | 182 | Jset = getSetJ(time[0] * rad); 183 | Jrise = Jnoon - (Jset - Jnoon); 184 | 185 | result[time[1]] = fromJulian(Jrise); 186 | result[time[2]] = fromJulian(Jset); 187 | } 188 | 189 | return result; 190 | }; 191 | 192 | 193 | // moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas 194 | 195 | function getMoonCoords(d) { // geocentric ecliptic coordinates of the moon 196 | 197 | var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude 198 | M = rad * (134.963 + 13.064993 * d), // mean anomaly 199 | F = rad * (93.272 + 13.229350 * d), // mean distance 200 | 201 | l = L + rad * 6.289 * sin(M), // longitude 202 | b = rad * 5.128 * sin(F), // latitude 203 | dt = 385001 - 20905 * cos(M); // distance to the moon in km 204 | 205 | return { 206 | ra: getRightAscension(l, b), 207 | dec: getDeclination(l, b), 208 | dist: dt 209 | }; 210 | } 211 | 212 | SunCalc.getMoonPosition = function (date, lat, lng) { 213 | 214 | var lw = rad * -lng, 215 | phi = rad * lat, 216 | d = toDays(date), 217 | 218 | c = getMoonCoords(d), 219 | H = getSiderealTime(d, lw) - c.ra, 220 | h = getAltitude(H, phi, c.dec); 221 | 222 | // altitude correction for refraction 223 | h = h + rad * 0.017 / tan(h + rad * 10.26 / (h + rad * 5.10)); 224 | 225 | return { 226 | azimuth: getAzimuth(H, phi, c.dec), 227 | altitude: h, 228 | distance: c.dist 229 | }; 230 | }; 231 | 232 | 233 | // calculations for illumination parameters of the moon, 234 | // based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and 235 | // Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus 236 | // (Willmann-Bell, Richmond) 1998. 237 | 238 | SunCalc.getMoonIllumination = function (date) { 239 | 240 | var d = toDays(date), 241 | s = getSunCoords(d), 242 | m = getMoonCoords(d), 243 | 244 | sdist = 149598000, // distance from Earth to Sun in km 245 | 246 | phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)), 247 | inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)); 248 | 249 | return { 250 | fraction: (1 + cos(inc)) / 2, 251 | angle: atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) 252 | - cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra)) 253 | }; 254 | }; 255 | 256 | 257 | // export as AMD module / Node module / browser variable 258 | 259 | if (typeof define === 'function' && define.amd) { 260 | define(SunCalc); 261 | } else if (typeof module !== 'undefined') { 262 | module.exports = SunCalc; 263 | } else { 264 | window.SunCalc = SunCalc; 265 | } 266 | 267 | }()); 268 | -------------------------------------------------------------------------------- /src/nightsky.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Night Sky - An HTML5 based Night Sky Viewer 3 | * Copyright (c) 2014 Matthew Petroff 4 | * 5 | * Permission is hereby granted, free of charge, to any person obtaining a copy 6 | * of this software and associated documentation files (the "Software"), to deal 7 | * in the Software without restriction, including without limitation the rights 8 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | * copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in 13 | * all copies or substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | document.getElementById('getLocation').addEventListener('mousedown', getLocation, false); 25 | document.getElementById('enterLocation').addEventListener('mousedown', enterLocation, false); 26 | document.getElementById('manualLocation').addEventListener('mousedown', manualLocation, false); 27 | 28 | function getLink() { 29 | alert(window.location.href.split('#')[0] + '#lat=' + lat + '&lng=' + lng + '&alt=' + altitude 30 | + '&azm=' + azimuth + '&fov=' + hfov + '&tim=' + date.getTime()); 31 | } 32 | 33 | function enterLocation() { 34 | document.getElementById('locationBtns').style.display = 'none'; 35 | document.getElementById('locationFields').style.display = 'block'; 36 | } 37 | 38 | function fullScreenChange() { 39 | if(!(document.fullscreen || document.mozFullScreen || document.webkitIsFullScreen 40 | || document.msFullscreenElement)) { 41 | var page = document.getElementById('container'); 42 | if (page.requestFullscreen) { 43 | page.requestFullscreen(); 44 | } else if (page.mozRequestFullScreen) { 45 | page.mozRequestFullScreen(); 46 | } else if (page.msRequestFullscreen) { 47 | page.msRequestFullscreen(); 48 | } else { 49 | page.webkitRequestFullScreen(); 50 | } 51 | } else { 52 | if (document.exitFullscreen) { 53 | document.exitFullscreen(); 54 | } else if (document.mozCancelFullScreen) { 55 | document.mozCancelFullScreen(); 56 | } else if (document.webkitCancelFullScreen) { 57 | document.webkitCancelFullScreen(); 58 | } else if (document.msExitFullscreen) { 59 | document.msExitFullscreen(); 60 | } 61 | } 62 | } 63 | 64 | var azimuth = Math.PI, altitude = 0.3, hfov = 0.9; 65 | var lat = 41, lng = -73; 66 | 67 | function getLocation() { 68 | navigator.geolocation.getCurrentPosition(setPosition); 69 | } 70 | 71 | function setPosition(position) { 72 | lat = position.coords.latitude; 73 | lng = position.coords.longitude; 74 | init(); 75 | } 76 | 77 | function manualLocation() { 78 | lat = parseFloat(document.getElementById('latitude').value); 79 | lon = parseFloat(document.getElementById('longitude').value); 80 | init(); 81 | } 82 | 83 | var canvas = new Object(); 84 | canvas.height = window.innerHeight; 85 | canvas.width = window.innerWidth; 86 | 87 | var svgContainer = d3.select("#container").append("svg") 88 | .attr("width", canvas.width) 89 | .attr("height", canvas.height); 90 | var paths, points, clips, selects; 91 | 92 | 93 | function onDocumentResize(event) { 94 | canvas.height = window.innerHeight; 95 | canvas.width = window.innerWidth; 96 | svgContainer.attr("width", canvas.width) 97 | .attr("height", canvas.height); 98 | requestAnimationFrame(animate); 99 | } 100 | 101 | function init() { 102 | document.addEventListener('keydown', onDocumentKeyPress, false); 103 | window.addEventListener('resize', onDocumentResize, false); 104 | 105 | document.getElementById('fullscreenBtn').addEventListener('mousedown', fullScreenChange, false); 106 | document.getElementById('linkBtn').addEventListener('mousedown', getLink, false); 107 | document.addEventListener('keydown', onDocumentKeyPress, false); 108 | document.addEventListener('keyup', onDocumentKeyUp, false); 109 | window.addEventListener('blur', clearKeys, false); 110 | document.getElementById('locationDialog').style.display = 'none'; 111 | requestAnimationFrame(animate); 112 | } 113 | 114 | var keysDown = new Array(10); 115 | 116 | function onDocumentKeyPress(event) { 117 | // Override default action 118 | event.preventDefault(); 119 | 120 | // Record key pressed 121 | var keynumber = event.keycode; 122 | if(event.which) { 123 | keynumber = event.which; 124 | } 125 | 126 | changeKey(keynumber, true); 127 | } 128 | 129 | function clearKeys() { 130 | for(i = 0; i < 10; i++) { 131 | keysDown[i] = false; 132 | } 133 | } 134 | 135 | function onDocumentKeyUp(event) { 136 | // Override default action 137 | event.preventDefault(); 138 | 139 | // Record key released 140 | var keynumber = event.keycode; 141 | if(event.which) { 142 | keynumber = event.which; 143 | } 144 | 145 | // Change key 146 | changeKey(keynumber, false); 147 | } 148 | 149 | function changeKey(keynumber, value) { 150 | var keyChanged = false; 151 | switch(keynumber) { 152 | // If minus key is released 153 | case 109: case 189: case 17: 154 | if(keysDown[0] != value) { keyChanged = true; } 155 | keysDown[0] = value; break; 156 | 157 | // If plus key is released 158 | case 107: case 187: case 16: 159 | if(keysDown[1] != value) { keyChanged = true; } 160 | keysDown[1] = value; break; 161 | 162 | // If up arrow is released 163 | case 38: 164 | if(keysDown[2] != value) { keyChanged = true; } 165 | keysDown[2] = value; break; 166 | 167 | // If "w" is released 168 | case 87: 169 | if(keysDown[6] != value) { keyChanged = true; } 170 | keysDown[6] = value; break; 171 | 172 | // If down arrow is released 173 | case 40: 174 | if(keysDown[3] != value) { keyChanged = true; } 175 | keysDown[3] = value; break; 176 | 177 | // If "s" is released 178 | case 83: 179 | if(keysDown[7] != value) { keyChanged = true; } 180 | keysDown[7] = value; break; 181 | 182 | // If left arrow is released 183 | case 37: 184 | if(keysDown[4] != value) { keyChanged = true; } 185 | keysDown[4] = value; break; 186 | 187 | // If "a" is released 188 | case 65: 189 | if(keysDown[8] != value) { keyChanged = true; } 190 | keysDown[8] = value; break; 191 | 192 | // If right arrow is released 193 | case 39: 194 | if(keysDown[5] != value) { keyChanged = true; } 195 | keysDown[5] = value; break; 196 | 197 | // If "d" is released 198 | case 68: 199 | if(keysDown[9] != value) { keyChanged = true; } 200 | keysDown[9] = value; 201 | } 202 | 203 | if(keyChanged && value) { 204 | prevTime = Date.now(); 205 | requestAnimationFrame(animate); 206 | } 207 | } 208 | 209 | function keyRepeat() { 210 | var newTime = Date.now(); 211 | var diff = (newTime - prevTime) / 1000; 212 | 213 | // If minus key is down 214 | if(keysDown[0]) { 215 | hfov += diff; 216 | } 217 | 218 | // If plus key is down 219 | if(keysDown[1]) { 220 | hfov -= diff; 221 | } 222 | 223 | // If up arrow or "w" is down 224 | if(keysDown[2] || keysDown[6]) { 225 | // Pan up 226 | altitude += diff; 227 | } 228 | 229 | // If down arrow or "s" is down 230 | if(keysDown[3] || keysDown[7]) { 231 | // Pan down 232 | altitude -= diff; 233 | } 234 | 235 | // If left arrow or "a" is down 236 | if(keysDown[4] || keysDown[8]) { 237 | // Pan left 238 | azimuth += diff; 239 | } 240 | 241 | // If right arrow or "d" is down 242 | if(keysDown[5] || keysDown[9]) { 243 | // Pan right 244 | azimuth -= diff; 245 | } 246 | 247 | prevTime = newTime; 248 | } 249 | 250 | function animate() { 251 | render(); 252 | 253 | if(keysDown[0] || keysDown[1] || keysDown[2] || keysDown[3] 254 | || keysDown[4] || keysDown[5] || keysDown[6] || keysDown[7] 255 | || keysDown[8] || keysDown[9]) { 256 | keyRepeat(); 257 | requestAnimationFrame(animate); 258 | } 259 | } 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | // Get JSON configuration file 268 | var request = new XMLHttpRequest(); 269 | request.open('GET', '750.json', false); 270 | request.send(); 271 | var stars = JSON.parse(request.responseText).stars; 272 | 273 | // Process URL parameters 274 | window.location.hash.split('&').forEach(function(frag) { 275 | var option = frag.split('=')[0]; 276 | var value = frag.split('=')[1]; 277 | switch(option) { 278 | case 'lat': 279 | lat = parseFloat(value); break; 280 | case 'lng': 281 | lng = parseFloat(value); break; 282 | case 'alt': 283 | altitude = parseFloat(value); break; 284 | case 'azm': 285 | azimuth = parseFloat(value); break; 286 | case 'fov': 287 | hfov = parseFloat(value); break; 288 | case 'tim': 289 | date = new Date(parseInt(value)); break; 290 | default: 291 | break; 292 | } 293 | }); 294 | if(window.location.hash != '') { 295 | init(); 296 | } 297 | 298 | function render() { 299 | // Keep in bounds 300 | if(altitude > 1.5) { 301 | altitude = 1.5; 302 | } else if(altitude < 0) { 303 | altitude = 0; 304 | } 305 | if(hfov > 1.2) { 306 | hfov = 1.2; 307 | } else if(hfov < 0.6) { 308 | hfov = 0.6; 309 | } 310 | 311 | // Calculate current star sky positions 312 | var currentStars = []; 313 | stars.forEach(function(star) { 314 | currentStars.push(StarCalc.getStarPosition(date, lat, lng, star)); 315 | }); 316 | 317 | // Calculate current star screen positions 318 | var screenStars = []; 319 | currentStars.forEach(function(star) { 320 | var z = Math.sin(star.altitude) * Math.sin(altitude) 321 | + Math.cos(star.altitude) * Math.cos(star.azimuth + azimuth) 322 | * Math.cos(altitude); 323 | if((((star.azimuth <= (Math.PI / 2) && star.azimuth > -(Math.PI / 2) && z >= 0)) || 324 | (((star.azimuth > (Math.PI / 2) || star.azimuth <= -(Math.PI / 2)) && z >= 0))) 325 | && star.altitude > 0) { 326 | var s = new Object(); 327 | s.y = -canvas.height / Math.tan(hfov / 2) * 328 | (Math.sin(star.altitude) * Math.cos(altitude) 329 | - Math.cos(star.altitude) * Math.cos(star.azimuth + azimuth) 330 | * Math.sin(altitude)) / z / 2 + canvas.height / 2; 331 | s.x = canvas.width - (-canvas.height / Math.tan(hfov / 2) * 332 | Math.sin(star.azimuth + azimuth) * Math.cos(star.altitude) / z 333 | / 2 + canvas.width / 2); 334 | s.vmag = star.vmag; 335 | s.name = star.name; 336 | s.pname = star.pname; 337 | s.dist = star.dist; 338 | if (s.x > 0 && s.x < canvas.width && s.y > 0 && s.y < canvas.height) { 339 | screenStars.push(s); 340 | } 341 | } 342 | }); 343 | 344 | // Clear selection 345 | d3.select("#starName").text(''); 346 | d3.select("#magnitude").text(''); 347 | d3.select("#distance").text(''); 348 | 349 | var positions = []; 350 | screenStars.forEach(function(star) { 351 | positions.push([star.x, star.y]); 352 | }); 353 | 354 | if(clips) { 355 | clips.remove(); 356 | points.remove(); 357 | paths.remove(); 358 | selects.remove(); 359 | } 360 | 361 | clips = svgContainer.append("svg:g").attr("id", "point-clips"); 362 | points = svgContainer.append("svg:g").attr("id", "points"); 363 | paths = svgContainer.append("svg:g").attr("id", "point-paths"); 364 | selects = svgContainer.append("svg:g").attr("id", "selects"); 365 | 366 | clips.selectAll("clipPath") 367 | .data(positions) 368 | .enter().append("svg:clipPath") 369 | .attr("id", function(d, i) { return "clip-"+i;}) 370 | .append("svg:circle") 371 | .attr('cx', function(d) { return d[0]; }) 372 | .attr('cy', function(d) { return d[1]; }) 373 | .attr('r', 10); 374 | 375 | paths.selectAll("path") 376 | .data(d3.geom.voronoi(positions)) 377 | .enter().append("svg:path") 378 | .attr("d", function(d) { return "M" + d.join(",") + "Z"; }) 379 | .attr("id", function(d,i) { 380 | return "path-"+i; }) 381 | .attr("clip-path", function(d,i) { return "url(#clip-"+i+")"; }) 382 | .style('fill-opacity', 0); 383 | 384 | paths.selectAll("path") 385 | .on("mouseover", function(d, i) { 386 | selects.selectAll("path").attr('display', 'none'); 387 | svgContainer.select('path#select-'+i) 388 | .attr("display", "inline"); 389 | var name = ''; 390 | if(points.select('circle#point-'+i).datum().pname != '') { 391 | name = points.select('circle#point-'+i).datum().pname + ' (' 392 | + points.select('circle#point-'+i).datum().name + ')'; 393 | } else { 394 | name = points.select('circle#point-'+i).datum().name; 395 | } 396 | d3.select('#starName').text(name); 397 | d3.select('#magnitude').text("Magnitiude: " + points.select('circle#point-'+i).datum().vmag); 398 | d3.select('#distance').text('Distance: ' + points.select('circle#point-'+i).datum().dist + ' ly'); 399 | }) 400 | 401 | points.selectAll("circle") 402 | .data(screenStars) 403 | .enter().append("svg:circle") 404 | .attr("id", function(d, i) { 405 | return "point-"+i; }) 406 | .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }) 407 | .attr("r", function (d) { return Math.pow(1.5, -d.vmag) * 2.5; }) 408 | .attr('stroke', '#fff') 409 | .attr("stroke-width", 0) 410 | .style('fill', '#fff'); 411 | 412 | selects.selectAll("path") 413 | .data(screenStars) 414 | .enter().append("svg:path") 415 | .attr("d", function(d) { return "M 9 0 L 9 1.0625 C 4.8416284 1.529919 1.529919 4.8416284 1.0625 9 L 0 9 L 0 11 L 1.0625 11 C 1.529919 15.158372 4.8416284 18.470081 9 18.9375 L 9 20 L 11 20 L 11 18.9375 C 15.158372 18.470081 18.470081 15.158372 18.9375 11 L 20 11 L 20 9 L 18.9375 9 C 18.470081 4.8416284 15.158372 1.529919 11 1.0625 L 11 0 L 9 0 z M 9 3.09375 L 9 4 L 11 4 L 11 3.09375 C 14.061847 3.5338656 16.466134 5.9381525 16.90625 9 L 16 9 L 16 11 L 16.90625 11 C 16.466134 14.061847 14.061847 16.466134 11 16.90625 L 11 16 L 9 16 L 9 16.90625 C 5.9381525 16.466134 3.5338656 14.061847 3.09375 11 L 4 11 L 4 9 L 3.09375 9 C 3.5338656 5.9381525 5.9381525 3.5338656 9 3.09375 z"; }) 416 | .attr("id", function(d,i) { 417 | return "select-"+i; }) 418 | .attr("transform", function(d) { return "translate(" + (d.x - 10) + "," + (d.y - 10) + ")"; }) 419 | .attr('display', 'none') 420 | .style('fill', '#fff'); 421 | 422 | 423 | 424 | // Draw horizon 425 | var horizonAltitude = canvas.height / Math.tan(hfov / 2) 426 | * Math.tan(altitude) * .75 + canvas.height / 2; 427 | var horizonWidth = canvas.width / Math.sin(hfov / 2) * 2; 428 | paths.append("svg:path") 429 | .attr("d", function(d) { return "M" + (canvas.width-horizonWidth)/2 + "," + canvas.height/2 + " C" + canvas.width/2 + "," + horizonAltitude + " " + canvas.width/2 + "," + horizonAltitude + " " + (canvas.width+horizonWidth)/2 + "," + canvas.height/2 + " V" + canvas.height + " H0 Z"; }) 430 | .style('fill', '#0b1c0b'); 431 | 432 | 433 | // Draw navigation 434 | document.getElementById('arrow').style.transform = "rotate(" + (azimuth + Math.PI) + "rad)"; 435 | document.getElementById('arrow').style.webkitTransform = "rotate(" + (azimuth + Math.PI) + "rad)"; 436 | 437 | 438 | // Calculate moon illumination parameters 439 | var moonIllum = SunCalc.getMoonIllumination(date); 440 | 441 | var moon = document.getElementById("moon"); 442 | // Not a new moon 443 | if (0.02 < moonIllum.fraction) { 444 | var amount, crescent; 445 | 446 | // Construct moon SVG arc 447 | if (0.5 > moonIllum.fraction) { 448 | crescent = "1"; 449 | amount = String(100 - 200 * moonIllum.fraction); 450 | } else { 451 | crescent = "0"; 452 | amount = String(200 * moonIllum.fraction - 100); 453 | } 454 | var path = "M100,0 a100,100 0 1,0 0,200 a" + amount + ",100 0 1," + crescent + "0,-200 z"; 455 | document.getElementById("phase").setAttribute("d",path); 456 | 457 | // Rotate angle of moon's bright limb 458 | var transformO, transformI; 459 | var angle = moonIllum.angle / Math.PI * 180; 460 | transformO = "rotate(" + angle + ",100,100)"; 461 | transformI = "rotate(" + -angle + ",100,100)"; 462 | document.getElementById("angleO").setAttribute("transform", transformO); 463 | document.getElementById("angleI").setAttribute("transform", transformI); 464 | 465 | var moonPos = SunCalc.getMoonPosition(date, lat, lng); 466 | var z = Math.sin(moonPos.altitude) * Math.sin(altitude) 467 | + Math.cos(moonPos.altitude) * Math.cos(moonPos.azimuth + azimuth) 468 | * Math.cos(altitude); 469 | if((((moonPos.azimuth <= (Math.PI / 2) && moonPos.azimuth > -(Math.PI / 2) && z >= 0)) || 470 | (((moonPos.azimuth > (Math.PI / 2) || moonPos.azimuth <= -(Math.PI / 2)) && z >= 0))) 471 | && moonPos.altitude > 0) { 472 | moon.style.width = 40 / hfov + 'px'; 473 | moon.style.height = moon.style.width; 474 | moon.style.top = -canvas.height / Math.tan(hfov / 2) * 475 | (Math.sin(moonPos.altitude) * Math.cos(altitude) 476 | - Math.cos(moonPos.altitude) * Math.cos(moonPos.azimuth + azimuth) 477 | * Math.sin(altitude)) / z / 478 | 2 + canvas.height / 2 + "px"; 479 | moon.style.left = canvas.width - (-canvas.height / Math.tan(hfov / 2) * 480 | Math.sin(moonPos.azimuth + azimuth) * Math.cos(moonPos.altitude) / z / 2 481 | + canvas.width / 2) + "px"; 482 | moon.style.display = 'block'; 483 | } else { 484 | moon.style.display = 'none'; 485 | } 486 | } else { 487 | moon.style.display = 'none'; 488 | } 489 | } 490 | -------------------------------------------------------------------------------- /art/moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /data/750.csv: -------------------------------------------------------------------------------- 1 | name,pname,ra,dec,dist,vmag 2 | HR 2491,Sirius,6.7525694,-16.71314306,8.6,-1.44 3 | HR 2326,Canopus,6.39919184,-52.69571799,312.72,-0.62 4 | HR 5340,Arcturus,14.2612076,19.18726997,36.71,-0.05 5 | HR 5459,Rigel Kentaurus A,14.66136068,-60.83514707,4.4,-0.01 6 | HR 7001,Vega,18.61560722,38.78299311,25.3,0.03 7 | HR 1708,Capella,5.27813767,45.99902927,42.2,0.08 8 | HR 1713,Rigel,5.24229756,-8.20163919,772.9,0.18 9 | HR 2943,Procyon,7.65514946,5.22750767,11.41,0.4 10 | HR 472,Achernar,1.62854213,-57.23666007,143.81,0.45 11 | HR 2061,Betelgeuse,5.91952477,7.40703634,427.47,0.45 12 | HR 5267,Hadar,14.06373459,-60.3729784,525.22,0.61 13 | HR 7557,Altair,19.84630057,8.86738491,16.77,0.76 14 | HR 4730,Acrux,12.44331705,-63.09905586,320.71,0.77 15 | HR 1457,Aldebaran,4.59866679,16.50976164,65.12,0.87 16 | HR 5056,Spica,13.41989015,-11.16124491,262.19,0.98 17 | HR 6134,Antares,16.49012986,-26.43194608,604.01,1.06 18 | HR 2990,Pollux,7.75537884,28.02631031,33.72,1.16 19 | HR 8728,Fomalhaut,22.96078488,-29.62183701,25.07,1.17 20 | HR 7924,Deneb,20.69053151,45.28033423,3229.34,1.25 21 | HR 4853,,12.79536635,-59.68873246,352.61,1.25 22 | HR 5460,Rigel Kentaurus B,14.66094188,-60.83947139,4.4,1.35 23 | HR 3982,Regulus,10.13957205,11.96719513,77.49,1.36 24 | HR 2618,Adhara,6.9770963,-28.97208931,430.86,1.5 25 | HR 2891,Castor,7.57666793,31.88863645,51.55,1.58 26 | HR 4763,,12.5194248,-57.11256922,87.94,1.59 27 | HR 6527,Shaula,17.56014624,-37.10374835,702.94,1.62 28 | HR 1790,Bellatrix,5.41885227,6.34973451,243.04,1.64 29 | HR 1791,Alnath,5.43819386,28.60787346,131.04,1.65 30 | HR 3685,,9.22006688,-69.71747245,111.17,1.67 31 | HR 1903,Alnilam,5.60355904,-1.20191725,1342.24,1.69 32 | HR 8425,Alnair,22.13718789,-46.96061593,101.42,1.73 33 | HR 1948,Alnitak,5.67931244,-1.94257841,817.45,1.74 34 | HR 3207,,8.15887648,-47.33661177,840.63,1.75 35 | HR 4905,Alioth,12.9004536,55.95984301,80.93,1.76 36 | HR 6879,Kaus Australis,18.40287397,-34.3843146,144.64,1.79 37 | HR 1017,Mirphak,3.40537459,49.86124281,591.95,1.79 38 | HR 4301,Dubhe,11.06217691,61.75111888,123.64,1.81 39 | HR 2693,,7.13985723,-26.39320776,1792.11,1.83 40 | HR 5191,Alkaid,13.79237392,49.31330288,100.7,1.85 41 | HR 3307,,8.37524019,-59.50953829,632.1,1.86 42 | HR 6553,,17.62197938,-42.99782155,272.03,1.86 43 | HR 2088,,5.99215817,44.94743492,82.12,1.9 44 | HR 6217,,16.81107382,-69.02763503,415.49,1.91 45 | HR 2421,Alhena,6.62852842,16.39941482,104.81,1.93 46 | HR 3485,,8.7450548,-54.70856797,79.75,1.93 47 | HR 7790,,20.42745823,-56.73488071,183.24,1.94 48 | HR 424,Polaris,2.52974312,89.26413805,431.43,1.97 49 | HR 2294,,6.37832983,-17.95591658,499.48,1.98 50 | HR 3748,Alphard,9.45979217,-8.65868335,177.26,1.99 51 | HR 4057,Algieba,10.3328227,19.84186032,125.64,2.01 52 | HR 617,Hamal,2.11952383,23.46277743,65.92,2.01 53 | HR 188,Diphda,0.7264523,-17.9866841,95.82,2.04 54 | HR 7121,Nunki,18.92108797,-26.29659428,224.32,2.05 55 | HR 5288,,14.11147907,-36.36869575,60.94,2.06 56 | HR 15,Alpheratz,0.13976888,29.09082805,97.07,2.07 57 | HR 5563,Kochab,14.84510983,74.15547596,126.47,2.07 58 | HR 337,Mirach,1.16216599,35.62083048,199.37,2.07 59 | HR 2004,Saiph,5.79594109,-9.66960186,721.6,2.07 60 | HR 8636,,22.71109302,-46.88456594,170.14,2.07 61 | HR 6556,Rasalhague,17.58222354,12.56057584,46.7,2.08 62 | HR 936,Algol,3.13614714,40.9556512,92.82,2.09 63 | HR 603,,2.06497752,42.32984832,354.91,2.1 64 | HR 4534,Denebola,11.81774398,14.57233687,36.18,2.14 65 | HR 264,,0.9451392,60.71674966,613.09,2.15 66 | HR 4819,,12.69200138,-48.95988553,130.41,2.2 67 | HR 3165,,8.0597417,-40.00318846,1399.84,2.21 68 | HR 3699,,9.28484122,-59.27526115,692.49,2.21 69 | HR 5793,Alphekka,15.57810819,26.71491041,74.72,2.22 70 | HR 5054,Mizar,13.39872773,54.92541525,78.16,2.23 71 | HR 3634,,9.13327141,-43.43262406,573.22,2.23 72 | HR 7796,,20.37047223,40.2566815,1524.13,2.23 73 | HR 6705,Etamin,17.94343829,51.48895101,147.59,2.24 74 | HR 168,Shedir,0.67510756,56.53740928,228.57,2.24 75 | HR 1852,,5.53344437,-0.2990934,916.19,2.25 76 | HR 21,Caph,0.15280269,59.15021814,54.46,2.28 77 | HR 5132,,13.66479797,-53.46636269,375.76,2.29 78 | HR 5953,,16.00555881,-22.62162024,401.68,2.29 79 | HR 6241,,16.83617915,-34.29260982,65.43,2.29 80 | HR 5469,,14.69882606,-47.38814127,548.17,2.3 81 | HR 5440,,14.5917921,-42.15774562,308.57,2.33 82 | HR 4295,Merak,11.0306641,56.38234478,79.42,2.34 83 | HR 5505,Izar,14.74979191,27.07417383,209.75,2.35 84 | HR 8308,Enif,21.73642787,9.87500791,672.5,2.38 85 | HR 6580,,17.70813327,-39.02992092,463.96,2.39 86 | HR 99,Ankaa,0.43801871,-42.30512197,77.4,2.4 87 | HR 4554,Phad,11.89715035,53.69473296,83.65,2.41 88 | HR 6378,,17.17296177,-15.72514757,84.13,2.43 89 | HR 8775,Scheat,23.06287038,28.08245462,199.24,2.44 90 | HR 8162,Alderamin,21.30960598,62.58545529,48.8,2.45 91 | HR 2827,,7.40158473,-29.30311979,3197.68,2.45 92 | HR 3734,,9.36856367,-55.01069531,539.11,2.47 93 | HR 7949,,20.77012006,33.96945334,72.06,2.48 94 | HR 8781,Markab,23.07933801,15.20536786,139.62,2.49 95 | HR 911,Menkar,3.03799418,4.08992539,220.08,2.54 96 | HR 6175,,16.61931389,-10.5671518,458.09,2.54 97 | HR 5231,,13.92567635,-47.28826634,384.63,2.55 98 | HR 4357,,11.23511447,20.52403384,57.71,2.56 99 | HR 5984,,16.0906208,-19.80539286,530.35,2.56 100 | HR 1865,Arneb,5.54550386,-17.82229227,1284.11,2.58 101 | HR 4621,,12.13931767,-50.72240999,395.35,2.58 102 | HR 4662,,12.26346329,-17.5419837,164.9,2.58 103 | HR 7194,,19.04353428,-29.88011429,89.09,2.6 104 | HR 5685,,15.28346439,-9.38286694,160.04,2.61 105 | HR 5854,Unukalhai,15.7377766,6.42551971,73.23,2.63 106 | HR 553,,1.91065251,20.80829949,59.58,2.64 107 | HR 1956,,5.66081665,-34.07404941,268.23,2.65 108 | HR 2095,,5.99534393,37.21276409,173.21,2.65 109 | HR 4786,,12.57312057,-23.39662306,139.74,2.65 110 | HR 403,,1.43016751,60.23540347,99.41,2.66 111 | HR 5235,,13.91142116,18.39858742,36.99,2.68 112 | HR 5571,,14.97554279,-43.13386699,523.54,2.68 113 | HR 1577,,4.94989339,33.16613537,512.03,2.69 114 | HR 4216,,10.77947836,-49.42012517,115.74,2.69 115 | HR 4798,,12.61974547,-69.13553358,305.68,2.69 116 | HR 6508,,17.512733,-37.29574016,518.54,2.7 117 | HR 2773,,7.28571226,-37.09748689,1094.51,2.71 118 | HR 7525,Tarazed,19.77099171,10.61326869,460.68,2.72 119 | HR 6859,,18.34989489,-29.82803914,305.68,2.72 120 | HR 6056,,16.23910173,-3.69397562,170.23,2.73 121 | HR 6132,,16.39986301,61.51407536,87.73,2.73 122 | HR 4199,,10.71595186,-64.39447937,438.98,2.74 123 | HR 4825,,12.69444503,-1.44952231,38.59,2.74 124 | HR 1899,,5.59055031,-5.90989984,1325.87,2.75 125 | HR 5028,,13.34335154,-36.71208109,58.62,2.75 126 | HR 5531,,14.84799369,-16.04161047,77.2,2.75 127 | HR 6603,,17.72454914,4.56691684,81.99,2.76 128 | HR 6406,Rasalgethi,17.24412845,14.39025314,382.37,2.78 129 | HR 1666,,5.13084276,-5.08626282,88.85,2.78 130 | HR 6148,,16.50368379,21.4896485,147.79,2.78 131 | HR 4656,,12.25243248,-58.74890179,364.02,2.79 132 | HR 6536,,17.5072158,52.30135901,361.6,2.79 133 | HR 5776,,15.58568343,-41.16669497,567.24,2.8 134 | HR 1829,Nihal,5.47075731,-20.75923214,159.18,2.81 135 | HR 6212,,16.68818808,31.60188695,35.21,2.81 136 | HR 98,,0.42755612,-77.25503511,24.38,2.82 137 | HR 6165,,16.59804428,-28.21596156,429.73,2.82 138 | HR 6913,,18.46618597,-25.42124732,77.29,2.82 139 | HR 39,Algenib,0.22059721,15.18361593,333.16,2.83 140 | HR 3185,,8.12575059,-24.30443677,62.74,2.83 141 | HR 5897,,15.91911334,-63.42974973,40.15,2.83 142 | HR 1203,,3.90219957,31.88365776,982.42,2.84 143 | HR 6461,,17.42166588,-55.52982397,602.89,2.84 144 | HR 6510,,17.53070044,-49.87598159,242.32,2.84 145 | HR 1165,Alcyone,3.79140671,24.10524193,367.72,2.85 146 | HR 4932,Vindemiatrix,13.03632237,10.95910186,102.25,2.85 147 | HR 2890,,7.576977829,31.89188279,51.55,2.85 148 | HR 8322,,21.78396813,-16.12656595,38.56,2.85 149 | HR 591,,1.97940884,-61.56992444,71.31,2.86 150 | HR 7528,,19.74956725,45.13069195,171.03,2.86 151 | HR 2286,,6.3826642,22.51385027,231.81,2.87 152 | HR 5671,,15.31519133,-68.67946723,182.72,2.87 153 | HR 8502,,22.30838283,-60.25949486,198.64,2.87 154 | HR 897,,2.97103212,-40.30473491,161.31,2.88 155 | HR 7264,,19.1627316,-21.02352534,440.17,2.88 156 | HR 2845,,7.45252008,8.28940893,170.23,2.89 157 | HR 4915,,12.9338447,38.31824617,110.19,2.89 158 | HR 5944,,15.98086685,-26.1140428,459.38,2.89 159 | HR 1220,,3.96422809,40.01027315,538.22,2.9 160 | HR 6084,,16.35314514,-25.59275259,734.6,2.9 161 | HR 8232,,21.52597796,-5.57115593,611.94,2.9 162 | HR 915,,3.07994173,53.50645031,256.42,2.91 163 | HR 3890,,9.78503822,-65.07201888,1622.7,2.92 164 | HR 8650,,22.71670238,30.22130866,214.86,2.93 165 | HR 2553,,6.83226023,-50.61439973,182.72,2.94 166 | HR 4757,,12.4977731,-16.51509397,87.89,2.94 167 | HR 8414,,22.09639591,-0.31982656,758.52,2.95 168 | HR 1231,,3.96714724,-13.50824471,221.13,2.97 169 | HR 1910,,5.62741229,21.14259299,417.09,2.97 170 | HR 3873,,9.76419511,23.77427792,250.7,2.97 171 | HR 6746,,18.09681239,-30.42365007,96.1,2.98 172 | HR 5020,,13.31534816,-23.17141246,132.1,2.99 173 | HR 6615,,17.79307809,-40.12698197,1792.11,2.99 174 | HR 7235,,19.09017012,13.86370983,83.25,2.99 175 | HR 622,,2.15903358,34.98739204,124.3,3 176 | HR 4335,,11.16107206,44.49855337,146.85,3 177 | HR 5735,,15.34548589,71.83397308,480.36,3 178 | HR 6247,,16.86451079,-38.04732717,821.57,3 179 | HR 8353,,21.8987928,-37.3648229,202.96,3 180 | HR 1122,,3.71541169,47.7876533,527.77,3.01 181 | HR 2282,,6.33855198,-30.06337656,336.25,3.02 182 | HR 2653,,7.05040932,-23.83330131,2568.22,3.02 183 | HR 4630,,12.16875718,-22.61979211,303.41,3.02 184 | HR 1605,,5.032815,43.82331397,2038.52,3.03 185 | HR 4844,,12.77135267,-68.10809405,311.22,3.04 186 | HR 5435,,14.53465494,38.30788348,85.18,3.04 187 | HR 7417,,19.51202368,27.9596948,385.54,3.05 188 | HR 7776,,20.35017956,-14.78140119,344.05,3.05 189 | HR 2473,,6.73220272,25.13115531,903.5,3.06 190 | HR 4069,,10.37216756,41.4994335,248.79,3.06 191 | HR 7310,,19.20920972,67.66131695,100.23,3.07 192 | HR 6832,,18.29381366,-36.76128103,149.14,3.1 193 | HR 3547,,8.92324579,5.9455277,150.72,3.11 194 | HR 4232,,10.82706446,-16.19413208,138.56,3.11 195 | HR 4467,,11.59636896,-63.01982488,409.75,3.11 196 | HR 7869,,20.62610824,-47.29166239,101.26,3.11 197 | HR 2040,,5.84932022,-35.76929225,85.97,3.12 198 | HR 3569,,8.98689965,48.04234956,47.74,3.12 199 | HR 6285,,16.97700854,-55.99005508,574.23,3.12 200 | HR 6410,,17.25053449,24.83958739,78.5,3.12 201 | HR 5576,,14.9860275,-42.10414199,539.11,3.13 202 | HR 3705,,9.35096077,34.39252592,222.03,3.14 203 | HR 3803,,9.52037604,-57.0343916,237.73,3.16 204 | HR 6418,,17.25079285,36.80915527,366.89,3.16 205 | HR 2451,,6.62935324,-43.19592394,423.04,3.17 206 | HR 3775,,9.54786812,51.67860208,43.99,3.17 207 | HR 6396,,17.1464514,65.71463676,339.75,3.17 208 | HR 7039,,18.76093138,-26.9907794,230.67,3.17 209 | HR 1641,,5.10857473,41.23464074,219.34,3.18 210 | HR 5463,,14.70852362,-64.97456957,53.5,3.18 211 | HR 1543,,4.83059395,6.96124744,26.18,3.19 212 | HR 1654,,5.09101447,-22.37085673,226.66,3.19 213 | HR 6299,,16.96118627,9.37505626,85.86,3.19 214 | HR 6630,,17.83095867,-37.04337105,126.86,3.19 215 | HR 8115,,21.21560598,30.22708128,150.86,3.21 216 | HR 8974,,23.65582834,77.63196681,44.99,3.21 217 | HR 5695,,15.35620455,-40.64745946,510.43,3.22 218 | HR 6075,,16.30534466,-4.69260809,107.5,3.23 219 | HR 6869,,18.35525571,-2.897122,61.76,3.23 220 | HR 8238,,21.47765973,70.56069481,595.19,3.23 221 | HR 2550,,6.80320475,-61.94197988,98.96,3.24 222 | HR 7710,,20.18840688,-0.82147569,287.12,3.24 223 | HR 2878,,7.48718842,-43.30189129,183.86,3.25 224 | HR 5287,,14.10618582,-26.68201883,101.39,3.25 225 | HR 5603,,15.06785052,-25.28185602,292,3.25 226 | HR 7178,,18.98239571,32.68955312,634.56,3.25 227 | HR 1208,,3.78728653,-74.23924251,214.16,3.26 228 | HR 165,,0.65544371,30.86122579,101.32,3.27 229 | HR 6453,,17.36682891,-24.99948797,563.32,3.27 230 | HR 8709,,22.91084423,-15.82075994,159.57,3.27 231 | HR 1702,,5.2155203,-16.20542901,184.38,3.29 232 | HR 4037,,10.22896636,-70.03792169,370.22,3.29 233 | HR 5744,,15.41549558,58.96602354,102.18,3.29 234 | HR 1465,,4.56658845,-55.04500559,175.73,3.3 235 | HR 4140,,10.5337455,-61.68536031,497.2,3.3 236 | HR 2216,,6.2479713,22.50682376,349.21,3.31 237 | HR 6462,,17.42323884,-56.37768824,1136.46,3.31 238 | HR 322,,1.10141847,-46.71849042,198.16,3.32 239 | HR 921,,3.08624916,38.84053298,325.19,3.32 240 | HR 4660,,12.25706919,57.03259792,81.44,3.32 241 | HR 6380,,17.20254886,-43.23849039,71.59,3.32 242 | HR 6698,,17.9837771,-9.77334973,152.77,3.32 243 | HR 7234,,19.11567841,-27.66981416,120.4,3.32 244 | HR 1336,,4.24039753,-62.47397888,163.24,3.33 245 | HR 4359,,11.23734469,15.4297631,177.65,3.33 246 | HR 3045,,7.82157187,-24.85978401,1347.78,3.34 247 | HR 542,,1.90657873,63.67014686,441.96,3.35 248 | HR 1788,,5.40794918,-2.39713844,901,3.35 249 | HR 2484,,6.75484265,12.89605513,57.2,3.35 250 | HR 3323,,8.50445282,60.7184311,183.65,3.35 251 | HR 7377,,19.42493129,3.11457923,50.14,3.36 252 | HR 5708,,15.37802431,-44.68957314,504.12,3.37 253 | HR 3482,,8.77962395,6.41890691,135.17,3.38 254 | HR 5107,,13.5782652,-0.59593821,73.21,3.38 255 | HR 1879,,5.58563269,9.93416294,1055.54,3.39 256 | HR 4050,,10.28472369,-61.33231977,736.26,3.39 257 | HR 4910,,12.92680091,3.39759862,202.46,3.39 258 | HR 8465,,22.18090608,58.20124992,726.42,3.39 259 | HR 1412,,4.47768747,15.8709468,149,3.4 260 | HR 429,,1.47276157,-43.31772906,233.98,3.41 261 | HR 1239,,4.01133906,12.49037571,370.22,3.41 262 | HR 5190,,13.82508261,-41.68765971,474.76,3.41 263 | HR 5649,,15.20477865,-52.09907465,116.24,3.41 264 | HR 7957,,20.75479684,61.83679404,46.78,3.41 265 | HR 8634,,22.69102078,10.83139111,208.54,3.41 266 | HR 544,,1.88469439,29.57939727,64.12,3.42 267 | HR 5948,,16.00203902,-38.39664079,493.44,3.42 268 | HR 6623,,17.77436636,27.72249917,27.4,3.42 269 | HR 7913,,20.74932102,-66.20323826,137.56,3.42 270 | HR 3659,,9.18280702,-58.96693014,418.69,3.43 271 | HR 4031,,10.27816787,23.4173284,259.68,3.43 272 | HR 7236,,19.10415275,-4.88233456,125.21,3.43 273 | HR 4033,,10.2849797,42.91446855,134.39,3.45 274 | HR 219,,0.8180835,57.8165477,19.42,3.46 275 | HR 334,,1.14312879,-10.181928,117.62,3.46 276 | HR 3117,,7.94631715,-52.98240062,386.91,3.46 277 | HR 5681,,15.25836216,33.31510222,116.74,3.46 278 | HR 804,,2.72170126,3.23617162,81.99,3.47 279 | HR 5193,,13.82694662,-42.47368506,526.92,3.47 280 | HR 3975,,10.12220929,16.76266572,2131.79,3.48 281 | HR 6220,,16.71492737,38.92246103,112.05,3.48 282 | HR 509,,1.73475762,-15.93955597,11.9,3.49 283 | HR 2646,,7.02865325,-27.93484165,1217.03,3.49 284 | HR 4377,,11.30798759,33.09423881,421.4,3.49 285 | HR 5602,,15.03244253,40.39063671,218.75,3.49 286 | HR 6897,,18.44956396,-45.96832919,249.36,3.49 287 | HR 8675,,22.80922142,-51.31670354,129.64,3.49 288 | HR 2538,,6.83068485,-32.50848752,789.74,3.5 289 | HR 2777,,7.33538592,21.98233941,58.82,3.5 290 | HR 8694,,22.82803115,66.20071089,115.37,3.5 291 | HR 7635,,19.97927434,19.49209287,274.09,3.51 292 | HR 8684,,22.8333612,24.60168486,116.7,3.51 293 | HR 1136,,3.72082113,-9.76519868,29.5,3.52 294 | HR 3852,,9.68586607,9.89239902,135.23,3.52 295 | HR 3940,,9.94770968,-54.5677973,1929.96,3.52 296 | HR 4826,,12.69468965,-1.449330134,38.59,3.52 297 | HR 7106,,18.83466497,33.36267788,881.52,3.52 298 | HR 7150,,18.96216103,-21.10662433,372.33,3.52 299 | HR 8450,,22.16994993,6.197789,96.58,3.52 300 | HR 1409,,4.47692591,19.18052092,155.02,3.53 301 | HR 3249,,8.2752634,9.18566295,290.44,3.53 302 | HR 4450,,11.55007195,-31.85752405,129.28,3.54 303 | HR 5881,,15.82701825,-3.43014112,155.76,3.54 304 | HR 6561,,17.62645145,-15.39840835,105.45,3.54 305 | HR 1347,,4.29822737,-33.79833145,178.52,3.55 306 | HR 1998,,5.78259715,-14.82194717,70.19,3.55 307 | HR 5354,,14.32339798,-46.05808391,351.85,3.55 308 | HR 6927,,18.35064971,72.73369763,26.28,3.55 309 | HR 7665,,20.14496114,-66.17932101,19.92,3.55 310 | HR 74,,0.32380084,-8.82382948,289.67,3.56 311 | HR 674,,2.27513896,-51.51211145,154.87,3.56 312 | HR 4382,,11.3223674,-14.77904358,194.72,3.56 313 | HR 6252,,16.87226486,-38.01747781,516.9,3.56 314 | HR 2985,,7.74079682,24.39812929,143.49,3.57 315 | HR 3594,,9.06043299,47.15665934,423.04,3.57 316 | HR 5429,,14.53051606,30.37114497,148.8,3.57 317 | HR 5705,,15.36345457,-36.26116729,326.49,3.57 318 | HR 2763,,7.30155744,16.54047526,94.29,3.58 319 | HR 7754,,20.30089401,-12.54485877,108.68,3.58 320 | HR 464,,1.6331951,48.62848641,173.86,3.59 321 | HR 1735,,5.29344415,-6.84438616,554.7,3.59 322 | HR 1983,,5.74110416,-22.44748663,29.25,3.59 323 | HR 4540,,11.8448017,1.76537705,35.55,3.59 324 | HR 4700,,12.35605869,-60.40136988,228.09,3.59 325 | HR 402,,1.40040311,-8.18275372,114.52,3.6 326 | HR 2540,,6.87981668,33.96136985,196.6,3.6 327 | HR 3447,,8.67155811,-52.92197259,494.94,3.6 328 | HR 3786,,9.51169804,-40.46688763,60.52,3.6 329 | HR 5794,,15.61707183,-28.13507099,194.61,3.6 330 | HR 6500,,17.51832693,-60.68360667,187.23,3.6 331 | HR 838,,2.8330526,27.26079044,159.49,3.61 332 | HR 1030,,3.413566,9.02906504,211.52,3.61 333 | HR 3994,,10.17649919,-12.35383921,114.68,3.61 334 | HR 4923,,13.03771597,-71.54879865,90.83,3.61 335 | HR 6582,,17.76222289,-64.7237345,371.06,3.61 336 | HR 437,,1.52472051,15.34583101,294.11,3.62 337 | HR 1178,,3.81936977,24.05352412,380.59,3.62 338 | HR 3017,,7.75425108,-37.96859848,1387.93,3.62 339 | HR 6271,,16.90975143,-42.36075916,150.51,3.62 340 | HR 8762,,23.03201291,42.32597866,692.49,3.62 341 | HR 4520,,11.76015759,-66.72884344,128.31,3.63 342 | HR 7882,,20.62579715,14.59520289,97.39,3.64 343 | HR 1346,,4.32987052,15.62770031,154.07,3.65 344 | HR 3757,,9.52543601,63.06179545,75.5,3.65 345 | HR 5867,,15.76978191,15.42192602,153.06,3.65 346 | HR 6743,,18.11052188,-50.09145462,1012.93,3.65 347 | HR 8558,,22.48050015,-0.02006304,103.45,3.65 348 | HR 5747,,15.46384775,29.10549164,114.04,3.66 349 | HR 5812,,15.64427343,-29.77768935,444.97,3.66 350 | HR 5291,,14.07317389,64.37580873,308.87,3.67 351 | HR 7986,,20.91349433,-58.4540947,602.89,3.67 352 | HR 1552,,4.853435,5.60510146,1259.32,3.68 353 | HR 3468,,8.72654096,-33.18641133,844.98,3.68 354 | HR 7536,,19.78979589,18.53425912,448.03,3.68 355 | HR 8812,,23.15743391,-21.17248555,233.64,3.68 356 | HR 153,,0.61618528,53.89693161,597.37,3.69 357 | HR 566,,1.93245347,-51.60958673,57.03,3.69 358 | HR 1612,,5.04130001,41.07588953,787.83,3.69 359 | HR 3884,,9.75411876,-62.50792328,1510.02,3.69 360 | HR 4518,,11.76753725,47.77933701,196.01,3.69 361 | HR 8278,,21.66815062,-16.66225343,138.91,3.69 362 | HR 1003,,3.32526935,-21.7579421,258.24,3.7 363 | HR 6703,,17.96273073,29.24792527,135.23,3.7 364 | HR 8852,,23.28597045,3.28224524,130.88,3.7 365 | HR 1567,,4.90419323,2.44067149,1342.24,3.71 366 | HR 2085,,5.94008841,-14.16803805,49.07,3.71 367 | HR 3080,,7.87029041,-40.57579889,344.78,3.71 368 | HR 5892,,15.84691422,4.4775798,70.31,3.71 369 | HR 6771,,18.12250574,9.56365345,82.78,3.71 370 | HR 7602,,19.92187948,6.40793334,44.71,3.71 371 | HR 1084,,3.549006,-9.45830584,10.5,3.72 372 | HR 1142,,3.7479232,24.1134484,370.64,3.72 373 | HR 2077,,5.99209731,54.28498197,140.47,3.72 374 | HR 8079,,21.08218216,43.92785122,1177.48,3.72 375 | HR 1038,,3.45281136,9.7327724,222.18,3.73 376 | HR 5511,,14.77083106,1.8929383,128.66,3.73 377 | HR 6688,,17.8921193,56.87245216,111.47,3.73 378 | HR 8254,,21.69124253,-77.38946215,69.07,3.73 379 | HR 8698,,22.87690679,-7.57967878,391.55,3.73 380 | HR 539,,1.85766961,-10.33494526,259.07,3.74 381 | HR 6095,,16.36534546,19.15302185,195.42,3.74 382 | HR 8130,,21.24648517,38.04432043,68.24,3.74 383 | HR 3614,,9.0692557,-47.09771376,309.16,3.75 384 | HR 6629,,17.79821501,2.70745875,94.76,3.75 385 | HR 1922,,5.5604212,-62.48985585,1038.74,3.76 386 | HR 2035,,5.85532022,-20.87751376,112.28,3.76 387 | HR 2356,,6.48029836,-7.03305042,691.02,3.76 388 | HR 7217,,19.07803717,-21.74135451,138.85,3.76 389 | HR 7420,,19.49509425,51.72946747,122.48,3.76 390 | HR 8585,,22.52149326,50.28244976,102.37,3.76 391 | HR 834,,2.84494243,55.89552955,1331.28,3.77 392 | HR 1135,,3.75323428,42.57854437,556.59,3.77 393 | HR 1373,,4.38222981,17.5425843,153.2,3.77 394 | HR 1931,,5.64576814,-2.60006791,1148.46,3.77 395 | HR 3347,,8.42895729,-66.13652042,107.97,3.77 396 | HR 3445,,8.67710424,-46.64875492,3106.32,3.77 397 | HR 6229,,16.82975317,-59.04131648,313.32,3.77 398 | HR 7906,,20.66062626,15.9120527,240.71,3.77 399 | HR 8204,,21.44445214,-22.41137838,398.25,3.77 400 | HR 8430,,22.11679848,25.3450461,38.35,3.77 401 | HR 2736,,7.14578458,-70.49919435,141.69,3.78 402 | HR 2821,,7.42879891,27.79828561,125.93,3.78 403 | HR 3888,,9.84991436,59.03910437,115.05,3.78 404 | HR 4257,,10.89154617,-58.85326474,96.76,3.78 405 | HR 5477,,14.68581121,13.72833113,180.5,3.78 406 | HR 7950,,20.79459238,-9.49568988,229.53,3.78 407 | HR 941,,3.1582303,44.85788896,112.28,3.79 408 | HR 4247,,10.88851107,34.21556641,97.65,3.79 409 | HR 963,,3.20118888,-28.98910623,46.03,3.8 410 | HR 2948,,7.64718924,-26.8038924,454.27,3.8 411 | HR 5788,,15.58005284,10.53885916,209.89,3.8 412 | HR 7328,,19.28503052,53.36816064,123.17,3.8 413 | HR 7735,,20.22719518,46.74132417,1353.37,3.8 414 | HR 1464,,4.59251991,-30.56231049,208.81,3.81 415 | HR 4114,,10.4646514,-58.73940856,1042.06,3.81 416 | HR 5849,,15.71239951,26.29551419,145.09,3.81 417 | HR 8961,,23.62602991,46.45917621,84.19,3.81 418 | HR 595,,2.03411128,2.76376048,139.09,3.82 419 | HR 3690,,9.31407426,36.80289763,121.93,3.82 420 | HR 4434,,11.52341346,69.33112161,334.18,3.82 421 | HR 6149,,16.51523367,1.98410056,166.16,3.82 422 | HR 6588,,17.65774789,46.00632216,495.69,3.82 423 | HR 4094,,10.43486251,-16.83609584,248.22,3.83 424 | HR 5248,,13.97119018,-42.10070526,465.28,3.83 425 | HR 5470,,14.79770171,-79.04471242,411.3,3.83 426 | HR 1131,,3.73864623,32.28827325,1475.85,3.84 427 | HR 1175,,3.73654302,-64.80709398,99.71,3.84 428 | HR 1411,,4.4762312,15.96221721,157.87,3.84 429 | HR 3571,,8.91746157,-60.64471195,312.12,3.84 430 | HR 4133,,10.5468542,9.30659431,5722.16,3.84 431 | HR 4167,,10.62173798,-48.22561631,86.49,3.84 432 | HR 4773,,12.54114193,-72.1329759,323.9,3.84 433 | HR 6779,,18.12570854,28.76247025,347.35,3.84 434 | HR 6812,,18.2293913,-21.05883031,29651.21,3.84 435 | HR 7582,,19.8028371,70.26783533,145.61,3.84 436 | HR 1326,,4.23335592,-42.29387294,117.11,3.85 437 | HR 2020,,5.7880787,-51.06671329,62.88,3.85 438 | HR 2296,,6.36856809,-33.43627251,237.21,3.85 439 | HR 4023,,10.24563159,-42.12206281,102.83,3.85 440 | HR 4787,,12.55806736,69.78820992,497.96,3.85 441 | HR 4802,,12.62842439,-48.54128816,131.68,3.85 442 | HR 5933,,15.94083173,15.66473327,36.27,3.85 443 | HR 6895,,18.39493521,21.77034249,128.41,3.85 444 | HR 6973,,18.58678829,-8.24330819,174.23,3.85 445 | HR 269,,0.94586046,38.49925513,136.3,3.86 446 | HR 1481,,4.63635303,-14.303587,109.3,3.86 447 | HR 1862,,5.5202043,-35.47043592,277.11,3.86 448 | HR 6030,,16.25729615,-63.68564897,621.26,3.86 449 | HR 6102,,16.55762893,-78.89695917,159.57,3.86 450 | HR 6695,,17.93754959,37.25052158,669.74,3.86 451 | HR 8518,,22.36091665,-1.38735315,157.8,3.86 452 | HR 1149,,3.76377586,24.36785796,360,3.87 453 | HR 3487,,8.7671263,-46.0415392,1553.16,3.87 454 | HR 5249,,13.97799204,-44.8035314,417.62,3.87 455 | HR 5487,,14.71765618,-5.6574291,60.92,3.87 456 | HR 5928,,15.94807962,-29.21401221,409.24,3.87 457 | HR 7570,,19.8745455,1.00567827,1173.25,3.87 458 | HR 25,,0.15681663,-45.74698836,140.1,3.88 459 | HR 546,,1.892157,19.29409264,204.36,3.88 460 | HR 3905,,9.87943268,26.00708498,133.02,3.88 461 | HR 5646,,15.19893362,-48.73770212,182.32,3.88 462 | HR 8820,,23.17261887,-45.24664747,185,3.88 463 | HR 874,,2.94044549,-8.89760976,133.18,3.89 464 | HR 2580,,6.90220967,-24.18422296,1976.75,3.89 465 | HR 3665,,9.23938701,2.31502422,128.71,3.89 466 | HR 4689,,12.33177539,-0.66674709,249.74,3.89 467 | HR 7615,,19.93844337,35.08349079,139.39,3.89 468 | HR 3845,,9.66425943,-1.14265722,275.71,3.9 469 | HR 4390,,11.35012284,-54.49101395,321.34,3.9 470 | HR 5089,,13.5174079,-39.40727983,1254.47,3.9 471 | HR 1251,,4.05260466,5.98930909,129.22,3.91 472 | HR 3314,,8.42768636,-3.90636482,125.01,3.91 473 | HR 4743,,12.46733655,-50.2306048,443.16,3.91 474 | HR 5605,,15.08530713,-47.05119386,497.2,3.91 475 | HR 5787,,15.59209426,-14.78955365,152.27,3.91 476 | HR 6092,,16.3290133,46.31327084,314.53,3.91 477 | HR 6324,,17.00483505,30.92633926,162.76,3.92 478 | HR 7340,,19.36121535,-17.84725155,121.75,3.92 479 | HR 8131,,21.26372131,5.2480739,186.27,3.92 480 | HR 100,,0.43669894,-43.67990933,76.73,3.93 481 | HR 440,,1.5208282,-49.07307701,147.25,3.93 482 | HR 854,,2.90429513,52.76248991,248.03,3.93 483 | HR 1463,,4.60531682,-3.352448,586.62,3.93 484 | HR 3024,,7.69699889,-72.60613528,133.89,3.93 485 | HR 4337,,11.14316545,-58.97504198,5930.24,3.93 486 | HR 5993,,16.11345346,-20.66913479,423.59,3.93 487 | HR 6714,,18.01075431,2.93158759,1418.1,3.93 488 | HR 338,,1.13973891,-55.24583235,279.73,3.94 489 | HR 2970,,7.68746574,-9.55108315,144.26,3.94 490 | HR 2996,,7.73013114,-28.9548352,32616334.4,3.94 491 | HR 3461,,8.7447528,18.15486399,136.07,3.94 492 | HR 8028,,20.95289212,41.16719384,355.69,3.94 493 | HR 580,,2.05727509,72.42123962,162.11,3.95 494 | HR 2429,,6.61138858,-19.25570928,64.7,3.95 495 | HR 5055,,13.39889854,54.92089219,78.78,3.95 496 | HR 1273,,4.14435368,47.71259359,553.76,3.96 497 | HR 2120,,5.98577514,-42.81510761,531.21,3.96 498 | HR 3579,,9.01076451,41.78344401,53.59,3.96 499 | HR 3663,,9.18799107,-62.31701587,499.48,3.96 500 | HR 7337,,19.37730181,-44.45891013,378.38,3.96 501 | HR 7348,,19.3980976,-40.61564629,169.88,3.96 502 | HR 7751,,20.25786618,47.7142053,1109.4,3.96 503 | HR 8892,,23.38286152,-20.10034505,161.95,3.96 504 | HR 1393,,4.40060148,-34.01698632,272.94,3.97 505 | HR 2012,,5.85816462,39.14847936,215.01,3.97 506 | HR 2803,,7.28050856,-67.95717248,660.25,3.97 507 | HR 3438,,8.66837126,-35.30830091,388.29,3.97 508 | HR 4638,,12.19420872,-52.36841559,342.25,3.97 509 | HR 5883,,15.84931715,-33.62710488,205.65,3.97 510 | HR 7590,,20.00983148,-72.91018443,106.14,3.97 511 | HR 8556,,22.48782057,-43.49555433,295.71,3.97 512 | HR 8667,,22.77551177,23.56567939,394.87,3.97 513 | HR 1228,,3.98274992,35.79102701,1772.63,3.98 514 | HR 8252,,21.56635357,45.59206564,124.49,3.98 515 | HR 585,,2.00006244,-21.07777193,300.89,3.99 516 | HR 2227,,6.24759346,-6.27472737,644.59,3.99 517 | HR 4102,,10.40659458,-74.03154474,52.89,3.99 518 | HR 5062,,13.42039322,54.98799884,81.16,3.99 519 | HR 8848,,23.29050334,-58.23592762,71.84,3.99 520 | HR 3615,,9.04077745,-66.39584369,124.3,4 521 | HR 4399,,11.39871355,10.52969772,79.05,4 522 | HR 6027,,16.19992791,-19.46064684,436.63,4 523 | HR 496,,1.72767091,50.6887655,716.84,4.01 524 | HR 1520,,4.7583725,-3.25462465,532.08,4.01 525 | HR 2650,,7.06848205,20.57029939,1169.04,4.01 526 | HR 2749,,7.24685045,-26.77268601,923.98,4.01 527 | HR 5471,,14.69933688,-37.79342394,305.11,4.01 528 | HR 5986,,16.03158437,58.56443739,68.25,4.01 529 | HR 6072,,16.33071322,-50.15537923,127.51,4.01 530 | HR 6982,,18.71725939,-71.42772867,209.75,4.01 531 | HR 7834,,20.48992526,30.36855661,758.52,4.01 532 | HR 3518,,8.84222536,-27.71005869,208.68,4.02 533 | HR 4623,,12.14020907,-24.72877993,48.17,4.02 534 | HR 7176,,18.99371922,15.06847757,153.71,4.02 535 | HR 7193,,19.02801149,-5.73901832,148.59,4.02 536 | HR 664,,2.28856547,33.84732099,117.62,4.03 537 | HR 1603,,5.05697146,60.44228144,997.44,4.03 538 | HR 3475,,8.7782873,28.76000509,298.14,4.03 539 | HR 4898,,12.90990489,-57.17789116,377.5,4.03 540 | HR 6752,,18.09089245,2.50243928,16.59,4.03 541 | HR 7852,,20.55354577,11.30333217,358.82,4.03 542 | HR 9072,,23.98850066,6.86359373,105.97,4.03 543 | HR 1298,,4.19775922,-6.8377787,125.54,4.04 544 | HR 4517,,11.76432515,6.52981394,313.02,4.04 545 | HR 5404,,14.42000537,51.85171354,47.52,4.04 546 | HR 8597,,22.58925803,-0.11736123,183.55,4.04 547 | HR 937,,3.1508009,49.61350009,34.36,4.05 548 | HR 3318,,8.30868523,-76.91998251,63.46,4.05 549 | HR 3477,,8.73999055,-42.64932331,228.57,4.05 550 | HR 4386,,11.35229115,6.02935289,214.02,4.05 551 | HR 5200,,13.82463829,15.79780583,245.42,4.05 552 | HR 5367,,14.34263313,-37.88526711,247.28,4.05 553 | HR 5453,,14.63145864,-49.42575765,310.34,4.05 554 | HR 8679,,22.8265305,-13.59253756,380.14,4.05 555 | HR 1580,,4.93953363,13.51457755,169.35,4.06 556 | HR 2905,,7.59871452,26.89600343,240.36,4.06 557 | HR 4405,,11.41471755,-17.68401748,83.85,4.06 558 | HR 4671,,12.29295453,-67.96067161,302,4.06 559 | HR 4679,,12.30730353,-64.00304555,361.2,4.06 560 | HR 5485,,14.7276343,-35.17322549,205.26,4.06 561 | HR 6295,,16.99306851,-53.16049005,304.26,4.06 562 | HR 5338,,14.26691247,-5.99952622,69.78,4.07 563 | HR 5626,,15.1473971,-45.27979406,406.69,4.07 564 | HR 5670,,15.29193339,-58.80087882,96.64,4.07 565 | HR 8571,,22.48617998,58.4151899,982.42,4.07 566 | HR 215,,0.78899727,24.26737703,181.4,4.08 567 | HR 705,,2.36250639,-68.6594239,135.34,4.08 568 | HR 779,,2.65804119,0.3285168,647.15,4.08 569 | HR 919,,3.03988697,-23.62433613,86.17,4.08 570 | HR 2574,,6.90318908,-12.03859273,252.06,4.08 571 | HR 3825,,9.57407306,-59.22976797,1976.75,4.08 572 | HR 4287,,10.9963191,-18.29909723,174.33,4.08 573 | HR 7157,,18.92224587,43.9458926,349.59,4.08 574 | HR 8075,,21.09910538,-17.23271095,158.25,4.08 575 | HR 8173,,21.36809274,19.80435581,153.92,4.08 576 | HR 1907,,5.61509185,9.291412,116.07,4.09 577 | HR 5879,,15.81233572,18.1417793,348.47,4.09 578 | HR 458,,1.61332694,41.40638491,43.93,4.1 579 | HR 799,,2.73657999,49.22866639,36.64,4.1 580 | HR 3055,,7.82063861,-46.37322729,1964.84,4.1 581 | HR 6905,,18.48048221,-49.07003097,127.41,4.1 582 | HR 7259,,19.16715345,-39.34070677,508.04,4.1 583 | HR 794,,2.6777588,-39.85530905,145.48,4.11 584 | HR 2657,,7.06263699,-15.63325876,402.17,4.11 585 | HR 3426,,8.62740038,-42.98910371,1436.84,4.11 586 | HR 3903,,9.85796735,-14.84654997,273.63,4.11 587 | HR 4174,,10.59117177,-78.60781379,413.39,4.11 588 | HR 4522,,11.77523583,-61.17835907,434.31,4.11 589 | HR 5771,,15.61199636,-66.31690469,216.15,4.11 590 | HR 7254,,19.15785508,-37.90423953,129.69,4.11 591 | HR 8747,,23.01468731,-52.75410562,112.51,4.11 592 | HR 806,,2.65978435,-68.2669476,153.34,4.12 593 | HR 1303,,4.24829381,48.40937312,723.2,4.12 594 | HR 2124,,6.03971954,9.64736756,151.77,4.12 595 | HR 4608,,12.08685266,8.73284563,170.95,4.12 596 | HR 7581,,19.92102196,-41.8684135,189.19,4.12 597 | HR 7980,,20.86369338,-26.91912642,628.45,4.12 598 | HR 8560,,22.49595707,-43.74922804,324.86,4.12 599 | HR 1784,,5.39912122,-7.80795569,174.33,4.13 600 | HR 2343,,6.48271957,20.2121672,502.56,4.13 601 | HR 5908,,15.89707695,-16.7296223,162.92,4.13 602 | HR 7936,,20.76826836,-25.27051682,47.85,4.13 603 | HR 8630,,22.76770092,-81.38161731,140.41,4.13 604 | HR 8969,,23.66578342,5.62735374,44.98,4.13 605 | HR 1066,,3.51454638,12.93668186,360.4,4.14 606 | HR 1156,,3.77210009,23.94846207,359.21,4.14 607 | HR 3410,,8.62761315,5.70379868,179.11,4.14 608 | HR 4616,,12.11468134,-64.61363898,64.22,4.14 609 | HR 5778,,15.5488322,31.35915517,310.93,4.14 610 | HR 5947,,15.95980608,26.87802632,229.69,4.14 611 | HR 8315,,21.7440845,25.64500284,115.09,4.14 612 | HR 8498,,22.26615838,37.74873483,627.24,4.14 613 | HR 2714,,7.19773899,-0.49278056,374.9,4.15 614 | HR 6484,,17.39471468,37.14592396,401.68,4.15 615 | HR 8976,,23.67345605,44.33397776,169.7,4.15 616 | HR 2134,,6.06867126,23.26363207,150.72,4.16 617 | HR 2852,,7.48516936,31.78407932,60.33,4.16 618 | HR 6486,,17.43950482,-24.17502346,83.72,4.16 619 | HR 130,,0.54999626,62.93178781,4128.65,4.17 620 | HR 1195,,3.82424469,-36.2001125,209.89,4.17 621 | HR 8499,,22.28054621,-7.78323706,191.41,4.17 622 | HR 5315,,14.21492805,-10.274044,223.55,4.18 623 | HR 5351,,14.27310454,46.08791894,97.13,4.18 624 | HR 6166,,16.60623914,-35.25535553,338.7,4.18 625 | HR 8494,,22.25046638,57.04346522,83.93,4.18 626 | HR 8628,,22.67759043,-27.0436148,744.67,4.18 627 | HR 5192,,13.82409757,-34.45063035,177.36,4.19 628 | HR 7061,,18.76103644,20.54712356,62.28,4.19 629 | HR 1839,,5.51306886,5.94821792,288.64,4.2 630 | HR 3102,,7.94765507,-22.88014849,502.56,4.2 631 | HR 4100,,10.46474791,36.70747818,146,4.2 632 | HR 6168,,16.5683859,42.43689565,302.28,4.2 633 | HR 8665,,22.77817819,12.17408381,53,4.2 634 | HR 8720,,22.93247,-32.53970196,170.41,4.2 635 | HR 1035,,3.48448178,59.94033461,4291.62,4.21 636 | HR 1387,,4.42280521,22.29398098,153.34,4.21 637 | HR 6322,,16.76615597,82.03725071,346.61,4.21 638 | HR 7850,,20.49300758,62.99413722,135.68,4.21 639 | HR 8181,,21.44069225,-65.36814438,30.06,4.21 640 | HR 840,,2.84303172,38.31890838,127.71,4.22 641 | HR 1173,,3.78083028,-23.248438,58.46,4.22 642 | HR 3090,,7.88837857,-48.10294824,1941.45,4.22 643 | HR 5987,,16.10987675,-36.80221297,410.79,4.22 644 | HR 6118,,16.45039952,-18.45619698,489,4.22 645 | HR 6920,,18.34595588,71.33772734,289.15,4.22 646 | HR 7063,,18.7862437,-4.74782871,689.56,4.22 647 | HR 7074,,18.87028792,-62.18756062,1812.02,4.22 648 | HR 7139,,18.90841352,36.89860518,898.52,4.22 649 | HR 7942,,20.7610442,30.7196568,205.91,4.22 650 | HR 8143,,21.29026459,39.39469016,4530.05,4.22 651 | HR 8834,,23.23870347,-6.0485268,222.18,4.22 652 | HR 77,,0.33386505,-64.8776232,28.03,4.23 653 | HR 2973,,7.72185703,28.8840717,122.25,4.23 654 | HR 4983,,13.19803407,27.87603769,29.86,4.23 655 | HR 5168,,13.76154628,-33.04336606,62.83,4.23 656 | HR 5264,,14.02743976,1.54458338,218.32,4.23 657 | HR 6023,,16.14616647,44.93481883,228.57,4.23 658 | HR 6163,,16.71817212,-77.51657182,157.64,4.23 659 | HR 7226,,19.10695543,-37.06275714,58.36,4.23 660 | HR 8316,,21.72512637,58.78005308,5260.7,4.23 661 | HR 8335,,21.77989052,49.3095748,1156.61,4.23 662 | HR 285,,1.14559982,86.25711803,312.72,4.24 663 | HR 721,,2.44975138,-47.70382692,528.63,4.24 664 | HR 811,,2.73537623,-13.85867594,440.76,4.24 665 | HR 4674,,12.30581775,-79.31226899,270.67,4.24 666 | HR 4785,,12.5625257,41.35676779,27.3,4.24 667 | HR 6143,,16.5230393,-34.70432087,746.37,4.24 668 | HR 6581,,17.69025458,-12.87517268,168.04,4.24 669 | HR 8841,,23.26479915,-9.08769554,148.46,4.24 670 | HR 377,,1.26263759,-68.87623708,66.65,4.25 671 | HR 1261,,4.10973758,50.35135022,346.61,4.25 672 | HR 1454,,4.61150934,41.26485467,642.05,4.25 673 | HR 1458,,4.59423154,10.16091706,150.44,4.25 674 | HR 1679,,5.15243971,-8.75407607,1753.57,4.25 675 | HR 3275,,8.38059169,43.18837233,388.75,4.25 676 | HR 4889,,12.8905961,-40.17881857,155.09,4.25 677 | HR 5430,,14.45875625,75.69593921,344.78,4.25 678 | HR 8334,,21.75748035,61.12081043,5096.3,4.25 679 | HR 1008,,3.33145134,-43.07154929,19.77,4.26 680 | HR 335,,1.15836727,47.2418241,736.26,4.26 681 | HR 510,,1.75655241,9.15764102,258.24,4.26 682 | HR 1088,,3.56312442,-21.63281597,295.97,4.26 683 | HR 1338,,4.26708095,-51.48709578,66.21,4.26 684 | HR 1542,,4.90083628,66.34266029,6939.65,4.26 685 | HR 3572,,8.97477693,11.85777198,173.58,4.26 686 | HR 6546,,17.60912409,-38.63486521,144.07,4.26 687 | HR 6729,,18.02511192,21.59568814,470.65,4.26 688 | HR 8417,,22.06310052,64.62775425,101.7,4.26 689 | HR 294,,1.04907107,7.89007256,190.29,4.27 690 | HR 813,,2.7489926,10.11421979,84.26,4.27 691 | HR 1320,,4.25890144,8.89240989,434.88,4.27 692 | HR 1473,,4.63594491,12.51087423,149.68,4.27 693 | HR 1497,,4.7040843,22.95697545,400.69,4.27 694 | HR 4942,,13.11518417,-49.90621586,411.82,4.27 695 | HR 5683,,15.30890239,-47.87519201,290.7,4.27 696 | HR 7343,,19.38696127,-44.79964788,138.67,4.27 697 | HR 7948,,20.77764388,16.12477326,101.48,4.27 698 | HR 8916,,23.46615772,6.37909727,158.79,4.27 699 | HR 1392,,4.43844298,22.81369394,154.8,4.28 700 | HR 3751,,9.61815331,81.32642085,1076.45,4.28 701 | HR 4104,,10.4525433,-31.06780228,366.48,4.28 702 | HR 6492,,17.45590667,-29.86669942,111.47,4.28 703 | HR 7740,,20.22327809,56.56752223,152.34,4.28 704 | HR 8167,,21.3707715,-16.83455521,215.57,4.28 705 | HR 8454,,22.16645906,33.17826747,251.67,4.28 706 | HR 8787,,23.1146579,-43.52032436,133.07,4.28 707 | HR 1101,,3.61458859,0.40283316,44.75,4.29 708 | HR 1756,,5.32625721,-13.17677698,1076.45,4.29 709 | HR 4180,,10.65511459,-55.60327905,901,4.29 710 | HR 4552,,11.88182257,-33.90813014,365.24,4.29 711 | HR 5903,,15.73429554,77.79449901,375.76,4.29 712 | HR 6147,,16.51899859,-16.61264015,210.02,4.29 713 | HR 8418,,22.10727926,-13.86954013,172.57,4.29 714 | HR 8576,,22.52508043,-32.34602798,148.32,4.29 715 | HR 8965,,23.63560531,43.2680761,502.56,4.29 716 | HR 280,,0.97676274,-29.35746436,672.5,4.3 717 | HR 718,,2.46931052,8.4600887,176.02,4.3 718 | HR 1145,,3.75346725,24.46737879,372.76,4.3 719 | HR 1189,,3.80995081,-37.62012878,161.23,4.3 720 | HR 1389,,4.42481039,17.92798917,147.92,4.3 721 | HR 2091,,5.99891705,45.93675346,840.63,4.3 722 | HR 3454,,8.72041287,3.39866539,466.61,4.3 723 | HR 4259,,10.92690222,24.74975451,288.9,4.3 724 | HR 4471,,11.61581384,-0.82385424,178.13,4.3 725 | HR 4537,,11.82808001,-63.78848906,459.38,4.3 726 | HR 4775,,12.53457909,-16.19586556,59.39,4.3 727 | HR 5358,,14.33876465,-56.38647906,1186.05,4.3 728 | HR 7747,,20.29412669,-12.50821403,686.66,4.3 729 | HR 3457,,8.67695421,-59.76101468,1411.96,4.31 730 | HR 5339,,14.44881687,-83.66785308,278.77,4.31 731 | HR 5733,,15.4082045,37.37696091,120.98,4.31 732 | HR 5997,,16.1234167,-20.8686541,264.74,4.31 733 | HR 7884,,20.63896486,-1.10507951,383.72,4.31 734 | HR 1087,,3.60815558,48.19270068,699.92,4.32 735 | HR 1496,,4.67402609,-19.67125686,361.2,4.32 736 | HR 1845,,5.53687534,18.59424525,1918.61,4.32 737 | HR 2219,,6.25631571,29.49871224,168.91,4.32 738 | HR 3484,,8.77292429,-13.54770494,226.82,4.32 739 | HR 3773,,9.52867787,22.96806545,336.6,4.32 740 | HR 4599,,12.05047198,-63.31294495,229.85,4.32 741 | HR 4968,,13.1665415,17.52911621,46.72,4.32 742 | HR 5210,,13.86378478,-32.99401625,297.59,4.32 743 | HR 5528,,14.86064536,-43.57529383,407.7,4.32 744 | HR 6446,,17.34712098,-12.846882,193.45,4.32 745 | HR 2854,,7.46939707,8.92550376,397.76,4.33 746 | HR 4375,,11.30351192,31.53685216,33.98,4.33 747 | HR 4888,,12.88527127,-48.94325313,302.84,4.33 748 | HR 5396,,14.43633376,-45.37926095,314.22,4.33 749 | HR 6401,,17.25591313,-26.60004896,19.52,4.33 750 | HR 6745,,18.14299745,-63.66804844,138.5,4.33 751 | HR 6872,,18.33103366,36.06444696,237.9,4.33 752 | -------------------------------------------------------------------------------- /src/index.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Night Sky 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 28 | 29 |
30 | 31 |
32 |

33 |
34 | 35 |
36 | 37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
55 | 56 | 63 | 64 |
65 | 66 | 67 |
68 | 69 |
70 |
71 |

Night Sky

72 |
73 |

74 | 75 |
76 |
77 |

78 |

79 | Lat 80 | 81 |
82 |

83 |

84 | Lng 85 | 86 |
87 | 88 |
89 |
90 |
91 | 92 |
93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | --------------------------------------------------------------------------------