|
-16 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 232
|
|
Зависимость угла поворота объекта от его скорости09.04.2020, 07:27. Показов 10037. Ответов 195
Метки нет (Все метки)
Все здравствуйте.
Мне нужна помощь в таком вопросе. У меня есть самонаводящаяся ракета, она летит -ищет противника, когда находит - меняет направление в строну найденного противника. Вот и вопрос - меняет направление она резко, а я хочу понять принцип, как можно менять направление полета плавно. Сам полет происходит по схеме: в таймере толкаю ракету в первоначальном направлении вектора(прицел), с тиком 0.1 сек. в полете (в цикле) идет поиск ближайших противников(находящихся в пределах прямой видимости). при обнаружении противника задаю новый вектор до найденной цели, и соответственно ракета движется уже по этому вектору. Я понимаю так, каждый тик таймера ракета перемещается на то расстояние, что составляет длинна этого вектора. Вектор нормализую, что бы иметь возможность управлять событиями(типа столкновений и т.д.)и нормализованному задаю скорость. Полет происходит с этой скоростью. Может быть при обнаружении противника нужно, для снижения скорости, получить разность векторов направлений(старого и нового), этакую дельту, и в зависимости от этого менять скорость, можно эти данные, примерно, получить экспериментальным путем, забить их в массив и потом оттуда получать - это самый быстродействующий способ будет по моему. Мне бы сам принцип понять. Много перегуглил - так ничего и не понял, только запутался еще больше. Может быть есть такие, кто все это прошел, и сможет "на пальцах" объяснить принцип работы кода. Просьба у меня такая, не нужны формулы(их еще нужно в код перевести, а что бы перевести, нужно их понять)я их уже насмотрелся, нужен сам принцип.
0
|
|
| 09.04.2020, 07:27 | |
|
Ответы с готовыми решениями:
195
Найти зависимость угловой скорости от угла поворота Найти зависимость от времени угла α между векторами скорости и ускорения , его величину в момент времени t Взаимозависимость угла поворота и угловой скорости |
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 11.04.2020, 12:04 | ||
|
w=arcsin(((K*vA)/vB)*sin(q)) Тогда при K=1 будет “параллельное сближение” K=0.1 будет примерно “прямое наведение” K=0.3 будет примерно “кривая погони” или K=0.3 до 1 будет “наведение с упреждением” Найти место встречи двух точек Fulcrum_013, там полный бардак. Так? Линия визирования,Line-of-Sight, LOS, straight line between the missile and the target Vt //вектор скорости target Vm //вектор скорости missle Vr=Vt-Vm // скорость цели относительно ракеты Rt //вектор target Rm //вектор missle R=Rt-Rm // дальность от ракеты до цели rotVec //rotation vector, вектор вращения линии визирования rotVec =cross(R,Vr)/dot(R,R) N //proportionality constant generally having an integer value 3-5 a=N*cross(Vr, rotVec) Lambda, L это угол поворота? L=a/(N*V) Где формула для V? гугл перевел “скорость закрытия” что это хз. Нет формулы для него.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 11.04.2020, 14:17 | ||||
|
Если подать производную угла визирования по времени то будет параллельное сближение. Коэффциент по факту задает только шаг поиска. При слишком большом коэффициенте будет большая ошибка в результате - т.е. будет слишком большая амплитуда дрожания курса относительно заданного. При слишком малом слишком медленный поиск. Добавлено через 2 минуты Угол визирования - это угол между вектором курса (скорости) ракеты и линией визирования цели. Т.е. суть - если мы идем в точку упреждения то все треугольники подобны. У подобных треугольников углы равны. Соответственно проверяем равность углов в двух последовательных треугольниках. Если углы не равны поворачиваем пока не получим равный угол в последовательных фреймах. Добавлено через 5 минут
0
|
||||
|
фрилансер
6505 / 5750 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
|
|
| 11.04.2020, 14:21 | |
|
мне кажется, для игры можно сильно упростить теорию: берём, так сказать, "апекс" ракеты на плоскости, перпендикулярной вектору движения ракеты. Камера находится на конце ракеты, между камерой и плоскостью некое расстояние (расстояние будет влиять на дискретность управления) На эту плоскость проецируется положение, вектор скорости и ускорения цели. Далее задача сводится к тому, чтобы совместить на этой плоскости (отвязались от 3D) апекс с точкой цели.
Вот тут можно начинать играться с обратной связью. На вход узла подаётся расстояние между апексом и точкой цели, подаётся проекция скорости и ускорения цели. На выходе - нужное направление движения апекса по плоскости. берём нужное направление, преобразуем в угол, поворачиваем вектор движения. Обратная связь замыкается
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 11.04.2020, 14:24 | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 11.04.2020, 14:31 | ||
|
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 11.04.2020, 14:39 | ||
|
Напишите тогда правильные все формулы. Там 3 варианта поиска “a” по ссылке хз зачем. У меня не очень английский.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 11.04.2020, 14:53 | |
|
SightAngle = atan2(v1 % s, v * s )
где v - нормализованный вектор скорости ракеты, s - нормализованный вектор визировани цели из точки в которой находится ракета. % -векторное произведение, * - скалярное. вычислили и запомнили к примеру как PrewSightAngle следующий фрейм SightAngle = atan2(v % s, v * s ) RotationAngle = c * (SightAngle - PrewSightAngle) PrewSightAngle = SightAngle и повторяем до победного конца в каждом фрейме. v и s естественно берем в текущем фрейме. т.е. s = Norm(TargetPos-MissilePos) в текущем фрейме v - ну то что получили в результате поворота в предыдущем.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 11.04.2020, 15:47 | ||
|
А где все обозначения и формулы из ссылки? Там бред? https://en.wikipedia.org/wiki/... navigation
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 11.04.2020, 15:56 | |||
|
Для пассивной или полуактивной ГСН эти данные неизвестны так что пользуется обычная регуляция с постоянным коэффициентом. При этом они там вычисляют дополнительное ускорение которое надо придать ракете а не угол поворота.
0
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||||
| 11.04.2020, 16:12 | |||||
|
Там можно получить все. Главное чтобы работало. Почему не взять сложные формулы по ссылке? Вот захочет простой смертный сделать мелкую формулу для ракеты в игре…заходит по ссылке на вики а там мрак =)). Как заставить работать формулы? Что не хватает? Какую формулу расчета “а” лучше брать?
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 11.04.2020, 16:26 | ||
|
Ну и вполне логично сначала сделать с постоянным коэфициентом потом усложнять путем добавления вычисления коэффициента.
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 11.04.2020, 17:07 | |
|
Т.е. там просто заумные формулы части которых просто не работают сами? Но я не видел там никаких параметров управляемых со стороны. Вроде все из текущих координат цели \ ракеты. А как анализируют если цель начинает зигзаги? Может есть что-то без 100 этажного матана сильно упрощенно для игр?
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 11.04.2020, 17:10 | |
|
Excalibur921, Там просто формулы для другого исполнительного механизма. Тяжелые ракеты управляются газовыми рулями/отклонением вектора тяги поэтому там на выходе вектор ускорения нужен которое приведет к нужному повороту вектора курса а не сам угол поворота.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 11.04.2020, 17:13 | |
|
А вообще есть некие общепринятые виды траектории для тестирования насколько хороши алгоритмы наведения? Например траектории цели сделать спираль с переменным радиусом и мелким шумом. Может есть что-то готовое? Или более сложную траекторию цели как функцию от например расстояния до ракеты или формы траектории подлетающей ракеты или угла атаки если анализировать сферу вокруг цели? Что-то не сильно научное не с конструкторских бюро =)).
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 11.04.2020, 17:28 | |
|
Excalibur921, Если и есть то очень разные для разных ракет.
К примеру ранние ракеты ближнего боя пускались только в заднюю полусферу и там были одни траектории. При этом время полета такое что цель в общем то особо сманеврировать не успевает - он за это время только часть полной окружности проходит. Потом появились всеракурсные ракеты ближнего боя но основное применение все равно на кругу в заднюю полусферу. Для дальних ракет там все совсем по другому. У нее обычно много алгоритмов наведения используемых на разных дистанциях. В том числе радиокомандный и инерциальный вернее их комбинация - ракета вообще ничего не знает о цели и идет в последнюю известную позицию, носитель по данным своего радара корректирует точку. В том числе и наведение на источник активной помехи. Т.е. на дальней дистанции ракета просто так или иначе идет в зону цели с погрешностью плюс-минус лапоть (ну километров 10-15) там уже когда датчик видит цель включается пропорциональная навигация. При этом многие ракеты по пути создают запас высоты над целью. Сверху можно атаковать за счет разницы в потенциальной энергии.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 11.04.2020, 17:58 | |
|
Похоже где-то ошибка. Т1 по идее не должен гулять от изменения направления полета R (Rocket).
OldsAng=0 OldsAng = sAng // не скоприровано sAng в OldsAng, начальный фрейм. вектор T1=поворот вектора T вокруг вектора M на угол -RotAng vecSpeedM // вектор скорости missle normVecSpeedM // нормализованный vecSpeedM vecTM //вектор vecT минус vecM normVecTM // нормализованный vecTM a=cross(normVecSpeedM,normVecTM) b=dot(normVecSpeedM,normVecTM) sAng = atan2(a,b) k=1 // какие пределы? целое? RotAng = k * (sAng - OldsAng )
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 11.04.2020, 18:04 | ||
|
Excalibur921, При этом эффективность траектории понятие абсолютно разное для разных типов БЧ. Для осколочной БЧ углы и т.д. без разницы - достаточно войти в зону поражения. Для стержневых в общем то важна возможность доворота на заданный угол на терминальном этапе - это по большому счету летающая 75 и более миллиметров однозарядная пушка. А соответственно должна в точку упреждения навести болванку которая летит с другой скоростью. Причем вот этот момент настолько сложен что как минимум до 2000-х американские ракеты со стержневой БЧ атаковали только строго с 6 или с 12 часов и против них был эффективн манер "3 или 9" - т.е. держать ближайшую ракету на 90 градусов от своего курса
Добавлено через 4 минуты
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 11.04.2020, 21:31 | ||
|
k=1 OldAng=0 "a" нормализован вектор скорости missle "c" нормализован вектор "b" "v" вектор скорости цели Ang= k * (atan2(Dot(a,c),Cross(a,c)) - OldAng) Поворот T вокруг M по часовой дает точку A новое направление ракеты.
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 12.04.2020, 09:21 | |
|
Где ошибка?
ССW против часовой, по часовой CW ang=atan2(Dot(a,b),Cross(a,b))
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 12.04.2020, 11:46 | |||
|
Добавил коэф. k в формулу из книги "Самонаведение ракет Куркоткин" Называется там "метод наведения с постоянным углом упреждения" стр 25 похоже если просто считать упреждение в каждом кадре то метод станет "метод наведения с непрерывным упреждением". vM>vT похоже это обязательное условие работы формулы, вполне логичное. Т.к. если vM<=vT то лучший курс M это параллельный T или включить алгоритм “прямое наведение” vT // скорость T vM // скорость M q // угол между линией визирования и вектором скорости T k // коэф. задает форму кривой и сам алгоритм наведения k=0 “прямое наведение” k от 0 до 1 дальность упреждающей точки встречи. k=1 номинальное значение. ang=k*arcsin((vT/vM)*sin(q)) Крутим точку T вокруг M на угол ang это и даст направление ракеты(красная стрелка). Как усложнение алгоритма наведения можно менять коэф. k если анализировать поведение цели. Например цель начинает двигаться зигзагами (противоракетные маневры ) или большая шероховатость ее траектории тогда ракету при k=1 должно сильно мотать в стороны. Можно просто уменьшить дальность предсказания меcта удара ракеты уменьшив k. Как еще более сложный вариант станция РЛС должна анализировать траекторию цели и характер ее маневров, на основе этого аппроксимировать точку куда лучше всего лететь ракете наверно это уже слишком для игры.Но наверно никто не скажет формулы да и наверно уже заумно для игры. Даже в книгах по самонаведению ракет не встречал экстраполяции по 3 точкам по кривой .Даже не попадался расчет точки встречи с учетом линейного изменения скорости цели на прямой.
0
|
|||
| 12.04.2020, 11:46 | |
|
Как рассчитать поворот угла, зная координаты трех точек до поворота и после поворота угла Найти зависимость скорости от угла
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|