Я работаю в координатном пространстве экрана, которое отличается от классического координатного пространства X / Y, где мое направление Y идет вниз в положительном, а не вверх.
Я также пытаюсь понять, как сделать так, чтобы круг на моем экране всегда был обращен от центральной точки экрана.
Если центральная точка моего экрана находится в точке x (200) y (300), а точка центра моего круга - в точке x (150) и y (380), то я бы хотел рассчитать угол, в котором круг быть лицом.
На данный момент у меня есть это:
Point centerPoint = new Point(200, 300);
Point middleBottom = new Point(200, 400);
Vector middleVector = new Vector(centerPoint.X - middleBottom.X, centerPoint.Y - middleBottom.Y);
Vector vectorOfCircle = new Vector(centerPoint.X - 150, centerPoint.Y - 400);
middleVector.Normalize();
vectorOfCircle.Normalize();
var angle = Math.Acos(Vector.CrossProduct(vectorOfCircle, middleVector));
Console.WriteLine("Angle: {0}", angle * (180/Math.PI));
Я не понимаю, чего бы я ожидал.
Я бы сказал, что когда я войду в x (150) и y (300) моего круга, я бы ожидал увидеть поворот на 90 градусов, но я не получаю это ... Я получаю 180 !!
Любая помощь здесь будет принята с благодарностью.
Cheers,
Mark