UNPKG

better-suncalc

Version:

A tiny TypeScript library for calculating sun/moon positions and phases.

157 lines 5.85 kB
/** * Represents the sun's position at a specific time and location. */ export type PositionData = { /** Azimuth angle in radians (clockwise from true north) */ azimuth: number; /** Altitude angle in radians above horizon (0 at horizon, positive upwards). * Includes correction for atmospheric refraction. */ altitude: number; }; /** * Contains calculated solar times for a specific date and location. */ export type TimesData = { /** Solar noon (sun at highest position) */ solarNoon: Date; /** Nadir (darkest moment of night, solar midnight) */ nadir: Date; /** Additional time events defined through addTime() such as: * - sunrise/sunset (center at horizon) * - dawn/dusk (when sun reaches 6° below horizon) * - golden hour boundaries */ [key: string]: Date; }; /** * Calculates right ascension from ecliptic coordinates. * @param l - Ecliptic longitude in radians. * @param b - Ecliptic latitude in radians. * @returns Right ascension in radians. */ export declare function rightAscension(l: number, b: number): number; /** * Calculates declination from ecliptic coordinates. * @param l - Ecliptic longitude in radians. * @param b - Ecliptic latitude in radians. * @returns Declination in radians. */ export declare function declination(l: number, b: number): number; /** * Calculates azimuth angle for a celestial body. * @param H - Hour angle in radians. * @param phi - Observer's latitude in radians. * @param dec - Declination of the celestial body in radians. * @returns Azimuth angle in radians (clockwise from north). */ export declare function azimuth(H: number, phi: number, dec: number): number; /** * Calculates altitude angle for a celestial body. * @param H - Hour angle in radians. * @param phi - Observer's latitude in radians. * @param dec - Declination of celestial body in radians. * @returns Altitude angle in radians. */ export declare function altitude(H: number, phi: number, dec: number): number; /** * Calculates sidereal time for given Julian days. * @param d - Days since J2000 epoch. * @param lw - Longitude west in radians. * @returns Sidereal time in radians. */ export declare function siderealTime(d: number, lw: number): number; /** * Corrects altitude for atmospheric refraction. * @param h - Altitude angle in radians (geometric). * @returns Refraction correction in radians. */ export declare function astroRefraction(h: number): number; /** * Calculates the solar mean anomaly. * @param d - Days since J2000 epoch. * @returns Solar mean anomaly in radians. */ export declare function solarMeanAnomaly(d: number): number; /** * Calculates ecliptic longitude from solar mean anomaly. * @param M - Solar mean anomaly in radians. * @returns Ecliptic longitude in radians. */ export declare function eclipticLongitude(M: number): number; /** * Calculates sun coordinates for given days since J2000. * @param d - Days since J2000 epoch. * @returns Object containing sun's declination and right ascension. */ export declare function sunCoords(d: number): { dec: number; ra: number; }; /** * Calculates sun position for given date and location. * @param date - Date/time of observation. * @param lat - Observer's latitude in degrees. * @param lng - Observer's longitude in degrees. * @returns Object containing azimuth and altitude in radians. */ export declare function getPosition(date: Date, lat: number, lng: number): PositionData; /** * Adds a custom time definition to sun time calculations. * @param angle - Altitude angle in degrees. * @param riseName - Name for the rise time property. * @param setName - Name for the set time property. */ export declare function addTime(angle: number, riseName: string, setName: string): void; /** * Calculates Julian cycle for given days and longitude. * @param d - Days since J2000 epoch. * @param lw - Longitude west in radians. * @returns Julian cycle number. */ export declare function julianCycle(d: number, lw: number): number; /** * Approximates the transit time. * @param Ht - Hour angle. * @param lw - Longitude west in radians. * @param n - Julian cycle number. * @returns Approximate transit time in Julian days. */ export declare function approxTransit(Ht: number, lw: number, n: number): number; /** * Calculates the precise solar transit time. * @param ds - Days since J2000 epoch. * @param M - Solar mean anomaly. * @param L - Ecliptic longitude. * @returns Julian date of solar transit. */ export declare function solarTransitJ(ds: number, M: number, L: number): number; /** * Calculates the hour angle for a given altitude. * @param h - Altitude angle in radians. * @param phi - Observer's latitude in radians. * @param dec - Sun declination in radians. * @returns Hour angle in radians. */ export declare function hourAngle(h: number, phi: number, dec: number): number; /** * Calculates the Julian date for a sun altitude event. * @param h - Altitude angle in radians. * @param lw - Longitude west in radians. * @param phi - Observer's latitude in radians. * @param dec - Sun declination in radians. * @param n - Julian cycle number. * @param M - Solar mean anomaly. * @param L - Ecliptic longitude. * @returns Julian date of the event. */ export declare function getSetJ(h: number, lw: number, phi: number, dec: number, n: number, M: number, L: number): number; /** * Calculates sun times (e.g., sunrise, sunset, dawn etc.) for given date and location. * @param date - Date of observation. * @param lat - Observer's latitude in degrees. * @param lng - Observer's longitude in degrees. * @returns Object containing calculated sun times as Date objects. */ export declare function getTimes(date: Date, lat: number, lng: number): TimesData; //# sourceMappingURL=suncalc.d.ts.map