03. 세 번째 수업: 허공에 던진 수류탄의 나락 다이브, 투사체 운동 (Projectile Motion)
FPS 배틀그라운드 게임에서 당신이 하늘 위 비스듬한 허공을 향해 수류탄을 하나 투척했습니다. 그 수류탄의 높이(위치) 맵 코드는 어떻게 만들어질까요? “던진 힘(초기 파워)” 과 “지구의 빡치는 중력 락다운” 이 두 가지가 결합해 이차함수 포물선으로 탄생합니다.
- 수류탄 높이 함수: $\mathbf{h(t) = -5t^2 + 30t}$ (30의 힘으로 던졌고, -5 중력 G 로 데미지를 입는 중)
자! 미분 엔진으로 이 수류탄의 라이프사이클 찰나의 비밀 3가지를 한 방에 해킹해 보겠습니다.
1. 믹서기 가동: 도함수 스피드 뽑기
먼저 $h(t)$ 높이 뼈대를 무조건 미분기 스위치로 한 번 갈아버려 $v(t)$ (수류탄의 상하 수직 속도계) 로 변이시킵니다!
- $h’(t) = \mathbf{v(t) = -10t + 30}$ 아하! 수류탄은 처음 $t=0$ 시작할 땐 $\mathbf{+30}$ 미친 스피드로 치솟다가, 1초마다 중력을 처맞고 10씩 속도가 깎이는 둔화의 숙명이 떴습니다.
2. 해킹 1: “이 수류탄이 우주 끝 어디까지 제일 높이 치솟아 오르는가? (최고 높이)”
산맥의 최고점 (극댓값 Max) 의 조건이 2부에서 뭐였죠? “정상 봉우리 꼭대기에서는 무중력으로 상승과 하강 스피드가 잠시 얼어붙는 $\mathbf{v(t) = 0}$ 버그가 터진다!” 였습니다.
$v(t)$ 엔진 스크립트에 $=0$ 을 쑤셔 넣습니다!
- $-10t + 30 = 0$
- $\mathbf{t = 3 \text{초}}$
그럼 최고 높이는 몇 미터일까요? 정점 프레임 시간($3$) 을 오리지널 $h(t)$ 맵 함수에 다시 욱여넣습니다.
- $h(3) = -5(3^2) + 30(3) = -45 + 90 = \mathbf{45\mathbf{m}}$
3. 해킹 2: “적군의 대가리 땅바닥에 쾅! 하고 충돌할 때 폭발 타격 데미지 스피드는?”
수류탄이 공중 체공을 끝내고 땅바닥 흙(높이가 $\mathbf{0}$ 인 지면) 에 쾅 부딪혀 박살 나는 프레임 타임을 잡아내야 합니다. 이번엔 속도 $v$ 가 아니라, 오리지널 위치 고도 함수 $\mathbf{h(t) = 0}$ 으로 터프 시킵니다!
- $-5t^2 + 30t = 0 \quad \to \quad -5t(t - 6) = 0$
- $\mathbf{t = 0 \text{초}}$ (방금 내 손을 떠난 처음에 바닥), 그리고 $\mathbf{t = 6 \text{초}}$ !!
그럼 땅에 처박힐 그 6초 찰나의 폭격 “타격 데미지 스피드” 는? 아까 뽑았던 $v(t)$ 자판기에 숫자 6을 콜합니다!
- $v(6) = -10(6) + 30 = \mathbf{-30\text{m/s}}$
위치 방정식 단 1개만 주어졌을 뿐인데… 1번 미분으로 우리는 저 던져진 쇳덩어리가 하늘 위에서 벌이는 모든 시공간 액션 타격 물리를 오차율 $0\%$ 코드로 스캔/예언해 냈습니다. 4장에서는 떨어지는 돌멩이가 아니라, “변화하는 그림자” 에 대한 변화율 스캔을 때려보겠습니다.