Math.Atan2 Erträge seltsames Ergebnis?
Erste, meine Mathematik ist nicht stark! Aber ich war die Berechnung der Winkel eines Punktes vom Ursprung (0, 0), (-1, -1).
Dieser Winkel 225° oder 5π/4.
- 5π/4 = 3.9269908169872415480783042290994
- Math.Atan2(-1, -1) = -2.3561944901923448
Vielleicht ist mein Verständnis von Math.Atan2
ist falsch, aber ich dachte, dass es gemeint war, um die Rückkehr der Grad eines Winkels gegeben zwei Punkte auf einem Kreis, dessen Ursprung (0, 0). Was ich vermute ist, was hier passiert ist, dass das Ergebnis von Atan2
ist "gespiegelt", da es auf der negativen Seite der X-Achse...kann das jemand bestätigen und den richtigen Weg, dies zu tun?
Dies ist mein test, der fehlschlägt:
Assert.AreEqual((5 * Math.PI) / 4, Math.Atan2(-1, -1));
Und hier ist mein PointD
Klasse hält, die Punkte X und Y:
public double ToRadians()
{
double radians = Math.Atan2(this.Y, this.X);
return radians;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Annahme richtig ist.
Atan2
gibt ein Ergebnis im Bereich von -pi bis +pi.*, Wenn Sie möchten eine Zahl im Bereich 0 bis 2pi, fügen Sie einfach 2pi, wenn das Ergebnis kleiner als 0 ist.Hinweis: Geltendmachung für die Gleichstellung auf floating-point-Werte, wie dies in der Regel nicht eine gute Idee...
* Für die Zukunft, diese Art von detail wird in der Regel explizit in der Dokumentation. Zum Beispiel: http://msdn.microsoft.com/en-us/library/system.math.atan2.aspx.