3 minutes
💥 기초 게임 물리
1. 운동의 기본
위치와 속도, 가속도
$$ v = \frac{dx}{dt}, a = \frac{dv}{dt} $$
등가속도 운동 공식
$$ v = v_0 + at $$
$$ x = x_0 + v_0 t + \frac{1}{2} a t^2 $$
2. 뉴턴의 운동 법칙
제1법칙(관성의 법칙): 외부에서 가해지는 알짜힘(합력)이 0일 때, 정지한 물체는 계속 정지해 있고, 운동하던 물체는 등속 직선 운동을 유지함
제2법칙(가속도의 법칙): 물체에 알짜힘이 작용하면 힘의 방향으로 가속도가 발생하며, 가속도는 힘의 크기에 비례하고 질량에 반비례함
$$ F = \frac{dp}{dt} = ma $$
- 힘은 운동량의 시간 변화율로 볼 수 있음
제3법칙(작용-반작용의 법칙): 모든 힘은 쌍으로 존재하며, 물체 A가 물체 B에 힘을 가하면(작용), 물체 B도 동시에 물체 A에 크기가 같고 방향이 반대인 힘을 가한다(반작용)는 원리
3. 운동량과 충격량
운동량이란 물체가 얼마나 움직이기 어려운 상태인가를 나타내는 양
$$ p = mv $$
- 같은 속도라면 질량이 큰 물체가 운동량이 더 크고, 같은 질량이라면 속도가 빠를수록 운동량이 큼
운동량 보존 법칙: 외부 힘이 작용하지 않는 고립된 계(system)에서 충돌과 같은 상호작용 전후의 총 운동량은 항상 일정하게 보존됨
$$ m_1 v_1 + m_2 v_2 = m_1 v_1’ + m_2 v_2' $$
- 마찰력같은 외부 힘이 작용하면 깨질 수 있음
충격량이란 물체에 일정 시간 동안 작용한 힘의 총 효과
$$ J = \int F dt = \Delta p $$
- 정의 그대로 일정 시간 힘의 적분 또는 운동량의 변화량으로 정의
4. 탄성 충돌
물리에서 탄성 충돌이라하면 보통 반발 계수 $e$가 1인 완전 탄성 충돌을 의미하며, $e$가 1보다 작으면 부분 탄성 충돌(0일 때는 비탄성 충돌)이라고 함
운동량과 운동에너지가 모두 보존되는 충돌
운동 에너지 보존: $\frac{1}{2} m_1 v_1^2 + \frac{1}{2} m_2 v_2^2 = \frac{1}{2} m_1 v’_1^2 + \frac{1}{2} m_2 v’_2^2$
- 단, 이는 반발 계수($e$)가 1인 완전 탄성 충돌에서만 성립
핵심 성질: 충돌 후의 상대 속도는 충돌 전 상대 속도와 크기가 같고 방향이 반대
$$ v’_1 - v’_2 = -(v_1 - v_2) $$
충돌 후 속도 구하기
기본적으로 이동 중인 물체는 이동하는 직선 방향으로 그대로 이동하려고 함(관성의 법칙)
2차원 / 3차원에서, 충돌이 발생하면서 속도가 변화하는 데에는 실제 충돌 면에 수직한 법선 방향 벡터만 작용함
때문에 속도 계산 공식에서는 법선 단위 벡터($n$)만 추출하여 속도 계산에 적용
$$ u_1 = v_1 \cdot n $$
$$ u_2 = v_2 \cdot n $$
$$ u’_1 = \frac{m_1 - m_2}{m_1 + m_2} u_1 + \frac{2m_2}{m_1 + m_2} u_2 $$
$$ u’_2 = \frac{2m_1}{m_1 + m_2} u_1 + \frac{m_2 - m_1}{m_1 + m_2} u_2 $$
계산 후 법선 단위 벡터 기준 원래 속도 벡터의 수직 방향 벡터와 함께 다시 복원
$$ v’_1 = v_{1, t} + u’_1 n $$
$$ v’_2 = v_{2, t} + u’_2 n $$
그런데 위의 식은 교과서적 공식이고, 게임 엔진 구현에서는 저거 외에도 충돌에 고려할 사항이 많기도 하고, 충돌량(impulse) 기반 방법이 연산이 더 간단해서 충돌량 기반 방법으로 충돌 후 속도 벡터를 구함(2D / 3D 공통)
$$ j = -(1 + e)\frac{(v_1 - v_2) \cdot n}{\frac{1}{m_1} + \frac{1}{m_2}} $$
$$ v’_1 = v_1 + \frac{j}{m_1}n $$
$$ v’_2 = v_2 - \frac{j}{m_2}n $$
- 이 때 보통 완전 탄성 충돌을 말하기 때문에 $e$는 1