td2-visualizer/src/helpers/angleHelper.js
izawartka 0bedd56cc8 Tweak controls for mobile devices
- Updated scenery zoom pan wrapper, track hover info and distance meter to work correctly on touch screen / mobile devices
- Fixed SideMenu still responding to tab navigation even if closed
2026-08-13 19:08:26 +02:00

62 lines
1.2 KiB
JavaScript

import Vector3 from "../model/vector3";
function degToRad(angle) {
return angle * (Math.PI / 180);
}
function radToDeg(angle) {
return angle * (180 / Math.PI);
}
function vectorDegToRad(vector) {
return new Vector3(
degToRad(vector.x),
degToRad(vector.y),
degToRad(vector.z),
);
}
function vectorRadToDeg(vector) {
return new Vector3(
radToDeg(vector.x),
radToDeg(vector.y),
radToDeg(vector.z),
);
}
function normalizeDegAngle(angle, max = 360) {
if (angle < 0) {
return angle + max * Math.ceil(Math.abs(angle) / max);
} else if (angle >= max) {
return angle - max * Math.floor(angle / max);
} else {
return angle;
}
}
function normalizeDegVector(vector) {
return new Vector3(
normalizeDegAngle(vector.x),
normalizeDegAngle(vector.y),
normalizeDegAngle(vector.z)
)
}
function normalizeAngleDelta(delta) {
if (delta > 180) delta -= 360;
if (delta < -180) delta += 360;
return delta;
}
const AngleHelper = {
degToRad,
radToDeg,
vectorDegToRad,
vectorRadToDeg,
normalizeDegAngle,
normalizeDegVector,
normalizeAngleDelta
}
export default AngleHelper;