signalk-parquet
Version:
SignalK plugin and webapp that archives SK data to Parquet files with a regimen control system, advanced querying, Claude integrated AI analysis, spatial capabilities, and REST API.
97 lines • 2.96 kB
JavaScript
;
/**
* Angle conversion utilities for radian/degree conversions
* Used for angular threshold values and display
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.degreesToRadians = degreesToRadians;
exports.radiansToDegrees = radiansToDegrees;
exports.normalizeDegrees = normalizeDegrees;
exports.normalizeRadians = normalizeRadians;
exports.angularDifferenceDegrees = angularDifferenceDegrees;
exports.angularDifferenceRadians = angularDifferenceRadians;
exports.isAngleInRangeDegrees = isAngleInRangeDegrees;
exports.isAngleInRangeRadians = isAngleInRangeRadians;
/**
* Convert degrees to radians
*/
function degreesToRadians(degrees) {
return degrees * (Math.PI / 180);
}
/**
* Convert radians to degrees
*/
function radiansToDegrees(radians) {
return radians * (180 / Math.PI);
}
/**
* Normalize angle to 0-360 degree range
*/
function normalizeDegrees(degrees) {
let normalized = degrees % 360;
if (normalized < 0) {
normalized += 360;
}
return normalized;
}
/**
* Normalize angle to 0-2π radian range
*/
function normalizeRadians(radians) {
let normalized = radians % (2 * Math.PI);
if (normalized < 0) {
normalized += 2 * Math.PI;
}
return normalized;
}
/**
* Calculate the shortest angular difference between two angles in degrees
* Result is in range [-180, 180]
* Positive result means angle2 is clockwise from angle1
*/
function angularDifferenceDegrees(angle1, angle2) {
let diff = angle2 - angle1;
// Normalize to [-180, 180]
while (diff > 180)
diff -= 360;
while (diff < -180)
diff += 360;
return diff;
}
/**
* Calculate the shortest angular difference between two angles in radians
* Result is in range [-π, π]
* Positive result means angle2 is clockwise from angle1
*/
function angularDifferenceRadians(angle1, angle2) {
let diff = angle2 - angle1;
// Normalize to [-π, π]
while (diff > Math.PI)
diff -= 2 * Math.PI;
while (diff < -Math.PI)
diff += 2 * Math.PI;
return diff;
}
/**
* Check if an angle is within a range, accounting for wrap-around
* All values in degrees
* @param angle - The angle to check
* @param center - The center of the range
* @param tolerance - The tolerance in degrees (range is center ± tolerance)
*/
function isAngleInRangeDegrees(angle, center, tolerance) {
const diff = Math.abs(angularDifferenceDegrees(center, angle));
return diff <= tolerance;
}
/**
* Check if an angle is within a range, accounting for wrap-around
* All values in radians
* @param angle - The angle to check
* @param center - The center of the range
* @param tolerance - The tolerance in radians (range is center ± tolerance)
*/
function isAngleInRangeRadians(angle, center, tolerance) {
const diff = Math.abs(angularDifferenceRadians(center, angle));
return diff <= tolerance;
}
//# sourceMappingURL=angle-converter.js.map