all repos — caroster @ v8.1

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

frontend/lib/geography.ts (view raw)

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