물리 엔진의 뼈대 · 제약과 안정성 · 실습
상자 다섯 개를 쌓아 안정시킨다
목표
파고든 겹침을 위치 보정으로 되돌리고, 반복 횟수로 더미의 단단함을 조절하고, 상자 다섯 개가 쌓여 안정되는 과정을 그림으로 남깁니다. 이 실습이 코스 2의 마무리입니다.
왜 중요한가
충격량은 속도를 고칠 뿐 이미 파고든 겹침을 되돌리지 못합니다. 겹침을 알아채는 시점이 이미 겹친 뒤이기 때문입니다. 그래서 위치를 따로 밀어 주어야 하는데, 여기에 두 개의 손잡이가 있습니다. 한 걸음에 몇 퍼센트를 되돌릴지(percent)와 무시할 여유(slop)입니다. 한 번에 다 밀면 튕기고, 여유를 두지 않으면 미세하게 떨립니다. 겹침을 정확히 0 으로 만들려 하지 않는 것이 오히려 안정적이라는 점이 이 층의 핵심입니다.
그리고 접촉이 여럿이면 서로 얽힙니다. 위를 고치면 아래가 눌리고 아래를 고치면 위가 뜹니다. 정확히 풀려면 연립방정식이 필요한데 비싸므로, 엔진들은 같은 순회를 여러 번 반복해 근사합니다. 반복 횟수가 곧 더미가 얼마나 단단해 보이는지를 정합니다.
단계
1. /root/stack 에 도구 상자를 놓습니다.
2. /root/stack/correct.py — 위치 보정.
3. /root/stack/out/03-sink.txt — 보정 없이 가라앉는 깊이.
4. /root/stack/out/04-fixed.txt — 보정을 켠 깊이.
5. /root/stack/out/05-iters.txt — 반복 횟수 1·4·10.
6. /root/stack/out/06-stack.txt 와 stack.png — 다섯 개를 쌓기.
7. /root/stack/out/f00.png ~ f11.png 와 index.html — 쌓이는 과정.
참고
- 그림은
nohup python3 -m http.server 8080 -d /root/stack/out &로 띄우고 웹 미리보기 에서http://localhost:8080/을 엽니다. 열두 장이 순서대로 돌면 상자가 떨어져 쌓이는 것이 보입니다. - 한 걸음의 순서를 정확히 지키십시오 — 중력, 반복 속도 해법, 위치 갱신, 위치 보정입니다. 순서가 다르면 값이 달라집니다.
- 흔한 실수 하나: 위치 보정에서 속도까지 바꾸는 것입니다. 보정이 힘이 되어 더미가 스스로 튀어 오릅니다.
- 흔한 실수 둘: 슬롭 없이 겹침을 0 으로 만들려는 것입니다. 매 걸음 아주 작은 보정이 계속 일어나 상자가 떨립니다.
단계 7개
- 그리기 도구 상자를 놓는다
- 위치 보정
- 보정이 없으면 가라앉은 채로 굳는다
- 보정을 켜면 슬롭까지 돌아온다
- 반복 횟수가 더미의 단단함을 정한다
- 다섯 개를 쌓는다
- 쌓이는 과정을 열두 장으로