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