/** * coordinates.ts — Julian day, sidereal time, angles and house cusps. * * Frame transforms (precession, obliquity) now live in `precession.ts`, and the * apparent-place chain (light-time, aberration, deflection) in `apparent.ts`. * What remains here is the Earth-rotation side of the problem: sidereal time, * the ascendant/MC, house cusps, and the observer's geocentric vector. * * All angles are in degrees unless documented otherwise. */ import { meanObliquity, julianCenturies, type Vec } from './precession.js'; export { meanObliquity, julianCenturies }; /** Reduce an angle to [0, 360). */ export declare function mod360(x: number): number; /** * Julian Day Number (UT) from a UTC calendar date (Meeus §7, Gregorian). */ export declare function julday(year: number, month: number, day: number, hourUT: number): number; /** * Greenwich Mean Sidereal Time in degrees, IAU 1982 (Aoki et al.). * * UTC is used in place of UT1. |UT1 − UTC| ≤ 0.9 s, which is ~13″ of Earth * rotation — the dominant uncertainty in the ascendant. Swiss Ephemeris (and * therefore JHora) makes the same substitution, so this matches rather than * diverges from the reference. */ export declare function getGMST(jdUT: number): number; /** * Greenwich Apparent Sidereal Time in degrees: GMST plus the equation of the * equinoxes (Δψ · cos ε_true). */ export declare function getGAST(jdUT: number): number; /** True obliquity of the ecliptic (mean + nutation in obliquity), degrees. */ export declare function trueObliquity(jdUT: number): number; /** * Observer position and velocity relative to the geocentre, expressed as an * ICRF equatorial vector in km and km/s. * * This replaces the previous ad-hoc lunar-parallax formula. Adding the true * observer vector to Earth's barycentric state means light-time, aberration * (including the diurnal component) and parallax all fall out of the same * apparent-place chain instead of being patched on afterwards. * * @param jdUT Julian Day, UT * @param latDeg Geodetic latitude, degrees * @param lonDeg Geographic longitude, degrees east * @param altitudeM Height above the ellipsoid, metres */ export declare function observerGeocentricVector(jdUT: number, latDeg: number, lonDeg: number, altitudeM?: number): { position: Vec; velocity: Vec; }; /** * Tropical Ascendant from RAMC and geographic latitude. * * ASC = atan2( cos(RAMC), −(sin ε · tan φ + cos ε · sin RAMC) ) * * The two-argument form resolves the quadrant directly. A single-argument * atan collapses the result into ±90° and needs sign patching that fails for * roughly half the zodiac — the source of the historical 180° ascendant bug. * * @param ramc Right ascension of the midheaven, degrees * @param lat Geographic latitude, degrees * @param eps Obliquity of the ecliptic, degrees */ export declare function computeAscendant(ramc: number, lat: number, eps: number): number; /** Tropical Midheaven from RAMC. */ export declare function computeMC(ramc: number, eps: number): number; /** * Tropical Vertex — the ecliptic point on the prime vertical due west. * Equivalent to the ascendant computed for the co-latitude, half a turn away. */ export declare function computeVertex(ramc: number, lat: number, eps: number): number; /** * Whole-Sign house cusps from the sidereal ascendant: house 1 begins at 0° of * the sign holding the ascendant, and each subsequent house is the next sign. */ export declare function wholeSignCusps(ascSidereal: number): number[]; /** * Equal-house cusps: 30° arcs measured from the exact ascendant degree. */ export declare function equalHouseCusps(ascSidereal: number): number[];