Получить положительный или отрицательный угол с 3 баллов

Я вращаю точки вокруг центральной точки в 2D-пространстве. Точки - это центральная точка, старая позиция мыши и новая позиция мыши. Моя функция поворота работает отлично, и я могу идеально рассчитать угол. Но я хочу вычислить отрицательный угол, если пользователь перемещает свою мышь в направлении, которое следует интерпретировать как против часовой стрелки.

Например, перемещение мыши вправо (положительная ось x) должно вращаться по часовой стрелке, если вы находитесь выше (меньше) значения y центральной точки, но оно должно вращаться против часовой стрелки, если вы на самом деле ниже (больше чем) значение у центральной точки.

Вот что у меня есть:

PointF centerPoint;
PointF oldPoint;
PointF newPoint;

double Xc = centerPoint.X;
double Yc = centerPoint.Y;
double Xb = oldPoint.X;
double Yb = oldPoint.Y;
double Xa = newPoint.X;
double Ya = newPoint.Y;

double c2 = (Math.Pow(Xb - Xa, 2) + Math.Pow(Yb - Ya, 2));
double a2 = (Math.Pow(Xb - Xc, 2) + Math.Pow(Yb - Yc, 2));
double b2 = (Math.Pow(Xa - Xc, 2) + Math.Pow(Ya - Yc, 2));

double a = Math.Sqrt(a2);
double b = Math.Sqrt(b2);

double val = (a2 + b2 - c2) / (2 * a * b);
double angle = Math.Acos(val);

Поэтому мне нужен способ сделать угол отрицательным, когда это необходимо, чтобы точки вращались по часовой стрелке или против часовой стрелки, чтобы следовать положению мыши.

Ответы на вопрос(4)

Ваш ответ на вопрос