ПрограммированиеФорумФизика

2D-движок столкновений (на основе импульсов) (12 стр)

Страницы: 111 12 13 1417 Следующая »
#165
18:52, 30 мая 2005

Zvz
Да я не про контакты.
Представим что есть два шарика соединённых варевочкой -> они не могут разойтись более чем на длину этой веревки -> появляются ограничения -> уравнения становятся нелинейными
А если они соединены, например, пружиной -> то появляются дополнительные уравнения для движения частей системы.
Вот я и не понимаю... все манипуляции происходят над изолированными, замкнутыми объектами... в какой момент учитываются функции связи? И собственно, как они задаются?

#166
22:17, 30 мая 2005

ограничения (также как и контакты, и колизии) обрабатываются - "попарно", контакты в этой модели - это тоже вид ограничений (на непроникновение тел).

какие уравнения становятся "нелинейными"?
закон сохранения импульса и ограничения обрабатываются последовательно.

"все манипуляции" - любое взаимодействие тел - в данном подходе происходит "попарно" (в отличии от, например, LCP).

"связи" накладываемые на скоростные хар-ки тел учитываются (также попарно) после применения импульсов, если "связи" накладываются на положения тел, то они учитываются после интегрирования позиций.

#167
23:26, 30 мая 2005

EvilSpirit
Машинка жжот!! Пять балов :)

#168
10:58, 31 мая 2005

Zvz
>А что за "всякие проверки скоростей"? Это обработка констрэинтов или она входит в решение контактов?

Это ограничение максимальной скорости + насильная остановка тела, если движется или крутится слишком медленно, чтобы это было заметно секунд за 10.

>Это приближение разумно для обработки контактов, которые сохраняются во времени, но если на след. шаге другие тела колизятся с такими "исключенными", как обрабатываются такие ситуации?

Не не) Исключаются только удары между контактирующими телами. Все остальные бьют их и себя как обычно.

DROnik
>Вы не могли бы пояснить ещё раз? Я не очень уловил... как всё-таки решаются системы тел? Каждая часть интегрируется самостоятельно или вся система целиком?

Самостоятельно. Каждый отдельный контакт решается отдельно. Это делается несколько раз (у меня - к примеру - 11 раз. подобрано эмпирически). Допускаю, что существует более строгий метод, который проверяет насколько сильно стучат контакты и при уменьшении этой величины ниже определенного уровня выходит из цикла ударов по контактам.

#169
10:19, 3 июня 2005

Не совсем уяснил. Допустим, у нас образовался контакт (взаимное прониконовение объектов). В этот момент мы считаем импульс и прикладываем его к двум объектам. Далее интегрируем по времени. А вот что делать с контактом на следующем шаге, если взаимное проникновение тел осталось (а этого мне не надо). Каким образом заставить объекты "вытолкнуться" друг из друга ?

#170
12:03, 3 июня 2005

4ECHOK

Формула применения импульса по контакту содержит член MIN_V - задающий минимальную скорость разлета точек тел. MIN_V зависит от глубины взаимопроникновения - чем глубже, тем больше требуемая скорость разлета. При правильном подборе констант это гарантирует, что тела не будут заползать друг в друга. И визуально это будет незаметно совершенно - поскольку речь идет о взаимопроникновении на величины порядка 0.1 % от размеров тел.

Если же у тебя стоит задача - не допустить вообще никакого проникновения тел друг в друга - даже на 1e-12, то тебе следует слегка увеличить ограничивающие объемы и применять ту же идею.

#171
13:39, 3 июня 2005

Спасибо, идею понял.

#172
4:27, 5 июля 2005

Gregory_krovosos

Простите, если повторяюсь, но я не совсем понял насчет столкновений. Если тела сравниваются попарно, то как быть в случае, если столкнулись три тела? И что делать, если на этапе проверки обнаружено столкновение: добавлять его в очередь и продолжать дальше или выходить и применять импульс?

#173
10:46, 5 июля 2005

Bionikl

После очередного шага я определяю сколько тел пересеклось и по всем ним ударяю по очереди.
Потом - по контактам.

#174
2:58, 6 июля 2005

Не совсем ясно : "по всем ним ударяю по очереди.
Потом - по контактам". Зачем удараять два раза?

#175
15:01, 6 июля 2005

Bionikl

Три контакта практически невозможно решить, об этом в свое время уже писал Gregory_krovosos. Например, в ODE решаются все контакты одновременно, но не точно (как по аналитической формуле), а лишь в некотором приближении к такому решению.

#176
15:48, 6 июля 2005

Сначала мы ищем пересечения тел, дальше к применяем соответствующие импульсы к тем, которые пересекаются. Я так понял? А "контакты" и "пересечения" это почти одно и тоже?

#177
9:48, 13 июля 2005

Bionikl


Чтобы пересечение стало контактом надо определить нормаль, расстояние взаимопроникновения и точку контакта.

К примеру, если расстояние между центрами окружностей меньше суммы их радиусов, то окружности пересекаются.

Однако, этого знания для создания контакта недостаточно - нужны дополнительные вычисления.

#178
18:17, 13 июля 2005


Не совсем понятен смысл функции IntersectLines.

Вычисляется персечение прямых, или всё-таки отрезков?

if (fabs(D) < _E) return true; // нет решения

почему true? если нет решения, значит и точки пересечения нет.

А вообще интересует только факт пересечения отрезков без нахождения точки пересечения.

#179
5:11, 15 июля 2005

Здорово! Отлично, я бы даже сказал.

Страницы: 111 12 13 1417 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.