UNPKG

ootk-core

Version:

Orbital Object Toolkit. A modern typed replacement for satellite.js including SGP4 propagation, TLE parsing, Sun and Moon calculations, and more.

101 lines (100 loc) 4.05 kB
/** * @author Theodore Kruczek. * @license MIT * @copyright (c) 2022-2025 Theodore Kruczek Permission is * hereby granted, free of charge, to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal in the * Software without restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ import { SensorParams } from '../interfaces/SensorParams.js'; import { Degrees, Kilometers, Lookangle, RaeVec3 } from '../types/types.js'; import { GroundObject } from './GroundObject.js'; import { Satellite } from './Satellite.js'; import { J2000 } from '../main.js'; export declare class Sensor extends GroundObject { minRng: Kilometers; minAz: Degrees; minEl: Degrees; maxRng: Kilometers; maxAz: Degrees; maxEl: Degrees; minRng2?: Kilometers; minAz2?: Degrees; minEl2?: Degrees; maxRng2?: Kilometers; maxAz2?: Degrees; maxEl2?: Degrees; constructor(info: SensorParams); /** * Checks if the object is a sensor. * @returns True if the object is a sensor, false otherwise. */ isSensor(): boolean; calculatePasses(planningInterval: number, sat: Satellite, date?: Date): Lookangle[]; /** * Checks if the given RAE vector is within the field of view of the sensor. * TODO: #8 This doesn't account for secondary sensor FOV * @param rae - The RAE vector to check. * @returns True if the RAE vector is within the field of view, false otherwise. */ isRaeInFov(rae: RaeVec3<Kilometers, Degrees>): boolean; /** * Checks if a satellite is in the field of view (FOV) of the sensor. * @param sat - The satellite to check. * @param date - The date to use for the calculation. Defaults to the current date. * @returns A boolean indicating whether the satellite is in the FOV. */ isSatInFov(sat: Satellite, date?: Date): boolean; /** * Checks if the sensor is in deep space. * @returns True if the sensor is in deep space, false otherwise. */ isDeepSpace(): boolean; /** * Checks if the sensor is near Earth. * @returns True if the sensor is near Earth, false otherwise. */ isNearEarth(): boolean; toJ2000(date?: Date): J2000; /** * Returns the pass type based on the current and previous visibility states. * @param isInView - Indicates if the object is currently in view. * @param isInViewLast - Indicates if the object was in view in the previous state. * @returns The pass type. */ private static getPassType_; /** * Validates the field of view (FOV) parameters of the sensor. * @param info - The sensor parameters. */ private validateFov_; /** * Validates the field of view parameters for the sensor. * @param info - The sensor parameters. */ private validateFov2_; /** * Validates the input data for the sensor. * @param info - The sensor parameters. */ private validateSensorInputData_; /** * Validates the latitude, longitude, and altitude of a sensor. * @param info - The sensor parameters containing the latitude, longitude, and altitude. */ private validateLla_; }