UNPKG

ootk

Version:

Orbital Object Toolkit including Multiple Propagators, Initial Orbit Determination, and Maneuver Calculations.

87 lines (86 loc) 3.45 kB
/** * @author @thkruz Theodore Kruczek * @description Orbital Object ToolKit (ootk) is a collection of tools for working * with satellites and other orbital objects. * @license AGPL-3.0-or-later * @copyright (c) 2025 Kruczek Labs LLC * * Many of the classes are based off of the work of @david-rc-dayton and his * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which * is licensed under the MIT license. * * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the * terms of the GNU Affero General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later version. * * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License along with * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>. */ import { Kilometers, KilometersPerSecond, Radians } from '../main.js'; import { Matrix } from './Matrix.js'; import { Vector } from './Vector.js'; export declare class Vector3D<T extends number = number> { x: T; y: T; z: T; constructor(x: T, y: T, z: T); /** * Create a new Vector3D object from the first three elements of a Vector * object. * @param v The Vector object to convert. * @returns A new Vector3D object. */ static fromVector<U extends number>(v: Vector<U>): Vector3D<U>; static readonly origin: Vector3D<number>; static readonly xAxis: Vector3D<number>; static readonly yAxis: Vector3D<number>; static readonly zAxis: Vector3D<number>; static readonly xAxisNeg: Vector3D<number>; static readonly yAxisNeg: Vector3D<number>; static readonly zAxisNeg: Vector3D<number>; toList(): T[]; toArray(): Float64Array<ArrayBuffer>; /** * Return the Vector3D element at the provided index. * @deprecated don't do this * @param index The index of the element to return. * @returns The element at the provided index. */ getElement(index: number): number; toVector(): Vector<T>; toString(fixed?: number): string; magnitude(): T; add(v: Vector3D<T>): Vector3D<T>; subtract(v: Vector3D<T>): Vector3D<T>; scale<U extends number>(n: U): Vector3D<U>; negate(): Vector3D<T>; /** * Return the Euclidean distance between this and another Vector3D. * @param v The other Vector3D. * @returns The distance between this and the other Vector3D. */ distance(v: Vector3D<T>): T; /** * Convert this to a unit Vector3D. * @returns A unit Vector3D. */ normalize(): Vector3D<T>; dot<T extends number>(v: Vector3D<T>): T; outer(v: Vector3D): Matrix; cross<U extends number>(v: Vector3D<U>): Vector3D<U>; skewSymmetric(): Matrix; rotX(theta: number): Vector3D; rotY(theta: Radians): Vector3D<T>; rotZ(theta: Radians): Vector3D<T>; angle<U extends number>(v: Vector3D<U>): Radians; angleDegrees(v: Vector3D<T>): number; sight(v: Vector3D<KilometersPerSecond>, radius: Kilometers): boolean; bisect(v: Vector3D<T>): Vector3D<T>; row(): Matrix; column(): Matrix; join(v: Vector3D): Vector; }