@openwaters/almanac 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Almanac
2
2
 
3
- Offline sky engine for the Salish Sea and everywhere else: Sun, Moon, and planet positions, apparent horizon dip, rise, set, twilight, Moon phase, planetary brightness, lunar and solar eclipses, and fixed-star altitude and azimuth from catalog positions, computed from pure geometry with zero network and zero runtime data files.
3
+ Offline sky engine for the Salish Sea and everywhere else: Sun, Moon, and planet positions, apparent horizon dip, rise, set, twilight, any Sun altitude, upper and lower transits, Moon phase and orientation, planetary brightness, lunar and solar eclipses, and fixed-star altitude and azimuth from catalog positions, computed from pure geometry with zero network and zero runtime data files.
4
4
 
5
5
  Twin implementations, one behavior:
6
6
 
@@ -21,11 +21,13 @@ Algorithms translated from [Astronomy Engine](https://github.com/cosinekitty/ast
21
21
 
22
22
  ## Performance
23
23
 
24
- Almanac includes a shared performance harness for both ports: **30 workloads**
24
+ Almanac includes a shared performance harness for both ports: **34 workloads**
25
25
  cover positions, a 228-hour sky track, short/year/polar event windows, full-range
26
26
  moon phases, next/previous/range lunar, solar, and global solar eclipse searches,
27
27
  including empty windows, solar obscuration over a 228-hour track, and the central
28
- line of the 2024-04-08 eclipse, five-planet sky tracks, and planetary rise/set.
28
+ line of the 2024-04-08 eclipse, five-planet sky tracks, planetary rise/set, a
29
+ year of golden-hour crossings and Sun and Moon transits, and a 228-hour Moon
30
+ orientation track.
29
31
 
30
32
  Event searches find altitude extrema with Brent's method and altitude crossings
31
33
  with a cosine-seeded secant solver, each root proven inside a half-second
@@ -49,10 +51,10 @@ Reproduce the comparison locally from the repository root with mise 2026.9.1 or
49
51
  ```bash
50
52
  mise install
51
53
  mise exec -- npm ci --prefix typescript
52
- mise exec -- node benchmarks/run.mjs --base v0.4.1 --skip '^(global|planets)/'
54
+ mise exec -- node benchmarks/run.mjs --base v0.4.1 --skip '^(global|planets|suncalc)/'
53
55
  ```
54
56
 
55
- The `--skip` pattern leaves out global eclipse and planetary workloads absent from that base. Use `--skip '^(solar|global|planets)/'` when the base predates 0.4.0, which is when the solar eclipse workloads arrived. For a newer base that lacks only planets, use `--skip '^planets/'`.
57
+ The `--skip` pattern leaves out global eclipse, planetary, and SunCalc-parity workloads absent from that base. Use `--skip '^(solar|global|planets|suncalc)/'` when the base predates 0.4.0, which is when the solar eclipse workloads arrived. For a base that lacks only the SunCalc-parity APIs, use `--skip '^suncalc/'`.
56
58
 
57
59
  CI runs the harness on code changes and fails on **median regressions over 20%**.
58
60
  Results include timing tables, raw samples, checksums, and revision/toolchain
@@ -64,6 +66,10 @@ background task; use shorter windows for interactive queries.
64
66
 
65
67
  ## Usage
66
68
 
69
+ Migrating from SunCalc: [`docs/migrating-from-suncalc.md`](docs/migrating-from-suncalc.md) maps every SunCalc call to Almanac and gives drop-in `getTimes` and `getMoonTimes` adapters. Migrating from Solar: [`docs/migrating-from-solar.md`](docs/migrating-from-solar.md). How Almanac compares with SunCalc, Astronomy Engine, astronomia, Solar, SwiftAA, and EDSunriseSet, and when each is the better choice: [`docs/comparison.md`](docs/comparison.md).
70
+
71
+ Migrating from the Solar Swift library: [`docs/migrating-from-solar.md`](docs/migrating-from-solar.md) maps every Solar property to Almanac and gives a drop-in `Solar` adapter.
72
+
67
73
  ### TypeScript
68
74
 
69
75
  ```bash
@@ -112,7 +118,7 @@ const crossings = sunEvents(today, tomorrow, viewer, eyeHeightM);
112
118
  ### Swift
113
119
 
114
120
  ```swift
115
- .package(url: "https://github.com/openwatersio/almanac.git", exact: "0.7.0")
121
+ .package(url: "https://github.com/openwatersio/almanac.git", exact: "0.8.0")
116
122
  ```
117
123
 
118
124
  ```swift
@@ -145,16 +151,37 @@ for event in try sunEvents(from: today, to: tomorrow, observer: observer) {
145
151
  let star = try starAltAz(raDeg: 88.792939, decDeg: 7.407064, at: today, observer: observer)
146
152
  ```
147
153
 
154
+ ### Golden hour, transits, and the Moon's tilt
155
+
156
+ `sunAltitudeEvents` finds the Sun's center crossing any altitude, with the twilight convention, so `6` gives golden hour and `-6` civil twilight. `sunTransits` and `moonTransits` give each body's highest (`upper`) and lowest (`lower`) meridian crossings. `moonOrientation` turns the Moon's disc: subtracting the parallactic angle from the bright-limb angle gives the bright limb's direction from the zenith.
157
+
158
+ ```ts
159
+ import { sunAltitudeEvents, sunTransits, moonTransits, moonOrientation } from '@openwaters/almanac';
160
+ const golden = sunAltitudeEvents(today, tomorrow, observer, 6); // 'rising' ends morning golden hour, 'falling' starts the evening one
161
+ const solarMidnight = sunTransits(today, tomorrow, observer).find(e => e.kind === 'lower');
162
+ const moonHighest = moonTransits(today, tomorrow, observer).find(e => e.kind === 'upper');
163
+ const { brightLimbAngleDeg, parallacticAngleDeg } = moonOrientation(today, observer);
164
+ const brightLimbFromZenithDeg = brightLimbAngleDeg - parallacticAngleDeg;
165
+ ```
166
+
167
+ ```swift
168
+ let golden = try sunAltitudeEvents(from: today, to: tomorrow, observer: observer, altitudeDeg: 6)
169
+ let solarMidnight = try sunTransits(from: today, to: tomorrow, observer: observer).first { $0.kind == .lower }
170
+ let moonHighest = try moonTransits(from: today, to: tomorrow, observer: observer).first { $0.kind == .upper }
171
+ let orientation = try moonOrientation(at: today, observer: observer)
172
+ let brightLimbFromZenithDeg = orientation.brightLimbAngleDeg - orientation.parallacticAngleDeg
173
+ ```
174
+
148
175
  ### Planetary views
149
176
 
150
- Mercury, Venus, Earth, Mars, Jupiter, and Saturn have geometric Sun-centered positions in AU, in fixed J2000 equatorial coordinates. Place the Sun at `(0, 0, 0)` and orient the scene's camera for the desired view:
177
+ Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune have geometric Sun-centered positions in AU, in fixed J2000 equatorial coordinates. Place the Sun at `(0, 0, 0)` and orient the scene's camera for the desired view:
151
178
 
152
179
  ```ts
153
180
  import { planetHeliocentricPosition, planetAltAz, planetIllumination, planetEvents,
154
181
  horizonDip, sunAltAz } from '@openwaters/almanac';
155
182
  import type { Planet } from '@openwaters/almanac';
156
183
 
157
- const planets: Planet[] = ['mercury', 'venus', 'earth', 'mars', 'jupiter', 'saturn'];
184
+ const planets: Planet[] = ['mercury', 'venus', 'earth', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune'];
158
185
  const now = new Date();
159
186
  const positions = planets.map(planet => ({ planet, ...planetHeliocentricPosition(planet, now) }));
160
187
 
package/dist/events.d.ts CHANGED
@@ -17,6 +17,18 @@ export interface PlanetEvent {
17
17
  time: Date;
18
18
  kind: PlanetEventKind;
19
19
  }
20
+ /** The Sun's center crossing a caller-chosen altitude, upward or downward. */
21
+ export type AltitudeEventKind = 'rising' | 'falling';
22
+ export interface AltitudeEvent {
23
+ time: Date;
24
+ kind: AltitudeEventKind;
25
+ }
26
+ /** A body crossing the local meridian: highest at `upper`, lowest at `lower`. */
27
+ export type TransitEventKind = 'upper' | 'lower';
28
+ export interface TransitEvent {
29
+ time: Date;
30
+ kind: TransitEventKind;
31
+ }
20
32
  /** A quarter lunar phase. */
21
33
  export type MoonPhaseName = 'new' | 'firstQuarter' | 'full' | 'lastQuarter';
22
34
  export interface MoonPhaseEvent {
@@ -65,6 +77,26 @@ export declare function sunEvents(startUtc: Date, endUtc: Date, observer: Observ
65
77
  export declare function moonEvents(startUtc: Date, endUtc: Date, observer: Observer, heightAboveGroundM?: number): MoonEvent[];
66
78
  /** Rise/set of a point center at geometric altitude horizonDip minus 34 arcminutes. */
67
79
  export declare function planetEvents(planet: Planet, startUtc: Date, endUtc: Date, observer: Observer, heightAboveGroundM?: number): PlanetEvent[];
80
+ /**
81
+ * The Sun's unrefracted geometric center crossing `altitudeDeg` within the
82
+ * half-open window `[startUtc, endUtc)`, sorted ascending: `rising` upward,
83
+ * `falling` downward. The twilight convention, so `-6` returns the civil
84
+ * twilight instants. A window with no crossing, as in polar day or night,
85
+ * returns an empty list.
86
+ */
87
+ export declare function sunAltitudeEvents(startUtc: Date, endUtc: Date, observer: Observer, altitudeDeg: number): AltitudeEvent[];
88
+ /**
89
+ * The Sun's upper (local hour angle 0) and lower (180°) transits within the
90
+ * half-open window `[startUtc, endUtc)`, sorted ascending, whether or not the
91
+ * Sun is above the horizon. The upper transit is `sunEvents`' `transit`.
92
+ */
93
+ export declare function sunTransits(startUtc: Date, endUtc: Date, observer: Observer): TransitEvent[];
94
+ /**
95
+ * The Moon's upper and lower transits within the half-open window
96
+ * `[startUtc, endUtc)`, sorted ascending, from the topocentric hour angle, so
97
+ * parallax is included, whether or not the Moon is above the horizon.
98
+ */
99
+ export declare function moonTransits(startUtc: Date, endUtc: Date, observer: Observer): TransitEvent[];
68
100
  /**
69
101
  * UPSTREAM: `Search`, astronomy.ts ~4634 — bisection with quadratic
70
102
  * acceleration for the ascending zero crossing of `f` in `[t1, t2]`. Times are
package/dist/events.js CHANGED
@@ -21,7 +21,7 @@
21
21
  // `SearchMoonPhase` (~5260) and the `Search` (~4634) / `QuadInterp` (~4528)
22
22
  // root finder it calls, plus the quarter walk of `SearchMoonQuarter` (~5339)
23
23
  // and `NextMoonQuarter` (~5362).
24
- import { assertPlanet, assertSupported, assertSupportedWindowEnd, SUPPORTED_MIN, SUPPORTED_MAX } from './types.js';
24
+ import { assertObserver, assertPlanet, assertSupported, assertSupportedWindowEnd, SUPPORTED_MIN, SUPPORTED_MAX } from './types.js';
25
25
  import { dateFromUt, ttDaysFromUt, utDays } from './time.js';
26
26
  import { DEG2RAD, KM_PER_AU, RAD2DEG } from './nutation.js';
27
27
  import { topoAltAzUnrefracted } from './transforms.js';
@@ -412,9 +412,12 @@ function secantCrossing(f, a, b, s0, s1, targetDeg) {
412
412
  * solving every monotonic segment between consecutive extrema for every target
413
413
  * level. The chain starts a full cycle before `startUt` so the segment
414
414
  * containing the window's first instant is covered, and runs one extremum past
415
- * `endUt` so an event just inside the window's end is too.
415
+ * `endUt` so an event just inside the window's end is too. `transitKind` is
416
+ * emitted at each hour angle 0 and `lowerTransitKind` at each hour angle 180.
417
+ * With no levels the extrema are never refined: the hour-angle chain alone
418
+ * places the transits.
416
419
  */
417
- function searchAltitudeEvents(sample, levels, transitKind, startUt, endUt, haRateDegPerDay, cycleDays, flatCycle) {
420
+ function searchAltitudeEvents(sample, levels, transitKind, lowerTransitKind, startUt, endUt, haRateDegPerDay, cycleDays, flatCycle) {
418
421
  const extremumHalfWidthDays = flatCycle ? cycleDays / 2 : EXTREMUM_HALF_WIDTH_DAYS;
419
422
  const found = [];
420
423
  const emit = (ut, kind) => {
@@ -438,7 +441,8 @@ function searchAltitudeEvents(sample, levels, transitKind, startUt, endUt, haRat
438
441
  // extremum we are not allowed to probe past. The segment up to it is
439
442
  // still monotonic, so any crossing inside the window is still found.
440
443
  const s1 = atRangeEnd ? sample(MAX_UT)
441
- : refineExtremum(sample, nextEst, nextIsMax, extremumHalfWidthDays, s0.ut, flatCycle);
444
+ : levels.length === 0 ? sample(nextEst)
445
+ : refineExtremum(sample, nextEst, nextIsMax, extremumHalfWidthDays, s0.ut, flatCycle);
442
446
  assertReached(s1.ut > s0.ut, 'extremum chain ordering');
443
447
  // Earlier extrema still establish the chain, but their crossings cannot be emitted.
444
448
  if (quantizedUt(s1.ut) >= startUt) {
@@ -450,8 +454,9 @@ function searchAltitudeEvents(sample, levels, transitKind, startUt, endUt, haRat
450
454
  emit(solveCrossing(sample, spec.level, s0, s1), g1 > 0 ? spec.rising : spec.falling);
451
455
  }
452
456
  }
453
- if (nextIsMax && transitKind !== null && !atRangeEnd)
454
- emit(nextEst, transitKind);
457
+ const transit = nextIsMax ? transitKind : lowerTransitKind;
458
+ if (transit !== null && !atRangeEnd)
459
+ emit(nextEst, transit);
455
460
  s0 = s1;
456
461
  if (atRangeEnd)
457
462
  break;
@@ -491,7 +496,7 @@ export function sunEvents(startUtc, endUtc, observer, heightAboveGroundM = 0) {
491
496
  const dip = horizonDip(observer, heightAboveGroundM);
492
497
  if (startUtc.getTime() >= endUtc.getTime())
493
498
  return [];
494
- return searchAltitudeEvents(sunSampler(observer, dip), SUN_LEVELS, 'transit', utDays(startUtc), utDays(endUtc), SUN_HA_RATE_DEG_PER_DAY, SUN_CYCLE_DAYS, flatCycle(observer));
499
+ return searchAltitudeEvents(sunSampler(observer, dip), SUN_LEVELS, 'transit', null, utDays(startUtc), utDays(endUtc), SUN_HA_RATE_DEG_PER_DAY, SUN_CYCLE_DAYS, flatCycle(observer));
495
500
  }
496
501
  /**
497
502
  * Moonrise and moonset within the half-open window `[startUtc, endUtc)`,
@@ -505,7 +510,7 @@ export function moonEvents(startUtc, endUtc, observer, heightAboveGroundM = 0) {
505
510
  const dip = horizonDip(observer, heightAboveGroundM);
506
511
  if (startUtc.getTime() >= endUtc.getTime())
507
512
  return [];
508
- return searchAltitudeEvents(moonSampler(observer, dip), MOON_LEVELS, null, utDays(startUtc), utDays(endUtc), MOON_HA_RATE_DEG_PER_DAY, MOON_CYCLE_DAYS, flatCycle(observer));
513
+ return searchAltitudeEvents(moonSampler(observer, dip), MOON_LEVELS, null, null, utDays(startUtc), utDays(endUtc), MOON_HA_RATE_DEG_PER_DAY, MOON_CYCLE_DAYS, flatCycle(observer));
509
514
  }
510
515
  /** Rise/set of a point center at geometric altitude horizonDip minus 34 arcminutes. */
511
516
  export function planetEvents(planet, startUtc, endUtc, observer, heightAboveGroundM = 0) {
@@ -516,7 +521,51 @@ export function planetEvents(planet, startUtc, endUtc, observer, heightAboveGrou
516
521
  if (startUtc.getTime() >= endUtc.getTime())
517
522
  return [];
518
523
  const cycleDays = 0.9972695717592592;
519
- return searchAltitudeEvents(planetSampler(planet, observer, dip), MOON_LEVELS, null, utDays(startUtc), utDays(endUtc), 360 / cycleDays, cycleDays, flatCycle(observer));
524
+ return searchAltitudeEvents(planetSampler(planet, observer, dip), MOON_LEVELS, null, null, utDays(startUtc), utDays(endUtc), 360 / cycleDays, cycleDays, flatCycle(observer));
525
+ }
526
+ /**
527
+ * The Sun's unrefracted geometric center crossing `altitudeDeg` within the
528
+ * half-open window `[startUtc, endUtc)`, sorted ascending: `rising` upward,
529
+ * `falling` downward. The twilight convention, so `-6` returns the civil
530
+ * twilight instants. A window with no crossing, as in polar day or night,
531
+ * returns an empty list.
532
+ */
533
+ export function sunAltitudeEvents(startUtc, endUtc, observer, altitudeDeg) {
534
+ if (!(altitudeDeg >= -90 && altitudeDeg <= 90))
535
+ throw new RangeError(`altitudeDeg out of range: ${altitudeDeg}`);
536
+ assertSupported(startUtc);
537
+ assertSupportedWindowEnd(endUtc);
538
+ assertObserver(observer);
539
+ if (startUtc.getTime() >= endUtc.getTime())
540
+ return [];
541
+ const levels = [{ level: altitudeDeg, rising: 'rising', falling: 'falling' }];
542
+ return searchAltitudeEvents(sunSampler(observer, 0), levels, null, null, utDays(startUtc), utDays(endUtc), SUN_HA_RATE_DEG_PER_DAY, SUN_CYCLE_DAYS, flatCycle(observer));
543
+ }
544
+ /**
545
+ * The Sun's upper (local hour angle 0) and lower (180°) transits within the
546
+ * half-open window `[startUtc, endUtc)`, sorted ascending, whether or not the
547
+ * Sun is above the horizon. The upper transit is `sunEvents`' `transit`.
548
+ */
549
+ export function sunTransits(startUtc, endUtc, observer) {
550
+ assertSupported(startUtc);
551
+ assertSupportedWindowEnd(endUtc);
552
+ assertObserver(observer);
553
+ if (startUtc.getTime() >= endUtc.getTime())
554
+ return [];
555
+ return searchAltitudeEvents(sunSampler(observer, 0), [], 'upper', 'lower', utDays(startUtc), utDays(endUtc), SUN_HA_RATE_DEG_PER_DAY, SUN_CYCLE_DAYS, flatCycle(observer));
556
+ }
557
+ /**
558
+ * The Moon's upper and lower transits within the half-open window
559
+ * `[startUtc, endUtc)`, sorted ascending, from the topocentric hour angle, so
560
+ * parallax is included, whether or not the Moon is above the horizon.
561
+ */
562
+ export function moonTransits(startUtc, endUtc, observer) {
563
+ assertSupported(startUtc);
564
+ assertSupportedWindowEnd(endUtc);
565
+ assertObserver(observer);
566
+ if (startUtc.getTime() >= endUtc.getTime())
567
+ return [];
568
+ return searchAltitudeEvents(moonSampler(observer, 0), [], 'upper', 'lower', utDays(startUtc), utDays(endUtc), MOON_HA_RATE_DEG_PER_DAY, MOON_CYCLE_DAYS, flatCycle(observer));
520
569
  }
521
570
  // -------------------------------------------------------------- moon phases
522
571
  /**
@@ -1,3 +1,4 @@
1
+ import { Observer } from './types.js';
1
2
  import { Vec3 } from './nutation.js';
2
3
  /** Moon illumination at an instant. `phase` is 0 at new moon, 0.5 at full. */
3
4
  export interface MoonIllumination {
@@ -33,3 +34,21 @@ export declare function moonIlluminationAtTT(tt: number): MoonIllumination;
33
34
  * phase (0 = new, 0.5 = full, `waxing` = phase < 0.5).
34
35
  */
35
36
  export declare function moonIllumination(time: Date): MoonIllumination;
37
+ /**
38
+ * How the Moon's disc is turned on the observer's sky. `brightLimbAngleDeg` is
39
+ * the position angle of the bright limb's midpoint from celestial north
40
+ * through east, in [0, 360); `parallacticAngleDeg` is the angle at the Moon
41
+ * from celestial north to the observer's zenith, in (-180, 180]. Their
42
+ * difference is the bright limb's angle from the zenith.
43
+ */
44
+ export interface MoonOrientation {
45
+ brightLimbAngleDeg: number;
46
+ parallacticAngleDeg: number;
47
+ }
48
+ /**
49
+ * The Moon's orientation at an instant: the bright limb from the apparent
50
+ * topocentric Moon and the apparent geocentric Sun (Meeus, Astronomical
51
+ * Algorithms, 48.5), and the parallactic angle from the Moon's topocentric
52
+ * hour angle and declination at the observer's geodetic latitude (Meeus 14.1).
53
+ */
54
+ export declare function moonOrientation(time: Date, observer: Observer): MoonOrientation;
@@ -8,8 +8,10 @@
8
8
  // 865d3da7d8112bbc7911238052c6af4aaf877181, source/js/astronomy.ts.
9
9
  //
10
10
  // INTERNAL: not part of the curated public API (see index.ts).
11
- import { assertSupported } from './types.js';
12
- import { ttDays } from './time.js';
11
+ import { assertObserver, assertSupported } from './types.js';
12
+ import { ttDays, ttDaysFromUt, utDays } from './time.js';
13
+ import { topoAltAzUnrefracted } from './transforms.js';
14
+ import { sunApparentAtTT } from './positions.js';
13
15
  import { DEG2RAD, PrecessDirection, RAD2DEG, earthTilt, eclipticToEquatorial, gyration } from './nutation.js';
14
16
  import { moonGeoVectorEqj } from './moon.js';
15
17
  import { earthHelioVector, sunGeoVectorEqj } from './sun.js';
@@ -89,3 +91,31 @@ export function moonIllumination(time) {
89
91
  assertSupported(time);
90
92
  return moonIlluminationAtTT(ttDays(time));
91
93
  }
94
+ /**
95
+ * The Moon's orientation at an instant: the bright limb from the apparent
96
+ * topocentric Moon and the apparent geocentric Sun (Meeus, Astronomical
97
+ * Algorithms, 48.5), and the parallactic angle from the Moon's topocentric
98
+ * hour angle and declination at the observer's geodetic latitude (Meeus 14.1).
99
+ */
100
+ export function moonOrientation(time, observer) {
101
+ assertSupported(time);
102
+ assertObserver(observer);
103
+ const ut = utDays(time);
104
+ const tt = ttDaysFromUt(ut);
105
+ const moon = topoAltAzUnrefracted(moonGeoVectorEqj(tt), ut, observer);
106
+ const sun = sunApparentAtTT(tt);
107
+ const dec = moon.decDeg * DEG2RAD;
108
+ const sunDec = sun.decDeg * DEG2RAD;
109
+ const dRa = (sun.raDeg - moon.raDeg) * DEG2RAD;
110
+ let brightLimbAngleDeg = RAD2DEG * Math.atan2(Math.cos(sunDec) * Math.sin(dRa), Math.sin(sunDec) * Math.cos(dec) - Math.cos(sunDec) * Math.sin(dec) * Math.cos(dRa));
111
+ if (brightLimbAngleDeg < 0)
112
+ brightLimbAngleDeg += 360;
113
+ if (brightLimbAngleDeg >= 360)
114
+ brightLimbAngleDeg -= 360;
115
+ const ha = moon.hourAngleDeg * DEG2RAD;
116
+ const lat = observer.latitudeDeg * DEG2RAD;
117
+ let parallacticAngleDeg = RAD2DEG * Math.atan2(Math.sin(ha), Math.tan(lat) * Math.cos(dec) - Math.sin(dec) * Math.cos(ha));
118
+ if (parallacticAngleDeg <= -180)
119
+ parallacticAngleDeg += 360;
120
+ return { brightLimbAngleDeg, parallacticAngleDeg };
121
+ }
package/dist/index.d.ts CHANGED
@@ -7,10 +7,10 @@ export type { SunPosition, MoonPosition } from './positions.js';
7
7
  export { sunPosition, moonPosition } from './positions.js';
8
8
  export type { AltAz } from './transforms.js';
9
9
  export { sunAltAz, moonAltAz, starAltAz } from './transforms.js';
10
- export type { MoonIllumination } from './illumination.js';
11
- export { moonIllumination } from './illumination.js';
12
- export type { SunEvent, SunEventKind, MoonEvent, MoonEventKind, MoonPhaseEvent, MoonPhaseName, PlanetEvent, PlanetEventKind } from './events.js';
13
- export { sunEvents, moonEvents, searchMoonPhases, planetEvents } from './events.js';
10
+ export type { MoonIllumination, MoonOrientation } from './illumination.js';
11
+ export { moonIllumination, moonOrientation } from './illumination.js';
12
+ export type { SunEvent, SunEventKind, MoonEvent, MoonEventKind, MoonPhaseEvent, MoonPhaseName, PlanetEvent, PlanetEventKind, AltitudeEvent, AltitudeEventKind, TransitEvent, TransitEventKind } from './events.js';
13
+ export { sunEvents, moonEvents, searchMoonPhases, planetEvents, sunAltitudeEvents, sunTransits, moonTransits } from './events.js';
14
14
  export type { LunarEclipse, LunarEclipseVisibility } from './eclipse.js';
15
15
  export { nextLunarEclipse, previousLunarEclipse, lunarEclipses, lunarEclipseVisibility } from './eclipse.js';
16
16
  export type { SolarEclipse, SolarEclipseKind, SolarEclipseSunAltitudes } from './solar.js';
package/dist/index.js CHANGED
@@ -3,8 +3,8 @@ export { horizonDip } from './horizon.js';
3
3
  export { AlmanacOutOfRangeError } from './types.js';
4
4
  export { sunPosition, moonPosition } from './positions.js';
5
5
  export { sunAltAz, moonAltAz, starAltAz } from './transforms.js';
6
- export { moonIllumination } from './illumination.js';
7
- export { sunEvents, moonEvents, searchMoonPhases, planetEvents } from './events.js';
6
+ export { moonIllumination, moonOrientation } from './illumination.js';
7
+ export { sunEvents, moonEvents, searchMoonPhases, planetEvents, sunAltitudeEvents, sunTransits, moonTransits } from './events.js';
8
8
  export { nextLunarEclipse, previousLunarEclipse, lunarEclipses, lunarEclipseVisibility } from './eclipse.js';
9
9
  export { nextSolarEclipse, previousSolarEclipse, solarEclipses, solarObscuration } from './solar.js';
10
10
  export { nextGlobalSolarEclipse, previousGlobalSolarEclipse, globalSolarEclipses, solarEclipseAxisPoint, solarEclipseCentralLine } from './globalSolar.js';
@@ -463,5 +463,799 @@ const models = {
463
463
  [0.00436902572, 4.78671677509, 213.29909543800]
464
464
  ]
465
465
  ]
466
- ]
466
+ ],
467
+ uranus: [
468
+ [
469
+ [
470
+ [5.48129294297, 0.00000000000, 0.00000000000],
471
+ [0.09260408234, 0.89106421507, 74.78159856730],
472
+ [0.01504247898, 3.62719260920, 1.48447270830],
473
+ [0.00365981674, 1.89962179044, 73.29712585900],
474
+ [0.00272328168, 3.35823706307, 149.56319713460],
475
+ [0.00070328461, 5.39254450063, 63.73589830340],
476
+ [0.00068892678, 6.09292483287, 76.26607127560],
477
+ [0.00061998615, 2.26952066061, 2.96894541660],
478
+ [0.00061950719, 2.85098872691, 11.04570026390],
479
+ [0.00026468770, 3.14152083966, 71.81265315070],
480
+ [0.00025710476, 6.11379840493, 454.90936652730],
481
+ [0.00021078850, 4.36059339067, 148.07872442630],
482
+ [0.00017818647, 1.74436930289, 36.64856292950],
483
+ [0.00014613507, 4.73732166022, 3.93215326310],
484
+ [0.00011162509, 5.82681796350, 224.34479570190],
485
+ [0.00010997910, 0.48865004018, 138.51749687070],
486
+ [0.00009527478, 2.95516862826, 35.16409022120],
487
+ [0.00007545601, 5.23626582400, 109.94568878850],
488
+ [0.00004220241, 3.23328220918, 70.84944530420],
489
+ [0.00004051900, 2.27755017300, 151.04766984290],
490
+ [0.00003354596, 1.06549007380, 4.45341812490],
491
+ [0.00002926718, 4.62903718891, 9.56122755560],
492
+ [0.00003490340, 5.48306144511, 146.59425171800],
493
+ [0.00003144069, 4.75199570434, 77.75054398390],
494
+ [0.00002922333, 5.35235361027, 85.82729883120],
495
+ [0.00002272788, 4.36600400036, 70.32818044240],
496
+ [0.00002051219, 1.51773566586, 0.11187458460],
497
+ [0.00002148602, 0.60745949945, 38.13303563780],
498
+ [0.00001991643, 4.92437588682, 277.03499374140],
499
+ [0.00001376226, 2.04283539351, 65.22037101170],
500
+ [0.00001666902, 3.62744066769, 380.12776796000],
501
+ [0.00001284107, 3.11347961505, 202.25339517410],
502
+ [0.00001150429, 0.93343589092, 3.18139373770],
503
+ [0.00001533221, 2.58594681212, 52.69019803950],
504
+ [0.00001281604, 0.54271272721, 222.86032299360],
505
+ [0.00001372139, 4.19641530878, 111.43016149680],
506
+ [0.00001221029, 0.19900650030, 108.46121608020],
507
+ [0.00000946181, 1.19253165736, 127.47179660680],
508
+ [0.00001150989, 4.17898916639, 33.67961751290],
509
+ [0.00001244347, 0.91614441731, 2.44768055480],
510
+ [0.00001072013, 0.23566016888, 62.25142559510],
511
+ [0.00001090463, 1.77501500531, 12.53017297220],
512
+ [0.00000707935, 5.18291670033, 213.29909543800],
513
+ [0.00000653376, 0.96587864431, 78.71375183040],
514
+ [0.00000627570, 0.18209040157, 984.60033162190],
515
+ [0.00000524485, 2.01275350435, 299.12639426920],
516
+ [0.00000559396, 3.35768635981, 0.52126486180],
517
+ [0.00000606847, 5.43209889250, 529.69096509460],
518
+ [0.00000404897, 5.98690517582, 8.07675484730],
519
+ [0.00000467183, 0.41482520325, 145.10977900970],
520
+ [0.00000471311, 1.40661608158, 184.72728735580],
521
+ [0.00000483226, 2.10553218341, 0.96320784650],
522
+ [0.00000395569, 5.87037914022, 351.81659230870],
523
+ [0.00000433527, 5.52141037763, 183.24281464750],
524
+ [0.00000309843, 5.83301863492, 145.63104387150],
525
+ [0.00000378642, 2.34989391811, 56.62235130260],
526
+ [0.00000399033, 0.33796522578, 415.55249061210],
527
+ [0.00000300392, 5.64355207373, 22.09140052780],
528
+ [0.00000249230, 4.74621772167, 225.82926841020],
529
+ [0.00000239311, 2.35072447972, 137.03302416240],
530
+ [0.00000294103, 5.83919833199, 39.61750834610],
531
+ [0.00000216450, 4.77807782477, 340.77089204480],
532
+ [0.00000251784, 1.63692846797, 221.37585028530],
533
+ [0.00000219624, 1.92233630317, 67.66805156650],
534
+ [0.00000202019, 1.29693040688, 0.04818410980],
535
+ [0.00000224105, 0.51589500446, 84.34282612290],
536
+ [0.00000216563, 6.14217553245, 5.93789083320],
537
+ [0.00000222605, 2.84314245655, 0.26063243090],
538
+ [0.00000207907, 5.58012637880, 68.84370773410],
539
+ [0.00000187520, 1.31927606520, 0.16005869440],
540
+ [0.00000199306, 0.95648612651, 152.53214255120],
541
+ [0.00000158075, 0.73795262538, 54.17467074780],
542
+ [0.00000168606, 5.87865394974, 18.15924726470],
543
+ [0.00000170326, 3.67712574811, 5.41662597140],
544
+ [0.00000193647, 1.88800957346, 456.39383923560],
545
+ [0.00000193051, 0.91616617785, 453.42489381900],
546
+ [0.00000181991, 3.53625031273, 79.23501669220],
547
+ [0.00000173102, 1.53869634445, 160.60889739850],
548
+ [0.00000164483, 1.42390725018, 106.97674337190],
549
+ [0.00000171940, 5.67948631369, 219.89137757700],
550
+ [0.00000162805, 3.05027759814, 112.91463420510],
551
+ [0.00000146659, 1.26296726443, 59.80374504030],
552
+ [0.00000139276, 5.38697273752, 32.19514480460],
553
+ [0.00000138636, 4.25998533357, 909.81873305460],
554
+ [0.00000143058, 1.29980453870, 35.42472265210],
555
+ [0.00000123986, 1.37489956563, 7.11354700080],
556
+ [0.00000104582, 5.02793726187, 0.75075952540],
557
+ [0.00000103295, 0.68145096277, 14.97785352700],
558
+ [0.00000094957, 0.90678215577, 74.66972398270],
559
+ [0.00000082948, 2.92800368384, 265.98929347750],
560
+ [0.00000110403, 2.02666475709, 554.06998748280],
561
+ [0.00000094433, 3.94271122207, 74.89347315190],
562
+ [0.00000080072, 1.01583506701, 6.59228213900],
563
+ [0.00000109576, 5.70572405893, 77.96299230500],
564
+ [0.00000085946, 1.70581556772, 82.85835341460],
565
+ [0.00000103799, 1.45794315266, 24.37902238820],
566
+ [0.00000074661, 4.63178804642, 69.36497259590],
567
+ [0.00000079813, 3.00965058125, 297.64192156090],
568
+ [0.00000084490, 0.36886722094, 186.21176006410],
569
+ [0.00000088657, 0.52498114072, 181.75834193920],
570
+ [0.00000070368, 1.18984702891, 66.70484372000],
571
+ [0.00000069971, 0.87463619381, 305.34616939270],
572
+ [0.00000070082, 3.75845990682, 131.40394986990],
573
+ [0.00000084350, 5.88592009032, 256.53994050650],
574
+ [0.00000074493, 6.24238684280, 447.79581952650],
575
+ [0.00000062454, 0.16868402018, 479.28838891550],
576
+ [0.00000072904, 2.84891153624, 462.02291352810],
577
+ [0.00000069205, 4.43939850837, 39.35687591520],
578
+ [0.00000076729, 4.58716659215, 6.21977512350],
579
+ [0.00000073423, 4.27591432865, 87.31177153950],
580
+ [0.00000055577, 1.49804110443, 71.60020482960],
581
+ [0.00000057315, 1.63007488533, 143.62530630140],
582
+ [0.00000061674, 3.18616775231, 77.22927912210],
583
+ [0.00000057668, 3.67128264895, 51.20572533120],
584
+ [0.00000050352, 1.12355398826, 20.60692781950],
585
+ [0.00000053720, 5.51853172042, 128.95626931510],
586
+ [0.00000057895, 2.66869216910, 381.61224066830],
587
+ [0.00000058089, 1.58635213310, 60.76695288680],
588
+ [0.00000045390, 0.48027056949, 14.01464568050],
589
+ [0.00000037513, 6.06768205316, 211.81462272970],
590
+ [0.00000038565, 3.43547372715, 153.49535039770],
591
+ [0.00000046085, 4.36220351003, 75.74480641380],
592
+ [0.00000040220, 4.57551863155, 46.20979048510],
593
+ [0.00000034314, 2.93858938870, 140.00196957900],
594
+ [0.00000038754, 5.59046474201, 99.16062095550],
595
+ [0.00000034864, 1.02877681340, 203.73786788240],
596
+ [0.00000040016, 0.69893479575, 218.40690486870],
597
+ [0.00000032562, 4.21895389367, 200.76892246580],
598
+ [0.00000031889, 5.50965372046, 72.33391801250],
599
+ [0.00000041668, 3.82449219367, 81.00137369080],
600
+ [0.00000034668, 0.39221757952, 1.37259812370],
601
+ [0.00000039741, 6.05490168728, 293.18850343600],
602
+ [0.00000027545, 2.18754130148, 125.98732389850],
603
+ [0.00000036328, 1.66621808766, 258.02441321480],
604
+ [0.00000035508, 1.96672429313, 835.03713448730],
605
+ [0.00000035373, 3.72274050162, 692.58748435350],
606
+ [0.00000027364, 2.10315692995, 209.36694217490],
607
+ [0.00000026442, 4.48298644364, 373.90799283650],
608
+ [0.00000034517, 1.08687838842, 191.20769491020],
609
+ [0.00000026317, 3.63357788040, 490.33408917940],
610
+ [0.00000029888, 3.87365011384, 259.50888592310],
611
+ [0.00000025926, 0.54378574725, 41.64449777560],
612
+ [0.00000027110, 0.00478270361, 28.57180808220],
613
+ [0.00000026313, 5.81236674192, 75.30286342910],
614
+ [0.00000034277, 6.05545630018, 275.55052103310],
615
+ [0.00000024315, 3.18651202042, 81.37388070630],
616
+ [0.00000029936, 1.88789030410, 269.92144674060],
617
+ [0.00000026242, 6.20368166778, 134.58534360760],
618
+ [0.00000022842, 0.92857008471, 288.08069400530],
619
+ [0.00000025216, 5.43032747843, 116.42609634290],
620
+ [0.00000027063, 4.75299776159, 41.10198105440],
621
+ [0.00000022706, 0.53057453120, 1514.29129671650],
622
+ [0.00000026480, 4.77161377188, 284.14854074220],
623
+ [0.00000021950, 4.59091247537, 404.50679034820],
624
+ [0.00000022022, 1.84418065243, 617.80588578620],
625
+ [0.00000024811, 4.70901440561, 378.64329525170],
626
+ [0.00000029040, 0.17160028536, 528.20649238630],
627
+ [0.00000020487, 0.10247779138, 195.13984817330],
628
+ [0.00000020726, 5.62240737217, 55.65914345610],
629
+ [0.00000025919, 0.74700144605, 278.51946644970],
630
+ [0.00000022824, 3.58334799786, 1.59634729290],
631
+ [0.00000021855, 0.05691568897, 173.94221952280],
632
+ [0.00000019045, 2.30354999303, 5.10780943070],
633
+ [0.00000020831, 2.64115582292, 105.49227066360],
634
+ [0.00000021849, 5.87274563981, 45.57665103870],
635
+ [0.00000021075, 1.98176191313, 114.39910691340],
636
+ [0.00000019306, 2.84240229356, 159.12442469020],
637
+ [0.00000019062, 0.50604571692, 67.35923502580],
638
+ [0.00000020431, 3.77538635518, 135.54855145410],
639
+ [0.00000017322, 4.47827838578, 120.35824960600],
640
+ [0.00000020581, 0.88703968592, 255.05546779820],
641
+ [0.00000019339, 1.48569403160, 0.89377187730],
642
+ [0.00000021333, 2.74458777210, 28.31117565130],
643
+ [0.00000017629, 4.09292272552, 296.15744885260],
644
+ [0.00000015918, 3.94524461273, 17.52610781830],
645
+ [0.00000015556, 0.92841352827, 300.61086697750],
646
+ [0.00000016443, 0.30879187235, 30.71067209630],
647
+ [0.00000015248, 4.93045860155, 7.42236354150],
648
+ [0.00000019300, 6.21959323869, 329.83706636550],
649
+ [0.00000013876, 0.56084534056, 144.14657116320],
650
+ [0.00000016198, 2.30318612128, 344.70304530790],
651
+ [0.00000016033, 0.19604773155, 103.09277421860],
652
+ [0.00000014368, 2.57751058848, 230.56457082540],
653
+ [0.00000016807, 4.93620648940, 565.11568774670],
654
+ [0.00000017121, 1.82016259921, 294.67297614430],
655
+ [0.00000016827, 0.27566510604, 73.81839072080],
656
+ [0.00000015455, 1.91556741732, 96.87299909510],
657
+ [0.00000015814, 3.86318315976, 98.89998852460],
658
+ [0.00000011923, 6.17587234615, 44.72531777680],
659
+ [0.00000012446, 6.22466345410, 80.19822453870],
660
+ [0.00000013001, 1.99483872260, 27.08733537390],
661
+ [0.00000013180, 3.43753711704, 227.31374111850],
662
+ [0.00000011678, 4.31505860166, 426.59819087600],
663
+ [0.00000014374, 5.78359439943, 1059.38193018920],
664
+ [0.00000015879, 0.98454960135, 6208.29425142410],
665
+ [0.00000011511, 2.55846980442, 19.12245511120],
666
+ [0.00000011193, 1.74548073119, 220.41264243880],
667
+ [0.00000011981, 5.84355465210, 13.33332212430],
668
+ [0.00000013333, 5.39450805857, 391.17346822390],
669
+ [0.00000012322, 4.57477369077, 23.57587323610],
670
+ [0.00000012847, 1.77354298387, 180.27386923090],
671
+ [0.00000011629, 4.29071404978, 142.44965013380],
672
+ [0.00000012214, 2.44698830848, 100.38446123290],
673
+ [0.00000012439, 2.32661007670, 80.71948940050],
674
+ [0.00000009770, 0.39792836846, 7.86430652620],
675
+ [0.00000013165, 2.74113201454, 177.87437278590],
676
+ [0.00000012265, 5.42816045200, 831.10498122420],
677
+ [0.00000010264, 5.90199222998, 74.52096613640],
678
+ [0.00000009317, 3.75869700707, 74.82978267710],
679
+ [0.00000012284, 5.52145313445, 74.26033370550],
680
+ [0.00000010682, 4.00694729802, 235.39049596580],
681
+ [0.00000009243, 5.38488037675, 20.44686912510],
682
+ [0.00000009458, 2.60118467048, 92.30770638560],
683
+ [0.00000009317, 1.16483658243, 74.73341445750],
684
+ [0.00000010786, 1.88993609169, 241.61027108930],
685
+ [0.00000010597, 5.50467173303, 187.69623277240],
686
+ [0.00000012035, 6.02036249862, 154.01661525950],
687
+ [0.00000009129, 1.15458738606, 0.63313944640],
688
+ [0.00000011708, 6.25765865911, 155.78297225810],
689
+ [0.00000012186, 5.79479693025, 1364.72809958190],
690
+ [0.00000010992, 5.76674596450, 628.85158605010],
691
+ [0.00000008531, 5.17918037530, 1.64453140270],
692
+ [0.00000008662, 3.78046237096, 74.94165726170],
693
+ [0.00000011225, 1.30868548209, 604.47256366190],
694
+ [0.00000010540, 1.05897224519, 291.70403072770],
695
+ [0.00000008443, 3.52060391248, 756.32338265690],
696
+ [0.00000010290, 5.30499384790, 75.04223099820],
697
+ [0.00000009591, 1.64200163871, 24.11838995730],
698
+ [0.00000008020, 6.24545313293, 543.02428721890],
699
+ [0.00000007796, 5.23505740309, 58.10682401090],
700
+ [0.00000008649, 1.14271989382, 74.62153987290],
701
+ [0.00000007793, 4.00212500951, 31.49256938900],
702
+ [0.00000008915, 3.63129999542, 408.43894361130],
703
+ [0.00000007195, 4.24369275612, 110.20632121940],
704
+ [0.00000009545, 2.00926809412, 331.32153907380],
705
+ [0.00000008786, 2.25836637388, 451.94042111070],
706
+ [0.00000009768, 0.10232823685, 366.48562929500],
707
+ [0.00000009075, 1.63090160034, 443.86366626340],
708
+ [0.00000007255, 4.35305855248, 88.11492069160],
709
+ [0.00000009482, 1.43114303369, 414.06801790380],
710
+ [0.00000007645, 0.62076955028, 50.40257617910],
711
+ [0.00000006836, 5.12192858785, 0.80314915210],
712
+ [0.00000006899, 5.86240754958, 339.28641933650],
713
+ [0.00000008125, 0.45159535895, 25.60286266560],
714
+ [0.00000006488, 6.03171366016, 1.22384027740],
715
+ [0.00000009108, 2.41055572869, 10138.50394764370],
716
+ [0.00000008139, 0.21930359866, 422.66603761290],
717
+ [0.00000007164, 4.00283046264, 157.63995198190],
718
+ [0.00000006393, 4.47880072523, 79.88940799800],
719
+ [0.00000008039, 2.10161085530, 92.94084583200],
720
+ [0.00000006773, 1.38798529262, 16.67477455640],
721
+ [0.00000006816, 2.84724339946, 142.14083359310],
722
+ [0.00000007788, 5.86998158412, 760.25553592000],
723
+ [0.00000008380, 2.33770107198, 417.03696332040],
724
+ [0.00000007928, 3.41948324447, 7.70424783180],
725
+ [0.00000007235, 0.50521045386, 457.87831194390],
726
+ [0.00000007143, 5.57879993926, 4.73530241520],
727
+ [0.00000007379, 0.47767694338, 68.18931642830],
728
+ [0.00000006403, 3.88657131997, 74.03083904190],
729
+ [0.00000006101, 1.65240727244, 350.33211960040],
730
+ [0.00000006820, 6.15375544111, 67.88049988760],
731
+ [0.00000005994, 2.36087653120, 2.00573757010],
732
+ [0.00000006008, 5.46469064027, 48.75804477640],
733
+ [0.00000007020, 0.13804863634, 306.83064210100],
734
+ [0.00000005720, 1.49555002206, 206.18554843720],
735
+ [0.00000006862, 1.08055101709, 465.95506679120],
736
+ [0.00000006413, 5.07420793721, 4.66586644600],
737
+ [0.00000007804, 3.98873608283, 3.62333672240],
738
+ [0.00000005530, 5.57878118094, 2.92076130680],
739
+ [0.00000005519, 3.38213279322, 149.45132255000],
740
+ [0.00000006111, 1.95407755561, 216.92243216040],
741
+ [0.00000006580, 2.70993826910, 329.72519178090],
742
+ [0.00000005835, 3.99897551776, 347.88443904560],
743
+ [0.00000005112, 2.42454049536, 342.25536475310],
744
+ [0.00000005533, 2.83342316665, 260.99335863140],
745
+ [0.00000005727, 0.49154098031, 0.37250701550],
746
+ [0.00000005395, 2.78483514026, 13.49338081870],
747
+ [0.00000006024, 4.78785737004, 558.00214074590],
748
+ [0.00000004903, 1.76924594442, 333.65734504400],
749
+ [0.00000005381, 5.71120333625, 1.69692102940],
750
+ [0.00000005389, 2.94075276200, 9.40116886120],
751
+ [0.00000005042, 5.47678294897, 372.42352012820],
752
+ [0.00000005093, 3.43101132912, 518.64526483070],
753
+ [0.00000004766, 5.34829276989, 61.28821774860],
754
+ [0.00000005655, 3.30309284254, 0.65439130580],
755
+ [0.00000005566, 0.44947190504, 162.09337010680],
756
+ [0.00000005834, 3.46697149482, 55.13787859430],
757
+ [0.00000005656, 1.23594821626, 328.35259365720],
758
+ [0.00000005071, 5.42033083225, 977.48678462110],
759
+ [0.00000005719, 0.66730329426, 92.04707395470],
760
+ [0.00000005283, 2.42272151430, 58.31927233200],
761
+ [0.00000005613, 2.36101054919, 6.90109867970],
762
+ [0.00000004853, 1.27093959120, 983.11585891360],
763
+ [0.00000005512, 0.13294006611, 149.67507171920],
764
+ [0.00000004693, 1.85511154338, 119.50691634410],
765
+ [0.00000004307, 4.18173079985, 90.82323367730]
766
+ ],
767
+ [
768
+ [74.78159860910, 0.00000000000, 0.00000000000],
769
+ [0.00154332863, 5.24158770553, 74.78159856730],
770
+ [0.00024456474, 1.71260334156, 1.48447270830],
771
+ [0.00009258442, 0.42829732350, 11.04570026390],
772
+ [0.00008265977, 1.50218091379, 63.73589830340],
773
+ [0.00009150160, 1.41213765216, 149.56319713460],
774
+ [0.00003899108, 0.46483579160, 3.93215326310],
775
+ [0.00002277065, 4.17199181523, 76.26607127560],
776
+ [0.00001927470, 0.52976188479, 2.96894541660],
777
+ [0.00001232725, 1.58632088145, 70.84944530420],
778
+ [0.00000791201, 5.43640595978, 3.18139373770],
779
+ [0.00000766954, 1.99425624214, 73.29712585900],
780
+ [0.00000481813, 2.98574070918, 85.82729883120],
781
+ [0.00000449635, 4.14242946378, 138.51749687070],
782
+ [0.00000565091, 3.87400932383, 224.34479570190],
783
+ [0.00000426600, 4.73158166033, 71.81265315070],
784
+ [0.00000347745, 2.45368882357, 9.56122755560],
785
+ [0.00000332699, 2.55525645638, 148.07872442630],
786
+ [0.00000317054, 5.57858240166, 52.69019803950],
787
+ [0.00000179897, 5.68365861477, 12.53017297220],
788
+ [0.00000171119, 3.00040981195, 78.71375183040],
789
+ [0.00000205579, 2.36242761009, 2.44768055480],
790
+ [0.00000158038, 2.90930836614, 0.96320784650],
791
+ [0.00000189090, 4.20258063269, 56.62235130260],
792
+ [0.00000202696, 0.34360451816, 151.04766984290],
793
+ [0.00000154762, 5.59005854748, 4.45341812490],
794
+ [0.00000143472, 2.59047613814, 62.25142559510],
795
+ [0.00000151459, 2.93993108236, 77.75054398390],
796
+ [0.00000153561, 4.65220425575, 35.16409022120],
797
+ [0.00000121462, 4.14937021194, 127.47179660680],
798
+ [0.00000115538, 3.73245717203, 65.22037101170],
799
+ [0.00000102213, 4.18917777961, 145.63104387150],
800
+ [0.00000101894, 6.03382617339, 0.11187458460],
801
+ [0.00000088409, 3.99004756152, 18.15924726470],
802
+ [0.00000087591, 6.15639888455, 202.25339517410],
803
+ [0.00000080591, 2.64095955809, 22.09140052780],
804
+ [0.00000072047, 6.04586846354, 70.32818044240],
805
+ [0.00000068727, 4.05075598128, 77.96299230500],
806
+ [0.00000059329, 3.70581611259, 67.66805156650]
807
+ ],
808
+ [
809
+ [0.00002349469, 2.26708640433, 74.78159856730],
810
+ [0.00000848806, 3.14159265359, 0.00000000000],
811
+ [0.00000768983, 4.52562378749, 11.04570026390]
812
+ ]
813
+ ],
814
+ [
815
+ [
816
+ [0.01346277648, 2.61877810547, 74.78159856730],
817
+ [0.00062341400, 5.08111189648, 149.56319713460],
818
+ [0.00061601196, 3.14159265359, 0.00000000000],
819
+ [0.00009963722, 1.61603805646, 76.26607127560],
820
+ [0.00009926160, 0.57630380333, 73.29712585900],
821
+ [0.00003259466, 1.26119342526, 224.34479570190],
822
+ [0.00002972303, 2.24367206357, 1.48447270830],
823
+ [0.00002010275, 6.05550884547, 148.07872442630],
824
+ [0.00001522163, 0.27959645002, 63.73589830340],
825
+ [0.00000924064, 4.03822512696, 151.04766984290],
826
+ [0.00000760640, 6.13999362624, 71.81265315070],
827
+ [0.00000420265, 5.21280055515, 11.04570026390],
828
+ [0.00000430661, 3.55443947716, 213.29909543800],
829
+ [0.00000436847, 3.38081057022, 529.69096509460],
830
+ [0.00000522314, 3.32086440954, 138.51749687070],
831
+ [0.00000434627, 0.34063199763, 77.75054398390],
832
+ [0.00000462630, 0.74256687606, 85.82729883120],
833
+ [0.00000232667, 2.25715668168, 222.86032299360],
834
+ [0.00000215848, 1.59122810633, 38.13303563780],
835
+ [0.00000244698, 0.78795174100, 2.96894541660],
836
+ [0.00000179936, 3.72487768728, 299.12639426920],
837
+ [0.00000174896, 1.23550822483, 146.59425171800],
838
+ [0.00000173648, 1.93654971482, 380.12776796000],
839
+ [0.00000160368, 5.33635511113, 111.43016149680],
840
+ [0.00000144064, 5.96238846558, 35.16409022120],
841
+ [0.00000102049, 2.61876132065, 78.71375183040],
842
+ [0.00000116363, 5.73877137488, 70.84944530420],
843
+ [0.00000106444, 0.94095705978, 70.32818044240],
844
+ [0.00000086160, 0.70251751041, 39.61750834610],
845
+ [0.00000072611, 0.20572158900, 225.82926841020],
846
+ [0.00000071172, 0.83343109173, 109.94568878850],
847
+ [0.00000057495, 2.67048156941, 108.46121608020],
848
+ [0.00000054263, 3.35177461012, 184.72728735580],
849
+ [0.00000044471, 2.74407889623, 152.53214255120],
850
+ [0.00000038592, 5.17390531140, 202.25339517410],
851
+ [0.00000039159, 2.17111197275, 351.81659230870],
852
+ [0.00000041362, 3.22138743484, 160.60889739850],
853
+ [0.00000035132, 4.00123533788, 112.91463420510],
854
+ [0.00000033091, 3.61372505020, 221.37585028530],
855
+ [0.00000031332, 2.71938965609, 145.10977900970],
856
+ [0.00000037340, 4.02083944240, 52.69019803950]
857
+ ],
858
+ [
859
+ [0.00034101978, 0.01321929936, 74.78159856730],
860
+ [0.00002480115, 2.73961370453, 149.56319713460],
861
+ [0.00001719377, 0.00000000000, 0.00000000000],
862
+ [0.00000395276, 5.49322816551, 76.26607127560]
863
+ ]
864
+ ],
865
+ [
866
+ [
867
+ [19.21264847206, 0.00000000000, 0.00000000000],
868
+ [0.88784984413, 5.60377527014, 74.78159856730],
869
+ [0.03440836062, 0.32836099706, 73.29712585900],
870
+ [0.02055653860, 1.78295159330, 149.56319713460],
871
+ [0.00649322410, 4.52247285911, 76.26607127560],
872
+ [0.00602247865, 3.86003823674, 63.73589830340],
873
+ [0.00496404167, 1.40139935333, 454.90936652730],
874
+ [0.00338525369, 1.58002770318, 138.51749687070],
875
+ [0.00243509114, 1.57086606044, 71.81265315070],
876
+ [0.00190522303, 1.99809394714, 1.48447270830],
877
+ [0.00161858838, 2.79137786799, 148.07872442630],
878
+ [0.00143706183, 1.38368544947, 11.04570026390],
879
+ [0.00093192405, 0.17437220467, 36.64856292950],
880
+ [0.00071424548, 4.24509236074, 224.34479570190],
881
+ [0.00089806014, 3.66105364565, 109.94568878850],
882
+ [0.00039009723, 1.66971401684, 70.84944530420],
883
+ [0.00046677296, 1.39976401694, 35.16409022120],
884
+ [0.00039025624, 3.36234773834, 277.03499374140],
885
+ [0.00036755274, 3.88649278513, 146.59425171800],
886
+ [0.00030348723, 0.70100838798, 151.04766984290],
887
+ [0.00029156413, 3.18056336700, 77.75054398390],
888
+ [0.00020471591, 1.55587964879, 202.25339517410],
889
+ [0.00025620756, 5.25656086672, 380.12776796000],
890
+ [0.00025785880, 3.78537709870, 85.82729883120],
891
+ [0.00022637073, 0.72518687029, 529.69096509460],
892
+ [0.00020473534, 2.79640244248, 70.32818044240],
893
+ [0.00017901300, 0.55455066863, 2.96894541660],
894
+ [0.00012328114, 5.96037276805, 127.47179660680],
895
+ [0.00014701666, 4.90434516516, 108.46121608020],
896
+ [0.00011494680, 0.43772043395, 65.22037101170],
897
+ [0.00015502375, 5.35405396163, 38.13303563780],
898
+ [0.00010792498, 1.42106296264, 213.29909543800],
899
+ [0.00011695693, 3.29824190199, 3.93215326310],
900
+ [0.00011959076, 1.75043392140, 984.60033162190],
901
+ [0.00012896452, 2.62154084288, 111.43016149680],
902
+ [0.00011852959, 0.99344161196, 52.69019803950],
903
+ [0.00009111621, 4.99633582839, 62.25142559510],
904
+ [0.00008420792, 5.25351368389, 222.86032299360],
905
+ [0.00007448995, 0.79495503123, 351.81659230870],
906
+ [0.00008402384, 5.03876467031, 415.55249061210],
907
+ [0.00006046221, 5.67958564987, 78.71375183040],
908
+ [0.00005524411, 3.11493320824, 9.56122755560],
909
+ [0.00007329301, 3.97276588872, 183.24281464750],
910
+ [0.00005444570, 5.10574758517, 145.10977900970],
911
+ [0.00005238203, 2.62960535651, 33.67961751290],
912
+ [0.00004079523, 3.22064116734, 340.77089204480],
913
+ [0.00003801645, 6.10982670905, 184.72728735580],
914
+ [0.00003918728, 4.25017709085, 39.61750834610],
915
+ [0.00002940764, 2.14649735789, 137.03302416240],
916
+ [0.00003781197, 3.45840366912, 456.39383923560],
917
+ [0.00002942224, 0.42392830457, 299.12639426920],
918
+ [0.00003686324, 2.48725993956, 453.42489381900],
919
+ [0.00003101496, 4.14028619712, 219.89137757700],
920
+ [0.00002962643, 0.82981906774, 56.62235130260],
921
+ [0.00002937579, 3.67652211319, 140.00196957900],
922
+ [0.00002864793, 0.30998964462, 12.53017297220],
923
+ [0.00002538110, 4.85443168231, 131.40394986990],
924
+ [0.00001962787, 5.24326793681, 84.34282612290],
925
+ [0.00002363719, 0.44244699485, 554.06998748280],
926
+ [0.00001978408, 6.12838999163, 106.97674337190],
927
+ [0.00002182603, 2.94042519396, 305.34616939270],
928
+ [0.00001963255, 0.04114614586, 221.37585028530],
929
+ [0.00001829781, 4.01105197128, 68.84370773410],
930
+ [0.00001642920, 0.35558129224, 67.66805156650],
931
+ [0.00001584876, 3.16265838848, 225.82926841020],
932
+ [0.00001848022, 2.91116293131, 909.81873305460],
933
+ [0.00001632263, 4.23038575372, 22.09140052780],
934
+ [0.00001402196, 1.39106710150, 265.98929347750],
935
+ [0.00001404021, 5.63567908789, 4.45341812490],
936
+ [0.00001656488, 1.96436491067, 79.23501669220],
937
+ [0.00001248478, 5.44008558936, 54.17467074780],
938
+ [0.00001563396, 1.47919498164, 112.91463420510],
939
+ [0.00001248513, 4.88964506527, 479.28838891550],
940
+ [0.00001197649, 2.52152454056, 145.63104387150],
941
+ [0.00001506943, 5.24185420360, 181.75834193920],
942
+ [0.00001481952, 5.66201356223, 152.53214255120],
943
+ [0.00001439115, 1.53047702403, 447.79581952650],
944
+ [0.00001408871, 4.41921152932, 462.02291352810],
945
+ [0.00001477003, 4.32173218344, 256.53994050650],
946
+ [0.00001228234, 5.97697848866, 59.80374504030],
947
+ [0.00001249895, 6.24480493841, 160.60889739850],
948
+ [0.00000906516, 5.62013120164, 74.66972398270],
949
+ [0.00001090686, 4.15394319904, 77.96299230500],
950
+ [0.00000844827, 0.12966056060, 82.85835341460],
951
+ [0.00000900579, 2.37303064621, 74.89347315190],
952
+ [0.00001071649, 1.74298201693, 528.20649238630],
953
+ [0.00000689518, 3.08087933344, 69.36497259590],
954
+ [0.00000594010, 4.50031730404, 8.07675484730],
955
+ [0.00000718644, 4.00028668863, 128.95626931510],
956
+ [0.00000699874, 0.03990034416, 143.62530630140],
957
+ [0.00000575672, 5.89553952415, 66.70484372000],
958
+ [0.00000758678, 2.13693803170, 692.58748435350],
959
+ [0.00000710274, 5.41605211553, 218.40690486870],
960
+ [0.00000548663, 5.62811775865, 3.18139373770],
961
+ [0.00000651756, 4.42317051993, 18.15924726470],
962
+ [0.00000539730, 6.20779847549, 71.60020482960],
963
+ [0.00000544899, 5.69409543986, 203.73786788240],
964
+ [0.00000710254, 4.21967520209, 381.61224066830],
965
+ [0.00000594034, 3.83794153459, 32.19514480460],
966
+ [0.00000709902, 4.48962691884, 293.18850343600],
967
+ [0.00000705697, 0.45518539160, 835.03713448730],
968
+ [0.00000587851, 5.08268227675, 186.21176006410],
969
+ [0.00000598191, 0.35792534475, 269.92144674060],
970
+ [0.00000642152, 2.71090806243, 87.31177153950],
971
+ [0.00000495640, 2.65111742640, 200.76892246580],
972
+ [0.00000630166, 4.46153551027, 275.55052103310],
973
+ [0.00000574950, 5.57877269214, 2.44768055480],
974
+ [0.00000569622, 1.63924602135, 77.22927912210],
975
+ [0.00000556672, 1.07231890667, 1059.38193018920],
976
+ [0.00000449362, 0.27988155703, 617.80588578620],
977
+ [0.00000463703, 1.43450762802, 297.64192156090],
978
+ [0.00000436536, 0.52783902054, 209.36694217490],
979
+ [0.00000463920, 2.35519668239, 211.81462272970],
980
+ [0.00000435944, 2.10077178384, 1514.29129671650],
981
+ [0.00000515533, 3.23274245907, 284.14854074220],
982
+ [0.00000455004, 4.08342038147, 99.16062095550],
983
+ [0.00000477251, 2.89381653210, 39.35687591520],
984
+ [0.00000542691, 5.39457310701, 278.51946644970],
985
+ [0.00000409903, 3.04961893378, 404.50679034820],
986
+ [0.00000368389, 0.71079545635, 125.98732389850],
987
+ [0.00000503183, 5.83915487750, 191.20769491020],
988
+ [0.00000487400, 0.06424307109, 60.76695288680],
989
+ [0.00000455030, 2.59321031027, 490.33408917940],
990
+ [0.00000436349, 2.08129398068, 51.20572533120],
991
+ [0.00000435759, 2.79444435294, 75.74480641380],
992
+ [0.00000323480, 4.82939220481, 195.13984817330],
993
+ [0.00000359344, 0.00870449102, 35.42472265210],
994
+ [0.00000429078, 3.08057776747, 41.10198105440],
995
+ [0.00000319986, 5.48621997496, 14.97785352700],
996
+ [0.00000413961, 0.08822621279, 258.02441321480],
997
+ [0.00000379728, 0.05834508997, 378.64329525170],
998
+ [0.00000420206, 2.25392348451, 81.00137369080],
999
+ [0.00000357527, 4.71408309367, 173.94221952280],
1000
+ [0.00000358938, 0.35269536425, 426.59819087600],
1001
+ [0.00000405369, 6.12344979469, 24.37902238820],
1002
+ [0.00000365088, 5.59471873032, 255.05546779820],
1003
+ [0.00000308155, 3.92316644086, 116.42609634290],
1004
+ [0.00000325546, 4.71973290837, 134.58534360760],
1005
+ [0.00000292775, 3.99521624654, 72.33391801250],
1006
+ [0.00000386408, 0.68629232964, 230.56457082540],
1007
+ [0.00000305580, 3.76131538046, 344.70304530790],
1008
+ [0.00000286849, 1.84987619750, 153.49535039770],
1009
+ [0.00000353346, 4.65720677156, 329.83706636550],
1010
+ [0.00000301835, 0.13173596285, 565.11568774670],
1011
+ [0.00000241282, 1.60400061320, 81.37388070630],
1012
+ [0.00000249797, 4.24206827815, 75.30286342910],
1013
+ [0.00000245219, 5.94902281852, 20.60692781950],
1014
+ [0.00000248331, 1.06282358803, 105.49227066360],
1015
+ [0.00000305353, 2.55534744586, 6208.29425142410],
1016
+ [0.00000296370, 4.21095612809, 1364.72809958190],
1017
+ [0.00000219939, 2.96120542961, 120.35824960600],
1018
+ [0.00000233643, 2.97217201792, 46.20979048510],
1019
+ [0.00000262427, 3.83657820849, 831.10498122420],
1020
+ [0.00000233512, 4.47917715806, 628.85158605010],
1021
+ [0.00000187419, 3.03519991355, 135.54855145410],
1022
+ [0.00000216800, 3.42879551504, 241.61027108930],
1023
+ [0.00000255790, 1.16711533037, 177.87437278590],
1024
+ [0.00000220463, 0.19626840245, 180.27386923090],
1025
+ [0.00000224582, 0.40674144020, 114.39910691340],
1026
+ [0.00000205687, 2.30385491694, 259.50888592310],
1027
+ [0.00000211135, 4.93079268569, 103.09277421860],
1028
+ [0.00000175625, 5.51167774427, 7.11354700080],
1029
+ [0.00000188093, 2.23534719993, 5.41662597140],
1030
+ [0.00000171643, 5.21732384809, 41.64449777560],
1031
+ [0.00000176103, 1.95966779423, 756.32338265690],
1032
+ [0.00000170321, 4.95071878484, 206.18554843720],
1033
+ [0.00000169478, 4.04293214414, 55.65914345610],
1034
+ [0.00000219016, 0.24791955037, 294.67297614430],
1035
+ [0.00000187790, 2.04529505651, 408.43894361130],
1036
+ [0.00000182258, 0.70728907628, 391.17346822390],
1037
+ [0.00000191808, 5.76676964168, 291.70403072770],
1038
+ [0.00000153646, 4.70657045270, 543.02428721890],
1039
+ [0.00000169989, 4.50972133596, 288.08069400530],
1040
+ [0.00000163761, 5.22511628213, 67.35923502580],
1041
+ [0.00000194295, 6.11711108749, 414.06801790380],
1042
+ [0.00000168295, 5.25802294337, 518.64526483070],
1043
+ [0.00000156891, 0.66346387654, 220.41264243880],
1044
+ [0.00000182269, 0.78381581992, 417.03696332040],
1045
+ [0.00000167500, 4.92284198283, 422.66603761290],
1046
+ [0.00000170706, 2.30954371717, 98.89998852460],
1047
+ [0.00000161764, 3.27144223053, 443.86366626340],
1048
+ [0.00000133098, 2.88847467964, 373.90799283650],
1049
+ [0.00000161139, 3.82341819072, 451.94042111070],
1050
+ [0.00000179288, 4.82418428313, 366.48562929500],
1051
+ [0.00000178253, 3.98045379191, 10138.50394764370],
1052
+ [0.00000142045, 1.26892656490, 159.12442469020],
1053
+ [0.00000153749, 4.27847447687, 45.57665103870],
1054
+ [0.00000161285, 4.99511779244, 73.81839072080],
1055
+ [0.00000146245, 2.65555668221, 465.95506679120],
1056
+ [0.00000124849, 4.30472570922, 339.28641933650],
1057
+ [0.00000154661, 4.32026115082, 760.25553592000]
1058
+ ],
1059
+ [
1060
+ [0.01479896629, 3.67205697578, 74.78159856730],
1061
+ [0.00071212143, 6.22600975161, 63.73589830340],
1062
+ [0.00068627160, 6.13411179902, 149.56319713460],
1063
+ [0.00020857554, 5.24625848960, 11.04570026390],
1064
+ [0.00021468362, 2.60175716374, 76.26607127560],
1065
+ [0.00024059369, 3.14159265359, 0.00000000000],
1066
+ [0.00011405056, 0.01849738017, 70.84944530420],
1067
+ [0.00007496797, 0.42361355955, 73.29712585900],
1068
+ [0.00004243606, 1.41691058162, 85.82729883120],
1069
+ [0.00003505951, 2.58348117401, 138.51749687070],
1070
+ [0.00003228800, 5.25495561645, 3.93215326310],
1071
+ [0.00003926833, 3.15526349399, 71.81265315070],
1072
+ [0.00003059899, 0.15323842112, 1.48447270830],
1073
+ [0.00003578254, 2.31157935775, 224.34479570190],
1074
+ [0.00002564235, 0.98078549108, 148.07872442630],
1075
+ [0.00002429191, 3.99450740432, 52.69019803950],
1076
+ [0.00001644830, 2.65310351864, 127.47179660680],
1077
+ [0.00001583569, 1.43049534360, 78.71375183040],
1078
+ [0.00001413380, 4.57461623347, 202.25339517410],
1079
+ [0.00001489724, 2.67568435302, 56.62235130260],
1080
+ [0.00001403280, 1.36986207457, 77.75054398390]
1081
+ ],
1082
+ [
1083
+ [0.00022439899, 0.69953310903, 74.78159856730]
1084
+ ]
1085
+ ]
1086
+ ],
1087
+ neptune: [
1088
+ [
1089
+ [
1090
+ [5.31188633046, 0.00000000000, 0.00000000000],
1091
+ [0.01798475530, 2.90101273890, 38.13303563780],
1092
+ [0.01019727652, 0.48580922867, 1.48447270830],
1093
+ [0.00124531845, 4.83008090676, 36.64856292950],
1094
+ [0.00042064466, 5.41054993053, 2.96894541660],
1095
+ [0.00037714584, 6.09221808686, 35.16409022120],
1096
+ [0.00033784738, 1.24488874087, 76.26607127560],
1097
+ [0.00016482741, 0.00007727998, 491.55792945680],
1098
+ [0.00009198584, 4.93747051954, 39.61750834610],
1099
+ [0.00008994250, 0.27462171806, 175.16605980020],
1100
+ [0.00004216242, 1.98711875978, 73.29712585900],
1101
+ [0.00003364807, 1.03590060915, 33.67961751290],
1102
+ [0.00002284800, 4.20606949415, 4.45341812490],
1103
+ [0.00001433516, 2.78339802539, 74.78159856730],
1104
+ [0.00000900236, 2.07607168714, 109.94568878850],
1105
+ [0.00000744997, 3.19032509437, 71.81265315070],
1106
+ [0.00000506217, 5.74786069680, 114.39910691340],
1107
+ [0.00000399552, 0.34972342836, 1021.24889455140],
1108
+ [0.00000345189, 3.46185292806, 41.10198105440],
1109
+ [0.00000306338, 0.49684052934, 0.52126486180],
1110
+ [0.00000287322, 4.50523446022, 0.04818410980],
1111
+ [0.00000323003, 2.24814943701, 32.19514480460],
1112
+ [0.00000340303, 3.30376245107, 77.75054398390],
1113
+ [0.00000266605, 4.88932605590, 0.96320784650],
1114
+ [0.00000227079, 1.79713146385, 453.42489381900],
1115
+ [0.00000244722, 1.24693366148, 9.56122755560],
1116
+ [0.00000232888, 2.50459784128, 137.03302416240],
1117
+ [0.00000282170, 2.24565589980, 146.59425171800],
1118
+ [0.00000251941, 5.78166617117, 388.46515523820],
1119
+ [0.00000150188, 2.99706170691, 5.93789083320],
1120
+ [0.00000170404, 3.32390687638, 108.46121608020],
1121
+ [0.00000151401, 2.19153150087, 33.94024994380],
1122
+ [0.00000148305, 0.85949274408, 111.43016149680],
1123
+ [0.00000118672, 3.67706211426, 2.44768055480],
1124
+ [0.00000101821, 5.70539236951, 0.11187458460],
1125
+ [0.00000097873, 2.80518417596, 8.07675484730],
1126
+ [0.00000103059, 4.40432042649, 70.32818044240],
1127
+ [0.00000103305, 0.04078966679, 0.26063243090],
1128
+ [0.00000109299, 2.41599473953, 183.24281464750],
1129
+ [0.00000073938, 1.32805035282, 529.69096509460],
1130
+ [0.00000077725, 4.16446516489, 4.19278569400],
1131
+ [0.00000086312, 4.22838781137, 490.07345674850],
1132
+ [0.00000081558, 5.19840134548, 493.04240216510],
1133
+ [0.00000071503, 5.29530376008, 350.33211960040],
1134
+ [0.00000064418, 3.54540876782, 168.05251279940],
1135
+ [0.00000062570, 0.15028731307, 182.27960680100],
1136
+ [0.00000058488, 3.50107011546, 145.10977900970],
1137
+ [0.00000048286, 1.11259007090, 112.91463420510],
1138
+ [0.00000047229, 4.57373234943, 46.20979048510],
1139
+ [0.00000039124, 1.66569494185, 213.29909543800],
1140
+ [0.00000047728, 0.12906212459, 484.44438245600],
1141
+ [0.00000046858, 3.01699530311, 498.67147645760],
1142
+ [0.00000038659, 2.38685681991, 2.92076130680],
1143
+ [0.00000047046, 4.49844734537, 173.68158709190],
1144
+ [0.00000047565, 2.58404545035, 219.89137757700],
1145
+ [0.00000044714, 5.47302844713, 176.65053250850],
1146
+ [0.00000032279, 3.45758705244, 30.71067209630],
1147
+ [0.00000028249, 4.13282449919, 6.59228213900],
1148
+ [0.00000024432, 4.55736924822, 106.97674337190],
1149
+ [0.00000024661, 3.67821364144, 181.75834193920],
1150
+ [0.00000024505, 1.55095976661, 7.11354700080],
1151
+ [0.00000021848, 1.04366945175, 39.09624348430],
1152
+ [0.00000016835, 6.11092370371, 44.72531777680],
1153
+ [0.00000022220, 2.74693585259, 256.53994050650],
1154
+ [0.00000016614, 4.98189005162, 37.61177077600],
1155
+ [0.00000017728, 3.55049134136, 1.37259812370],
1156
+ [0.00000017348, 2.14093469791, 42.58645376270],
1157
+ [0.00000014588, 0.69766675400, 1550.93985964600],
1158
+ [0.00000014969, 3.36426560630, 98.89998852460],
1159
+ [0.00000015677, 6.22011053513, 454.90936652730],
1160
+ [0.00000013243, 5.61712395571, 68.84370773410],
1161
+ [0.00000014837, 3.52556891759, 25.60286266560],
1162
+ [0.00000012757, 0.04509403901, 11.04570026390],
1163
+ [0.00000011988, 4.81688773476, 24.11838995730],
1164
+ [0.00000011060, 1.78958328174, 7.42236354150],
1165
+ [0.00000012104, 1.86916301309, 79.23501669220]
1166
+ ],
1167
+ [
1168
+ [38.13303563957, 0.00000000000, 0.00000000000],
1169
+ [0.00016604172, 4.86323329249, 1.48447270830],
1170
+ [0.00015744045, 2.27887427527, 38.13303563780],
1171
+ [0.00001306261, 3.67285209620, 2.96894541660],
1172
+ [0.00000604842, 1.50483042790, 35.16409022120],
1173
+ [0.00000182909, 3.45225794434, 39.61750834610],
1174
+ [0.00000195106, 0.88660326088, 76.26607127560]
1175
+ ]
1176
+ ],
1177
+ [
1178
+ [
1179
+ [0.03088622933, 1.44104372644, 38.13303563780],
1180
+ [0.00027780087, 5.91271884599, 76.26607127560],
1181
+ [0.00027623609, 0.00000000000, 0.00000000000],
1182
+ [0.00015355489, 2.52123799551, 36.64856292950],
1183
+ [0.00015448133, 3.50877079215, 39.61750834610],
1184
+ [0.00001999918, 1.50998668632, 74.78159856730],
1185
+ [0.00001967540, 4.37778196626, 1.48447270830],
1186
+ [0.00001015137, 3.21560997434, 35.16409022120],
1187
+ [0.00000605767, 2.80246592015, 73.29712585900],
1188
+ [0.00000594878, 2.12892696997, 41.10198105440],
1189
+ [0.00000588806, 3.18655898167, 2.96894541660],
1190
+ [0.00000401830, 4.16883411107, 114.39910691340],
1191
+ [0.00000254333, 3.27120475878, 453.42489381900],
1192
+ [0.00000261647, 3.76722702982, 213.29909543800],
1193
+ [0.00000279963, 1.68165289071, 77.75054398390],
1194
+ [0.00000205590, 4.25652269561, 529.69096509460],
1195
+ [0.00000140455, 3.52969120587, 137.03302416240],
1196
+ [0.00000098530, 4.16774786185, 33.67961751290]
1197
+ ],
1198
+ [
1199
+ [0.00005150897, 2.14270496419, 38.13303563780]
1200
+ ]
1201
+ ],
1202
+ [
1203
+ [
1204
+ [30.07013205828, 0.00000000000, 0.00000000000],
1205
+ [0.27062259632, 1.32999459377, 38.13303563780],
1206
+ [0.01691764014, 3.25186135653, 36.64856292950],
1207
+ [0.00807830553, 5.18592878704, 1.48447270830],
1208
+ [0.00537760510, 4.52113935896, 35.16409022120],
1209
+ [0.00495725141, 1.57105641650, 491.55792945680],
1210
+ [0.00274571975, 1.84552258866, 175.16605980020],
1211
+ [0.00135134092, 3.37220609835, 39.61750834610],
1212
+ [0.00121801746, 5.79754470298, 76.26607127560],
1213
+ [0.00100896068, 0.37702724930, 73.29712585900],
1214
+ [0.00069791331, 3.79616637768, 2.96894541660],
1215
+ [0.00046687836, 5.74938034313, 33.67961751290],
1216
+ [0.00024594531, 0.50801745878, 109.94568878850],
1217
+ [0.00016939478, 1.59422512526, 71.81265315070],
1218
+ [0.00014229808, 1.07785898723, 74.78159856730],
1219
+ [0.00012012320, 1.92059384991, 1021.24889455140],
1220
+ [0.00008394349, 0.67818233586, 146.59425171800],
1221
+ [0.00007571796, 1.07149207335, 388.46515523820],
1222
+ [0.00005720872, 2.59061733345, 4.45341812490],
1223
+ [0.00004840210, 1.90681013048, 41.10198105440],
1224
+ [0.00004483493, 2.90573464537, 529.69096509460],
1225
+ [0.00004269595, 3.41333526870, 453.42489381900],
1226
+ [0.00004353588, 0.67984856103, 32.19514480460],
1227
+ [0.00004420549, 1.74990681127, 108.46121608020],
1228
+ [0.00002879755, 1.98627174527, 137.03302416240],
1229
+ [0.00002635535, 3.09755951044, 213.29909543800],
1230
+ [0.00003381113, 0.84810966225, 183.24281464750],
1231
+ [0.00002877511, 3.67417203197, 350.33211960040],
1232
+ [0.00002306505, 2.80964587883, 70.32818044240],
1233
+ [0.00002529939, 5.79822254729, 490.07345674850],
1234
+ [0.00002522868, 0.48612122962, 493.04240216510],
1235
+ [0.00002085926, 0.61853857468, 33.94024994380],
1236
+ [0.00001976522, 5.11703044560, 168.05251279940],
1237
+ [0.00001904055, 1.72165893329, 182.27960680100],
1238
+ [0.00001653525, 1.92781987560, 145.10977900970],
1239
+ [0.00001434507, 1.69985856533, 484.44438245600],
1240
+ [0.00001403029, 4.58914203187, 498.67147645760],
1241
+ [0.00001499989, 1.01619882251, 219.89137757700],
1242
+ [0.00001397976, 0.76199761055, 176.65053250850],
1243
+ [0.00001402764, 6.07659120736, 173.68158709190],
1244
+ [0.00001128278, 5.96666460978, 9.56122755560],
1245
+ [0.00001228058, 1.59915900158, 77.75054398390],
1246
+ [0.00000835562, 3.97050539397, 114.39910691340],
1247
+ [0.00000811407, 3.00264146159, 46.20979048510],
1248
+ [0.00000731543, 2.10445780662, 181.75834193920],
1249
+ [0.00000615618, 2.97867866529, 106.97674337190],
1250
+ [0.00000703453, 1.18748208693, 256.53994050650],
1251
+ [0.00000501955, 1.38654746863, 5.93789083320],
1252
+ [0.00000530475, 4.24112162150, 111.43016149680]
1253
+ ],
1254
+ [
1255
+ [0.00236338618, 0.70497954792, 38.13303563780],
1256
+ [0.00013220034, 3.32014387930, 1.48447270830],
1257
+ [0.00008621779, 6.21626927537, 35.16409022120]
1258
+ ]
1259
+ ]
1260
+ ],
467
1261
  };
package/dist/planets.js CHANGED
@@ -35,6 +35,13 @@ function visualMagnitude(planet, phase, helioDist, geoDist) {
35
35
  c0 = -9.40;
36
36
  c1 = 0.50;
37
37
  break;
38
+ case 'uranus':
39
+ c0 = -7.19;
40
+ c1 = 0.25;
41
+ break;
42
+ case 'neptune':
43
+ c0 = -6.87;
44
+ break;
38
45
  default: throw new Error('unsupported planet in visualMagnitude');
39
46
  }
40
47
  const x = phase / 100;
@@ -7,13 +7,16 @@ export interface AltAz {
7
7
  }
8
8
  /**
9
9
  * INTERNAL: what {@link topoAltAzUnrefracted} already computes on the way to
10
- * az/alt. The L3 event layer needs all four from a single evaluation — the
11
- * local hour angle brackets each daily cycle's altitude extrema, and the
12
- * topocentric distance sets the Moon's semidiameter, hence its rise/set target.
10
+ * az/alt. The L3 event layer needs these from a single evaluation — the
11
+ * local hour angle brackets each daily cycle's altitude extrema, the
12
+ * topocentric distance sets the Moon's semidiameter, hence its rise/set target,
13
+ * and the topocentric RA/Dec orient the Moon's disc.
13
14
  */
14
15
  export interface TopoUnrefracted extends AltAz {
15
16
  hourAngleDeg: number;
16
17
  distanceAu: number;
18
+ raDeg: number;
19
+ decDeg: number;
17
20
  }
18
21
  /**
19
22
  * UPSTREAM: `sidereal_time`, astronomy.ts ~2031 — Greenwich Apparent Sidereal
@@ -160,7 +160,7 @@ export function topoAltAzUnrefracted(bodyEqj, ut, observer) {
160
160
  let hourAngleDeg = (gast + observer.longitudeDeg - raDeg) % 360;
161
161
  if (hourAngleDeg < 0)
162
162
  hourAngleDeg += 360;
163
- return { azDeg: az, altDeg: 90 - zd, hourAngleDeg, distanceAu };
163
+ return { azDeg: az, altDeg: 90 - zd, hourAngleDeg, distanceAu, raDeg, decDeg };
164
164
  }
165
165
  /**
166
166
  * UPSTREAM: `Refraction('normal', altitude)`, astronomy.ts ~7176 — the
package/dist/types.d.ts CHANGED
@@ -3,7 +3,7 @@ export interface Observer {
3
3
  longitudeDeg: number;
4
4
  elevationM?: number;
5
5
  }
6
- export type Planet = 'mercury' | 'venus' | 'earth' | 'mars' | 'jupiter' | 'saturn';
6
+ export type Planet = 'mercury' | 'venus' | 'earth' | 'mars' | 'jupiter' | 'saturn' | 'uranus' | 'neptune';
7
7
  /** INTERNAL: Earth has no planetary direction from an Earth-based observer. */
8
8
  export declare function assertPlanet(planet: Planet, earthAllowed?: boolean): void;
9
9
  export declare class AlmanacOutOfRangeError extends RangeError {
package/dist/types.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /** INTERNAL: Earth has no planetary direction from an Earth-based observer. */
2
2
  export function assertPlanet(planet, earthAllowed = false) {
3
- if (!['mercury', 'venus', 'earth', 'mars', 'jupiter', 'saturn'].includes(planet) || (!earthAllowed && planet === 'earth'))
3
+ if (!['mercury', 'venus', 'earth', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune'].includes(planet) || (!earthAllowed && planet === 'earth'))
4
4
  throw new RangeError(`invalid planet: ${planet}`);
5
5
  }
6
6
  export class AlmanacOutOfRangeError extends RangeError {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwaters/almanac",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Offline astronomy: Sun, Moon and planet positions, apparent horizon, rise/set, phases and eclipses.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -18,7 +18,8 @@
18
18
  "ephemeris",
19
19
  "lunar-eclipse",
20
20
  "solar-eclipse",
21
- "marine"
21
+ "marine",
22
+ "suncalc"
22
23
  ],
23
24
  "publishConfig": {
24
25
  "access": "public"