嘿,我在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.
提前致谢
答案 0 :(得分:1)
你看到的“6.someDecimalPlaces e-17”是由于Javascript处理浮点数。您所看到的是从二进制浮点数转换回十进制的舍入错误。虽然有些图书馆试图克服这个问题,但是没有简单的解决办法。
如果你想要像素完美CSS副本的舍入数字,你最好的选择是将这个函数的数字四舍五入或者将它们转换为整数。