Я работаю над двухмерным моделированием физики. Это непрерывная симуляция времени, то есть она использует прокручиваемые формы во временном интервале и геометрический/векторный «анализ» для определения самого непосредственного времени контакта. Затем мир перемещается к этой точке, и столкновения разрешаются, прежде чем перейти к следующему моменту столкновения.
Я не использую методы релаксации или какие-либо виды разрешения пересечений. Объекты перемещаются в состояния контакта, а события контакта разрешаются как столкновения.
Я пробовал CONTACT_RANGE от 0,001f до 0,00001f. Это значение определяет, находятся ли объекты в контакте. Уменьшение этого значения приводит к меньшему количеству состояний перекрытия, но предположительно в какой-то момент дальнейшее снижение значения приведет к тому, что симуляция пропустит контактные события, потому что неточности приведут к тому, что системы тел перейдут в дискретное состояние или состояние перекрытия.
Теперь, к проблеме, симуляция, кажется, правильно вычисляет результат столкновений между двумя телами (круги в случае, на который я смотрю). Но я неправильно поступил с тремя или более телами, находящимися в контакте.
В прошлом я неправильно обрабатывал импульс / KE, но ограничивал скорости так, чтобы системы с несколькими телами не пересекались в следующем подкадре. Но теперь, когда у меня есть правильное решение для столкновения двух тел, я хочу сделать это правильно для большего количества тел.
Я не уверен, что делать дальше. Я читал интересное предположение, что на самом деле не бывает одновременных столкновений, и их можно решать одно за другим. Это правда ?
Могу ли я просто вычислить результирующую скорость тела от одного контакта, а затем сделать то же самое со следующим контактом и т. д.?
И приведет ли это к тому же решению, как если бы я вычислял скорость за один шаг по всем контактам одновременно?
Или мне нужна одна функция для определения скорости от нескольких контактов?
Любое руководство приветствуется.
Гэвин
Как было предложено в вашем прочитанном предложении, вы можете приблизиться к физической реальности с «одновременными столкновениями». Причина в том, что физический мир полон неопределенностей (ошибок АКА) из-за тепловых флуктуаций и многих других источников. Это означает, что даже если строгие математические решения, которые вы найдете, предполагая одновременные столкновения по сравнению с предположением случайных столкновений (обработка всех столкновений, которые ваш алгоритм считает одновременными, как происходящие в случайном порядке), могут различаться, «физическое» поведение система не изменится никаким значимым образом. Ни один человек не мог отличить их друг от друга. В заключение можно смело считать систему столкновений неодновременной, и последствия будут незаметны человеческому глазу (в том числе и любому настоящему физику).
Абхишек Верма
Джон Алексиу
Джон Алексиу