내적은 두 벡터를 하나의 스칼라 값으로 변환하는 연산을 의미한다. 이 때 연산은 벡터의 방향성과 크기를 고려해서 이루어지며, 두 벡터의 방향이 같을 수록 내적 값은 커지고, 방향이 다를 수록 내적 값이 작아진다. 즉, 내적이 0이면 두 벡터가 직교(Orthogonal, 수직)하는 관계라는 의미이다.
1. 내적의 기하학적 정의
두 벡터 A와 B의 내적 은 다음과 같이 정의된다.
A⋅B=∣A∣×∣B∣cosθ
여기서,
∣A∣,∣B∣ 는 각각 벡터 A와 B의 크기(길이)
θ 는 두 벡터가 이루는 각도
cosθ 는 두 벡터의 방향이 얼마나 유사한지를 나타냄
이 정의를 통해 내적의 몇 가지 중요한 특성을 확인할 수 있다.
1.1. 내적과 벡터의 방향성
cosθ 값에 따라 내적의 의미가 달라진다.
θ=0∘ (완전히 같은 방향) → cosθ=1
두 벡터가 같은 방향을 향하면 내적 값이 최대가 됨
θ=90∘ (서로 수직인 경우) → cosθ=0
두 벡터가 직교(orthogonal)하면 내적 값이 0
θ=180∘ (완전히 반대 방향) → cosθ=−1
두 벡터가 반대 방향이면 내적 값이 최소가 됨
즉, 내적 값이 크면 두 벡터가 유사한 방향을 가짐을 의미하고, 내적 값이 0이면 두 벡터가 수직을 이룸을 의미한다.
2. 벡터의 크기(길이) 정의
벡터의 크기는 유클리드 거리(Euclidean Distance)를 이용해서 계산된다.
2.1. 2차원 벡터의 크기
벡터 A=(Ax,Ay) 의 크기는 다음과 같이 계산된다.
∣A∣=Ax2+Ay2
2.2. 3차원 벡터의 크기
벡터 B=(Bx,By,Bz) 의 크기는 다음과 같다.
∣B∣=Bx2+By2+Bz2
3. 내적의 성분(좌표) 기반 정의
기하학적 정의 외에도, 내적은 벡터의 성분을 이용해서 아래와 같이 계산할 수도 있다.
3.1. 2차원 내적 공식
두 벡터 A=(Ax,Ay) 와 B=(Bx,By) 에 대해,
A⋅B=AxBx+AyBy
3.2. 3차원 내적 공식
벡터가 3차원인 경우에도 성분별로 내적을 계산할 수 있다.
A⋅B=AxBx+AyBy+AzBz
4. 내적의 기하학적 정의와 성분 정의의 관계
두 벡터 A=(Ax,Ay) 와 B=(Bx,By) 가 이루는 각도 θ 에 대해,
삼각함수를 이용하면 코사인 값은 다음과 같이 정의된다.
cosθ=∣A∣∣B∣A⋅B
위 식에서 성분 기반 내적 공식을 대입하면,
cosθ=∣A∣∣B∣AxBx+AyBy
양변에 ∣A∣∣B∣ 를 곱하면,
AxBx+AyBy=∣A∣∣B∣cosθ
즉, 기하학적 정의와 성분(좌표) 기반 정의가 동일함을 알 수 있다.
5. 게임에서 내적 활용 사례
내적은 게임 개발에서 시야 판별, 방향 판정, 충돌 감지, 타격 판정, 카메라 시스템 등 다양한 곳에서 사용된다.
5.1. 플레이어와 대상 물체 간의 전후방 판별
내적을 활용하면 대상이 플레이어의 앞쪽인지, 뒤쪽인지 쉽게 판별할 수 있다.
플레이어 위치: P(xp,yp)
플레이어의 정면(시선) 방향(Forward Vector): F=(Fx,Fy)
대상의 위치: T(xt,yt)
플레이어에서 타겟 방향을 나타내는 벡터:
T−P=(xt−xp,yt−yp)
해당 벡터와 플레이어의 정면 방향 벡터의 내적:
F⋅(T−P)=Fx(xt−xp)+Fy(yt−yp)
내적 값이 양수 → 대상이 플레이어 앞쪽에 위치
내적 값이 음수 → 대상이 플레이어 뒤쪽에 위치
내적 값이 0 → 대상이 플레이어의 정면이나 측면에 위치
대상이 측면에 위치할 때, 왼쪽인지 오른쪽인지에 대한 판별은 외적이라는 개념으로 가능하다.
✅ 대상이 전방에 있을 때 (θ=0∘)
플레이어 위치: P=(0,0)
플레이어 정면 방향 벡터: F=(1,0) (오른쪽을 바라봄)
대상 위치: T=(3,0) (플레이어 앞쪽)
👉 타겟 방향 벡터 계산
T−P=(3−0,0−0)=(3,0)
👉 내적 계산
F⋅(T−P)=(1,0)⋅(3,0)=(1×3)+(0×0)=3
✅ 대상이 후방에 있을 때 (θ=180∘)
플레이어 위치: P=(0,0)
플레이어 정면 방향 벡터: F=(1,0) (오른쪽을 바라봄)
대상 위치: T= (−3,0) (플레이어 뒤쪽)
👉 타겟 방향 벡터 계산
T−P=(−3−0,0−0)=(−3,0)
👉 내적 계산
F⋅(T−P)=(1,0)⋅(−3,0)=(1×−3)+(0×0)=−3
✅ 대상이 정확한 좌측에 있을 때 (θ=90∘)
플레이어 위치: P=(0,0)
플레이어 정면 방향 벡터: F=(1,0) (오른쪽을 바라봄)
대상 위치: T= (0,3) (플레이어 왼쪽)
👉 타겟 방향 벡터 계산
T−P=(0−0,3−0)=(0,3)
👉 내적 계산
F⋅(T−P)=(1,0)⋅(0,3)=(1×0)+(0×3)=0
5.2. 시야각(FOV) 내 판별
게임에서 플레이어의 시야각(Field of View, FOV) 내에 오브젝트가 포함되는지 확인하는 것은 AI의 적 탐지, 슈팅 게임에서의 타겟팅, 경비 시스템 등에서 중요한 요소다.
시야각 내 판별 공식
cosθ=∣F∣∣D∣F⋅D=∣F∣∣D∣FxDx+FyDy
이때, θ 는 플레이어의 정면 벡터 F 와 타겟 방향 벡터 D 가 이루는 각도다.
플레이어가 볼 수 있는 전체 시야의 각도를 FOV 라고 할 때, 대상이 시야 내에 있으려면: