Entfernungsberechnung für große und kleine Distanzen

This commit is contained in:
Thomas Hooge 2025-07-18 19:46:52 +02:00
parent 46295f8139
commit 7d3a113ba3
1 changed files with 19 additions and 0 deletions

View File

@ -45,6 +45,25 @@ class Page():
rotated.append((ox + fc * dx - fs * dy, oy + fs * dx + fc * dy))
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):
self.pageno = pageno
self.cfg = cfg