JS旋转函数输出奇怪的X值

时间:2013-11-25 08:58:20

标签: javascript rotation cartesian-coordinates

嘿,我在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);
};

向此功能输入向量(1,0),旋转90度,输出6.someDecimalPlaces e-17;这显然是不正确的。

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

提前致谢

1 个答案:

答案 0 :(得分:1)

你看到的“6.someDecimalPlaces e-17”是由于Javascript处理浮点数。您所看到的是从二进制浮点数转换回十进制的舍入错误。虽然有些图书馆试图克服这个问题,但是没有简单的解决办法。

如果你想要像素完美CSS副本的舍入数字,你最好的选择是将这个函数的数字四舍五入或者将它们转换为整数。