Весенняя динамика, два шара

#c #game-physics

#c #игра-физика

Вопрос:

Я пытаюсь разобраться в физике, поэтому я пишу 2D-симуляцию физики.

Моя текущая проблема заключается в том, чтобы заставить два шара правильно отскакивать друг от друга, используя spring dynamics.

obj->v содержит скорость, obj->spring содержит свойства пружины текущего объекта, spring.comp — текущее сжатие, angle — угол между двумя объектами.

Проверка на столкновение работает правильно.

Я пробовал разные вещи вслепую, и это, очевидно, неправильно:

 obj->v.x = (-obj->spring.stiffness*obj->spring.comp) - sin(angle)*(obj->v.x)
obj->v.y = (-obj->spring.stiffness*obj->spring.comp) - cos(angle)*(obj->v.y)
  

Кроме того, я хочу учитывать как скорость, так и вес обоих объектов.

Комментарии:

1. Мы говорим о тех шарах, которые мы находим на бильярдном столе, и о том, какие столкновения они там испытывают? Тогда я думаю, что я бы вообще не использовал springs. Знаете ли вы о законах сохранения? Сохранение энергии и импульса. (Извините, не уверен в словах «сохранение» (не изменение) и «импульс» (масса, умноженная на скорость) здесь).

2. @Yunnosch импульс -> импульс

3. @n.’местоимения’m. Спасибо.

4. Я думаю, вы ищете упругое и неупругое столкновение объектов, и вы можете найти уравнение для вычисления сохранения импульса и уравнение с небольшим исследованием

5. @Yunnosch передача энергии такая же, как и между бильярдными шарами, я полагаю, за исключением того, что передача энергии происходит в течение определенного времени (жесткость пружины * сжатие пружины), а не мгновенно.