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]