Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В первом приближении можно округлить момент столкновения до предыдущего или текущего и применить правила взаимодействия. Или это слишком грубое приближение?
Еще как вариант — попытаться найти момент столкновения более точно, интерполируя движение данных конкретных тел между шагами симуляции. Или это слишком затратно по ресурсам?Это ничего не даст. Суть penetration depth — найти точку к которой нужно приложить силу, и глубину проникновения, чтобы знать какую именно силу приложить (а с учетом трения — там вообще сказка вырисовывается). Я когда сам писал свой физический двиг — уперся именно в этот момент. Стек предметов у меня либо вибрировал, либо проминался и был меньшей высоты, чем надо. Ну и в довесок были проблемы с трением.
const btScalar deltaVel1Dotn = c.m_contactNormal.dot(body1.internalGetDeltaLinearVelocity()) + c.m_relpos1CrossNormal.dot(body1.internalGetDeltaAngularVelocity());
virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.));
А зачем знать величину силы?Вы же сами через два предложения написали функцию от силы:
Ведь F=dp/dt, соответственно p2-p1 = integral(F*dt).
Как работает симуляция физики в играх на примере Bullet Physics