2D евклидовы векторные вращения

У меня есть евклидов вектор a , сидящий в координатах (0, 1) . Я хочу повернуть a на 90 градусов (по часовой стрелке) вокруг начала координат: (0, 0) .

Если я правильно понимаю, как это должно работать, полученный результат Координаты (x, y) после поворота должны быть (1, 0) . Если бы я вместо этого повернул его на 45 градусов (все еще по часовой стрелке), я бы ожидал, что в результате будут координаты (0,707, 0,707) .

theta = deg2rad(angle);

cs = cos(theta);
sn = sin(theta);

x = x * cs - y * sn;
y = x * sn + y * cs;

Используя приведенный выше код, с углом значение 90,0 градусов, результирующие координаты: (- 1, 1) . И я чертовски сбит с толку. Примеры, приведенные в следующих ссылках, наверняка представляют ту же формулу, показанную выше?

Что я сделал не так? Или я неправильно понял, как повернуть вектор?

48
задан deceleratedcaviar 11 July 2013 в 05:10
поделиться