# Schiff in Richtung der Maus rotieren - Problem :/



## Schnitter (18. Jan 2008)

hoi 

Ich versuche gerade mittels LWJGL/OpenGL mein Sprite immer in die Richung der Maus zu rotieren.
Ich mach' das mit ner simplen Tangens-Berechnung, die ich der Einfachkeit halber mal sehr ausführlich geschrieben habe:

```
double tan = 
			(Mouse.getY() > pos.y ? Mouse.getY()-pos.y : pos.y-Mouse.getY()) / 
			(Mouse.getX() > pos.x ? Mouse.getX()-pos.x : pos.x-Mouse.getX());
			
		double angle = Math.atan(tan);		//Alpha in Radian
		float deg    = (float)Math.toDegrees(angle); //Alpha in Grad
		this.angle = deg;
```

Ich seh' soweit eigentlich keinen Fehler in meiner Berechnung - bekomme aber trotzdem manchmal eine NullPointerException.(Mal ganz davon abgesehen, dass sich das Schiff ganz und garnicht in die Richtung der Maus dreht^^)

Und ich bin jetzt hier, um euch zu fragen, warum :/

Hab' ich etwa etwas übersehen? Oder mach ich von Anfang an alles falsch?

Hoffe, jemand weiß eine Antwort 




MfG


----------



## Schnitter (18. Jan 2008)

Ok, mit float-Werten in der Berechnung klappt's natürlich besser 

Trotzdem noch nicht wirklich richtig


----------



## Marco13 (19. Jan 2008)

Bei einer NullPointerException an dieser Stelle muss pos null sein. (!?!)

Ansonsten ist das erstmal nicht per se "falch". Könntest auch atan2 verwenden, dann wird vielleicht einiges einfacher...


----------



## Schnitter (19. Jan 2008)

Juhu! atan2() ist genial 

Code mal jetzt:


```
double angle = Math.atan2(Mouse.getX()-pos.x, Mouse.getY()-pos.y);
		float deg    = (float)Math.toDegrees(angle); //Alpha in Grad
		this.angle   = -deg;
```


----------



## Illuvatar (19. Jan 2008)

Sag doch bitte mal, was genau mit diesem Code jetzt noch funktioniert oder nicht funktioniert...


----------



## Schnitter (19. Jan 2008)

Es funktioniert jetzt 

Vor der Verwendung von atan2() hat sich das Schiff nur dann mit der Maus gedreht, wenn die Maus entweder links oben oder rechts unten war. Bei den anderen Seiten hat es sich immer entgegengesetzt gedreht.

Hat sich aber erledigt.


----------

