ootk
Version:
Orbital Object Toolkit including Multiple Propagators, Initial Orbit Determination, and Maneuver Calculations.
58 lines • 2.38 kB
JavaScript
/**
* @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 { hpAtmosphere } from './hpAtmosphere.js';
import { HpAtmosphereResult } from './HpAtmosphereResult.js';
// / Container for Harris-Priester atmosphere data.
export class HpAtmosphereData {
table_;
hMin_;
hMax_;
constructor(table) {
this.table_ = table;
if (table.length === 0 || typeof table[0]?.[0] === 'undefined') {
throw new Error('Table must have at least one valid entry.');
}
this.hMin_ = table[0][0];
this.hMax_ = table[table.length - 1]?.[0] ?? 0;
}
static fromVals(vals) {
const output = [];
for (const v of vals) {
const [h, minD, maxD] = v;
output.push([h, minD, maxD]);
}
return new HpAtmosphereData(output);
}
getAtmosphere(height) {
if (height < this.hMin_ || height > this.hMax_) {
return null;
}
let index = 0;
while (index < this.table_.length - 2 && height > (this.table_[index + 1])[0]) {
index++;
}
return new HpAtmosphereResult(height, (this.table_[index]), (this.table_[index + 1]));
}
}
export const hpAtmosphereData = HpAtmosphereData.fromVals(hpAtmosphere);
//# sourceMappingURL=HpAtmosphereData.js.map