C++ 修改单位向量的角度

C++ 修改单位向量的角度,c++,vector,trigonometry,angle,C++,Vector,Trigonometry,Angle,我有一个单位向量形式的角度。我需要能够改变这个角度。假设向量V=(x,y)的角度当前为A。如何将角度更改为A+0.2(这只是一个示例,它可以是我正在添加的任何值),而不将向量转换为角度,修改它,然后再次计算适当的向量?使用以下公式逆时针旋转向量: x2 = x * cos(angle) - y * sin(angle); y2 = y * cos(angle) + x * sin(angle); 因此,要将向量V=(x,y)pi旋转一个角度A,您需要执行以下操作: V'=(x*cos(A)-

我有一个单位向量形式的角度。我需要能够改变这个角度。假设向量V=(x,y)的角度当前为A。如何将角度更改为A+0.2(这只是一个示例,它可以是我正在添加的任何值),而不将向量转换为角度,修改它,然后再次计算适当的向量?

使用以下公式逆时针旋转向量:

x2 = x * cos(angle) - y * sin(angle);
y2 = y * cos(angle) + x * sin(angle);

因此,要将向量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);
}

使用以下公式逆时针旋转向量:

因此,要将向量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);
}