意外的矢量旋转值

时间:2015-05-17 17:38:51

标签: javascript math vector rotation

所以我有一个向量(为学习目的分成两个单独的值)。

我将它设置为:

var px = 6*( Math.cos( originalAngle * (Math.PI/180)));
var py = 6*( Math.sin( originalAngle * (Math.PI/180)));

将X坐标(px)设置为6并将Y坐标(py)设置为0.

然后我使用旋转matix尝试将矢量旋转90度:

var a = 90*(Math.PI/180);

var nx = px*Math.cos(a) - py * Math.sin(a);
var ny = px*Math.sin(a) + py * Math.cos(a);

我希望新坐标为X(nx):0和Y(ny):6。

但我的实际结果是X(nx):3.6739403974420594e-16和Y(ny):Y:6。

所以,我不确定为什么X会返回那个值。

编辑*我的小提琴是here

1 个答案:

答案 0 :(得分:1)

由于计算cos和sin时的近似值,这是一个舍入误差。 3.6739403974420594e-16几乎为0,但是如果你需要获得0,你可以设置一个足够小到零的阈值:

if(nx<1e-10){
    nx=0
}
if(ny<1e-10){
    ny=0
}