Möööp
Der Tangens interessiert gar nicht, es wird einmal der arkustangens berechnet und dann ist das nur noch ein Winkel, und der geht schon einmal ganz um den Kreis - also im Intervall 0..2PI oder 0..360°
Also ich weis nicht, was du machst, aber mein Testcode geht:
Code:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
label5.Text = string.Format("X: {0}\t Y: {1}", e.X, e.Y);
var x = e.X - 150;
var y = e.Y - 150;
var Winkel = Math.Atan2(y, x);
label1.Text = (Winkel * 180 / Math.PI).ToString() + " °";
Winkel = Winkel + (2 * Math.PI / 16);
label2.Text = (Winkel * 180 / Math.PI).ToString() + " °";
if (Winkel > 2 * Math.PI)
Winkel = Winkel - 2 * Math.PI;
if (Winkel < 0)
Winkel = Winkel + 2 * Math.PI;
label3.Text = (Winkel * 180 / Math.PI).ToString() + " °";
var Linie = Math.Truncate(Winkel * 8 / (2 * Math.PI));
label4.Text = Linie.ToString();
}
Vergisst du vll. vorher die Koordinaten des Ursprungs abzuziehen?