introduce some base math functions
This commit is contained in:
		
							
								
								
									
										9
									
								
								src/math/angle.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/math/angle.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | export class Angle { | ||||||
|  |   static rad2deg(radian: number): number { | ||||||
|  |     return radian * (180.0 / Math.PI); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   static deg2rad(degree: number): number { | ||||||
|  |     return degree * (Math.PI / 180.0); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										4
									
								
								src/math/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/math/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | import { Angle } from './angle'; | ||||||
|  | import { WGS84 } from './wgs84'; | ||||||
|  |  | ||||||
|  | export { Angle, WGS84 }; | ||||||
							
								
								
									
										25
									
								
								src/math/wgs84.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/math/wgs84.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -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)); | ||||||
|  |   } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user