Autor Beitrag
LonghornUser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: So 02.10.11 15:22 
Hallo,

ich muss folgendes Problem lösen und komme nicht weiter:

Ich habe einen Punkt mit Latitude- und Longitude-Wert gegeben (beides double-Zahlen) und möchte nun auf diese eine Distanz in Metern addieren, also den Punkt in eine bestimmte Richtung um eine bestimmte Distanz verschieben.

Wie man die Distanz berechnet zwischen 2 Punkten berechnet, weiß ich bereits. Das blöde ist nur, dass, wenn ich diese Formel umstelle, ich außerhalb des Definitionsbereiches des Arcus-Sinus liege :(

Hat jemand von Euch eine Formel parat, mit der ich diese Aufgabe bewältigen kann?

Bye LHUser
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.10.11 15:41 
Ich glaube dir könnte die Paranuss 3 aus dem Adventsgewinnspiel 2008 helfen bzw. deren Lösung. Da waren ein paar Berechnungen zu Koordinaten dabei.
www.delphi-forum.de/...l+Loesung_88937.html
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 02.10.11 16:21 
Wenn die Ursprungskoordinaten in einem kleinen Bereich (ca hundert km^2) liegen, kannst du einfach vorher ausrechnen wieviel Grad ein Meter sind und behaupten, dass sich das linear verteilt.

Ansonsten brauchst du eine Formel, um die Abstände der Längengrade (Breitengrade sind ja immer gleich weit auseinander) an der entsprechenden Stelle zu berechnen...

EDIT: ... und das hängt natürlich vom verwendeten Geoid ab.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 02.10.11 20:35 
Hey,


rechne dir Einfach den Kreisboden der Koordinaten aus: de.wikipedia.org/wiki/Kreisbogen
Auf den Kreisbogen addierst du dann dein Distanz und rechnest dir wieder den Winkel dazu aus. Da brauchste nichma sin oder cos ;)

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: So 02.10.11 23:12 
ja , was man dazu aber braucht ist der winkel zwischen den
beiden punkten und der ist (laut Bartsch)...

w = arccos(sin(B1)*sin(B2)+cos(B1)*cos(B2)*cos(L2-L1))

-> abstand = w * erdradius

(B=Breitengrad,L=Längengrad in dezimalform)..

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

EDIT: OK jetzt habe ich auch die Frage gelesen. Sollte man vorher tun. Naja vielleicht hilfts trotzdem.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 03.10.11 12:06 
Er hat aber nur ma nur einen Punkt. Und auf diesen Punkt will er die Distanz addieren. Wenn er zu den beiden Koordinaten die Länge des Kreisbogens berechnet hat er die Strecke auf der Kugel vom Äquator zu seinem Punkt und die Strecke vom Nullmeridian zu seinem Punkt. Da kann er jetzt seine Werte drauf rechnen und rechnet danach die Strecke auf dem Kreisbogen wieder in die Koordinaten um. Und dazu brauch man nur diese Formel:

b = Pi * r * alpha/180

Wobei r = 6.371.000,785m ist. Wenn er aber wirklich bloß 1 oder 2m addieren will wird das sowieso sehr ungenau, weil der Radius an den Poeln ca. 21km kleiner ist.

€: sry, dein Edit zu spät gelesen xD

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Mo 03.10.11 13:27 
Da stellen sich noch der Fragen zwei..
Wie kriege ich alpha raus ohne Winkelfunktionen zu benutzen?
Wie ist die umrechnung von längengrade nach metern und umgekehrt? Die Umrechnung hängt ja auch vom Breitengrad ab.
also irgendwas in Richtung.. Umrechnungsfaktor = f(latitude).
Gruß

EDIT: Ich glaub wir sind etwas auf dem Holzweg. Das Ergebnis soll die Koordinaten liefern nach Verschiebung
geradlinig von Punkt 1 nach Punkt 2 . Das ist nicht trivial. Da müsste man sich au noch mit sphärischer Tri-
gonometrie auskennen.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 03.10.11 16:17 
Das Alpha ist einma der Long-Wert un einma der Lat-Wert. Das sind beides Werte im Gradmaß. Und mit der Kreisbogenformel berechnest du die Länge in Metern (auf dem Kreis bzw auf der Erdoberfläche). Dann kannst du deine Distanz in Metern addieren und rechnest das ganze mit der Kreisbogenformel zurück ins Gradmaß. Natürlich muss man das getrennt einmal für Lat un einma für Long machen. Mit dieser Methode kann man das ganze ausrechnen, aber wie oben schon gesagt is das bei kleinen Werten sehr ungenau, da der Erdradius nicht immer gleich ist, sondern an den Polen ca. 21km kleiner ist.
Mit Sphären hat das nix zu tun, da man die Berechnung hier auf 2 Kreise vereinfachen kann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Mo 03.10.11 17:59 
OK, das macht Sinn, so war die Frage wahrscheinlich gemeint. Ich dachte er will vom gegebenen Punkt aus eine Strecke mit einer bestimmten Länge und einer bestimmten Richtung hinzuaddieren. Dann müsste man die senkrechte und horizontale Komponente aus dem rechtwinkligen sphärischen Dreieck erst berechnen und könnte dann nach Deinem Verfahren fortfahren.