Hallo Harald!
Leider kann ich das Problem nach wie vor nicht reproduzieren. Ich habe mal dein Wertepaar verwendet, nämlich folgendermaßen (very quick and very dirty...
):
Code:
Dim X As Single
Dim Y As Single
Dim W As Single
Dim Ww As Single
X = 0.2951
Y = 0.0195
W = Atn2(y , X)
Ww = Rad2deg(w)
Print W
Print Ww
Print
X = -0.2951
Y = 0.0195
W = Atn2(y , X)
Ww = Rad2deg(w)
Print W
Print Ww
Print
X = 0.2951
Y = -0.0195
W = Atn2(y , X)
Ww = Rad2deg(w)
Print W
Print Ww
Print
X = -0.2951
Y = -0.0195
W = Atn2(y , X)
Ww = Rad2deg(w)
Print W
Print Ww
Print
End
ich bekomme dann als Ausgabe
Code:
0.065983471
3.780575748
3.075609442
176.219436644
-0.065983471
-3.780575748
-3.075609442
-176.219436644
Wenn ich das Ganze genauso mit Matlab mache, bekomme ich
Code:
0.0660
3.7806
3.0756
176.2194
-0.0660
-3.7806
-3.0756
-176.2194
M. a. W. das Gleiche! (Habe mein Matlab so eingestellt, dass die Konsolenausgabe auf vier Stellen nach dem Komma gerundet ist.)
Wenn man sich das jetzt nochmal überlegt, macht das auch Sinn:
Das erste Wertepaar entspricht einem Punkt im ersten Quadranten (rechts oben, x>0; y>0), im Bereich von 0 bis pi/2 (0 - 90°). Weil der y-Wert klein (0.0195) ist, nah an der x-Achse. Das Ergebnis 3.780575748(°) passt also.
Gleichermaßen für den zweiten Quadranten (oben links, x<0; y>0), Bereich von pi/2 bis pi (90°-180°). Der Wert muss immernoch nahe an der x-Achse liegen (kleiner y-Wert), jetzt aber auf der anderen Seite, also nah an 180°. Ergebnis ist 176.219436644(°), passt also auch.
Für den dritten Quadranten (links unten, x<0; y<0), Bereich -pi bis -pi/2 (-180° bis -90°) liegt der Punkt immernoch nahe an der x-Achse, also nahe an -180°. Ergebnis ist -176.219436644(°), passt also auch (Achtung: der Wert wird in dem Bascom Code als letztes berechnet).
Bleibt noch der vierte Quadrant (rechts unten, x>0; y<0), der von -pi/2 bis 0 (-90° bis 0°) läuft. Der Punkt muss wieder nah an der x-Achse, also nahe an 0° aber eben im Negativen liegen. Ergebnis ist -3.780575748(°). Treffer.
Also so weit ich sehen kann, passt das bei mir immernoch alles. Und: ich mach schon öfters mal Mist, Matlab aber nie. Und Matlab und ich sind uns hier (ausnahmsweise) mal einig 
Ich habe das Ganze übrigens nur mit dem Bascom Simulator getestet. Allerdings verwende ich den atn2 häufig, natürlich dann auf "echter" Hardware (inverse Kinematik bei meinem Hexapoden und Deltaroboter zB), ich habe noch nie Probleme damit gehabt...
Gruß
Malte
P.S.: Ah, sorry, jetzt habe ich deinen x-Wert als y verwendet und deinen y-Wert als x. Ändert aber an der Argumentation nichts...
Für x = 0.0195 und y = 0.2951 (deine Werte) sagt Bascom bei mir übrigens 86.219429015(°)
Lesezeichen