1

嘿,我在 Javascript 中创建了一个旋转函数,用于旋转一些 2D 矢量(点)。

函数的 Y 输出按预期工作,但是 X 值输出一些疯狂的数字,谁能指出我逻辑中的底线?

Vector2.prototype.rotate = function(degrees){

    var angle = degrees * TO_RADIANS; //Convert to radians.
    var x =  (this.getX() * Math.cos(angle)) - (this.getY() * Math.sin(angle));
    var y = (this.getX() * Math.sin(angle)) + (this.getY() * Math.cos(angle));
    return new Vector2(x,y);
};

将 Vector(1,0) 输入此函数并旋转 90 度输出 6.someDecimalPlaces e-17; 这显然是不正确的。

然而,输出的 Y 值按预期工作并返回 1。

提前致谢

4

1 回答 1

1

您看到的“6.someDecimalPlaces e-17”是由于 Javascript 对浮点数的处理。您看到的是从二进制浮点转换回十进制时的舍入错误。尽管有一些库试图解决这个问题,但这个问题并不容易解决。

如果你想要四舍五入的数字来进行像素完美的 CSS 操作,最好的办法是四舍五入来自这个函数的数字或将它们转换为整数。

于 2013-11-25T09:29:08.740 回答