UNPKG

flight-planner

Version:
96 lines (95 loc) 3.63 kB
import convert from "convert-units"; import { DefaultUnits } from "./constants.js"; /** * Nautical miles to kilometers conversion factor (exact). */ const NM_TO_KM = 1.852; /** * Converts speed from default units to the specified units. * * @param {number} speed - The speed value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted speed. */ export const convertSpeed = (speed, units) => { return convert(speed).from(DefaultUnits.speed).to(units.speed || DefaultUnits.speed); }; /** * Converts elevation from default units to the specified units. * * @param {number} elevation - The elevation value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted elevation. */ export const convertElevation = (elevation, units) => { return convert(elevation).from(DefaultUnits.elevation).to(units.elevation || DefaultUnits.elevation); }; /** * Converts altitude from default units to the specified units. * * @param {number} altitude - The altitude value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted altitude. */ export const convertAltitude = (altitude, units) => { return convert(altitude).from(DefaultUnits.altitude).to(units.altitude || DefaultUnits.altitude); }; /** * Converts temperature from default units to the specified units. * * @param {number} temperature - The temperature value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted temperature. */ export const convertTemperature = (temperature, units) => { return convert(temperature).from(DefaultUnits.temperature).to(units.temperature || DefaultUnits.temperature); }; /** * Converts pressure from default units to the specified units. * * @param {number} pressure - The pressure value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted pressure. */ export const convertPressure = (pressure, units) => { return convert(pressure).from(DefaultUnits.pressure).to(units.pressure || DefaultUnits.pressure); }; /** * Converts distance from default units to the specified units. * * @param {number} distance - The distance value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted distance. */ export const convertDistance = (distance, units) => { const from = DefaultUnits.distance; const to = units.distance || DefaultUnits.distance; if (from === to) return distance; // Convert from source to km as intermediate unit const inKm = from === 'nmi' ? distance * NM_TO_KM : convert(distance).from(from).to('km'); // Convert from km to target unit if (to === 'nmi') return inKm / NM_TO_KM; return convert(inKm).from('km').to(to); }; /** * Converts mass from default units to the specified units. * * @param {number} mass - The mass value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted mass. */ export const convertMass = (mass, units) => { return convert(mass).from(DefaultUnits.mass).to(units.mass || DefaultUnits.mass); }; /** * Converts volume from default units to the specified units. * * @param {number} volume - The volume value to convert. * @param {UnitOptions} units - The target unit options. * @returns {number} The converted volume. */ export const convertVolume = (volume, units) => { return convert(volume).from(DefaultUnits.volume).to(units.volume || DefaultUnits.volume); };