@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
TypeScript
/*****************************************************************************************************************/
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 {};
/*****************************************************************************************************************/