Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mathefrage - Berechnung einer Entfernung (https://www.delphipraxis.net/52194-mathefrage-berechnung-einer-entfernung.html)

moelski 25. Aug 2005 10:26


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:

r = 6378137
lat1 = (49 + 26.133/60) * pi/180
lon1 = (10 + 18.773/60) * pi/180
lat2 = (51 + 29.867/60) * pi/180
lon2 = (8 + 43.177/60) * pi/180
2 * r * sqrt(asin(sin((lat1 - lat2) / 2)^2 + cos(lat1) * cos(lat2) * sin((lon1 - lon2) / 2)^2)) = 255792m
Das habe ich in meiner Anwendung umgesetzt:
Delphi-Quellcode:
  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)))));
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.

Kann mir jemand sagen wo genau das Problem liegt?

Olli 25. Aug 2005 10:31

Re: Mathefrage - Berechnung einer Entfernung
 
Zitat:

Zitat von moelski
Code:
r = 6378137 
lat1 = (49 + 26.133/60) * pi/180 
lon1 = (10 + 18.773/60) * pi/180 
lat2 = (51 + 29.867/60) * pi/180 
lon2 = (8 + 43.177/60) * pi/180 
2 * r * sqrt(asin(sin((lat1 - lat2) / 2)[color=red]^2[/color] + cos(lat1) * cos(lat2) * sin((lon1 - lon2) / 2)^2)) = 255792m

Fehlt in deinem Delphicode nicht das rote?

Khabarakh 25. Aug 2005 10:33

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)))));

moelski 25. Aug 2005 10:41

Re: Mathefrage - Berechnung einer Entfernung
 
Moin !

@Olli:
Eigentlich nicht, das macht ja das SQR.

@Khabarakh:
Wenn ich das so schreibe:
Delphi-Quellcode:
Entfernung := 2 * 6378137 * sqrt(arcsin(sqr(sin(((lat1 - lat2) / 2)) + cos(lat1) * cos(lat2) * sqr(sin((lon1 - lon2) / 2)))));
dann erhalte ich als Ergebnis aber 181373m. Also auch nicht so wirklich richtig.

Khabarakh 25. Aug 2005 10:46

Re: Mathefrage - Berechnung einer Entfernung
 
Schau dir meinen Code noch einmal genau an.

moelski 25. Aug 2005 10:54

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 !!!!

Khabarakh 25. Aug 2005 11:01

Re: Mathefrage - Berechnung einer Entfernung
 
Aber dass du in beiden Codes zu viel quadriert hast, hast du schon gesehen :gruebel: ?

moelski 25. Aug 2005 11:06

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