Форум » Вопросы и ответы » Можно ли высчиталь радианы с помощью координат? » Ответить

Можно ли высчиталь радианы с помощью координат?

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 А вообще, молодец. Хорошо поработал.



полная версия страницы