Artoke

수학 기초: 내적 — 적이 내 앞에 있나 뒤에 있나 판정하기

적이 내 앞에 있을까, 뒤에 있을까?

게임 속 주인공이 되었다고 상상해 보세요. 어두운 동굴 안에서 적이 나타났어요. 그런데 이 적이 내 에 있을까요, 에 있을까요?

사람은 눈으로 보면 바로 알아요. 하지만 컴퓨터는 눈이 없어요. 컴퓨터가 아는 건 숫자뿐이에요. 그래서 게임을 만드는 사람들은 숫자 계산만으로 앞뒤를 판정하는 방법을 씁니다.

그 비밀 도구가 바로 오늘 배울 내적(內積, dot product)이에요. 이름은 어려워 보이지만, 계산은 곱하기와 더하기만 하면 됩니다.

먼저, 화살표(벡터)부터 알아보자

내적을 배우기 전에 벡터라는 친구를 먼저 만나야 해요. 벡터는 그냥 화살표라고 생각하면 돼요.

  • 화살표의 방향: 어디를 가리키는가
  • 화살표의 길이: 얼마나 힘차게 가리키는가

게임 속 주인공에게는 "내가 지금 바라보는 방향"이라는 화살표가 있어요. 그리고 "나에게서 적까지 가는 방향"이라는 화살표도 그릴 수 있죠. 이 두 화살표를 비교하면 앞뒤를 알 수 있어요.

벡터는 숫자 묶음으로 적어요. 예를 들어 오른쪽으로 3칸, 위로 2칸 가는 화살표는 (3, 2)라고 씁니다.

내적: 두 화살표가 얼마나 같은 곳을 보는지 재는 점수

내적은 두 화살표를 넣으면 숫자 하나가 나오는 계산이에요. 이 숫자는 마치 "두 화살표의 사이좋음 점수" 같아요.

  • 두 화살표가 같은 방향을 보면 → 점수가 크고 양수(+)
  • 두 화살표가 직각(90도)이면 → 점수가 딱 0
  • 두 화살표가 반대 방향을 보면 → 점수가 음수(−)

계산법은 아주 간단해요. 같은 자리끼리 곱해서 전부 더하면 끝!

예를 들어 화살표 A = (3, 2), 화살표 B = (1, 4)라면:

A · B = (3 × 1) + (2 × 4) = 3 + 8 = 11

11은 양수니까, 두 화살표는 대체로 같은 쪽을 바라보고 있다는 뜻이에요. 곱하기 두 번, 더하기 한 번. 이게 전부예요!

그림으로 보는 앞뒤 판정

이제 게임 이야기로 돌아가 볼게요. 주인공의 "바라보는 방향" 화살표와, "주인공에서 적까지" 화살표를 내적하면:

수학 기초: 내적 — 적이 내 앞에 있나 뒤에 있나 판정하기 도식

규칙은 딱 세 줄이에요.

  1. 내적이 양수 → 적은 내 에 있다
  2. 내적이 0 → 적은 내 정확히 옆에 있다
  3. 내적이 음수 → 적은 내 에 있다

실제 게임에서는 이 계산으로 "적이 시야에 들어왔는지", "등 뒤에서 공격당했는지"를 판정해요. 몰래 다가가서 공격하는 잠입 게임의 핵심이 바로 이 한 줄 계산이랍니다.

왜 이게 되는 걸까? 각도의 비밀

내적에는 또 다른 얼굴이 있어요. 수학자들이 알아낸 사실인데, 내적은 이렇게도 계산할 수 있어요:

내적 = (A의 길이) × (B의 길이) × cos(두 화살표 사이의 각도)

cos(코사인)이라는 낯선 이름이 나왔지만, 겁먹지 마세요. 지금 알아야 할 건 딱 하나예요. cos은 각도에 따라 부호가 바뀌는 숫자라는 것!

  • 각도가 90도보다 작으면(가까운 방향) → cos은 양수
  • 각도가 딱 90도면 → cos은 0
  • 각도가 90도보다 크면(반대쪽 방향) → cos은 음수
내적을 이용해 두 벡터 사이의 각도를 구하는 그림
Illustration showing how to find the angle between vectors using the dot product · 출처: 내적 — 적이 내 앞에 있나 뒤에 있나 판정하기

화살표의 길이는 언제나 양수예요. 그러니까 내적의 부호(+, −)를 정하는 건 오직 cos, 즉 두 화살표 사이의 각도뿐이에요. 그래서 내적의 부호만 봐도 "각도가 90도보다 작은가 큰가", 다시 말해 "앞인가 뒤인가"를 알 수 있는 거죠.

거꾸로, 내적을 두 길이의 곱으로 나누면 cos 값이 나와요. 그걸로 두 화살표 사이의 정확한 각도까지 구할 수 있어요. 게임에서 "적이 내 앞 60도 시야각 안에 있나?"를 판정할 때 바로 이 방법을 씁니다.

내적은 '그림자의 길이'이기도 해요

내적을 이해하는 또 하나의 멋진 그림이 있어요. 바로 그림자예요.

화살표 B 위에 해가 떠 있다고 상상해 보세요. 화살표 A가 화살표 B 위에 드리우는 그림자의 길이를 재는 것, 그게 내적의 정체예요. (정확히는 그림자 길이에 B의 길이를 곱한 값이에요.)

한 벡터가 다른 벡터 위에 만드는 그림자(정사영)를 보여주는 그림
Scalar projection · 출처: 내적 — 적이 내 앞에 있나 뒤에 있나 판정하기
  • A가 B와 같은 방향이면 그림자가 길게, 같은 쪽으로 생겨요 → 내적이 커요
  • A가 B와 직각이면 그림자가 점 하나가 돼요 → 내적이 0
  • A가 B와 반대쪽이면 그림자가 반대 방향으로 생겨요 → 내적이 음수

"적 방향 화살표가 내 시선 화살표 위에 그림자를 드리웠을 때, 그림자가 앞쪽으로 생기면 앞, 뒤쪽으로 생기면 뒤." 이렇게 기억하면 잊어버리지 않아요.

신기한 점: 어느 방향에서 봐도 답이 같다

내적에는 아주 중요한 성질이 하나 있어요. 좌표를 어떻게 잡든, 즉 모눈종이를 어떻게 돌려서 그리든 내적 값은 변하지 않는다는 거예요.

생각해 보면 당연해요. "적이 내 앞에 있다"는 사실은, 지도를 어느 방향으로 돌려 봐도 변하지 않으니까요. 내적은 좌표라는 옷을 입고 계산되지만, 그 결과는 화살표들 사이의 진짜 관계(길이와 각도)만 담고 있어요.

직교하는 기준 방향으로 벡터를 성분으로 나누는 그림
Vector components in an orthonormal basis · 출처: 내적 — 적이 내 앞에 있나 뒤에 있나 판정하기

그래서 내적을 스칼라곱(scalar product)이라고도 불러요. "스칼라"는 방향 없는 그냥 숫자라는 뜻이에요. 화살표 두 개를 넣으면 방향 없는 숫자 하나가 나오니까요.

직접 해 보기: 미니 문제

주인공이 오른쪽을 보고 있어요. 시선 화살표는 (1, 0)이에요.

문제 1. 적이 (5, 3) 방향에 있어요. 내적은?

→ (1×5) + (0×3) = 5. 양수! 적은 에 있어요.

문제 2. 적이 (−4, 2) 방향에 있어요. 내적은?

→ (1×(−4)) + (0×2) = −4. 음수! 적은 에 있어요. 빨리 돌아서야 해요!

문제 3. 적이 (0, 7) 방향에 있어요. 내적은?

→ (1×0) + (0×7) = 0. 적은 정확히 (직각 방향)에 있어요.

정리하며

오늘 배운 내용을 한 줄씩 정리해 볼게요.

  • 벡터는 방향과 길이를 가진 화살표다.
  • 내적은 두 화살표를 같은 자리끼리 곱해서 더한 숫자다.
  • 내적의 부호는 두 화살표 사이 각도가 정한다: 양수면 같은 편, 0이면 직각, 음수면 반대편.
  • 그래서 게임에서는 내적 한 번으로 적이 앞인지 뒤인지 판정한다.
  • 내적은 그림자의 길이로도 이해할 수 있다.

곱하기와 더하기 몇 번으로 컴퓨터에게 "앞뒤 감각"을 심어 주는 마법, 그게 내적이에요. 다음에 게임에서 적이 여러분의 등 뒤를 귀신같이 알아챈다면, 그 뒤에는 이 작고 강력한 계산이 숨어 있다는 걸 기억해 주세요!

출처

광고

리깅 파이프라인 자동화 도구

반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.

리깅 도구 보기