all repos — caroster @ 65bcb7d208677b65df7ba31f656ee6ee0cfb1d1d

[Octree] Group carpool to your event https://caroster.io

backend/src/utils/geography.ts (view raw)

 1export type Coordinates = [number, number];
 2
 3export const calculateHaversineDistance = (
 4  [lat1, lon1]: Coordinates,
 5  [lat2, lon2]: Coordinates
 6): number => {
 7  const R = 6371; // Radius of the Earth in kilometers
 8
 9  const dLat = degreesToRadians(lat2 - lat1);
10  const dLon = degreesToRadians(lon2 - lon1);
11
12  const a =
13    Math.sin(dLat / 2) * Math.sin(dLat / 2) +
14    Math.cos(degreesToRadians(lat1)) *
15      Math.cos(degreesToRadians(lat2)) *
16      Math.sin(dLon / 2) *
17      Math.sin(dLon / 2);
18
19  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
20  const distance = R * c; // Distance in kilometers
21  return distance;
22};
23
24const degreesToRadians = (degrees: number): number => degrees * (Math.PI / 180);