Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Геометрический вопрос (http://www.flasher.ru/forum/showthread.php?t=198002)

australian incognito 17.04.2013 13:43

Геометрический вопрос
 
Вложений: 1
Друзья, обращаюсь к вас с такой вот интересной задачей (см. прикрепленную картинку). Есть цель, есть пушка. Цель бегает за курсором мыши, пушка постоянно следит за целью в автоматическом режиме. Мне с легкостью удалось реализовать слежение пушки за целью по рис. 1. Но проблема в том, что у пушки оружие смещено относительно центра, и стреляет прямолинейно по отрезку CF (рис. 1). Соответственно пуля всегда проходит мимо цели. Пытаюсь вычислить угол w (рис. 2), на который нужно доворачивать пушку, но что-то все мои алгоритмы не подходят. В ходе "исследования" понял, что чем дальше цель от пушки, тем ближе угол w к углу a, а чем ближе цель к пушке, тем более похож угол w на угол a/2. Можно было бы на этом и остановится, но на средних дальностях идет достаточно серьезная погрешность.

Может найдется кто-то, кто подскажет, как все это посчитать правильно?

Заранее всем спасибо, буду благодарен любой наводке на правильный алгоритм.

samana 17.04.2013 14:17

По идее, вы можете переводить точку D, в глобальные координаты и уже их использовать при расчёте поворота пушки, вместо координат самой пушки.

mikhailk 17.04.2013 14:18

Вложений: 1
Я так понимаю, задача сводится к нахождению двух углов (около вершины С), которые я пометил одной и двумя линиями. Все треугольники прямоугольные, часть данных известна (кстати, а какие размеры/углы известны?). Вообще, насколько я помню, в решении таких задач правильнле решение прямо вытекает из правильного чертежа. Т.е., чертить до тех пор, пока решение не станет очевидным. :)

australian incognito 17.04.2013 14:33

Еще немного уточнений: ось вращения пушки - точка А. Точка вылета пули - С. Известные отрезки: АВ, АЕ, АD, т.е. по сути любые отрезки с рис. 1 известны.

AlexLucas 17.04.2013 14:40

Тут похожая тема, только там персонаж поворачивается за курсором, ну а у вас цель, разницы никакой.
Единственное что вам придётся учитывать это расстояние между A и C (которая в том примере не учитывается, и если подвести близко курсор, видно что дуло не направлено прямо на него).

australian incognito 17.04.2013 14:59

Цитата:

Сообщение от AlexLucas (Сообщение 1130193)
Тут похожая тема, только там персонаж поворачивается за курсором, ну а у вас цель, разницы никакой.
Единственное что вам придётся учитывать это расстояние между A и C (которая в том примере не учитывается, и если подвести близко курсор, видно что дуло не направлено прямо на него).

В приведенном примере как раз описан случай на рис. 1. А как я писал выше - мне нужно приблизиться к рис. 2.

chamele0n 17.04.2013 15:11

а если сделать гланым обьектом оружие, а саму пушку добавить в обьект оружия, тогда слежение будет осущетвлять не пушка, а оружие
тогда и вычислять ничего не нужно будет
хотя придется замарочиться с поворотом относительно другого центра
....
сделай танк ^_^

australian incognito 17.04.2013 15:22

Цитата:

Сообщение от chamele0n (Сообщение 1130200)
а если сделать гланым обьектом оружие, а саму пушку добавить в обьект оружия, тогда слежение будет осущетвлять не пушка, а оружие
тогда и вычислять ничего не нужно будет
хотя придется замарочиться с поворотом относительно другого центра
....
сделай танк ^_^

Это не вариант

mikhailk 17.04.2013 15:32

Вложений: 1
Может я чего-то упустил, но...
Гипотенузу и катет зеленого треугольника мы знаем, значит можем найти угол.

Собственно, чего это я, можно ограничиться непосредственно треугольником AED, нет?

samana 17.04.2013 15:39

Простите, а почему не подошел мой вариант (2 пост)? По идее ведь просчёты минимальны будут.


Часовой пояс GMT +4, время: 00:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.