Problem mit atan2(0,-1)
-
Hallo Zusammen,
ich habe ein Ärgernis mit atan2 .
Ich berechne eine Positionsdifferenz aus :
deltax = EndX - StartX;
deltaY = EndY - StartY;deltaPhi = atan2 ( deltaY, deltaX);
Wenn jedoch deltaY = 0 ist, erhalte ich eine Winkeldiff von -PI, wenn die Wert für deltaX < 0 sind.
Laut Def. von atan2 ist das ja auch korrekt.Wie errechne ich den generelle die Winkeldiff, wenn ich
bei eine kartesichen Karte von Punkt 1 nach Punkt 2 springe und hierbei
aber z.B. eine gerade verwende. Gleiches X oder gleiches Y zwischen den Koordinaten.z.B. Act. Pos: X= 41 Y=194 Ausrichtung = 0 Grad
Ziel Pos.: X= 40 Y=194
Gruss
-
Wo ist dein Ärgernis? Laut deiner Aussage scheint doch alles zu funktionieren.
Versuche mal bitte ein bisschen auf deine Rechtschreibung zu achten. Du meinst
sicherlich deltaY = 0 und -PI, oder? Glaube ich, wenn ich mir den Titel
so anschaue.Meinst du den Winkel zwischen x-Achse und dem Vektor, der von den beiden
Punkten bestimmt wird?
-
Ja
-
Dann machst du alles richtig.
-
Hmm. Dann ist der Fehler woanders.
-
Hallo Zusammen,
ich brauche nochmals einen Tip, da ich bis jetzt nie viel mit Winkel gerechnet habe.
Mein Problem hat sich in der Darstellung des Winkel ergeben.
Interne habe ich bis jetzt immer die Winkel im Bereich von 0-> 2PI verarbeitet,
jetzt gibt mir aber ATAN2 einen Winkel im Bereich -PI -> +PI heraus.Wie berechnen / speichert man am besten Winkelergebnis ?
-PI -> +PI oder 0 -> 2PI
Gruss
-
Edit: Quatsch geschrieben
Du kannst natürlich zu jedem Ergebnis 2Pi dazurechnen oder abziehen, das ändert nichts, wenn es sich um Richtungen handelt.
0 = 2Pi
-Pi = Pi usw.Wenn du also einen Wertebereich von 0 bis 2Pi haben möchtest, addiere bei negativem Ergebnis einfach 2Pi dazu.