수학/이득우의 게임 수학

벡터의 내적을 이용한 시야 판별

monstro 2025. 11. 12. 11:04
728x90
반응형

- 개요

벡터의 내적은 공간을 분석하는데 유용하게 사용할 수 있다

따라서 벡터의 내적을 사용하여 캐릭터의 시야각 영역에 목표물이 존재하는지 파악하는 방법을 알아본다

 

- 전후 판별

벡터의 내적과 삼각함수의 관계

 

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

 

그래프 출처 : https://www.geogebra.org/m/chpwxkar

 

이때 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)인 경우 : 목표물이 시야 범위 밖에 있음
728x90
반응형

'수학 > 이득우의 게임 수학' 카테고리의 다른 글

메시  (0) 2025.11.26
세 점의 결합  (0) 2025.11.26
벡터의 내적과 행렬의 곱셈  (0) 2025.11.05
벡터의 내적과 삼각함수의 관계  (0) 2025.11.05
벡터의 내적  (0) 2025.11.05