Изменение угла единичного вектора - PullRequest
1 голос
/ 15 мая 2011

У меня есть угол в виде единичного вектора. Мне нужно иметь возможность изменить этот угол. Скажем, угол вектора V = (x, y) в настоящее время равен А. Как бы я изменил угол на A + 0.2 (это всего лишь пример, это может быть любое добавляемое мной значение) без преобразования вектора под углом, изменив его, а затем снова вычислив соответствующий вектор?

Ответы [ 2 ]

5 голосов
/ 15 мая 2011

Использование следующих формул для поворота вектора против часовой стрелки:

enter image description here

, поэтому для поворота вектора V = (x, y) pi на угол A вы бы сделали следующее:

V '= (x * cos (A) - y * sin (A), x * sin (A) + y * cos (A))

или с кодом:

vec2 rotateVec2(const vec2 &vec, float angle)
{
    float newX = vec.x * cos(angle) - vec.y * sin(angle);
    float newY = vec.y * sin(angle) + vec.y * cos(angle);
    return vec2(newX, newY);
}
1 голос
/ 15 мая 2011
x2 = x * cos(angle) - y * sin(angle);
y2 = y * cos(angle) + x * sin(angle);
...