Расчет распределения силы в системе шаров из N тел

Как будет распределяться сила тяжести, когда три шара помещены в пирамиду на неподвижном основании и находятся под действием силы тяжести? Шарики имеют разный радиус и массу. Начальная скорость равна нулю, и все точки контакта известны. Цель состоит в том, чтобы рассчитать ускорение и новую скорость для небольшого временного шага, чтобы новые положения не вызывали пересечения в предыдущих контактах.

Я пытаюсь реализовать это для пользовательского 2D-физического движка, но я действительно борюсь. Сначала это казалось таким простым, но как бы я ни старался, у меня не получалось. Может быть, это намного сложнее, чем кажется? Это конечно просто пример, у меня может быть любой сетап и количество шаров (но пока только шары). Я не рассматриваю трение, но если это не так сложно, я хотел бы добавить и это. И ротация, конечно, была бы классной! Во всяком случае, я удовлетворен некоторым базовым объяснением того, как думать об этом и, в частности, в отношении интеграции Эйлера и обобщенных программных алгоритмов.

Приблизительного решения достаточно, если оно выглядит близко к естественному. Кроме того, если контакты разорваны, как ожидалось, я вместо этого буду вычислять новые столкновения другим способом. Что я ищу здесь, так это то, как это работает с несколькими контактами при приложении сил или гравитации.

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

Мир

Присутствует ли здесь трение?

Ответы (1)

Я предполагаю, что вы работаете в 2D. Когда у вас есть алгоритм для этого, не составит труда распространить его на 3D. Поэтому я буду называть фигуры кругами .

Ваш вопрос аналогичен силе реакции в штабелировании пирамиды стальных катушек , на которую я ответил, утверждая, что структура статически неопределима . Реакции между твердыми телами не могут быть найдены из-за недостаточного количества независимых связей. Упругие свойства и деформации кругов должны учитываться, чтобы получить больше ограничений. Метод прямой жесткости является эффективным способом сделать это и особенно подходит для компьютерного программирования.

В вашем случае центры окружностей становятся узлами фермы, а реакции между ними — силами сжатия в стойках между узлами. Вам нужно будет включить 2 равные и противоположные боковые силы, чтобы убедиться, что конструкция изначально находится в равновесии. Когда вы определили статические реакции между кругами, вы затем удаляете боковые силы и рассчитываете, как круги реагируют на неуравновешенные силы, действующие на них.

Отсутствие трения в контактах позволит избежать необходимости учитывать динамику вращения кругов.