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 所特有。
我需要能够使用 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 所特有。