diff --git a/pages/page.py b/pages/page.py index 90f3d10..25cbb1a 100644 --- a/pages/page.py +++ b/pages/page.py @@ -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