Lua 2d 旋转给出了 y 的奇怪输出

Lua 2d rotation gives wierd output for y

我需要能够使用 lua-脚本执行二维旋转。我认为,或者至少认为我知道如何进行 2d 旋转,并且对于 x 它有效,但对于 y 我得到一个奇怪的值。

代码:

rad = math.rad;
cos = math.cos;
sin = math.sin;

w = 90;

vec = {0, 1};
new_vec = {0, 0};

new_vec[1] = vec[1] * cos(rad(w)) - vec[2] * sin(rad(w));
new_vec[2] = vec[1] * sin(rad(w)) + vec[2] * cos(rad(w));


print("original vector_xy: ", "x= ", vec[1], "y= ", vec[2]);
print("new vector_xy: ", "x= ", new_vec[1], "y= ", new_vec[2]);

输出:

original vector_xy:         x=      0       y=     1
new vector_xy:  x=          -1      y=      6.1232339957368e-017

当我在计算器上测试计算时,我得到了正确答案。一定是代码方面我做错了。

欢迎来到浮点世界。

当您将 90 度转换为弧度时,您得到的不是 π/2,而是非常接近的值。这个角度的余弦值不完全是0,而是你看到的那个非常小的数。

此问题并非 Lua 所特有。