# GPS: Winkel vom Standort zum Ziel berechnen



## Eifelente (26. Apr 2007)

Ich schreibe gerade an einem Programm, dass GPS-Daten von einem Bluetooth-Empfänger verarbeitet.
Bis jetzt hat alles gut geklappt, jedoch stehe ich jetzt vor einem Problem, welches hauptsächlich am lange zurückliegenden Geometrieúnterricht liegt.
Die folgende Methode erhält immer die aktuellen Breiten- und Längengerade als String. In der Klasse selber sind die Koordinaten des Ziels schon als Double gespeichert. Die Methode soll nun den Winkel zurückliefern, der die Richtung des Pfeils angibt. 

Hier jetzt mal der Code

```
public double getWinkel(String breite,String laenge)
	{
		double brd = Double.parseDouble(breite.substring(0, breite.indexOf("°")))
						+ (Double.parseDouble(breite.substring(breite.indexOf("°")+1
											 ,breite.indexOf("'")))/60.0);
		double lad = Double.parseDouble(laenge.substring(0, laenge.indexOf("°")))
						+ (Double.parseDouble(laenge.substring(laenge.indexOf("°")+1
											,laenge.indexOf("'")))/60.0);
		
		double cos = distanceTo(breite1,lad)/distanceTo(brd,lad);
		
		cos = Math.toDegrees(EMath.arccos(cos));
		if (laenge1>lad) 
			cos += 90.0;
		if (breite1<brd)
			cos += 90.0;
		return cos;
	}
```

Die Werte von brd und lad sind richtig, da diesselben Werte auch bei einer Entfernungsfunktion eingesetzt werden, die auch funktioniert.

cos müsste meiner Meinung nach richtig sein:
-distanceTo(breite,laenge) liefert die Entfernung zwischen den angegebenen Koordinaten und dem Ziel zurück
   (Hab´s getestest: die Werte stimmen)
-breite1 ist der breitengrad des ziels

>Theoretisch wäre das ja dann Gegenkathete zur Hypothenuse, oder?

EMath.arccos(cos) liefert den ArkusCosinuswert von cos.

Mit Math.toDegrees() müsste ich dann den richtigen Winkel bekommen.

Die beiden letzten if-Abfragen erweitern nur den cos-Winkel zwischen 0 und 90° auf 360°


Hab jetzt den ganzen Nachmittag verbracht und es kann sein, dass ich jetzt den Wald vor lauter Bäumen net mehr sehe!


----------



## Eifelente (26. Apr 2007)

So, nach fünf Stunden ruhen lassen bin ich selber auf den Fehler gekommen:

Der Winkel wird richtig berechnet, jedoch hab ich vergessen, die Richtung anzugeben, in die ich mich gerade bewege!


----------

