|
18 | 18 | */ |
19 | 19 |
|
20 | 20 | import { |
| 21 | + AstroEvent, |
21 | 22 | AVG_SUN_MOON_RADIUS, EventFinder, HALF_MINUTE, JUPITER, MARS, MERCURY, MOON, REFRACTION_AT_HORIZON, RISE_EVENT, SATURN, |
22 | 23 | SET_EVENT, SkyObserver, SolarSystem, SUN, UT_to_TDB, VENUS |
23 | 24 | } from 'ks-astronomy'; |
@@ -122,13 +123,27 @@ export class Ephemeris { |
122 | 123 | if (planet === SUN || planet === MOON) |
123 | 124 | targetAltitude -= AVG_SUN_MOON_RADIUS; |
124 | 125 |
|
| 126 | + const risen = (altitude >= targetAltitude); |
| 127 | + const risenTrack = $('#risen-' + planetIds[index]); |
| 128 | + let rise: AstroEvent; |
| 129 | + let set: AstroEvent; |
| 130 | + |
125 | 131 | rotate(elem, -eclipticLongitude); |
126 | | - elem.css('stroke-width', altitude < targetAltitude ? '0.25' : '0'); |
| 132 | + elem.css('stroke-width', risen ? '0' : '0.25'); |
127 | 133 | elem[0].setAttributeNS(null, 'r', altitude < targetAltitude ? '0.625' : '0.75'); |
128 | 134 |
|
129 | | - const risenTrack = $('#risen-' + planetIds[index]); |
130 | | - const rise = eventFinder.findEvent(planet, RISE_EVENT, time_JDU + 5 / 1400, observer, timezone, null, true); |
131 | | - const set = eventFinder.findEvent(planet, SET_EVENT, time_JDU - 5 / 1440, observer, timezone); |
| 135 | + if (risen) { |
| 136 | + rise = eventFinder.findEvent(planet, RISE_EVENT, time_JDU + 2 / 1400, observer, timezone, null, true); |
| 137 | + |
| 138 | + if (rise) |
| 139 | + set = eventFinder.findEvent(planet, SET_EVENT, rise.ut, observer, timezone); |
| 140 | + } |
| 141 | + else { |
| 142 | + set = eventFinder.findEvent(planet, SET_EVENT, time_JDU + 2 / 1400, observer, timezone, null, true); |
| 143 | + |
| 144 | + if (set) |
| 145 | + rise = eventFinder.findEvent(planet, RISE_EVENT, set.ut, observer, timezone); |
| 146 | + } |
132 | 147 |
|
133 | 148 | if (rise && rise.ut > time_JDU - 1.1 && set && set.ut < time_JDU + 1.1) { |
134 | 149 | const currentAngle = mod(-eclipticLongitude, 360); |
|
0 commit comments