Lua 2d旋转在y轴上输出奇怪的结果。

我需要用Lua脚本执行二维旋转。我认为,或者至少我认为我知道如何进行二维旋转,对于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

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

点赞
用户107090
用户107090

欢迎来到浮点运算的世界。

当你把90度转换成弧度时,你不会得到一个精确的π/2,但会得到非常接近的数字。这个角的余弦值不是精确的0,而是一个非常小的数字。

这个问题并不只存在于Lua中。

2016-01-08 02:59:59