Winkel zwischen zwei geraden (Geodäsie/Vermessung)

hugobalder, Sunday, 07.10.2012, 11:15 (vor 4220 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...

gesamter Thread:

 RSS-Feed dieser Diskussion