#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 передача энергии такая же, как и между бильярдными шарами, я полагаю, за исключением того, что передача энергии происходит в течение определенного времени (жесткость пружины * сжатие пружины), а не мгновенно.