Spaces:
Sleeping
Sleeping
File size: 1,407 Bytes
87dbbc6 08b99b2 87dbbc6 08b99b2 87dbbc6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
/**
* 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];
|