|
-16 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 232
|
|
Зависимость угла поворота объекта от его скорости09.04.2020, 07:27. Показов 9809. Ответов 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
|
||||
|
фрилансер
6501 / 5737 / 1134
Регистрация: 11.10.2019
Сообщений: 15,371
|
|
| 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 | |
|
Как рассчитать поворот угла, зная координаты трех точек до поворота и после поворота угла Найти зависимость скорости от угла
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты 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) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|