물리 엔진의 뼈대 · 충돌 반응 · 실습
충격량·반발·마찰
목표
충격량으로 충돌 반응을 계산하고, 반발 계수와 마찰이 무엇을 정하는지 숫자와 그림으로 확인합니다. 이 실습이 끝나면 물리 엔진의 반응 층을 직접 만들 수 있게 됩니다.
왜 중요한가
단단한 물체의 접촉 시간은 1밀리초도 되지 않아서, 60분의 1초로 도는 시뮬레이션에서는 접촉 과정을 흉내 낼 수 없습니다. 그래서 물리 엔진은 과정을 건너뛰고 결과만 계산합니다. 충돌 전후의 속도 관계를 방정식으로 세우고, 그것을 만족하는 속도 변화량을 한 번에 구해 적용합니다.
여기서 배워 둘 관례가 둘 있습니다. 하나는 역질량을 저장하는 것입니다. 움직이지 않는 물체를 역질량 0 으로 두면 특수 처리 없이 같은 식이 그대로 돕니다. 다른 하나는 멀어지는 중이면 손대지 않는 것입니다. 이 검사를 빠뜨리면 떨어지려는 물체를 다시 잡아당겨 표면에 달라붙습니다.
단계
1. /root/impulse 에 도구 상자를 놓습니다.
2. /root/impulse/impulse.py — 충격량 공식.
3. /root/impulse/out/03-conserve.txt — 운동량과 에너지.
4. /root/impulse/out/bounce.csv, 04-bounce.txt, bounce.png — 튀는 높이.
5. /root/impulse/out/05-friction.txt — 미끄러지는 상자.
6. /root/impulse/out/06-tangent.txt — 접선 방향 마찰.
7. /root/impulse/out/balls.png 와 07-balls.txt — 상자 안의 공 다섯 개.
참고
- 그림은
nohup python3 -m http.server 8080 -d /root/impulse/out &로 띄우고 웹 미리보기 에서http://localhost:8080/을 엽니다. - 흔한 실수 하나: 상대 속도가 이미 양수(멀어지는 중)인데도 충격량을 적용하는 것입니다. 물체가 표면에 달라붙습니다.
- 흔한 실수 둘: 마찰에서 속도를 0 에서 자르지 않는 것입니다. 속도가 음수로 내려가 상자가 뒤로 갑니다.
- 흔한 실수 셋: 접선 방향을 법선 충격량을 적용한 뒤의 속도로 구하는 것입니다. 값이 달라집니다.
단계 7개
- 그리기 도구 상자를 놓는다
- 충격량 공식
- 무엇이 보존되고 무엇이 사라지나
- 튀는 높이는 e 제곱으로 줄어든다
- 미끄러지는 상자는 어디서 멈추나
- 마찰도 충격량이다
- 상자 안의 공 다섯 개