- 개요
벡터의 내적은 공간을 분석하는데 유용하게 사용할 수 있다
따라서 벡터의 내적을 사용하여 캐릭터의 시야각 영역에 목표물이 존재하는지 파악하는 방법을 알아본다
- 전후 판별

위와 같은 관계에서 벡터의 크기는 언제나 양수이므로, 벡터 내적의 부호는 cos 함수에 의해 결정된다

이때 cos 함수는 위와 같이 (-90° ~ 90°)의 영역에서는 양의 부호를 가지고,
90°, -90°에서는 0 그리고 나머지 영역에서는 음의 부호를 가지게 된다
따라서 벡터 내적의 부호는 내적하는 두 벡터의 사잇각의 범위에 따라 결정된다
이를 응용하여 내적의 부호만을 사용하여 두 벡터의 방향을 결정할 수 있다
- 벡터 내적의 결과가 양수인 경우 : 두 벡터는 같은 방향
- 벡터 내적의 결과가 음수인 경우 : 두 벡터는 다른 방향
- 벡터 내적의 결과가 0인 경우 : 두 벡터는 서로 직교

위와 같이 캐릭터의 시선 벡터 f와 캐릭터에서 목표물로 향하는 벡터 v 그리고
시선 벡터 f와 목표물로 향하는 벡터 v의 사잇각을 a라고 하였을 때 두 벡터의 내적의 부호에 따라
캐릭터와 목표물 사이의 공간 구성을 다음과 같이 파악할 수 있다
- f · v 결과의 부호가 양수인 경우 : 캐릭터 앞에 목표물이 위치
- f · v 결과의 부호가 음수인 경우 : 캐릭터 뒤에 목표물이 위치
- f · v 결과의 부호가 0인 경우 : 캐릭터 옆에 목표물이 위치
- 시야 판별

이번에는 캐릭터에 시야각이라는 특성을 부여한다
부여한 시야각을 b라고 한다면, 양쪽으로 균등하게 b/2의 시야각이 설정될 것이다
나머지 설정은 이전의 위치 판별과 동일하다
이때 시야각에 목표물이 탐지되는지 여부는 사잇각 a가 시야각인 b/2보다 작거나 같은 상황을 의미한다
그러므로 다음의 과정을 거쳐 캐릭터의 시야에 목표물이 탐지되었는지 판별할 수 있다
- 1) 절반의 시야각인 cos(b/2)를 미리 계산
- 2) 캐릭터의 시선 벡터를 구하고 크기를 1로 정규화 -> 생성된 단위 벡터를 f`로 표현
- 3) 캐릭터에서 목표물로 향하는 벡터도 크기를 1로 정규화 -> 생성된 단위 벡터를 v`로 표현
- 4) f` · v`의 계산 결과는 cos(a)가 되고, 1)에서 계산한 cos(b/2)와 cos(a)와 비교
위와 같은 계산 과정을 거쳐 다음의 결론을 얻을 수 있다
- f` · v` >= cos(b/2)인 경우 : 목표물이 시야 범위 안에 있음
- f` · v` < cos(b/2)인 경우 : 목표물이 시야 범위 밖에 있음
'수학 > 이득우의 게임 수학' 카테고리의 다른 글
| 메시 (0) | 2025.11.26 |
|---|---|
| 세 점의 결합 (0) | 2025.11.26 |
| 벡터의 내적과 행렬의 곱셈 (0) | 2025.11.05 |
| 벡터의 내적과 삼각함수의 관계 (0) | 2025.11.05 |
| 벡터의 내적 (0) | 2025.11.05 |