2016-01-08 1 views
1

Мне нужно иметь возможность выполнять 2d вращения с помощью lua-script. Я думаю, или, по крайней мере, думал, что знаю, как делать 2d-вращения, а для x это работает, но для y я получаю странное значение.Lua 2d вращение дает wierd выход для 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 

Когда я проверить расчеты на калькуляторе я получаю правильный ответ. Должно быть, что-то кодовое я делаю неправильно.

ответ

0

Добро пожаловать в мир с плавающей точкой.

Когда вы конвертируете 90 градусов в радианы, вы точно не получаете π/2, а что-то совсем близко к нему. Косинус этого угла не точно равен 0, но очень малое число, которое вы видите.

Эта проблема не относится к Lua.

+0

Я вижу. Есть ли способ заставить Луа принять степени в качестве аргумента для cos и sin, что бы в значительной степени решить ее :) – Mengus

+0

Или, может быть, можно было бы округлить значение как-то до пола до 0? – Mengus

+0

неважно, я только что реализовал свои собственные функции cos и sin, и пусть они берут градусы, проблема решена, спасибо за вашу помощь! :) – Mengus

Смежные вопросы