Форум » Вопросы и ответы » Можно ли высчиталь радианы с помощью координат? » Ответить
Можно ли высчиталь радианы с помощью координат?
slava98: Я думаю, не мне одному известно, что поворотливость объекта (например, декорации) измеряется в радианах. Мне нужно чтобы если дать функции определенные координаты и, наверное, координаты, например, фонаря, вычислись радианы, которые повернут фонарь на первые координаты. В самом коде ТЗОДА такое должно быть, но копаться в коде и потом преобразовывать в Луа... Для тех, кто не понял, мне нужно, чтобы фонарь поварачивался к определенным координатам.
Ответов - 8
VIRUS: Уууу... Нужно подумать.
VIRUS: Можно по синусу высчитать угол и перевести его в радианы
VIRUS: Или косинусу
-CRUSHER-: Вирус все правильно подметил
VIRUS: Нужно использовать функции арсинуса или аркосинуса, но я смотрел в коде, где они объявлены для луа. Ничего похожего не нашел. Но они должны быть.
VIRUS: Кстати, Пи радиан = 180 градусов Вот как их считать
VIRUS: В очередной раз понял что идиот и все получилось. [pre2]--Разворачивает объект по напралению к другому. VIRUS function func.GetRadian(rorateObjectName, movingObjectName) x1, y1 = position(rorateObjectName) x2, y2 = position(movingObjectName) xCathetus = math.abs(x1 - x2) yCathetus = math.abs(y1 - y2) hypotenuse = math.sqrt((xCathetus * xCathetus) + (yCathetus * yCathetus)) alpha = math.acos(math.max(xCathetus, yCathetus) / hypotenuse) if x2 > x1 and y2 > y1 then if xCathetus > yCathetus then object(rorateObjectName).dir = alpha else object(rorateObjectName).dir = (math.pi/2) - alpha end elseif x2 < x1 and y2 > y1 then if yCathetus > xCathetus then object(rorateObjectName).dir = alpha + (math.pi/2) else object(rorateObjectName).dir = math.pi - alpha end elseif x2 < x1 and y2 < y1 then if xCathetus > yCathetus then object(rorateObjectName).dir = alpha + math.pi else object(rorateObjectName).dir = (math.pi + (math.pi/2)) - alpha end elseif x2 > x1 and y2 < y1 then if yCathetus > xCathetus then object(rorateObjectName).dir = alpha + math.pi + (math.pi/2) else object(rorateObjectName).dir = (math.pi*2) - alpha end end end[/pre2] З.Ы. Нефиг было делать, код раскрасил
slava98: З.Ы. Нефиг было делать, код раскрасил Всё как в NotePad++ =) В очередной раз понял что идиот и все получилось. LoL А вообще, молодец. Хорошо поработал.
полная версия страницы