Algio-1452's picture
Simulation Works, Planes Turn Well, Commands to Drect Planes Work Wind Can be Changed, Fully Modular Airport Management Complete Changes Still Needed
08b99b2
Raw
History Blame Contribute Delete
1.41 kB
/**
* Coordinate Utility for RL ATC Visualizer
* Center: Coimbatore International Airport [11.030288, 77.039218]
* Units: Kilometers
*/
export const DEFAULT_CENTER = { lat: 11.030288, lon: 77.039218 };
const KM_PER_DEGREE_LAT = 111.32;
/**
* Converts metric x, y (kilometers from center) to geographic [lat, lon].
* @param {number} x - Easting in kilometers.
* @param {number} y - Northing in kilometers.
* @param {{lat: number, lon: number}} center - The [0,0] reference (Airport Anchor).
* @returns {[number, number]} - [latitude, longitude].
*/
export function xyToLatLon(x, y, center = DEFAULT_CENTER) {
const lat = center.lat + (y / KM_PER_DEGREE_LAT);
const lon = center.lon + (x / (KM_PER_DEGREE_LAT * Math.cos(center.lat * Math.PI / 180)));
return [lat, lon];
}
/**
* Converts geographic latitude, longitude to metric x, y (kilometers from center).
* @param {number} lat - Latitude.
* @param {number} lon - Longitude.
* @param {{lat: number, lon: number}} center - The [0,0] reference (Airport Anchor).
* @returns {{x: number, y: number}} - {x, y} offsets in kilometers.
*/
export function latLonToXY(lat, lon, center = DEFAULT_CENTER) {
const y = (lat - center.lat) * KM_PER_DEGREE_LAT;
const x = (lon - center.lon) * (KM_PER_DEGREE_LAT * Math.cos(center.lat * Math.PI / 180));
return { x, y };
}
export const MAP_CENTER = [DEFAULT_CENTER.lat, DEFAULT_CENTER.lon];