ootk
Version:
Orbital Object Toolkit including Multiple Propagators, Initial Orbit Determination, and Maneuver Calculations.
87 lines (86 loc) • 3.45 kB
TypeScript
/**
* @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;
}