Я вычисляю результат встречными парами 2D выпуклых объектов (без вращения), используя the basic equations on wikipedia. Однако, когда существует зависимость, как два объекта, поражающих другой объект одновременно:Как обрабатывать несколько одновременных упругих столкновений?
Такие, как здесь, с объектами 1 и 2 удара 3 в то же самое время, подход парной терпит неудачу , В зависимости от порядка я вычисляю столкновений (сначала 1-3 или 2-3), я получаю разные результаты. Повторная итерация через столкновение будет по-прежнему давать зависящие от порядка результаты.
У меня уже есть настройка, поэтому я могу выяснить, какие объекты находятся в контакте друг с другом, поэтому мой код будет знать при вычислении одной из этих пар, что объект 3 сталкивается с другим объектом в этот момент (так что 1- 3 столкновения будут знать о 2-3 столкновениях и наоборот). Я буду знать, какие грани/углы находятся в контакте с чем.
Какое бы решение должно быть прочным ... Например, если установка производится более сложным, как эти 2 примера:
Процесс должен быть в состоянии справиться с этим и хуже. Любая возможная цепочка одновременных контактов/столкновений. У меня будут все данные, которые они описывают, поэтому я «только» должен знать, как разрешить общий случай этих систем. В настоящее время я ничего не делаю с поворотом, что упрощает ситуацию.
Похоже, что это связано с группировкой объектов вместе, но помехи, вызванные ребрами, которые не являются ортогональными (см. Последний пример с шестиугольником), как представляется, делают этот подход неудачным.
Я видел a similar question, который был задан раньше, но ответ не был проверен (тупик?). Я не уверен, как распространение шока разрешит мой первый пример, так как C отходит после первого столкновения ... так какой шок должен распространяться? edit: Хорошо, теперь я вижу, что одновременные столкновения и распространение звука - две разные идеи, поэтому это не показалось полезным.
На самом деле есть ответ на вопрос, на который вы ссылаетесь, и это может быть то, что вы ищете. –
@AlexSzatmary Я не уверен, как этот подход применим к моему первому примеру. Как только произойдет одно столкновение, C будет отходить ... Нет никакого потрясения для распространения при работе со вторым столкновением. – user173342