Движение "лицом вперед"22.10.2024, 16:38. Показов 6175. Ответов 97
Метки нет (Все метки)
Добрый день
Есть 3D сцена, в процессе симуляции объекты движутся под действием приложенных сил. Объект может иметь опцию типа "face forward" которая заставляет его по(д)ворачиваться по направлению движения, т.е. - объект движется со скоростью v, известен вектор face. При необходимости поворачиваем объект так чтобы эти направления совпадали. При плавных изменениях вектора скорости все хорошо. И тут мелкая неприятность: а если объект был неподвижен (или почти неподвижен)? Очевидно разворот должен занять некоторое время, и как он должен происходить? Объект сначала делает "поворот на месте" и только потом движется? Или начинает двигаться лицом вперед и по ходу дела поворачивается? И просто "задать время поворота" наверно не очень хорошо, оно будет никак не связано со скоростью. Как бы Вы управляли объектом? Если нужны доп опции - то какие (чем меньше тем лучше). Или все должно делаться автоматычно? Спасибо
0
|
|
| 22.10.2024, 16:38 | |
|
Ответы с готовыми решениями:
97
Движение вперёд
Движение объекта вперед/назад по таймеру |
| 07.11.2024, 22:01 [ТС] | ||
|
Значит, "дан приказ ему на запад" (чайнику), а он носом глядит на восток ("в другую сторонУ"). Выбора нет, нужно на каждом шаге менять направление вектора скорости v от исходного face до требуемого F. Тогда за какое-то число шагов вектор скорости развернется в нужном направлении. Для этого нужно приложить часть силы F' перпендикулярно face. Причем относительно небольшую часть, другая (большая) должна быть приложена вдоль face. Причина - ну не едет машина перпендикулярно face, даже под углом 45 не едет. Первая проблема: как грамотно вычислять вектор F'? Намазюкал схемку (первый аттач). Правда на ней не показан вектор скорости v, считается что он совпадает с face. Но поворачивать чайник за нас никто не будет. Вторая проблема: как вычислить этот поворот? Мы хотим чтобы вектор face совпадал с новым направлением скорости v', как этого добиться? Если все меняется плавно - не проблема, но расклад векторов может быть любым (чайник отскочил от удара, скользит по льду и.т.п). См второй аттач. Повернуть face за один шаг симуляции нельзя.
0
|
||
|
53 / 54 / 2
Регистрация: 10.06.2023
Сообщений: 760
|
|
| 08.11.2024, 09:30 | |
|
Пытаюсь найти реальную ситуацию, проясняющую нашу задачи. Может быть у нас целеуказчик, дающий направление на цель, и прибор, который должен цель отслеживать. Но, судя по предыдущему высказыванию, может рассматриваться движение единственного объекта. Тогда надо искать алгоритм управлением углом между вектором скорости движения и осью "чайника". Управление в этом случае может осуществляться изменением плеча приложения движущей силы, без изменения ее величины и направленности. Алгоритм во всех случаях зависит от механизма его реализации. Примеров таких алгоритмов множество.
0
|
|
|
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,700
|
|
| 11.11.2024, 06:54 | |
|
0
|
|
|
53 / 54 / 2
Регистрация: 10.06.2023
Сообщений: 760
|
|
| 11.11.2024, 10:36 | |
|
Терминология, используемая при обсуждении, запутана. Появилась главная задача: из точки А в Б под управлением Регулятора или Контролера. Далее введена ориентация движущего тела. В Д2 случае (для простоты) достаточно 3-х переменных: 2 координаты центра масс и направление оси (если тело не меняет свою форму). Проще рассматривать ситуацию в декартовых координатах, в полярных привязка к центру усложняет. Далее все слова о носике относятся к движителю: как направлены силы тяги, трения, сопротивления движению. И, наконец, главное: чем мы располагаем: изменением точки приложения силы, ее величины и направления, изменением положения частей тела (при фигурном катании на коньках управляют положением рук и др.). Если все это известно и заданы параметры и ограничения (предельные силы, угла, смещения частей тела), можно ставить задачу: наибыстрейшее достижение Б, экономное достижение и т. п. Вариантов управления здесь бесчисленно, и теорий и практики.
Существенным элементом описания явления являются уравнения, которые должны и могут описать процесс движения и учесть при этом инерционность в том числе и вращения тела относительно его центра масс.
0
|
|
| 11.11.2024, 17:24 [ТС] | ||
|
Пусть тело движется напр горизонтально со скоростью v. Нужно ли нам знать откуда взялась эта скорость, кто "разогнал" тело? Нет. Теперь на тело действует сила F под тупым углом к вектору скорости или даже противоположно ему. Необходимо ли нам знать "а что это за сила?". Нет. Нужен пример - да хотя бы ветер. По Ньютону тело сначала затормозится, потом остановится и/или развернется и затем начнет двигаться по направлению силы. А вот лицом вперед или назад - об этом Ньютон ничего не говорил. Конечно все это делается движками физики уже десятка два лет. А если нет столкновений/коллизий, то можно и без движка, на бумажке посчитать по школьным формулам. Но вот беда - юзер этого (движение строго по Ньютону) давным-давно наелся, это легко доступно и интереса не вызывает. Тем более что "разумные" объекты (люди, животные, машины и др) так не двигаются. Едет машина, летит муха, идет человек, всегда есть вектор скорости v. Объект получает "команду" (наш вектор силы) изменить направление, др словами идти туда-то. Возможно он притормозит но может и нет. Но во всяком случае он развернется на нужное направление (а не пойдет задом наперед). Понятно что поворот разный для разных объектов, сравним автобус, велосипедиста и муху. Ну так задавать/определять опции никто не запрещает (см стартовый пост), это часть задачи. Ясно что такое движение "не по Ньютону", но оно не противоречит ему, как и здравому смыслу и житейскому опыту. И что, по-Вашему выходит такое движение невозможно задать/проектировать в общем виде? Обязательно нужна масса подробностей. Типа: кошка падает лапами вниз - давайте наймем фелинолога, тщательно изучим анатомию/физиологию кошки (эдак за годик), и вот тогда.. может быть.. Не могу с Вами согласиться, такое углубление в задачу избыточно. Мы оперируем вектором силы, нас не интересует откуда/почему. Тем более что для простых случаев все просто работает уже сейчас
0
|
||
|
53 / 54 / 2
Регистрация: 10.06.2023
Сообщений: 760
|
|
| 11.11.2024, 19:15 | |
|
Если тема не закрыта, то не могли бы вы описать, что вам осталось непонятным.
0
|
|
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
||||
| 12.11.2024, 17:17 | ||||
|
0
|
||||
| 12.11.2024, 20:31 [ТС] | |||
|
0
|
|||
|
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,700
|
||
| 13.11.2024, 03:53 | ||
|
Добавлено через 4 минуты При этом заметьте, все три варианта - они все достигают желаемого. А скорость (обычно) - не суть, но иногда нужно делать быстро, а иногда медленно. И без уточнения условий неизвестна идеальная скорость. Поэтому лучше спросить юзера, либо указать принцип задания скорости, например, минимизация времени перемещения или безопасность (когда столкновения на большой скорости опасны). Добавлено через 2 минуты При этом на скорость универсально накладывается ограничение сверху, ибо привод может не мочь быстро, либо страшно, либо возрастают вибрации и т.д. в общем, слишком быстро - это плохо.
0
|
||
|
53 / 54 / 2
Регистрация: 10.06.2023
Сообщений: 760
|
|
| 13.11.2024, 09:23 | |
|
Нам помог бы выбор конкретного "железа" с его конструкцией, возможностями и ограничениями. Например, трехколесная тележка, одно колесо спереди ведущее, два сзади по бокам тормозящие.
0
|
|
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
||
| 13.11.2024, 12:27 | ||
|
Скорость вращения руля можно считать константой. На каждом такте три варианта по изменению угла: -dA, 0, dA. Боковое сопротивление (относительно передних колёс) можно считать бесконечным. Но можно задать коэффициенты для трения покоя μ0 и трения при движении юзом μ1 (μ0 > μ1). Сила трения F = μ*m*g. Лобовое сопротивление пропорционально модулю скорости. Этого достаточно, чтобы, используя законы Ньютона, написать движок, как я описал в предыдущих сообщениях.
0
|
||
| 13.11.2024, 14:47 [ТС] | ||||
Я (надеюсь) понимаю и согласен со всем что Вы сказали выше, но откуда возьмется движок - не представляю. Правда такой амбициозной задачи и не ставилось.
0
|
||||
|
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,700
|
|
| 14.11.2024, 19:38 | |
|
Igor3D, из точки А в точку Б можно добраться миллиардами способами. Под способами понимается траектория и скоростной режим. Кто-то перепрыгнет забор, кто-то наоборот пойдёт по проторенным дорожкам, кто-то выберет более безопасный освещенный путь, кто-то пойдёт мимо магазинов, кто-то выберет бег по кругу (любитель ЗОЖ). Получается способы перемещения зависят от кучи факторов, которые вообще никак не связаны с физикой.
При этом сама сила - это всегда конечное последствие решения регулятора (контроллера). Это самое последнее, что регулятор рассчитывает. Это главный выход регулятора. Если регулятор выберет скорость, то можно будет прикинуть силу. Скорость - это предпоследнее важное решение регулятора. Если регулятор выберет координату, то можно будет прикинуть скорость. Координату регулятор обычно не выбирает, поэтому координата - это главный вход регулятора. Регулятор, который принимает на вход координату и выдает силу на выход, является регулятором движения. Могут быть регуляторы посложнее, которые управляют движением, принимая на вход более высокоуровневые вещи, например, безопасность (если бы ее можно было оценить). Но вас интересует регулятор движения. Я выше приводил простенькие уравнения, они вам помогут. Добавлено через 18 минут Как инженеры разрабатывают космические корабли, которые могут стыковаться? Вы думаете эти инженеры физики, учили ее глубоко в универе? Возможно считанные единицы этих инженеров действительно физики. Но для понимания принципов стыковки аппаратов физика нужна лишь в объеме трёх уравнений, а остальное - это датчики, регуляторы, исполнительные механизмы, электроника, немного специфичной математики, программирование. Научной основой у этих инженеров является вышеупомянутая специфичная математика - ТАУ (теория автоматического управления). Им без разницы что там с физикой, хотя, как правило, они упражняются именно на уравнениях движения, а ещё чаще на температуре и на давлении/напоре (воды или масла). Это их коллеги, которые не относятся к космосу. Я вам просто дал уравнения из ТАУ, готовый регулятор. Этот регулятор за минимальное время при ограничении скорости и силы выполнит точное позиционирование. Ваша задача. Попробуйте просто повернуть чайник, без поступательного перемещения. Добавлено через 14 минут Три уравнения из физики: 1. dV/dt = (F - Fс) / m 2. dx/dt = V Fс - сила сопротивления движению. В физике сила F является фактором, скорость V - промежуточная величина, координата x - конечный результат. В регуляторе всё происходит в обратном направлении, ибо это модель, зеркальное отражение реальности. P.S. Не спрашивайте, какое третье уравнение движения, его нет.) Добавлено через 4 минуты Самые банальные случаи: 1. В космосе Fс = 0, 2. На земле Fc = Fтрения = const. Добавлено через 8 минут Упс, уточню. Fc = Fтрения, только когда скорость V != 0, иначе получится самопроизвольное движение от трения даже при F = 0.
0
|
|
|
53 / 54 / 2
Регистрация: 10.06.2023
Сообщений: 760
|
|
| 15.11.2024, 10:03 | |
|
Наконец-то заговорили о сути. Все верно, но позиционирование требует соотношения между невязкой - отклонением текущей позиции от желаемой и силой или в общем случае средствами изменения движения. Именно это соотношение определяет свойства системы управления и именно это составляет предмет науки об управлении. Автоматическое управление только часть этой науки. Изучение влияния человека - оператора существенная часть науки о управлении.
0
|
|
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
|||
| 15.11.2024, 11:14 | |||
|
Fтр = μN (формула Кулона - Амонтона) μ − коэффициент трения скольжения, N − сила реакции опоры, равная прижимающей силе (в нашем случае - весу). Сила трения покоя всегда равна внешней силе, параллельной поверхности. Максимальная сила трения покоя немного больше, чем сила трения скольжения. Есть ещё сила сопротивления воздуха, пропорциональная скорости. Fтр = 6πηrv (закон Стокса для шара) η − вязкость вещества, в котором движется тело; r − средний поперечный размер (радиус) тела; v − относительная скорость тела; 6π − коэффициент, соответствующей сферической форме тела. При больших скоростях сила сопротивления воздуха пропорциональна квадрату скорости (можете загуглить "число Рейнольдса"). Силой трения качения можно пренебречь по сравнению с силой сопротивления воздуха. Как это применить к автобусу, я написал выше. Добавлено через 16 минут
0
|
|||
|
53 / 54 / 2
Регистрация: 10.06.2023
Сообщений: 760
|
|
| 15.11.2024, 16:34 | |
|
Сила сопротивления при движении воздуха при быстром движении пропорционально квадрату скорости. Приведенная формула Стокса только при очень медленном движении.
1
|
|
| 16.11.2024, 15:50 [ТС] | ||
|
Правильно заниматься только текущей задачей/модулем, в нашем случае это вектор силы типа "лицом вперед". Движок конечно необходим, но зачем нам его писать? Проще и лучше использовать готовый, напр Bullet. Другие вещи добавляются извне юзером. Напр для трения или гравитации проще всего использовать опции движка. Для сопротивления воздуха - написать еще маленький модуль (мне не нравится это как делает движок). Для любого модуля выход = вектор силы приложенный к центру масс + вектор крутящего момента. Движок переведет это в скорость, вращение и перемещение объекта, новые значения будут доступны на следующем шаге симуляции. Необходимо считаться с тем что в симуляции может быть любое число (любых) сил и факторов которые в данном модуле неизвестны. Поэтому значения на следующем шаге могут сильно отличаться от ожидаемых, вплоть до "ничего общего". Ну или коротко: в данном модуле просто используем школьные формулы равноускоренного движения, все остальное - не наша забота Да, (смутные) мысли как делать есть, но пост получается слишком длинным
0
|
||
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
||||
| 17.11.2024, 02:18 | ||||
|
0
|
||||
| 17.11.2024, 04:57 [ТС] | |||
|
0
|
|||
|
53 / 54 / 2
Регистрация: 10.06.2023
Сообщений: 760
|
|
| 17.11.2024, 10:04 | |
|
Учесть все - типичная ошибка, так как учесть все - невозможно! Всего слишком много! Исходить надо из возможного т оценивать потери, возникающие при этом. Постановка задачи, дающей желаемый ответ и оценка точности ответа и есть искусство постановщика или заказчика.
0
|
|
| 17.11.2024, 10:04 | |
|
Помогаю со студенческими работами здесь
60
Движение квадрата по горизонтальной прямой вперёд-назад Кнопка на движение вперед (Игра под Андроид) Движение по списку вперёд/назад, доступ к текущему элементу Графика, ООП: движение креста по синусоиде слева направо, вперед и назад Выдача кредита физическим лицом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|