|
|
|
Канал Игры Мечты: «Расчет точки упреждения» |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Есть кораблег.
Есть у него скорость (вектор)
Есть скорость полета снаряда (или определенное число, обозначающее, что это луч, а не снаряд)
Как найти в мировых (та хоть в любых) координатах точку, если в которую выстрелить, то можно попасть в этот объект, в данном случае - это кораблик.
Я додумал только
________________________
(скорость+позиция корабля)*скорость пули
но как-то не так..
_________________ MOV topka, C++ |
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Матрицу расположения помножить на кватернион движения и время... Я думаю... Не пинайте...
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
himem : |
кватернион движения
|
кватернион описывает поворот, а не движение..
короче ладно.
_________________ MOV topka, C++ |
|
|
Vladimir Kladov
218 EGP
    Репутация: 84 Сообщения: 80 Откуда: Novosibirsk, Russia Зарегистрирован: 11.04.2006
 |
|
Я на вас что-то не пойму. Это же простая (ну, не очень сложная) система уравнений. Исходные координаты пули + вектор скорости пули умножить на время полета t, с одной стороны. Исходные координаты цели + вектор скорости корабля-цели умножить на время t, с другой стороны. Вектор скорости корабля известен (Xvk, Yvk, Zvk), позиции корабля (Xk, Yk, Zk) и пули (Xp, Yp, Zp) известны.
Xk + t * Xvk = Xp + t * Xvp (то же для Y и Z).
Добавляется еще одно уравнение - скорость полета пули (тоже вектор) - по величине либо константа, либо константа + вектор скорости корабля, который стреляет. Особо точное решение искать не стоит, корабль, по которому целятся, может ведь и повернуть, и затормозить, и ускориться.
Я бы сделал (да и сделаю) проще. Есть такая штука - обратная связь. Допустим, стреляем мы трассирующей очередью. Делаем небольшое упреждение, решая уравнения, в котором t делаем величиной известной (например, подобрать линейную функцию, которая возвращает подходящее t в зависимости от дистанции до цели). И начинаем палить. Когда пуля уходит на большую дистанцию, чем до цели (т.е. промахнулась, или попала), она "сообщает", на сколько разошлась с целью. По результату 2х таких сообщений уже можно корректировать огонь. Идея ясна по-моему, хотя работает эффективно только на близкой дистанции - пока t мало.
Трассирующие очереди выглядят красиво. А лазер было проще рисовать (на спеке, как щас помню). Но если по-честному, то луч лазера вообще-то не видно со стороны, если только он не проходит через газовую среду, да еще и луч лазера должен быть видимым (а видимый свет не годится в качестве оружия - неэффективно, разве только если ослеплять пилота). Реально трассирующими снарядами тоже стрелять - палка о двух концах. Тот, по кому стреляют - предупрежден, и может уклониться, более того, видит, кто по нему стреляет. Нынче основное оружие (воздушного боя) это все-таки ракеты. Системы вооружений будущего это вообще особый разговор. Кстати, можно посмотреть в сторону старой доброй игрушки, Master Of Orion (кстати, огнестрельное оружие там вообще не котируется). Ладно, это я уклонился.
|
|
|
TpuCTaH
63 EGP
 Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006
 |
|
Извините что влезу. Но в том же оде, судя по инструкции, можно такое провернуть. Корабль - обект, Снаряд обект. А дальше детект колизион(всмысле обрабока столкновений). В оде наскоко помню даже есть тип обекта луч очень удобно наверное использовать лучевое оружие в таком ключе. Как это реализоват не спрашивайте не знаю. Инструкцию 1 раз бегло прочитал .
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Нее. Тут малость по другому, хотя это тоже пойдет, но все же..
Есть 2 корабля. У каждого есть позиция и скорость.
Нужно найти в данный момент точку в мировом пространстве, на которую нужно смотреть, чтоб при выстреле (тут еще и скорость полета пули) пуля попала в корабль.
Т.е. в данный момент - без t (времени).
_________________ MOV topka, C++ |
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
Vladimir Kladov правильно сказал, решаешь это уровнение, получаешь t. Подставляешь его, получаешь координаты.
|
|
|
Rattlemouse
85 EGP
 Репутация: 2 Сообщения: 74 Откуда: Москва Зарегистрирован: 03.11.2003
 |
|
Совет: в сети есть билеты и ответы по экзамену военной кафедры ПВО.
Там есть вопрос про методы наведения ракет на цель и методы слежения.
Оттуда можно достать все формулы.
И с постоянным пересчтом точки встречи и упреждающие скорость и просто угловое упреждение.
_________________ мы все умрём...
и нажмём на Load ;) |
|
|
Vladimir Kladov
218 EGP
    Репутация: 84 Сообщения: 80 Откуда: Novosibirsk, Russia Зарегистрирован: 11.04.2006
 |
|
Смотреть? У вас, что пушка намертво приварена к кораблю. т.е. опять делаете как все. А что, целиться игрок тоже будет на глазок? Очередной тир (так сказать). Ну да, так интереснее, иначе играть никто не будет... я эти доводы уже слышал. Даже в конце прошлого века в воздушном бою использовалось самонаведение, и не только для ракет, но и для пушек. А сейчас вообще разрабатывают - не поверите - самонаводящиеся ПУЛИ для стрельбы ручным оружием.
|
|
|
TpuCTaH
63 EGP
 Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006
 |
|
Ну если пушка уж очень большая ~50% массы корабля? деваться некуда . Всеравно основное оружие - ракеты или лучевое будет скорее всего.
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Pavlon
80 EGP
 Репутация: 15 Сообщения: 107 Откуда: Киев Зарегистрирован: 18.06.2006
 |
|
Ну так всё правильно. Если пушка небольшая, да ещё прикупил сервоприводов, да ещё боевой комп по карману, то всё будет наводится автоматически(если хочешь, конечно), при этом алгоритм наведения уже описан выше. Но ведь можно придумать и спец бомбы выводящие всю "тонкую" электронику из строя! Тогда только в ручную... ну а вообще надо покрепче подумать над этими бомбами..
А вот у меня возник вопрос (не по теме, правда, но что-то родственное есть). Как с автопилотом быть? Если физика настоящая, то это довольно нехилая задача... Или я ошибаюсь?
|
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
Jurec : |
Нужно найти в данный момент точку в мировом пространстве, на которую нужно смотреть, чтоб при выстреле (тут еще и скорость полета пули) пуля попала в корабль.
|
это что же, подсказка близоруким стрелкам чтоле делается? а как же мозг натренированный на виртуальных игрищах?
это всеравно что играть в шахматы с компутером и спрашивать про лучший ход в данный момент. не понимаю.
но если надо, то система уравнений уже написана выше.
есть другой вариант, вероятностный конус. берётся направление движения в данный момент и рисуется конус с вершиной в центре масс корабля противника (ведь относительно него и будет поворот или изменение направления движения), телесный угол конуса определяется относительной величиной включающей в себя отношение скорости проивника к собственной скорости (я бы рекомендовал W = 2*пи*[1-1/(1+|V1/V2|)] функция с минимумом в точке когда выражение V1/V2 = 0, что соответствует либо нулевой V1 - абсолютная скорость объекта, либо бесконечной V2 - собственная абсолютная скорость; кроме того на бесконечностях стремится к значению 1), можно ещё ужать конус до некой боле компактной фигуры, но для этого надо знать характерные направления для маневра противника, что несомнено определяется расположением основных и вспомогательных двигателей. вот. в общих чертах.
|
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
Цитата: |
это что же, подсказка близоруким стрелкам чтоле делается? а как же мозг натренированный на виртуальных игрищах?
|
Компьютеру-то тоже надо в игрока стрелять
|
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
Aerton : |
Цитата: |
это что же, подсказка близоруким стрелкам чтоле делается? а как же мозг натренированный на виртуальных игрищах?
|
Компьютеру-то тоже надо в игрока стрелять
|
вот ещё. компутерам разрил бы идти только на таран, тем более что у них это переодически получается , хоть и невольно.
|
|
|
TpuCTaH
63 EGP
 Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006
 |
|
Jurec : |
himem : |
кватернион движения
|
кватернион описывает поворот, а не движение..
короче ладно.
|
Он описывает точное положение в пространстве обекта (где находиться и куда повернут)
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Vladimir Kladov : |
Смотреть? У вас, что пушка намертво приварена к кораблю. т.е. опять делаете как все...
|
Эээ.. это всмысле отсутствие турелей? Так почему же. Будет и то и то. Просто "Компьютеру-то тоже надо в игрока стрелять"
_________________ MOV topka, C++ |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
тааак..
Бейте меня как хотите, говорите что хотитие, но я не могу решить уравнение, в котором ДВА НЕИЗВЕСТНЫХ члена!!!
Vladimir Kladov : |
Xk + t * Xvk = Xp + t * Xvp
|
t - неизвестно
Xvp - тоже
что находить и куда подставлять в этом случае я просто не знаю
З.Ы. Если не сложно - напишите полную формулу, плизз..
_________________ MOV topka, C++ |
|
|
Vladimir Kladov
218 EGP
    Репутация: 84 Сообщения: 80 Откуда: Novosibirsk, Russia Зарегистрирован: 11.04.2006
 |
|
Ну почему же t -то неизвестно? Дистанция до объекта есть, скорость полета пули есть, время узнать - тьфу, а не задача. Единственное, что тут как бы не так, это то, что дистанция - известна на сей момент, а надо на тот момент, когда пуля долетит, но тут как раз все равно надо вводить допуск. Типа дистанция меняется от d1 до d2, где d1=d-Dd, d2=d+Dd, и отсуда как бы промежуток решений появляется от t1 до t2. Кораблег же и повернуть может, и ускориться и замедлиться, про конус вероятного движения уже говорили тут...
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
тьфу, блин, а меня
Aerton : |
решаешь это уровнение, получаешь t
|
сбило просто
ссори
_________________ MOV topka, C++ |
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
Я уже не помню, как я тогда считал. но t на момент попадания высчитывается без проблем.
Как было написано выше:
Xk + t * Xvk = Xp + t * Xvp
Yk + t * Yvk = Yp + t * Yvp
Zk + t * Zvk = Zp + t * Zvp
3 уравнения, 4 неизвестных.
Но (Xvp Yvp Zvp) в этом уравнение - это только направление полёта пули, а её скорость нам известна по параметрам оружия.
(Xvp^2 + Yvp^2 + Zvp^2) ^ 0.5 = Vp
Решив эту систему можно получить и направление стрельбы и время полёта.
|
|
|
|
|
|
Канал Игры Мечты: «Расчет точки упреждения» |
|