![]() |
Mathefrage - Berechnung einer Entfernung
Moin !
Ich bastele gerade an einem Tool was mir von 2 gegebenen Punkten (GPS / WGS84) die Entfernung berechnet. Dazu habe ich eine Formel bekommen: Zitat:
Delphi-Quellcode:
Die Berechnung von Lat1 - lon2 passt. Nur in der Formel muss irgendwo ein Haken sein. Ich sollte nämlich 255792m rausbekommen, aber bei mir sind es 287579m.
lat1 := lat1 * pi / 180;
lat2 := lat2 * pi / 180; lon1 := lon1 * pi / 180; lon2 := lon2 * pi / 180; Entfernung := 2 * 6378137 * sqrt(arcsin(sin(sqr(((lat1 - lat2) / 2)) + cos(lat1) * cos(lat2) * sqr(sin((lon1 - lon2) / 2))))); Kann mir jemand sagen wo genau das Problem liegt? |
Re: Mathefrage - Berechnung einer Entfernung
Zitat:
|
Re: Mathefrage - Berechnung einer Entfernung
Fast, Sinus und Quadrat sind vertauscht.
Code:
Entfernung := 2 * 6378137 * sqrt(arcsin([color=#ff0000]sqr(sin([/color](lat1 - lat2) / 2)) + cos(lat1) * cos(lat2) * sqr(sin((lon1 - lon2) / 2)))));
|
Re: Mathefrage - Berechnung einer Entfernung
Moin !
@Olli: Eigentlich nicht, das macht ja das SQR. @Khabarakh: Wenn ich das so schreibe:
Delphi-Quellcode:
dann erhalte ich als Ergebnis aber 181373m. Also auch nicht so wirklich richtig.
Entfernung := 2 * 6378137 * sqrt(arcsin(sqr(sin(((lat1 - lat2) / 2)) + cos(lat1) * cos(lat2) * sqr(sin((lon1 - lon2) / 2)))));
|
Re: Mathefrage - Berechnung einer Entfernung
Schau dir meinen Code noch einmal genau an.
|
Re: Mathefrage - Berechnung einer Entfernung
ARGH ....
Ich Idiot .... :duck: Ich habe lat und lon jeweils vertauscht ... GRMPF :wall: :wall: @Khabarakh: Dein Code hatte auch noch einen Fehler :wink: Da muss am Ende noch eine ) weg. Aber Danke für die Hilfe !!!! |
Re: Mathefrage - Berechnung einer Entfernung
Aber dass du in beiden Codes zu viel quadriert hast, hast du schon gesehen :gruebel: ?
|
Re: Mathefrage - Berechnung einer Entfernung
Moin !
Schaun wir mal: 2 * r * sqrt(asin(sin((lat1 - lat2) / 2)^2 + cos(lat1) * cos(lat2) * sin((lon1 - lon2) / 2)^2)) = 255792m Wir müssen also einmal das quadrieren: sin((lat1 - lat2) / 2) das würde dann sqr(sin((lat1 - lat2) / 2)) ergeben. Also insofern war ich falsch. Und durch die falsch gesetzte Klammer wurde dann auch zuviel quadriert. Jo. Aber nu geht ja :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz