У меня есть евклидов вектор 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;
Используя приведенный выше код со значением angle
, равным 90,0 градуса, получаются следующие координаты: (-1, 1)
.
И я так чертовски смущен.
Примеры, приведенные в следующих ссылках, точно соответствуют той же формуле, что и выше?
Что я сделал не так?
Или я неправильно понял, как вращать вектор?