From 7d3a113ba33d15ef18fc87327051f52215bfe54f Mon Sep 17 00:00:00 2001 From: Thomas Hooge Date: Fri, 18 Jul 2025 19:46:52 +0200 Subject: [PATCH] =?UTF-8?q?Entfernungsberechnung=20f=C3=BCr=20gro=C3=9Fe?= =?UTF-8?q?=20und=20kleine=20Distanzen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/page.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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