Как повернуть Vector2? - PullRequest
       3

Как повернуть Vector2?

2 голосов
/ 01 апреля 2011


Я пытаюсь повернуть Vector2, но ничего не получается.
Я пробовал следующее -> не работает:

x' = cos(angle)*x - sin(angle)*y & y' = sin(angle)*x + cos(angle)*y

Я пытался использовать матрицу вращения -> не работал

Что я делаю не так? : /

angle = MathHelper.Pi;
direction.X = (int)((direction.X) * Math.Cos(angle) - direction.Y * Math.Sin(angle));
direction.Y = (int)((direction.X) * Math.Sin(angle) + direction.Y * Math.Cos(angle));

float angle = MathHelper.PiOver2;
Vector2 dir = new Vector2(direction.X, direction.Y);
Vector2.Transform(dir, Matrix.CreateRotationX(angle));
direction = new Point((int)dir.X, (int)dir.Y);

Ответы [ 2 ]

10 голосов
/ 01 апреля 2011

Vector2.Transform () возвращает результат, а не применяет изменения на месте.

var transformed = Vector2.Transform(dir, Matrix.CreateRotationX(angle)); direction = new Point((int)dir.X, (int)dir.Y);
0 голосов
/ 01 апреля 2011

Первый метод, который вы написали, должен работать, как показано здесь: http://www.oocities.org/davidvwilliamson/rotpoint.jpg

Не забудьте сохранить исходные значения и использовать их для определения новых значений, а не использовать новый xзначение для расчета у.Или храните продукты в отдельных переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...