UNPKG

@observerly/astrometry

Version:

observerly's lightweight, zero-dependency, type safe astrometry library written in Typescript for calculating the position of celestial objects in the sky.

114 lines (113 loc) 5.63 kB
/*****************************************************************************************************************/ import type { EquatorialCoordinate, GeographicCoordinate, HorizontalCoordinate, Interval } from './common'; import { type Planet } from './planets'; /*****************************************************************************************************************/ type Target = { name: string; } & HorizontalCoordinate & EquatorialCoordinate; /*****************************************************************************************************************/ export type Conjunction = { datetime: Date; targets: [Target, Target]; angularSeparation: number; ra: number; dec: number; }; /*****************************************************************************************************************/ /** * * isPlanetaryConjunction() * * Technically, a conjunction is when two celestial objects have the same right ascension or ecliptic longitude, however * in practice, it is when they are close together in the sky. This function tests for the latter. * * @param datetime - The date and time of the observation to test for conjunction. * @param observer - The geographic coordinate of the observer. * @param planets - The two planets to test for conjunction. * @param horizon - The minimum altitude of the planets above the horizon. * @param angularSeparationThreshold - The minimum angular separation of the planets. * @returns The conjunction of the two planets if they are in conjunction, otherwise false. * */ export declare const isPlanetaryConjunction: (datetime: Date, observer: GeographicCoordinate, planets: [Planet, Planet], params?: { horizon?: number; angularSeparationThreshold?: number; }) => Conjunction | false; /*****************************************************************************************************************/ /** * * isConjunction() * * Tests for a conjunction between two targets, where a conjunction is defined as an angular separation * of less than the threshold given, which is by default three degrees. * * The objects also have to be above the local observer's horizon, which is by default six degrees * to ensure good visibility. * * @param datetime - The date and time of the observation to test for conjunction. * @param targets - The two targets to test for conjunction. * @param params - The parameters for the conjunction test. * @returns The conjunction of the two targets if they are in conjunction, otherwise false. * */ export declare const isConjunction: (datetime: Date, targets: [Target, Target], params?: { horizon?: number; angularSeparationThreshold?: number; }) => Conjunction | false; /*****************************************************************************************************************/ /** * findPlanetaryConjunction * * Finds the next conjunction of two planets within a given time interval. * * @param startDate - The start date and time of the interval to search for conjunction. * @param endDate - The end date and time of the interval to search for conjunction. * @param observer - The geographic coordinate of the observer. * @param planets - The two planets to test for conjunction. * @param horizon - The minimum altitude of the planets above the horizon. * @param angularSeparationThreshold - The minimum angular separation of the planets. * @param stepMinutes - The step size in minutes for checking conjunction. * @returns The conjunction of the two planets if they are in conjunction, otherwise null. */ export declare const findPlanetaryConjunction: (interval: Interval, observer: GeographicCoordinate, planets: [Planet, Planet], params?: { horizon?: number; angularSeparationThreshold?: number; stepMinutes?: number; }) => Conjunction | undefined; /*****************************************************************************************************************/ /** * * findConjunction() * * @param interval - The interval to search for the initial conjunction. * @param targets - The two targets to test for conjunction. * @param params - The parameters for the conjunction test. * @returns The conjunction of the two targets if they are in conjunction, otherwise false. */ export declare const findConjunction: (interval: Interval, targets: [Target, Target], params?: { horizon?: number; angularSeparationThreshold?: number; stepMinutes?: number; }) => Conjunction | false; /*****************************************************************************************************************/ /** * findPlanetaryConjunctions * * Finds all conjunctions of the planets within a given time interval, returning only those that are in * conjunction with each other (as determined by the angular separation threshold). * * @param interval - The interval to search for the initial conjunction. * @param observer - The geographic coordinate of the observer. * @param horizon - The minimum altitude of the planets above the horizon. * @param angularSeparationThreshold - The minimum angular separation for conjunction. * @param stepMinutes - The step size in minutes for checking conjunction. * @returns An array of conjunctions found. * */ export declare const findPlanetaryConjunctions: (interval: Interval, observer: GeographicCoordinate, params?: { horizon?: number; angularSeparationThreshold?: number; stepMinutes?: number; }) => Map<string, Conjunction>; export {}; /*****************************************************************************************************************/