В настоящее время у меня есть игра с мини-физикой, в которой используется разделительная теорема о оси для обнаружения и ответа на столкновение, однако я пришел в тупик, когда обнаружил, что документации о том, что происходит с скорость объекта после того, как он сталкивается с другой формой, используя обнаружение столкновения SAT.Вычисление результирующего вектора скорости после 2D-столкновения
Вот две схемы того, что я говорю.
Может кто-нибудь мне точку в правильном направлении, пожалуйста?
Вся информация, которая может быть задана после столкновения, является минимальным вектором проникновения.
EDIT: Найдено некоторые кода в Интернете, что очень связано с этим, но я не понимаю:
void CBody::ProcessCollision(CBody& xBody, const Vector& N, float t)
{
Vector D = m_xDisplacement - xBody.m_xDisplacement;
float n = D * N;
Vector Dn = N * n;
Vector Dt = D - Dn;
if (n > 0.0f) Dn = Vector(0, 0);
float dt = Dt * Dt;
float CoF = s_fFriction;
if (dt < s_fGlue*s_fGlue) CoF = 1.01f;
D = -(1.0f + s_fRestitution) * Dn - (CoF) * Dt;
float m0 = GetInvMass();
float m1 = xBody.GetInvMass();
float m = m0 + m1;
float r0 = m0/m;
float r1 = m1/m;
m_xDisplacement += D * r0;
xBody.m_xDisplacement -= D * r1;
}
Хотя это сработает, ваш же метод не будет работать во всех случаях из-за того, что у вас нет принципа выбора компонента, который вы хотите перевернуть. То, что я пытаюсь достичь, - это физическое физическое моделирование тела. – HDalton
С идеальной эластичностью или с реальными потерями? С трением или без трения? Есть много вариантов, которые могут быть сделаны, которые влияют на сложность физического движка. Мой пример - одна из самых простых моделей. Мой совет - начать с очень простой модели и сделать ее более сложной, когда это необходимо. –