Winkel zwischen zwei geraden (Geodäsie/Vermessung)

hugobalder, Sunday, 07.10.2012, 11:15 (vor 4191 Tagen)

Hallo!
Ich weiß nicht genau, ob ich bei euch richtig bin, aber ich probiere es einfach mal.

Ich schreibe gerade eine OpenSource Android-App, die einfach nur die Richtung zu einem vorher angewählten Ziel anzeigen soll. Also einfach ein Pfeil ind die entsprechende Richtung. Ich habe dazu ein Handy mit GPS zur verfügung, das alle X Sekunde seinen GPS Standort abfragen kann. In dem Telefon gibt es leider keinen digitalen Kompass, es ist also nicht bekannt wo Norden ist. Meine Frage ist nun: Wie bekomme ich den Winkel zwischen meiner Position und dem Ziel?

Ich hab dazu schon einiges gelesen und auch schon in einem anderen Forum gepostet (geoclub Eintrag) bisher aber leider ohne Erfolg. Hoffentlich könnt ihr mir weiterhelfen.

So hatte ich mir das gedacht:
Ich speichere meine Position, dann geh ich weiter und speichere auch die nächste Position wieder. Damit habe ich also die Strecke auf der ich mich bewege (P1 -- P2) definiert.
Dann habe ich noch den Zielpunkt, also auch die Strecke (P1 -- Z). Mit der Formel [image] kann ich dann den Winkel zwichen der jeweiligen Strecke und Norden berechnen. Dann muss ich ja eigentlich nur den Differenzwinkel berechnen und habe dann meinen Winkel.
So klappt das aber leider nicht, und ich verstehe nicht warum. Ist mein Ansatz schon falsch, oder habe ich irgendwo einen Logik oder Rechenfehler?
Vielen Dank schon mal für eure Hilfe!
Beste Grüße,
H


Hier nochmal der Code, den ich zur Berechnung nutze:

//Winkel alpha, zwischen Punkt1 -- Punkt2 und dem Nordpol
 
double zwischen  = Math.cos(pos1lat) * Math.sin(pos2lat) - Math.cos(pos1lon - pos2lon) * Math.cos(pos2lat) * Math.sin(pos1lat);
 
double zwischen1 = Math.cos(pos1lon - pos2lon) * Math.cos(pos1lat) * Math.cos(pos2lat) + Math.sin(pos1lat) * Math.sin(pos2lat);
 
      alpha = Math.acos(
            zwischen / Math.sqrt(1-(zwischen1 * zwischen1))
            );
 
//Winkel beta, zwischen Punkt1 -- Ziel und dem Nordpol
 
double zwischen2 = Math.cos(pos1lat) * Math.sin(lat) - Math.cos(pos1lon - lon) * Math.cos(lat) * Math.sin(lat);
 
double zwischen3 = Math.cos(pos1lon - lon) * Math.cos(pos1lat) * Math.cos(lat) + Math.sin(pos1lat) * Math.sin(lat);
 
      beta = Math.acos(
            zwischen2 / Math.sqrt(1-(zwischen3 * zwischen3))
            );
 
   double anz = Math.PI - (alpha -beta);
   win = Math.toDegrees(anz);
//win ist dann der auszugebene Winkel...
Avatar

Winkel zwischen drei Punkten auf der Erde

MichaeL ⌂, Bad Vilbel, Sunday, 07.10.2012, 11:59 (vor 4191 Tagen) @ hugobalder

Hallo,

ich hätte es versucht über eine Projektion zu lösen, sofern es sich um kleiner Abstände handelt. Deine GPS-Koordinaten (Länge/Breite) werden hierzu verebnet und Du erhältst YX-Koordinaten (bspw. GK oder UTM). Mit diesen kannst Du dann mit ebener Trigonometrie den Winkel ausrechnen.

Der Dir vorgeschlagene Weg sollte aber auch funktionieren. Ich verstehe Deine Vorgehensweise aber nicht. Der Winkel α ist bereits nach Norden orientiert. Wenn Du die Richtung von A nach B möchtest, sind in die Formel die geogr. Koordinaten von A und B einzusetzen. Wozu benötigst Du den Hilfspunkt?

Vielleicht kannst Du Deinem Vorhaben mal ein Zahlenbeispiel beifügen...

Schöne Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Winkel zwischen drei Punkten auf der Erde

hugobalder, Sunday, 07.10.2012, 12:58 (vor 4191 Tagen) @ MichaeL

Hallo!
Erstmal danke für die schnelle Antwort!

Den Hilfspunkt brauche ich, da ich ja nicht weiß wo Norden ist. Daher habe ich mir das so gedacht, dass ich die Oberkante des Telefons als mein 'Norden' wähle und dann den Winkel in relation dazu errechne. Als Beispiel:
Mein Ziel liegt 58° östlich von meiner jetzigen Position.
Also zeigt mein Pfeil aum dem Display 58° nach rechts, das stimmt aber nur, wenn ich auch nach Norden laufe. Wenn ich zufällig gerade nach Osten laufe, dann zeigt der Pfeil auf dem Display auch um 58° nach rechts, laufe ich aber dem Pfeil nach, dann laufe ich um 148° von Norden weg und entferne mich von meinem Ziel, bzw. näher mich nicht auf dem direkten Weg.
Daher muss ich ja die Abweichung meiner Laufrichtung (P2 -- P1) zu meiner Zielrichtung (P1 --Z) anzeigen.

Mein erster Ansatz war auch eine Projektion auf eine Ebene. Wie groß ist denn der Fehler bei einer Entfernung von ca. 30km?
Für die Projektion des Punktes z auf die x und y Achsen würde ich diese Formel verwenden:
xz = R * Math.cos(lat) * Math.cos(lon);
yz = R * Math.cos(lat) * Math.sin(lon);

Danke!

Avatar

Winkel zwischen drei Punkten auf der Erde

MichaeL ⌂, Bad Vilbel, Sunday, 07.10.2012, 16:27 (vor 4191 Tagen) @ hugobalder

Hi,

Wie groß ist denn der Fehler bei einer Entfernung von ca. 30km?

Wie genau brauchst Du es denn? Sieht man bei einem Fehler von 20m auf 30km überhaupt einen Unterschied bei Deinem Pfeil, der vermutlich nur ein paar cm lang ist? Zumal Du mit absoluten GPS Deine Position eh nur auf ~5-10m genau bestimmen kannst.

Für die Projektion des Punktes z auf die x und y Achsen würde ich diese Formel verwenden:
xz = R * Math.cos(lat) * Math.cos(lon);
yz = R * Math.cos(lat) * Math.sin(lon);

Eine Kartenprojektion hat nicht viel mit Kugelkoordinaten gemeinsam. Schau Dir mal die Mercator-Projektion an, auf dieser basieren schließlich die GK/UTM-Abbildungen.

Schöne Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Winkel zwischen drei Punkten auf der Erde

hugobalder, Friday, 12.10.2012, 18:14 (vor 4186 Tagen) @ MichaeL

Hallo,

wow... das scheint ja um einiges komplexer zu sein, als ich gedacht habe...
Ich glaube die Projektion ist mir zu kompliziert, da ich aus dem Telefon und von Nominatim (OSM) lat/lon Koordinaten bekomme. Und die Umrechnung in UTM Koordinaten scheint nicht so trivial zu sein (UTM/Kugel Umrechnung.

Wenn ich also mit dieser Formel rechne, sollte ich eigentlich auch zum richtigen Ergebnis kommen?
[image]

Ist mein hier (->Ansatz beschriebener Weg denn nachvolziehbar, oder liegt mein Fehler schon im Ansatz?

Danke für die Hilfe!
Besten Gruß!
H

Avatar

Winkel zwischen drei Punkten auf der Erde

MichaeL ⌂, Bad Vilbel, Friday, 12.10.2012, 19:14 (vor 4186 Tagen) @ hugobalder

Hi,

Ich glaube die Projektion ist mir zu kompliziert

Die Erde lässt sich nun einmal nicht so einfach auf ein Blatt Papier drücken.

Und die Umrechnung in UTM Koordinaten scheint nicht so trivial zu sein (UTM/Kugel Umrechnung.

500 Jahre Mercator wurde dieses Jahr gefeiert - nicht ohne Grund. ;-)
Aber wo ist Dein Problem? Wenn Du fertige Formeln (und Code) gefunden hast, musst Du doch nur noch kopieren. Ansonsten finde ich die Abbildungsgleichungen für die normale Lage nicht gerade kompliziert.

Wenn ich also mit dieser Formel rechne, sollte ich eigentlich auch zum richtigen Ergebnis kommen?

Die Frage ist eher, wie Du diesen Winkel dann darstellen möchtest. Wikipedia, wo Du die Formeln ja her hast, weist auf das Problem ja indirekt schon hin: Bei der Navigation von Punkt A nach B mit einem Kompass eignet sich die Loxodrome besser, da sie immer mit dem gleichen Winkel die Meridiane kreuzt.

Ich rate Dir weiterhin zur Projektion.

Schöne Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

RSS-Feed dieser Diskussion