Seite 1 von 1

drehsinn und arcus cosinus

Verfasst: Di Mär 05, 2013 2:22 pm
von Glocke
Hi, die acos-Funktion aus <cmath> scheint bijektiv zu sein, d.h. bildet auf das Intervall [0;pi] ab. http://en.cppreference.com/w/cpp/numeric/math/acos
Allerdings brauche ich eine nicht-bijektive (Nachtrag: is quatsch xD arcus-cosinus Funktion, die entsprechend auf [0;2pi) abbildet.

Hintergrund:
Ich arbeite gerade wieder an meinem Spiel: jeder Figur habe ich einen 2d-Vektor zugeordnet, der seine aktuelle Position beeinhaltet. Bewege ich eine Figur zu einem anderen Punkt (genauso ein 2d-Vektor) benötige ich die Blickrichtung, damit ich den entsprechenden Frame meines Sprites rendern kann. Ich verwende dabei 8 Blickrichtungen (45°-Abstände).

Der bisherige Ansatz ist es, den Richtungsvektor (Ziel - aktuelle Position) zu ermitteln und den Winkel zwischen diesem und der "Default-Richtung" zu ermitteln

Code: Alles auswählen

cos (a) = <u, v> / (|u| |v|)
Entsprechend wollte ich die acos-Funktion verwenden und den Winkel (der dann [0;360) sein sollte) auf meine Blickrichtungen (effektiv [0;8) ganzzahlig) abbilden.

Code: Alles auswählen

[0;360) -> [0;8)
Die Umrechnung des acos-Ergebnisses (Bogenmaß) in meinen Winkel (Gradmaß) ist kein Problem. Allerdings liefert die Funktion halt nur [0;180]. Hat jemand eine Idee für mich?

LG Glocke

/EDIT: Ich merke gerade, dass mein Ansatz zur Winkelberechnung schon nur den kleineren von beiden Winkeln liefert xD

Re: nicht bijektiver arcus cosinus

Verfasst: Di Mär 05, 2013 2:34 pm
von cloidnerux

Re: nicht bijektiver arcus cosinus

Verfasst: Di Mär 05, 2013 2:40 pm
von Glocke
cloidnerux hat geschrieben:Hilft dir das:
http://www.wolframalpha.com/input/?i=Pl ... 2*Pi%7D%5D
Kannst du mir dazu noch nen Satz oder zwei sagen? :lol:

Re: nicht bijektiver arcus cosinus

Verfasst: Di Mär 05, 2013 2:51 pm
von cloidnerux
Der blaue Graph stellt den Cosinus dar und der Rot/violette den Arcuscosinus des entsprechenden Cosinus wertes. Damit wollte ich egt nur Zeigen, wie sich der Cosinus zum Arcuscosinus verhält. Und damit die Aussage, dass der Arcuscosinus niemals Bijektiv sein kann. Du musst selber anhand der Geometrie unterscheiden, ob du jetzt positive oder negative Winkel hast.
Du musst nun eine Gerade festlegen, anhand derer du überprüfst, ob eine Richtung rechts oder Links davon ist.

Re: nicht bijektiver arcus cosinus

Verfasst: Di Mär 05, 2013 3:00 pm
von Glocke
cloidnerux hat geschrieben:Der blaue Graph stellt den Cosinus dar und der Rot/violette den Arcuscosinus des entsprechenden Cosinus wertes. Damit wollte ich egt nur Zeigen, wie sich der Cosinus zum Arcuscosinus verhält. Und damit die Aussage, dass der Arcuscosinus niemals Bijektiv sein kann. Du musst selber anhand der Geometrie unterscheiden, ob du jetzt positive oder negative Winkel hast.
Okay stimmt xDD Sau ey, ich sollte aufwachen :lol:
cloidnerux hat geschrieben:Du musst nun eine Gerade festlegen, anhand derer du überprüfst, ob eine Richtung rechts oder Links davon ist.
Hab auch schon überlegt, wie ich dem Programm die Drehrichtung klar mache. Wie meinst du das mit der Geraden genau?

Re: drehsinn und arcus cosinus

Verfasst: Di Mär 05, 2013 3:15 pm
von cloidnerux
Wie meinst du das mit der Geraden genau?
Anschaulich.
Um den Drehsinn festzulegen brauchst du ein Referenzsystem, in diesem Fall kann man das durch eine Gerade darstellen, die durch den Mittelpunkt in Blickrichtung verläuft. Daher, der Geradenvektor entspricht der Blickrichtung. Die Gerade brauchst du in deinem Programm nicht, sollte aber helfen sich das ganze vorzustellen.

Mir fällt auch gerade ein, dass du auch mit dem Arcustangens arbeiten kannst. Du Referenzierst alle Punkte Relativ zum Mittelpunkt deiner Figur, bildest dann die beiden Vektoren, normierst diese und berechnest den Winkel Realtiv zum Koordinatensystem. Dann musst du nur die beiden Winkel subtrahieren. Ich glaube, mit der Funktion "atan2" kannst du dir das Normieren sparen.

Re: drehsinn und arcus cosinus

Verfasst: Di Mär 05, 2013 3:22 pm
von Glocke
/EDIT: Jetzt habe ich verstanden was du meinst :) So eine feste Gerade verwende ich effektiv schon; das ist einer der Winkel den ich bei der Berechnung verwende. Allerdings habe ich noch nicht ganz verstanden wie mir das hilft :cry:

Re: drehsinn und arcus cosinus

Verfasst: Di Mär 05, 2013 9:18 pm
von Glocke

Re: drehsinn und arcus cosinus

Verfasst: Di Mär 05, 2013 9:25 pm
von cloidnerux
Darauf wollte ich hinaus^^

Re: drehsinn und arcus cosinus

Verfasst: Mi Mär 06, 2013 9:07 am
von Glocke
im nachhinein macht das auch alles sinn xDD

lg ^^