Entfernungsberechnung für große und kleine Distanzen
This commit is contained in:
		
							parent
							
								
									46295f8139
								
							
						
					
					
						commit
						7d3a113ba3
					
				|  | @ -45,6 +45,25 @@ class Page(): | ||||||
|             rotated.append((ox + fc * dx - fs * dy, oy + fs * dx + fc * dy)) |             rotated.append((ox + fc * dx - fs * dy, oy + fs * dx + fc * dy)) | ||||||
|         return rotated |         return rotated | ||||||
| 
 | 
 | ||||||
|  |     @staticmethod | ||||||
|  |     def rhumb(lat1, lon1, lat2, lon2): | ||||||
|  |         # Distance in m | ||||||
|  |         lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) | ||||||
|  |         dlon = lon2 - lon1 | ||||||
|  |         dlat = lat2 - lat1 | ||||||
|  |         mlat = (lat1 + lat2) / 2 | ||||||
|  |         return 6371000 * sqrt(dlat**2 + (cos(mlat) * dlon)**2) | ||||||
|  | 
 | ||||||
|  |     @staticmethod | ||||||
|  |     def haversine(lat1, lon1, lat2, lon2): | ||||||
|  |         # Great circle distance in nm | ||||||
|  |         lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) | ||||||
|  |         dlon = lon2 - lon1 | ||||||
|  |         dlat = lat2 - lat1 | ||||||
|  |         a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 | ||||||
|  |         c = 2 * asin(sqrt(a)) | ||||||
|  |         return c * 3440 | ||||||
|  | 
 | ||||||
|     def __init__(self, pageno, cfg, boatdata): |     def __init__(self, pageno, cfg, boatdata): | ||||||
|         self.pageno = pageno |         self.pageno = pageno | ||||||
|         self.cfg = cfg |         self.cfg = cfg | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue