Vector의 가장 기본적인 계산은 내적 (inner Product or Dot Product)과 외적(Outer Product or Cross Product) 이다 
이 페이지에서는 내적에 관해서 이야기 해볼꺼다. 

 

일단 내적에 대해 살펴보자

내적은 a, b 벡터의 크기의 곱하고 두 벡터 사이의 각도를 cos 한 값이다. 

 

결과적으로 내적은 스칼라 값으로 결과가 나온다.

내적은 주 벡터간의 투영 정도이다. 

만약 두 직선이 평행하다면 투영정도가 100%가 되기 때문에 -1 or 1 (방향벡터 기준)

두 벡터가 직각이라면 투영도가 하나도 없기 때문에 0이 된다.  

 

 

위에 식을 쉽게 풀이한다면 

a = (ax, ay, az) 

b = (bx, by, bz) 

두 벡터를 가정한다면

로 쉽게 내적을 계산 할 수 있다.

 

 

 

그럼 내적을 한 결과 값으로 게임에서 어떤것들을 활용 할 수 있을까??

 

1. 플레이어 기준으로 몬스터가 내 뒤에 있는지 앞에 있는지 판별.

 

-  플레이어 기준으로 -90 & 90 사이에 있다면 앞에 있는 것이다.

    방향벡터 a (플레이어 기준 forward) 와 b 를 내적하면  

    양수 : 몬스터가 앞에 있는 것.

    0 : 방향벡터가 서로 지각으로 있다는 것 즉 몬스터가 바로 내 오른쪽이나 왼쪽에 있는 것. 

    음수: 몬스터가 뒤에 있는 것.

 

 

 

2. 두 벡터의 사이 각

두 벡터의 정보가 있다면 크기를 구 할 수 있으므로 크기와, 내적, cos 역삼각함수 활용하여 두 벡터간의 사이각을 구 할 수 있다.

 

 

3. 몬스터가 플레이어 시야에 들어왔는지 판별 

 

- 플레이어의 시야가  θ라고 가정하면 방향벡터 a (forward 벡터) 양쪽으로 

  -θ/2 ~ θ/2 각도 안에 있어야한다. 

  몬스터와 플레이어 각각 벡터를 위에 나와 있는 공식에서 내적을 활용하여 두 벡터간의 각도를

  구하여 시야 안에 있는지 밖에 있는지를 판별한다. 

 

 

 

내적을 통해 게임 안에서 활용할 수 있는 것들은 정말 많다. 

 

 

 

참고 자료 : 인프런 다이렉트12 강의
http://rapapa.net/?p=2974

'개발 공부 > DirectX12 및 게임수학' 카테고리의 다른 글

[게임수학] 변환행렬  (0) 2022.10.10
[게임수학] 행렬  (0) 2022.10.10
[게임수학] Vector 외적  (0) 2022.03.13
[게임수학] 기하 벡터 기초  (0) 2022.02.22
[게임 수학] 삼각함수  (0) 2022.02.17

+ Recent posts