Vector의 가장 기본적인 계산은 내적 (inner Product or Dot Product)과

외적(Outer Product or Cross Product) 이다 
이 페이지에서는 외적에 관해서 이야기 해 볼 것이다. 😙

 

외적이란 무엇일까?

외적은 두 벡타 각각 수직인 또 다른 벡터를 말한다.

그렇기 때문에 벡터의 외적은 내적과 다르게 결과값이 또 다른 벡터가 나온다.

 

위에 그림에서 a, b 두 벡터의 외적은 파란색 벡터라고 할 수 있다. 

공식은 아래와 같다. x는 곱셍이 아니다(벡터간의 곱셉은 존재하지 않음.)

 

 

이를 행렬식 표기법으로 계산한다면

a x b 로 예시를 들자면 a에 대한 벡터 정보를 2번째 행에 순서대로 나열한다.

그리고 b에 대한 벡터 정보를 3번째 행에 나열한다.

1번째 행에는 단위 벡터들을 나열한다.

 

여기서 구해진 외적 벡터의 크기를 구하면 놀랍게도 서로 외적한 a x b의 평행사변형 넓이가 나온다.

그럼 외적으로 즉 두 벡터의 수직인 또 다른벡터로 어떤것을 활용 할 수 있을까?

활용에 앞서 외적에 몇가지 규칙을 살펴보자.

 

1. 외적은 내적과 다르게 교환법칙이 성립하지 않는다.(중요)

만약 외적 순서가 바뀐다면 -가 곱해서져서 나온다.

 

2. 두 벡터가 평행하다면 sin0도 이기때문에 0이 나온다.

 

위에 규칙을 통해서 활용할 수 있는 방법들을 살펴보자. 

 

1. 하나의 면이 바라보는 방향을 구 할 수 있다. 

이는 쉐이더에서 실제로 많이 활용된다. 

바라보는 방향에 따라 빛에 대한 계산을 할 수 있다.

 

 

2. c라는 점이 A, B 벡터 사이에 존재 하고 있는지?

(c점이 안에 있을 때)

- 위에 외적 규칙에 대해 말했듯이 외적은 교환법칙이 성립되지 않습니다.

 

 0에서 c점을 이은 벡터를 C라고 하겠습니다. 

  B X C == C X A 했을때 만약 외적 벡터에 대한 단위벡터가 동일하게 나온다면 

  c라는 점이 안에 있다고 예측 할 수 있습니다. 

 

 

 

(c 점이 밖에 있을 때)

 

교환법칙이 성립하지 않기 때문에 

B X C != C X A 했을때 만약 외적 벡터에 대한 단위벡터가 동일하지 않는다면 

c라는 점이 밖에 있다고 예측 할 수 있습니다. 

 

 

 

 

 

 

3. 몬스터가 왼쪽에 있는지 오른쪽에 있는지 



 

UP 은 플레이어 위쪽 벡터

 F 는 플레이어의 정면 벡터

 A는 몬스터와 플레이어 간의 벡터 라고 가정한다. 

A와 F를 외적해서 나온 벡터와 Up과의 내적

 

 

 

 

 

 

 

(AXF) · UP

0보다 크면 오른쪽

0이면 A와 F가 평행인 상태

0보다 작다면 왼쪽에 있다고 할 수 있음. 

 

 

 

 

 

0보다 클때 오른쪽, 왼쪽은 사실 게임 엔진이 어떤 좌표계를 사용하냐에 따라 다르다.

OpenGL에서는 오른속 법칙, Unity는 왼손 법칙에 따른다. 

 

참고 자료:

인프런 다이렉트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