Computing Solar Eclipses — Research

From ephemeris to elements

workingupdated 2026-09-15besselianephemerisjpl-deswiss-ephemerisskyfield
  • Inputs are apparent geocentric places of the Sun and Moon referred to the true equator and equinox of date, plus the Sun's distance and the Moon's parallax, at instants of TT. The 1961 Supplement names exactly these inputs 1. Every implementation read for this note uses them, and none uses ICRF/J2000 directions without first rotating to the equator of date 2 3 4.
  • Fourteen equations, in order, take those inputs to x,y,d,μ,l1,l2,tanf1,tanf2x, y, d, \mu, l_1, l_2, \tan f_1, \tan f_2. They are listed below with the constants each one needs 1 5.
  • The almanacs computed elements at 10-minute steps and differentiated numerically. NASA and Meeus publish a polynomial fitted to five samples over six hours. The polynomial is a publication format 5 6.
  • No general-purpose open library generates elements from a JPL ephemeris as a documented, validated function. Skyfield's maintainer says shadow projection "would require more sophisticated calculations than currently available" 7. The Swiss Ephemeris computes the geometry live but never exposes x,y,l1,l2x, y, l_1, l_2 2. Eclipse-Engine ships elements "fitted to the JPL DE440s ephemeris" but not the fitting code 8.
  • Direct topocentric computation replaces the elements by the apparent topocentric separation of the two centres and their apparent semidiameters. The Swiss Ephemeris eclipse_how() and the USNO eclipse computer work this way, and Quaglia et al. extend it to the full limb profile 2 9 10.

The question. Given a modern ephemeris such as JPL DE440, what sequence of equations produces a table of Besselian elements, which reference frame the inputs must be in, which of light-time, aberration, precession and nutation they must carry, how the published polynomial is fitted, and when a developer should skip the elements and compute topocentric circumstances directly. The definitions and constants are in Besselian elements and the fundamental plane and are not repeated.

What the inputs are

The 1961 Supplement is explicit: "The basic quantities from which the calculations of solar and lunar eclipses are derived are: the apparent right ascension α\alpha_\odot, declination δ\delta_\odot, and radius vector RR of the Sun, and the right ascension αm\alpha_\mathrm{m}, declination δm\delta_\mathrm{m}, and horizontal parallax of the Moon, for every hour of E.T. during the eclipse; and the ephemeris sidereal time" 1. An apparent placeapparent placeA body's direction as seen from the Earth's centre at an instant, including light-time, aberration, precession and nutation, referred to the true equator and equinox of date. is "the proper place of an object expressed with respect to the true (intermediate) equator and equinox of date", as opposed to a geometric positiongeometric positionThe straight-line direction from the observer to a body at an instant with no correction for light-time or aberration., which has no "corrections for light-time, aberration, etc." 11. The same Supplement notes that "Besselian elements, however, are rigorously independent of refraction" 1.

Three points follow for anyone starting from a JPL binary ephemeris, which delivers barycentric ICRF positions in TDB.

  1. Frame. The fundamental system is defined through the equator and through μ\mu, an hour angle from a meridian. The x axis lies in the equatorial plane. Both need the true equator and equinox of date. A developer must apply precession and nutation to rotate GCRS vectors to the equator of date before forming aa and dd. Current practice is IAU 2006/2000A 10. The Swiss Ephemeris does this by requesting equatorial coordinates without the SEFLG_J2000 flag 2. The solareclipses.com generator says "Use Equatorial Apparent of the Date coordinates" 3. The Swiss Ephemeris comment "nutation need not be in lunar and solar positions, if mean sidereal time will be used" records the one consistent shortcut: nutation can be omitted from both the positions and the sidereal time, but not from one alone 2.
  2. Light-time and aberration. The almanac inputs are apparent places, so they carry light-time and annual aberration. The Swiss Ephemeris eclipse_where() calls swe_calc() with its default flags, which return apparent positions with light-time and aberration 2 12. The solareclipses.com page states "Light-time already embedded in ephemeris data" 3. Quaglia et al., who work topocentrically, apply "(a) light time to the body in question; (b) gravitational bending of the light path by the mass of the Sun; and (c) planetary aberration" 10. Annual aberration displaces the Sun and the Moon by nearly the same angle, up to 20.5 arcseconds, so it moves the point Z but changes x,yx, y by only the differential part, of order the parallax factor times 20 arcseconds. Whether to use apparent or astrometric places is therefore a question of consistency with the sidereal time and the observer model rather than of shadow physics. None of the sources read for this note quantifies the difference. That is an open question below.
  3. Time. Evaluate the ephemeris at instants of TT. The difference between TT and TDB, under 2 milliseconds, is negligible for the Moon's motion of 0.5 arcseconds per second. Do not evaluate at UT: ΔT belongs in the conversion of μ\mu to longitude, not in the argument of the ephemeris 1 13.

Espenak's VSOP87/ELP2000-82 series are "referred to the mean equinox of the date" for the Sun 14, and his later series use JPL DE405 with the Moon's centre of mass 15. The lunar theory was truncated at 0.0005 arcseconds and 1 metre, giving mean errors of "0.0006 second of time in right ascension and 0.006 arcsecond in declination" for the Moon and contact-time errors "of the order of 1/40 second" 14.

The equations, in order

Symbols used below.

  • α,δ,R\alpha_\odot, \delta_\odot, R: right ascension, declination and distance of the Sun, distance in au.
  • αm,δm,πm\alpha_\mathrm{m}, \delta_\mathrm{m}, \pi_\mathrm{m}: right ascension, declination and equatorial horizontal parallax of the Moon.
  • π0=8.794\pi_0 = 8.794 arcseconds: the solar parallax at 1 au.
  • s0=959.63s_0 = 959.63 arcseconds: the solar semidiameter at 1 au.
  • kk: the lunar radius ratio, one value per cone.
  • θ\theta: the Greenwich apparent sidereal time at the TT instant less ΔT.

All lengths are in Earth equatorial radii unless stated. Sources: the 1961 Supplement section 9B and the 1992 Supplement sections 8.322 and 8.323 1 5.

Step 0. Positions. From the ephemeris at TT instant tt, obtain apparent geocentric (α,δ,R)(\alpha_\odot, \delta_\odot, R) and (αm,δm,rm)(\alpha_\mathrm{m}, \delta_\mathrm{m}, r_\mathrm{m}) on the true equator and equinox of date. If the Moon's distance is given in km, form sinπm=ae/rm\sin\pi_\mathrm{m} = a_e / r_\mathrm{m} with ae=6378.137a_e = 6378.137 km, so that rm=1/sinπmr_\mathrm{m} = 1/\sin\pi_\mathrm{m} in Earth radii 5.

Step 1. Scale. The 1961 Supplement works with g=G/Rg = G/R and b=rm/Rb = r_\mathrm{m}/R, evaluated as

b=sinπ0Rsinπm b = \frac{\sin\pi_0}{R\sin\pi_\mathrm{m}}
"where π0\pi_0, the horizontal parallax of the Sun at mean distance, is equal to 8".80 [8".794 for 1968 onwards] and RR is expressed in astronomical units as in the Ephemeris" 1. With a modern ephemeris one may instead convert both distances to Earth radii using 1au=149597870.71\ \mathrm{au} = 149\,597\,870.7 km and ae=6378.137a_e = 6378.137 km, so 1 au =23454.78= 23\,454.78 Earth radii 3.

Step 2. Direction of the axis (point Z).

gcosdcosa=cosδcosαbcosδmcosαm,gcosdsina=cosδsinαbcosδmsinαm,gsind=sinδbsinδm g\cos d\cos a = \cos\delta_\odot\cos\alpha_\odot - b\cos\delta_\mathrm{m}\cos\alpha_\mathrm{m},\quad g\cos d\sin a = \cos\delta_\odot\sin\alpha_\odot - b\cos\delta_\mathrm{m}\sin\alpha_\mathrm{m},\quad g\sin d = \sin\delta_\odot - b\sin\delta_\mathrm{m}
Solve for aa with a two-argument arctangent, then for dd and gg 1. In vector form this is 𝐠=𝐫s𝐫m\mathbf{g} = \mathbf{r}_s - \mathbf{r}_m normalised, equation 8.322-2 5. Chauvenet notes that "in many cases it will suffice to take the extremely simple forms a=αb(αα)a = \alpha' - b(\alpha - \alpha'), d=δb(δδ)d = \delta' - b(\delta - \delta')", with an error below 0.09 arcseconds, but the exact form costs nothing on a computer 16.

Step 3. Moon in the fundamental system.

x=rmcosδmsin(αma) x = r_\mathrm{m}\cos\delta_\mathrm{m}\sin(\alpha_\mathrm{m} - a)
y=rm[sinδmcosdcosδmsindcos(αma)] y = r_\mathrm{m}\left[\sin\delta_\mathrm{m}\cos d - \cos\delta_\mathrm{m}\sin d\cos(\alpha_\mathrm{m} - a)\right]
z=rm[sinδmsind+cosδmcosdcos(αma)] z = r_\mathrm{m}\left[\sin\delta_\mathrm{m}\sin d + \cos\delta_\mathrm{m}\cos d\cos(\alpha_\mathrm{m} - a)\right]
1 16. Equivalently 𝐫F=(1/sinπm)𝐑1(90d)𝐑3(a+90)𝐫G\mathbf{r}_F = (1/\sin\pi_\mathrm{m})\,\mathbf{R}_1(90^{\circ} - d)\,\mathbf{R}_3(a + 90^{\circ})\,\mathbf{r}_G 5.

Step 4. Hour angle.

μ=θa \mu = \theta - a
with θ\theta the Greenwich apparent sidereal time 5. To match NASA, evaluate θ\theta at UT1 =tΔT= t - \Delta T with a stated ΔT and record that ΔT with the table 6 13. To follow the 1961 convention instead, evaluate the sidereal time at the TT instant as if it were UT, call the result the ephemeris sidereal time, and let users shift their longitudes by 1.002738ΔT1.002738\,\Delta T 1.

Step 5. Cone half-angles.

sinf1=sins0+k1sinπ0gR,sinf2=sins0k2sinπ0gR \sin f_1 = \frac{\sin s_0 + k_1\sin\pi_0}{gR},\qquad \sin f_2 = \frac{\sin s_0 - k_2\sin\pi_0}{gR}
1 5. With s0=959.63s_0 = 959.63 arcseconds and π0=8.794\pi_0 = 8.794 arcseconds, sins0=0.0046524\sin s_0 = 0.0046524 and sinπ0=4.2634×105\sin\pi_0 = 4.2634\times10^{-5}. Note the 1961 numerators for k=0.272281k = 0.272281: 0.0046640009 and 0.0046407920 1. Tabulate tanf1\tan f_1 and tanf2\tan f_2 from these.

Step 6. Vertex heights.

c1=z+k1sinf1,c2=zk2sinf2 c_1 = z + \frac{k_1}{\sin f_1},\qquad c_2 = z - \frac{k_2}{\sin f_2}
1 5.

Step 7. Shadow radii on the fundamental plane.

l1=c1tanf1,l2=c2tanf2 l_1 = c_1\tan f_1,\qquad l_2 = c_2\tan f_2
l2<0l_2 < 0 total, l2>0l_2 > 0 annular 1.

Step 8. Repeat steps 0 to 7 at each sample instant. The 1992 Supplement used a 10-minute grid "but for some instances additional calculations at an interval of 30 seconds or less are necessary", and took derivatives numerically 5.

Step 9. Fit. For publication, sample at t=2,1,0,+1,+2t = -2, -1, 0, +1, +2 hours about t0t_0 and fit a0+a1t+a2t2+a3t3a_0 + a_1 t + a_2 t^2 + a_3 t^3 by least squares to each of x,y,d,μ,l1,l2x, y, d, \mu, l_1, l_2. NASA describes "a least-squares fit to elements calculated at five uniformly spaced times over a six hour period centered at t0t_0" 6 17. Miller's page shows the normal equations solved by Gauss-Jordan elimination and reports that μ\mu needs only first degree and d,l1,l2d, l_1, l_2 only second 4. The NASA CSV confirms: μ\mu has a zero quadratic coefficient in every row inspected, d,l1,l2d, l_1, l_2 have three coefficients, x,yx, y have four 18. Five samples and a cubic leave one degree of freedom, so the fit is nearly an interpolation. Publish tanf1,tanf2\tan f_1, \tan f_2 at t0t_0.

Step 10. Record metadata. Ephemeris and version, TT reference t0t_0, ΔT, k1k_1, k2k_2, s0s_0, π0\pi_0, ellipsoid, and whether the lunar position is centre of mass 6 15.

A check for the developer: with the NASA 2024 April 8 elements, x2+y2x^2 + y^2 at t=0t = 0 gives 0.3182442+0.2197642=0.3868\sqrt{0.318244^2 + 0.219764^2} = 0.3868, and the catalogue's gamma of 0.34314 is the minimum of that distance at 18:18:29 TDT, the catalogued time of greatest eclipse 18.

Vector shortcut used by the Swiss Ephemeris

The Swiss Ephemeris skips a,d,μa, d, \mu and works in au with the unit vector 𝐞\mathbf{e} from Sun to Moon. Its code variable s0 is the almanac's zz, not the almanac's s0s_0, and it forms the shadow diameters on the fundamental plane directly:

/* distance of moon from fundamental plane */
s0 = -dot_prod(rm, e);
/* distance of shadow axis from geocenter */
r0 = sqrt(dm * dm - s0 * s0);
/* diameter of core shadow on fundamental plane */
d0 = (s0 / dsm * (drad * 2 - dmoon) - dmoon) / cosf1;
/* diameter of half-shadow on fundamental plane */
D0 = (s0 / dsm * (drad * 2 + dmoon) + dmoon) / cosf2;

Here drad is the solar radius, dmoon the lunar diameter, dsm the Sun-Moon distance, and sinf1 = (drad - rmoon)/dsm, sinf2 = (drad + rmoon)/dsm, so f1 is the umbral angle and f2 the penumbral, the reverse of the almanac subscripts 2. Algebraically d0/2 equals c2tanf2c_2\tan f_2 of the almanac and D0/2 equals c1tanf1c_1\tan f_1. The flattening is applied before this by rm[2] /= earthobl; rs[2] /= earthobl; with earthobl = 1 - EARTH_OBLATENESS and EARTH_OBLATENESS = 1/298.25642 2 19. That trick maps the ellipsoid to a sphere of equatorial radius and is exact for deciding whether the axis meets the surface, but it is not how the almanacs treat the observer, and a developer mixing the two must not apply the flattening twice. The constants are DSUN = 1392000000.0 / AUNIT, DMOON = 3476300.0 / AUNIT, DEARTH = 6378140.0 * 2 / AUNIT, AUNIT = 1.49597870700e+11 2 19. The library documentation says the northern and southern limits of the umbra and penumbra "are not implemented yet" 12.

Open-source generators found

The full repository inventory and its comparison matrix are in GitHub repositories. This section keeps only what each repository does about generating elements. Searches were run for "besselian elements" with python, javascript, fortran, rust and C, for Skyfield-based eclipse code, and for the Swiss Ephemeris, Occult, USNO and IMCCE. Findings:

Code Language Generates elements? Ephemeris and constants Validation stated
Swiss Ephemeris swecl.c 2 C Computes the geometry live, no table its own DE-derived files, kk from 1738.15 km, Sun 696,000 km, f=1/298.25642f = 1/298.25642 none against NASA in the file
celestialprogramming.com generator 4 JavaScript Yes, with the least-squares fit apparent geocentric places, k=0.2725076k = 0.2725076, Sun 6.957×1086.957\times10^8 m none stated
solareclipses.com formulas page 3 prose with formulas Yes, 13 samples at 30-minute steps "Equatorial Apparent of the Date", ae=6378.1366a_e = 6378.1366 km, Sun 959.95 arcseconds, k=0.272399309k = 0.272399309 none stated. Its c2=k/sinf2c_2 = -k/\sin f_2 omits zz and looks like a transcription error
Eclipse-Engine (eclipseradar.com) 8 JavaScript No. Ships data/eclipses.json "fitted to the JPL DE440s ephemeris". The fitting is in an unpublished Python chain DE440s reference values from its own Python chain
aravpanwar/besselian 13 Python No. Consumes NASA elements NASA, k1=0.272488k_1 = 0.272488, k2=0.272281k_2 = 0.272281 Sun altitude 81.69 vs 81.7 degrees and duration 382.5 s vs 06m23s at greatest eclipse 2027
libephemeris 20 Python on Skyfield Partial. "Eclipse searches combine JPL states with published shadow-cone/Besselian geometry and public physical radii" JPL via Skyfield "sub-arcsecond" agreement with a reference API for eclipses, per README
umbra-rs 21 Rust Planned. "Milestone 1 ... in progress", "must not be used" planned none
Skyfield itself 7 Python No. The maintainer states that projecting the shadow cone is not implemented DE4xx not applicable
Miller's 5MCSE mirror 22 data No. Repackages NASA's CSV as JSON and JavaScript NASA VSOP87/ELP2000 not applicable

Negative findings: no Fortran or C code that generates elements from a JPL ephemeris with documented validation against the almanac was found. Occult's public tutorial mentions solar eclipses only in its feature list 23. No IMCCE page describing its own Besselian-element computation was located in the searches run. The USNO eclipse computer describes a topocentric method, not elements 9. Yuk Tung Liu's derivation page returned an access error and a JavaScript-only stub, and the Observable notebook by Yamahata returned rate-limit errors on two attempts, so neither was read.

Elements versus direct topocentric computation

The Besselian method answers the global questions cheaply: where the axis meets the ellipsoid, the outline of the umbra, the limits of the penumbra, the duration on the central line, all from six polynomials 24. Espenak's reason for the method is that "using a full ephemeris is more computationally involved", and the elements "are basically an ephemeris valid only over a short period of time (usually about five hours), reduced to a few polynomials" 24. Local circumstances from elements need the observer's ξ,η,ζ\xi, \eta, \zeta and an iteration on the equations of condition, as in sections 8.33 to 8.36 of the 1992 Supplement 5.

Direct topocentric computation skips the plane. At each trial time one computes the apparent topocentric positions of the Sun and Moon for the observer, their apparent semidiameters, and the angular separation of their centres, then finds the times when the separation equals the sum or difference of the semidiameters. The Swiss Ephemeris eclipse_how() is a compact example:

rmoon = asin(RMOON / lm[2]) * RADTODEG;
rsun = asin(drad / ls[2]) * RADTODEG;
rsplusrm = rsun + rmoon;
rsminusrm = rsun - rmoon;
...
dctr = acos(swi_dot_prod_unit(x1, x2)) * RADTODEG;
if (dctr < rsminusrm) retc = SE_ECL_ANNULAR;
else if (dctr < fabs(rsminusrm)) retc = SE_ECL_TOTAL;
else if (dctr < rsplusrm) retc = SE_ECL_PARTIAL;
...
attr[0] = lsunleft / rsun / 2;   /* magnitude = (rsun + rmoon - dctr) / (2 rsun) */

with the positions requested after swe_set_topo() for the observer and at TT $= $ UT +ΔT+ \Delta T 2. The USNO eclipse computer does the same: "The computation of Eclipse Local Circumstances is started by iteratively computing topocentric positions of the Sun and Moon to find the time of Maximum Eclipse", using IAU radii of 696,000 km and 1737.4 km and no limb profile 9. Quaglia et al. go furthest: "Our computational model does not depend, like the traditional method, on Besselian elements ... to compute nominal predictions and then on applying limb corrections ... Instead, it performs its computations directly with the solar limb and the lunar limb profile to find times of contact and other related quantities. No approximating adjustments are involved" 10.

When each is used:

  • Use elements for catalogues, maps, path limits, and any product that must be reproducible from a published table, and for matching NASA or the Almanac, because their constants and fits are documented 6.
  • Use direct topocentric computation when the ephemeris is at hand and the question is local: contact times at one site, Baily's beads, flash-spectrum timing, eclipse solar radius. It removes the polynomial truncation, the constant tanf\tan f approximation, the ellipsoid auxiliaries, and the split of kk into two values, and it lets a limb profile replace kk entirely 10.
  • The two agree to well under a second when the same ephemeris, radii and ΔT are used. The observed differences between predictors come from those inputs, not from the method. Quaglia et al. report Occult's Baily's beads tool giving durations 2 s or more longer than their model at the same site, and Solar Eclipse Maestro 4 s or more, attributed to limb handling 10.

Sources compared

Source What it gives that the others do not
Explanatory Supplement 1961, section 9B 1 The list of required inputs, explicitly apparent places at ET instants, and the b=sinπ0/(Rsinπm)b = \sin\pi_0/(R\sin\pi_\mathrm{m}) scaling with π0=8.794\pi_0 = 8.794 arcseconds.
Explanatory Supplement 1992, sections 8.322 to 8.325 5 The rotation-matrix form, unit vectors, and the statement that in practice elements were computed on a 10-minute grid with numerical derivatives.
Swiss Ephemeris swecl.c and sweph.h 2 19 Working C for both the fundamental-plane geometry and the direct topocentric method, with every constant visible.
Miller, celestialprogramming.com 4 The five-sample least-squares fit written out.
NASA element pages and CSV 6 18 The target format and numbers to validate against.
Quaglia et al. 2021 10 The refereed description of a fully topocentric, limb-based alternative with IAU 2006 Earth orientation, DE430 and LOLA/Kaguya elevation models.
Skyfield discussion 801 7 The maintainer's statement that Skyfield does not project the shadow.

What a developer should do

  1. Build a function elements_at(t_tt) that returns (x,y,d,μ,l1,l2,tanf1,tanf2,z)(x, y, d, \mu, l_1, l_2, \tan f_1, \tan f_2, z) from apparent geocentric places of date, following steps 0 to 7 above, with k1,k2,s0,π0,ae,ΔTk_1, k_2, s_0, \pi_0, a_e, \Delta T as parameters.
  2. Validate it against the 1961 Supplement worked example (1961 February 15 08h ET) 1 and against the NASA 2024 April 8 polynomial at t=0t = 0 18, expecting agreement at the 10510^{-5} Earth-radius level once the same ephemeris, kk and ΔT are used. Differences larger than 10410^{-4} Earth radii in x,yx, y (about 640 m) point to a frame or aberration inconsistency.
  3. Only then add the polynomial fit as an export format, and keep the rigorous per-instant function as the computational path for local circumstances.
  4. Implement the direct topocentric method as a second, independent path and use the agreement of the two as a regression test.

What this changes

The pipeline gets two computational paths from one ephemeris layer: an elements path for global products and a topocentric path for local products. The ephemeris layer must expose apparent geocentric places of date, apparent topocentric places, and a sidereal-time function that is consistent in its treatment of nutation. Nothing else in the design changes.

Open questions

  • Quantify the effect of using astrometric versus apparent places for the Sun and Moon on x,yx, y: obtain or write a test comparing both against the NASA 2024 elements with the same DE ephemeris and ΔT.
  • Obtain Meeus's Elements of Solar Eclipses 1951-2200 to confirm its sampling scheme and whether it applies nutation to μ\mu.
  • Obtain the Python chain behind Eclipse-Engine's data/eclipses.json, or the author's description of it, to see how DE440s was reduced to elements and what kk and ΔT were used 8.
  • Read libephemeris's eclipse module source to see whether it is a port of swecl.c. The provenance document names no file 20.
  • Obtain the 1992 Supplement's section 8.35 (general solar eclipse phenomena) in a clean scan to check the equations for the axis-ellipsoid intersection, which the optical character recognition of the available scan garbles.

References

  1. 1peer-reviewed Explanatory Supplement to the Astronomical Ephemeris and the American Ephemeris and Nautical Almanac (1961), section 9B Eclipses and Transits Read in full (OCR text). Definitive almanac formulation: fundamental plane, point Z, x y z, mu from ephemeris sidereal time, sin f1 sin f2 with tabulated numerators for k = 0.272274, 0.2724807, 0.272281 and 0.2724880, c1 c2 l1 l2, sign convention, observer coordinates, ephemeris meridian 1.002738 ΔT, worked example 1961 Feb 15.
  2. 2company Swiss Ephemeris (Astrodienst), swecl.c, functions eclipse_where() and eclipse_how() Downloaded and read (6428 lines). Constants DSUN, DMOON, DEARTH, the fundamental-plane vector computation with reversed f1/f2 naming, flattening applied by scaling z, classification tests, and the direct topocentric magnitude computation.
  3. 3trade solareclipses.com, Calculating Besselian Elements (author not identified) Read. Vector G, a, d, x y z, sin f1 sin f2, c1 c2 l1 l2, mu = a - GMST; constants a_e = 6378.1366 km, 959.95 arcsec, k = 0.272399309; apparent equatorial of date; 13 samples at 30 minutes. Its c2 formula omits z.
  4. 4trade Miller, G., Celestial Programming, Computing Besselian Element Polynomial Coefficients Read. Step-by-step generator from apparent geocentric places with ds = 6.957e8 m / 6.3781e6 m, k = 0.2725076, five samples at -2..+2 h, Gauss-Jordan least squares, degrees per element.
  5. 5peer-reviewed Seidelmann, P. K. (ed.), Explanatory Supplement to the Astronomical Almanac (1992), chapter 8 Eclipses of the Sun and Moon, sections 8.31 to 8.36 Read sections 8.31 to 8.333 in OCR text. Rotation-matrix form 8.322-3, unit vectors 8.322-5, mu = Greenwich apparent sidereal time minus a, cone equations 8.323-1 to 8.323-7, summary of elements 8.324, practical note 8.325, observer coordinates and flattening auxiliaries 8.331 to 8.333. Ellipsoid a = 6378.137 km, f = 1/298.257 from equation 3.244-1. Chapter author not shown in the scan.
  6. 6primary Espenak, F., NASA GSFC, Besselian Elements for the Total Solar Eclipse of 2024 Apr 08 Read. Polynomial coefficients, t0 = 18:00 TDT, ΔT = 70.6 s, VSOP87/ELP2000-85, k1 = 0.272488, k2 = 0.272281, tan f1 = 0.0046683, tan f2 = 0.0046450, validity 15.00 to 21.00 TDT, least-squares fit to five samples over six hours, centre-of-mass statement.
  7. 7company Rhodes, B., python-skyfield discussion 801, Finding lat/lon during an eclipse Read. Maintainer states Skyfield does not project the Moon's shadow cone and that doing so needs calculations beyond the current toolkit.
  8. 8company RHerAle, GitHub, Eclipse-Engine (engine behind eclipseradar.com) Read README. Elements in data/eclipses.json "fitted to the JPL DE440s ephemeris"; js/besselian.js for circumstances; fitting done in an unpublished Python chain.
  9. 9primary USNO Astronomical Applications Department, Solar Eclipse Computer (data page and method note) Read. Local circumstances by iterative topocentric positions, IAU radii Sun 696000 km and Moon 1737.4 km, no limb profile or centre-of-figure correction.
  10. 10peer-reviewed Quaglia, L., Irwin, J., Emmanouilidis, K., Pessi, A., Estimation of the Eclipse Solar Radius by Flash Spectrum Video Analysis, ApJS 256, 36 (2021), arXiv:2107.09416 Downloaded PDF and read the introduction and computational model sections. States 959.63 arcsec (Auwers 1891) is used in all published predictions, IAU 2015 nominal 959.23 arcsec, result 959.95 ± 0.05 arcsec; model uses DE430, LOLA SLDEM-256 and LDEM-128 in the ME frame, IAU 2006 Earth orientation, light time, deflection and planetary aberration, and no Besselian elements.
  11. 11primary USNO Astronomical Applications Department, Astronomical Almanac Glossary Read. Definitions of Besselian elements, apparent place, geometric position, ΔT = TT - UT1, TT = TAI + 32.184 s, ephemeris hour angle.
  12. 12company Swiss Ephemeris Programming Interface documentation, eclipse functions Read the eclipse function descriptions. swe_sol_eclipse_where, _how, _when_glob, _when_loc; attr array meanings; note that umbral and penumbral limits are not implemented.
  13. 13company aravpanwar, GitHub, besselian (solar eclipse local circumstances from NASA elements) Read README. Uses NASA elements with k1 = 0.272488 and k2 = 0.272281; states that mu is tabulated against TDT but is a Greenwich hour angle so ΔT must be subtracted; ΔT 76.0 versus 71.7 s shifts longitudes about 32 km for 2027; checks against NASA altitude and duration.
  14. 14primary Espenak, F. and Meeus, J., NASA GSFC, Solar and Lunar Ephemerides (Five Millennium Canon) Read. VSOP87 version D referred to mean equinox of date, ELP-2000/82 truncated at 0.0005 arcsec and 1 m, resulting lunar errors 0.0006 s in RA and 0.006 arcsec in Dec, contact-time error about 1/40 s, centre of mass used.
  15. 15company Espenak, F., EclipseWise, Solar Eclipse Predictions with JPL DE405 Read. DE405 coverage 1599 to 2201, k = 0.272281 versus IAU 0.2725076, centre of mass without centre-of-figure correction.
  16. 16primary Chauvenet, W., A Manual of Spherical and Practical Astronomy, Vol. I (1863), chapter on Eclipses, Arts. 288 to 296 Read Arts. 288 to 291 and the cone-angle precepts in OCR text (garbled in places). Original almanac form of Bessel's method: point Z as the Sun seen from the Moon's centre, equations (482) for x y z, principal plane of reference, log k = 9.435000, c = z ± k/sin f, l = c tan f.
  17. 17primary Espenak, F. and Anderson, J., NASA RP 1383, Total Solar Eclipse of 1998 February 26, Elements, Shadow Contacts, and Eclipse Path Tables Read. Polynomial form a = a0 + a1 t + a2 t^2 + a3 t^3, t in decimal hours, least-squares fit to five times over six hours, DE200/LE200, TDT and UT.
  18. 18primary Espenak, F., NASA GSFC, Catalog of Solar Eclipse Besselian Elements in CSV format (Five Millennium Canon) Downloaded and read (11 898 rows). Columns include dt, t0, x0..x3, y0..y3, d0..d2, mu0..mu2, l10..l12, l20..l22, tan_f1, tan_f2, tmin, tmax. Values for 2024 Apr 08 quoted in the note.
  19. 19company Swiss Ephemeris (Astrodienst), sweph.h constants Downloaded and read. AUNIT = 1.49597870700e11 m, EARTH_RADIUS = 6378136.6 m, EARTH_OBLATENESS = 1/298.25642.
  20. 20company g-battaglia, GitHub, libephemeris (Skyfield-based ephemeris library) README and algorithm-provenance document Read README and docs/methodology/algorithm-provenance.md. Eclipse searches "combine JPL states with published shadow-cone/Besselian geometry and public physical radii". Source file for eclipses not identified.
  21. 21unsourced RyuuNeko1107, GitHub, umbra-rs (experimental Rust eclipse engine) Read README. Milestone 1 in progress; states it must not be used. Design documents not read.
  22. 22company Miller, G., GitHub, FiveMillenniumCanonOfSolarEclipses-Besselian-Elements Read README. Repackages the NASA CSV as JSON and JavaScript with NASA's attribution requirement.
  23. 23company Preston, S., Occult v4 Overview (April 2019), tutorial PDF Downloaded and read via pdftotext. Mentions solar eclipses only in the feature list. No method, ephemeris or k statements.
  24. 24company Espenak, F., EclipseWise, Explanation of Besselian Elements for Solar Eclipses Read. Eight elements, axis conventions (east positive X, north positive Y), no perspective distortion, elements as an ephemeris valid about five hours reduced to polynomials.