【问题标题】:Unexpected vector rotation value意外的矢量旋转值
【发布时间】:2015-07-29 04:12:58
【问题描述】:

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

我将其设置为:

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

将 X 坐标 (px) 设置为 6,将 Y 坐标 (py) 设置为 0。

然后我使用旋转矩阵尝试将向量旋转 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

【问题讨论】:

    标签: javascript math vector rotation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多