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

标签 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);
};

将 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/

相关文章:

javascript - 如何使用 Angular 8 在互联网重新连接时重新发送失败的 API 请求?

javascript - Three.js 在点击时改变旋转

xcode - 旋转动画 xcode iphone

c# - 创建笛卡尔坐标系 C# Windows 窗体绘图

C# 函数在 JavaScript 中加密

javascript - 如何访问嵌套的 JSON 数据?

javascript - 使用 Javascript 提交表单

javascript - 如何将 x->n y->n 对象顺时针旋转 90°?

c++ - 不正确的极坐标 - 笛卡尔坐标转换。 -0 是什么意思?

java - Java笛卡尔斜率计算错误