嘿,我在 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。
提前致谢
最佳答案
您看到的“6.someDecimalPlaces e-17”是由于 Javascript 对 float 的处理造成的。您看到的是从二进制浮点转换回十进制时的舍入错误。尽管有一些库试图解决这个问题,但没有简单的解决办法。
如果您想要舍入数字以进行像素完美的 CSS 操作,您最好的选择是将来自此函数的数字舍入或将它们转换为整数。
关于javascript - JS旋转函数输出奇怪的X值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188328/