export const toRadians = (deg) => deg * Math.PI / 180; export const toDegrees = (rad) => rad * 180 / Math.PI; export const azimuth = (longitude1, latitude1, longitude2, latitude2) =>{ const [lon1, lat1, lon2, lat2] = [longitude1, latitude1, longitude2, latitude2].map(toRadians); const _deltaLon = Math.abs(lon2 - lon1); const PI = Math.PI; const deltaLon = (_deltaLon) <= PI ? _deltaLon : 2*PI - _deltaLon; const q = (Math.tan(PI/4 + lat2/2))/(Math.tan(PI/4 + lat1/2)); const ln = 1/Math.log(q); const alpha = Math.atan( deltaLon*ln ) * 180/PI; // degree! const eastCourse = _deltaLon <= PI; const direction = ( lon2>=lon1 && eastCourse) || (lon2 lat1 && direction) { return alpha; } else if(lat2 < lat1 && direction) { return 180 - alpha; } else if(lat2 < lat1 && !direction) { return 180 + alpha; } else if(lat2 > lat1 && !direction) { return 360 - alpha; } if(lat2 === lat1) { return direction ? 90 : 270; } }