04. 네 번째 수업: 나를 향해 날아오는 과녁, 벡터의 뺄셈 (Vector Subtraction)
우주선 A(나) 와 우주선 B(적기) 가 레이더에 떴습니다. 내비게이션 모니터를 보니 원점 기지국 배꼽$(0,0)$ 에서부터 계산된 내 우주선의 위치는 벡터 $\vec{a} \ [3, 2]$ 에 떠 있고, 적기의 위치는 벡터 $\vec{b} \ [7, 5]$ 에 떠 있습니다.
당신은 우주선 A의 조종석에 앉아 미사일 버튼을 쥐고 있습니다. “과연 내 모니터 콕핏 시야에서 바라볼 때, 저 적기 B를 향해 날아가야 하는 미사일 발사 궤적(화살표) 에임은 어떻게 잡아야 하는가?” 이 에임(Aiming) 조준선의 거리를 재는 파이썬 코드가 바로 “벡터의 뺄셈 (Vector Subtraction)” 입니다.
1. 뺄셈의 역발상 해킹: “마이너스는 방항을 180도 뒤집어 깐 복제품이다!”
화살표에서 뺄셈을 도대체 머리로 어떻게 렌더링해야 할까요? 위대한 해커들은 뺄셈을 따로 정의하지 않습니다. 그냥 180도 리버스(Reverse) 방향 턴 스크립트를 먹이고 덧셈 엔진에 던져버립니다!
$\mathbf{\vec{a} - \vec{b}}$ 이것의 기하학적 정체는? ”$\mathbf{\vec{a} + (-\vec{b})}$” 와 같다!
$- \vec{b}$ 가 뭘까요? 원래 $\vec{b}$ 화살표가 북동쪽으로 대가리를 치켜세우고 있었다면, 그 몽둥이는 제자리에 그대로 둔 채 화살촉의 앞뒤 머리 방향만 남서쪽으로 $180^\circ$ 완전 거꾸로 까뒤집어 버리는 물리적인 역방향 모드를 뜻합니다! (크기 막대 길이는 동일하게 유지!)
즉, 뺄셈 화면 렌더링은 앞서 배운 [꼬리 물기 덧셈법] 의 재활용입니다.
- 첫 번째 화살표 $\vec{a}$ 를 그린다.
- 빼려는 두 번째 화살표 $\vec{b}$ 의 대가리를 $180^\circ$ 거꾸로 휙! 까뒤집어 반전시킨다. ($-\vec{b}$ 로 변신)
- 그 까뒤집힌 역주행 화살표의 꼬리를 콱 쥐고 $\vec{a}$ 의 끝에 붙여 콤보로 갈겨버리면 그것이 곧 뺄셈이다!
2. 전투기 레이더 타겟팅 (Targeting): 종점에서 시점 빼기
하지만 3D 게임 엔진에서 우표 딱지 뒤집듯 매번 $180^\circ$ 반전 그래픽을 렌더링 할 시간은 없습니다. 사실 벡터의 뺄셈 $\mathbf{\vec{b} - \vec{a}}$ 는 훨씬 소름 돋게 섹시하고 직관적인 화살표 기믹 하나를 모니터에 터뜨립니다.
“두 화살표의 출발 꼬리 엉덩이를 원점 배꼽 한 점(기지국) 에 강제 결박해 묶어둬라. 그리고 나서! $\mathbf{\vec{b} - \vec{a}}$ 란 무엇인가? 바로 빼는 놈 **$\vec{a}$ (내 우주선 과녁 위치, 시점) 정수리에서부터 $\rightarrow$ 빼짐을 당하는 놈 $\vec{b}$ (맞출 적기 타겟 위치, 종점) 정수리를 향해 다이렉트로 내다 꽂아버리는 살인 미사일 궤적 화살표 하나를 직통으로 찍! 그어버린 것과 $100\%$ 똑같다!”**
- 즉, 도착 타겟($\vec{b}$) $\ - \ $ 출발 베이스($\vec{a}$) $\rightarrow$ “A 에서부터 B 를 향해 쏘아라!” 라는 한 문구로 완벽하게 런타임이 떨어집니다. 항상 헷갈리죠? “종점표적 - 시점출발지” 배열만 기억하십시오! 목표 스코어에서 현재 내 꼬라지 베이스 스코어를 빼야, 남은 등반 퀘스트 루트 궤적이 산출되니까요.

3. 배열 코드 데이터로 해킹하기
자, 아까 인트로의 좌표 데이터 코드를 뺄셈 배열 함수로 부숴버립시다.
- 출발 콕핏 좌표(나): $\vec{a} = [3,\ 2]$
- 록온(Lock-on) 타겟 레이더(적기): $\vec{b} = [7,\ 5]$
“내 우주선에서 적 우주선으로 날아가는 미사일 가이드 궤적 화살표는?” = (타겟) $-$ (나) = $\mathbf{\vec{b} - \vec{a}} = \mathbf{[7 - 3, \ 5 - 2]} = \mathbf{[4, \ 3]}$
정답 로딩: “파이썬 각도기 렌더링 제군들! 내 위치에서 미사일을 조준할 때, 모니터 오른쪽으로 $4$칸! 위쪽으로 $3$칸! 기울인 대각선 앵글 각도로 발사 버튼을 눌러라!”
이 얼마나 완벽하게 가볍고 아름다운 뺄셈 압축 코드입니까! 이제 방향 제어를 끝냈으니, 미사일 몽둥이 크기 자체를 파워 스위치로 뻥튀기하는 무지막지한 치트, [스칼라배(배율) 곱셈] 필터로 5장에서 터보 부스터를 켜 봅시다.