Javascript 如何旋转向量?

Javascript 如何旋转向量?,javascript,math,vector,Javascript,Math,Vector,如果我有[1,0]并将其旋转90度=1/2PI弧度,我应该得到[0,-1]。我如何做到这一点 我研究并实施了以下内容: var rotateVector = function(vec, ang) { // not right! return new PVector( vec.x * cos(ang) - vec.y * sin(ang), vec.x * sin(ang) + vec.y * cos(ang) ); }; 但这似乎不起作用

如果我有
[1,0]
并将其旋转
90度=1/2PI弧度
,我应该得到
[0,-1]
。我如何做到这一点

我研究并实施了以下内容:

var rotateVector = function(vec, ang)
{
    // not right!
    return new PVector(
        vec.x * cos(ang) - vec.y * sin(ang),
        vec.x * sin(ang) + vec.y * cos(ang)
    );
};
但这似乎不起作用


不管是度还是弧度,因为几何体保持不变。我现在使用弧度。

您的公式是正确的,但您需要使用弧度表示的角度,而不是度数:

radians = degrees * (Math.PI/180)
如果你想顺时针旋转,注意你的角度是-90度而不是90度。或者,考虑它90,但是将公式改为:

radians = -degrees * (Math.PI/180)
编辑:

根据上次编辑,您可能会得到以下结果:

[6.123233995736766e-17,-1]

这是因为计算机无法存储“无限”数字。但是,正如您所看到的,这个数字非常小,因此可以将其视为
0
。你可以把结果四舍五入

例如:

并使用以下方法进行测试:

rotateVector([1,0], 90)
结果:

[0, -1]

后来我发现
PVector
有一个方法:

你的角度是弧度吗?注意:大多数极坐标系逆时针旋转为正,顺时针旋转为负。
[0, -1]