introduce some base math functions

This commit is contained in:
Sven Czarnian
2022-10-24 21:23:36 +02:00
bovenliggende c080ddb987
commit b65f1d7561
3 gewijzigde bestanden met toevoegingen van 38 en 0 verwijderingen

25
src/math/wgs84.ts Normal file
Bestand weergeven

@@ -0,0 +1,25 @@
import { Angle } from './angle';
export class WGS84 {
/// @brief Calculates the Haversine distance
/// @param coordinate0 The first coordinate
/// @param coordinate1 The second coordinate
/// @return The haversine distance in metres
static distance(
coordinate0: { lat: number; lon: number },
coordinate1: { lat: number; lon: number },
): number {
const lat0 = Angle.deg2rad(coordinate0.lat);
const lon0 = Angle.deg2rad(coordinate0.lon);
const lat1 = Angle.deg2rad(coordinate1.lat);
const lon1 = Angle.deg2rad(coordinate1.lon);
const earthRadius = 6371000;
const a =
0.5 -
Math.cos(lat1 - lat0) * 0.5 +
Math.cos(lat0) * Math.cos(lat1) * (1 - Math.cos(lon1 - lon0) * 0.5);
return 2 * earthRadius * Math.asin(Math.sqrt(a));
}
}