better-suncalc
Version:
A tiny TypeScript library for calculating sun/moon positions and phases.
157 lines • 5.85 kB
TypeScript
/**
* 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