unit-transformer
Version:
unit converter for si to metric and metric to si
70 lines (69 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SpeedConverter = void 0;
exports.convertSpeed = convertSpeed;
exports.roundSpeed = roundSpeed;
// Speed conversion factors (base unit: meters per second)
const SPEED_CONVERSIONS = {
// Metric
'meter-per-second': 1,
mps: 1,
'kilometer-per-second': 1000,
kps: 1000,
'kilometer-per-hour': 0.277778, // 1 km/h = 1/3.6 m/s
kmh: 0.277778,
// Imperial
'inch-per-second': 0.0254,
ips: 0.0254,
'inch-per-hour': 0.0000070556,
iph: 0.0000070556,
'feet-per-second': 0.3048,
fps: 0.3048,
'feet-per-hour': 0.0000847222,
fph: 0.0000847222,
'mile-per-second': 1609.344, // Precise conversion for 1 mile
mps_mile: 1609.344,
'mile-per-hour': 0.44704,
mph: 0.44704,
};
/**
* Converts speed between different units
* @param value - Numerical value to convert
* @param from - Source unit
* @param to - Target unit
* @returns Converted speed value
*/
function convertSpeed(value, from, to) {
// Validate input units
if (!(from in SPEED_CONVERSIONS) || !(to in SPEED_CONVERSIONS)) {
throw new Error(`Unsupported speed units: ${from} or ${to}`);
}
// If converting to the same unit, return the original value
if (from === to)
return value;
const fromFactor = SPEED_CONVERSIONS[from];
const toFactor = SPEED_CONVERSIONS[to];
return (value * fromFactor) / toFactor;
}
// Utility function for precise rounding
function roundSpeed(value, decimals = 4) {
const factor = Math.pow(10, decimals);
return Math.round(value * factor) / factor;
}
// Convenience conversion methods
exports.SpeedConverter = {
// Metric conversions
metersPerSecondToKilometersPerHour: (mps) => convertSpeed(mps, 'meter-per-second', 'kilometer-per-hour'),
kilometersPerHourToMetersPerSecond: (kmh) => convertSpeed(kmh, 'kilometer-per-hour', 'meter-per-second'),
milesPerSecondToKilometersPerHour: (mps) => {
// More precise conversion calculation
// 1 mile = 1.609344 kilometers
// 1 second conversion
return mps * 1.609344 * 3600;
},
// Imperial conversions
milesPerHourToFeetPerSecond: (mph) => convertSpeed(mph, 'mile-per-hour', 'feet-per-second'),
feetPerSecondToMilesPerHour: (fps) => convertSpeed(fps, 'feet-per-second', 'mile-per-hour'),
kmToMilesPerHour: (kmh) => convertSpeed(kmh, 'kilometer-per-hour', 'mile-per-hour'),
mileToKmPerHour: (mph) => convertSpeed(mph, 'mile-per-hour', 'kilometer-per-hour'),
};