Использование следующих формул для поворота вектора против часовой стрелки:
, поэтому для поворота вектора 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);
}