From 16c336bd1c490acb5aa642b117a79bfb2af09e54 Mon Sep 17 00:00:00 2001 From: Theodore Kruczek Date: Wed, 10 Jan 2024 21:53:10 -0500 Subject: [PATCH] refactor: :truck: organize interfaces and enums --- src/coordinate/TLE.ts | 2 +- src/enums/AngularDiameterMethod.ts | 7 +++ src/enums/AngularDistanceMethod.ts | 7 +++ src/enums/PassType.ts | 6 ++ src/enums/index.ts | 3 + src/interfaces/BaseObjectParams.ts | 11 ++++ src/interfaces/GroundPositionParams.ts | 2 +- src/interfaces/OptionsParams.ts | 3 + src/interfaces/SatelliteParams.ts | 22 +++++++ src/interfaces/SensorParams.ts | 21 +++++++ src/interfaces/StarObjectParams.ts | 11 ++++ src/interfaces/index.ts | 6 ++ src/objects/BaseObject.ts | 3 +- src/objects/Satellite.ts | 4 +- src/objects/Sensor.ts | 4 +- src/objects/Star.ts | 2 +- src/observation/RAE.ts | 2 +- src/observation/RadecGeocentric.ts | 2 +- src/observation/RadecTopocentric.ts | 2 +- src/ootk-core.ts | 2 + src/types/types.ts | 83 +------------------------- src/utils/functions.ts | 13 +--- 22 files changed, 116 insertions(+), 102 deletions(-) create mode 100644 src/enums/AngularDiameterMethod.ts create mode 100644 src/enums/AngularDistanceMethod.ts create mode 100644 src/enums/PassType.ts create mode 100644 src/enums/index.ts create mode 100644 src/interfaces/BaseObjectParams.ts create mode 100644 src/interfaces/OptionsParams.ts create mode 100644 src/interfaces/SatelliteParams.ts create mode 100644 src/interfaces/SensorParams.ts create mode 100644 src/interfaces/StarObjectParams.ts create mode 100644 src/interfaces/index.ts diff --git a/src/coordinate/TLE.ts b/src/coordinate/TLE.ts index 769c290..ed270d6 100644 --- a/src/coordinate/TLE.ts +++ b/src/coordinate/TLE.ts @@ -2,9 +2,9 @@ import { Earth } from '../body/Earth'; import { Vector3D } from '../operations/Vector3D'; import { Sgp4, Sgp4GravConstants } from '../sgp4/sgp4'; import { EpochUTC } from '../time/EpochUTC'; +import { EciVec3, SatelliteRecord, StateVectorSgp4 } from '../types/types'; import { DEG2RAD, RAD2DEG, secondsPerDay, TAU } from '../utils/constants'; import { newtonNu } from '../utils/functions'; -import { EciVec3, SatelliteRecord, StateVectorSgp4 } from './../types/types'; import { ClassicalElements } from './ClassicalElements'; import { FormatTle } from './FormatTle'; import { TEME } from './TEME'; diff --git a/src/enums/AngularDiameterMethod.ts b/src/enums/AngularDiameterMethod.ts new file mode 100644 index 0000000..20de3ca --- /dev/null +++ b/src/enums/AngularDiameterMethod.ts @@ -0,0 +1,7 @@ +/** + * Enumeration representing different methods for calculating angular diameter. + */ +export enum AngularDiameterMethod { + Circle, + Sphere, +} diff --git a/src/enums/AngularDistanceMethod.ts b/src/enums/AngularDistanceMethod.ts new file mode 100644 index 0000000..b4ece11 --- /dev/null +++ b/src/enums/AngularDistanceMethod.ts @@ -0,0 +1,7 @@ +/** + * Enumeration representing different methods for calculating angular distance. + */ +export enum AngularDistanceMethod { + Cosine, + Haversine, +} diff --git a/src/enums/PassType.ts b/src/enums/PassType.ts new file mode 100644 index 0000000..afe5850 --- /dev/null +++ b/src/enums/PassType.ts @@ -0,0 +1,6 @@ +export enum PassType { + OUT_OF_VIEW = -1, + ENTER = 0, + IN_VIEW = 1, + EXIT = 2, +} diff --git a/src/enums/index.ts b/src/enums/index.ts new file mode 100644 index 0000000..c5ccb1b --- /dev/null +++ b/src/enums/index.ts @@ -0,0 +1,3 @@ +export { AngularDiameterMethod } from './AngularDiameterMethod'; +export { AngularDistanceMethod } from './AngularDistanceMethod'; +export { PassType } from './PassType'; diff --git a/src/interfaces/BaseObjectParams.ts b/src/interfaces/BaseObjectParams.ts new file mode 100644 index 0000000..3e53501 --- /dev/null +++ b/src/interfaces/BaseObjectParams.ts @@ -0,0 +1,11 @@ +import { EciVec3, SpaceObjectType } from '../types/types'; + +export interface BaseObjectParams { + id?: number; + name?: string; + type?: SpaceObjectType; + position?: EciVec3; + velocity?: EciVec3; + time?: Date; + active?: boolean; +} diff --git a/src/interfaces/GroundPositionParams.ts b/src/interfaces/GroundPositionParams.ts index d01c853..660bfa3 100644 --- a/src/interfaces/GroundPositionParams.ts +++ b/src/interfaces/GroundPositionParams.ts @@ -1,4 +1,4 @@ -import { Degrees, Kilometers } from './../types/types'; +import { Degrees, Kilometers } from '../types/types'; export interface GroundPositionParams { name?: string; diff --git a/src/interfaces/OptionsParams.ts b/src/interfaces/OptionsParams.ts new file mode 100644 index 0000000..72afedb --- /dev/null +++ b/src/interfaces/OptionsParams.ts @@ -0,0 +1,3 @@ +export interface OptionsParams { + notes: string; +} diff --git a/src/interfaces/SatelliteParams.ts b/src/interfaces/SatelliteParams.ts new file mode 100644 index 0000000..2f702fe --- /dev/null +++ b/src/interfaces/SatelliteParams.ts @@ -0,0 +1,22 @@ +import { EciVec3, SpaceObjectType, TleLine1, TleLine2 } from '../types/types'; + +/** + * TODO: Reduce unnecessary calls to calculateTimeVariables using optional + * parameters and caching. + */ +/** + * Information about a space object. + */ + +export interface SatelliteParams { + name?: string; + rcs?: number; + tle1: TleLine1; + tle2: TleLine2; + type?: SpaceObjectType; + vmag?: number; + sccNum?: string; + intlDes?: string; + position?: EciVec3; + time?: Date; +} diff --git a/src/interfaces/SensorParams.ts b/src/interfaces/SensorParams.ts new file mode 100644 index 0000000..9c993b5 --- /dev/null +++ b/src/interfaces/SensorParams.ts @@ -0,0 +1,21 @@ +import { Degrees, Kilometers, SpaceObjectType } from '../types/types'; + +export interface SensorParams { + alt: Kilometers; + lat: Degrees; + lon: Degrees; + maxAz: Degrees; + maxAz2?: Degrees; + maxEl: Degrees; + maxEl2?: Degrees; + maxRng: Kilometers; + maxRng2?: Kilometers; + minAz: Degrees; + minAz2?: Degrees; + minEl: Degrees; + minEl2?: Degrees; + minRng: Kilometers; + minRng2?: Kilometers; + name?: string; + type?: SpaceObjectType; +} diff --git a/src/interfaces/StarObjectParams.ts b/src/interfaces/StarObjectParams.ts new file mode 100644 index 0000000..b17969b --- /dev/null +++ b/src/interfaces/StarObjectParams.ts @@ -0,0 +1,11 @@ +import { Radians } from '../types/types'; + +export interface StarObjectParams { + ra: Radians; + dec: Radians; + bf?: string; + h?: string; + name?: string; + pname?: string; + vmag?: number; +} diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts new file mode 100644 index 0000000..4c9fb64 --- /dev/null +++ b/src/interfaces/index.ts @@ -0,0 +1,6 @@ +export { BaseObjectParams } from './BaseObjectParams'; +export { GroundPositionParams } from './GroundPositionParams'; +export { OptionsParams } from './OptionsParams'; +export { SatelliteParams } from './SatelliteParams'; +export { SensorParams } from './SensorParams'; +export { StarObjectParams } from './StarObjectParams'; diff --git a/src/objects/BaseObject.ts b/src/objects/BaseObject.ts index 92879f2..5206885 100644 --- a/src/objects/BaseObject.ts +++ b/src/objects/BaseObject.ts @@ -26,7 +26,8 @@ * DEALINGS IN THE SOFTWARE. */ -import { BaseObjectParams, EciVec3, Kilometers, SpaceObjectType } from '../types/types'; +import { BaseObjectParams } from 'src/interfaces/BaseObjectParams'; +import { EciVec3, Kilometers, SpaceObjectType } from '../types/types'; export class BaseObject { id: number; // Unique ID diff --git a/src/objects/Satellite.ts b/src/objects/Satellite.ts index b0a54b5..360ee02 100644 --- a/src/objects/Satellite.ts +++ b/src/objects/Satellite.ts @@ -29,6 +29,8 @@ import { dopplerFactor } from './../utils/functions'; * SOFTWARE. */ +import { OptionsParams } from 'src/interfaces/OptionsParams'; +import { SatelliteParams } from 'src/interfaces/SatelliteParams'; import { Degrees, EcfVec3, @@ -36,11 +38,9 @@ import { GreenwichMeanSiderealTime, Kilometers, LlaVec3, - OptionsParams, PosVel, Radians, RaeVec3, - SatelliteParams, SatelliteRecord, SpaceObjectType, TleLine1, diff --git a/src/objects/Sensor.ts b/src/objects/Sensor.ts index bff2232..b85e8d3 100644 --- a/src/objects/Sensor.ts +++ b/src/objects/Sensor.ts @@ -1,4 +1,6 @@ -import { Degrees, Kilometers, Lookangle, PassType, RaeVec3, SensorParams, SpaceObjectType } from '../types/types'; +import { SensorParams } from 'src/interfaces/SensorParams'; +import { PassType } from '../enums/PassType'; +import { Degrees, Kilometers, Lookangle, RaeVec3, SpaceObjectType } from '../types/types'; import { GroundPosition } from './GroundPosition'; import { Satellite } from './Satellite'; diff --git a/src/objects/Star.ts b/src/objects/Star.ts index 425b2fe..06e3669 100644 --- a/src/objects/Star.ts +++ b/src/objects/Star.ts @@ -26,6 +26,7 @@ * DEALINGS IN THE SOFTWARE. */ +import { StarObjectParams } from 'src/interfaces/StarObjectParams'; import { Degrees, EciVec3, @@ -35,7 +36,6 @@ import { Radians, RaeVec3, SpaceObjectType, - StarObjectParams, } from '../types/types'; import { MILLISECONDS_TO_DAYS } from '../utils/constants'; diff --git a/src/observation/RAE.ts b/src/observation/RAE.ts index 1b58f7e..be10b01 100644 --- a/src/observation/RAE.ts +++ b/src/observation/RAE.ts @@ -1,10 +1,10 @@ /* eslint-disable no-undefined */ import { ITRF } from '../coordinate/ITRF'; import { J2000 } from '../coordinate/J2000'; +import { AngularDistanceMethod } from '../enums/AngularDistanceMethod'; import { Radians } from '../ootk-core'; import { Vector3D } from '../operations/Vector3D'; import { EpochUTC } from '../time/EpochUTC'; -import { AngularDistanceMethod } from '../types/types'; import { DEG2RAD, halfPi, RAD2DEG, TAU } from '../utils/constants'; import { angularDistance } from '../utils/functions'; diff --git a/src/observation/RadecGeocentric.ts b/src/observation/RadecGeocentric.ts index 414354b..c2194c7 100644 --- a/src/observation/RadecGeocentric.ts +++ b/src/observation/RadecGeocentric.ts @@ -1,8 +1,8 @@ /* eslint-disable no-undefined */ import { J2000 } from '../coordinate/J2000'; +import { AngularDistanceMethod } from '../enums/AngularDistanceMethod'; import { Vector3D } from '../operations/Vector3D'; import { EpochUTC } from '../time/EpochUTC'; -import { AngularDistanceMethod } from '../types/types'; import { DEG2RAD, RAD2DEG, TAU } from '../utils/constants'; import { angularDistance } from '../utils/functions'; import { radecToPosition, radecToVelocity } from './ObservationUtils'; diff --git a/src/observation/RadecTopocentric.ts b/src/observation/RadecTopocentric.ts index 26b0901..8306057 100644 --- a/src/observation/RadecTopocentric.ts +++ b/src/observation/RadecTopocentric.ts @@ -1,8 +1,8 @@ /* eslint-disable no-undefined */ import { J2000 } from '../coordinate/J2000'; +import { AngularDistanceMethod } from '../enums/AngularDistanceMethod'; import { Vector3D } from '../operations/Vector3D'; import { EpochUTC } from '../time/EpochUTC'; -import { AngularDistanceMethod } from '../types/types'; import { DEG2RAD, RAD2DEG, TAU } from '../utils/constants'; import { angularDistance } from '../utils/functions'; import { radecToPosition, radecToVelocity } from './ObservationUtils'; diff --git a/src/ootk-core.ts b/src/ootk-core.ts index 0f5c466..4e79e49 100644 --- a/src/ootk-core.ts +++ b/src/ootk-core.ts @@ -34,6 +34,8 @@ export * from './body'; export * from './coordinate'; export * from './data/DataHandler'; +export * from './enums'; +export * from './interfaces'; export * from './objects'; export * from './observation'; export * from './operations/operations'; diff --git a/src/types/types.ts b/src/types/types.ts index e206706..d28fe84 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -1,3 +1,4 @@ +import { PassType } from '../enums/PassType'; import { Sensor } from '../objects'; /** @@ -657,22 +658,6 @@ export type OperationsDetails = { owner?: string; country?: string; }; -/** - * Enumeration representing different methods for calculating angular diameter. - */ - -export enum AngularDiameterMethod { - Circle, - Sphere, -} -/** - * Enumeration representing different methods for calculating angular distance. - */ - -export enum AngularDistanceMethod { - Cosine, - Haversine, -} /** * Represents a function that calculates the Jacobian matrix. * @param xs - The input values as a Float64Array. @@ -687,72 +672,6 @@ export type JacobianFunction = (xs: Float64Array) => Float64Array; export type DifferentiableFunction = (x: number) => number; -/** - * TODO: Reduce unnecessary calls to calculateTimeVariables using optional - * parameters and caching. - */ -/** - * Information about a space object. - */ -export interface SatelliteParams { - name?: string; - rcs?: number; - tle1: TleLine1; - tle2: TleLine2; - type?: SpaceObjectType; - vmag?: number; - sccNum?: string; - intlDes?: string; - position?: EciVec3; - time?: Date; -} -export interface OptionsParams { - notes: string; -} -export interface BaseObjectParams { - id?: number; - name?: string; - type?: SpaceObjectType; - position?: EciVec3; - velocity?: EciVec3; - time?: Date; - active?: boolean; -} -export interface StarObjectParams { - ra: Radians; - dec: Radians; - bf?: string; - h?: string; - name?: string; - pname?: string; - vmag?: number; -} -export interface SensorParams { - alt: Kilometers; - lat: Degrees; - lon: Degrees; - maxAz: Degrees; - maxAz2?: Degrees; - maxEl: Degrees; - maxEl2?: Degrees; - maxRng: Kilometers; - maxRng2?: Kilometers; - minAz: Degrees; - minAz2?: Degrees; - minEl: Degrees; - minEl2?: Degrees; - minRng: Kilometers; - minRng2?: Kilometers; - name?: string; - type?: SpaceObjectType; -} -export enum PassType { - OUT_OF_VIEW = -1, - ENTER = 0, - IN_VIEW = 1, - EXIT = 2, -} - export type Lookangle = { type: PassType; time: Date; diff --git a/src/utils/functions.ts b/src/utils/functions.ts index 0e67c47..d0dc6b8 100644 --- a/src/utils/functions.ts +++ b/src/utils/functions.ts @@ -1,17 +1,10 @@ /* eslint-disable require-jsdoc */ /* eslint-disable func-style */ +import { AngularDiameterMethod } from '../enums/AngularDiameterMethod'; +import { AngularDistanceMethod } from '../enums/AngularDistanceMethod'; import { Matrix } from '../operations/Matrix'; import { Vector } from '../operations/Vector'; -import { - AngularDiameterMethod, - AngularDistanceMethod, - DifferentiableFunction, - EciVec3, - JacobianFunction, - Radians, - SpaceObjectType, - Vec3, -} from '../types/types'; +import { DifferentiableFunction, EciVec3, JacobianFunction, Radians, SpaceObjectType, Vec3 } from '../types/types'; /** * Calculates the factorial of a given number.