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.


Anmelden zum Antworten