* 정의

 

외적(cross product, outer product)은 3차원에서만 정의되는 개념으로 두 3차원 벡터 a와 b의 외적(a × b)은 a, b 모두에 직교인 또 다른 벡터 n로 정의된다.

 

 

- 기본 공식, 사이 각도와 관련된 공식

 

 

 

- 왼손, 오른손 좌표계에서의 방향

 

이때 a, b에 모두 직교인 벡터 n의 방향은 두가지가 있을 수 있는데, 방향 선택은 오른손 좌표계면 오른손 법칙 왼손 좌표계면 왼손 법칙을 사용한다.

 

출처 : https://en.wikipedia.org/wiki/Right-hand_rule
출처 : http://www.f-lohmueller.de/pov_tut/a_geo/a_geo85e.htm

 

 

- 사이 각도

 

a × b = ||a|| ||b|| sinθ n

위와 같은 외적의 공식에서 n은 a,b모두에 직교인 벡터이며, θ는 a, b사이의 각도이다. (0 <= θ <= π)

 

 

  • a, b가 서로 수직하면(θ = π/2 or θ = 3π/2sinθ의 절댓값이 최대가 되어 a × b의 크기가 가장 커진다.
  • a, b가 서로 평행하면(θ = 0 or θ = π) sinθ은 0이되어 a × b = 0이된다.
  • 두 벡터가 직교할 때 절댓값이 가장 크다.

외적의 크기를 비교하면 두 벡터가 얼마나 직교하는 지 확인할 수 있다.

 

 

 

- 외적의 크기

 

외적의 크기는 다음과 같이 정의할 수 있다.

||a × b|| = ||a|| ||b|| |sinθ|

위와 같은 외적의 공식에서 n은 a,b모두에 직교인 벡터이며, θ는 a, b사이의 각도이다. (0 <= θ <= π)

 

기하학적으로 생각해보면 평행사변형의 크기와 같고 두 벡터가 직교할 때 최댓값을 갖는다.

 

 

- 좌표계 관점

 

좌표계에서 직접 어떤 벡터인지 유도할 수 있다.

a = (a1, a2, a3), b = (b1, b2, b3)

(i, j, k)은 양의 직교기저이다. (각각 (1,0,0), (0,1,0), (0,0,1))

아래와 같은 유도과정으로 다음 식을 얻을 수 있다. (왼손좌표계든 오른손좌표계든 둘 다 성립한다.) 

a × b = (a2*b3 - a3*b2, a3*b1 - a1*b3, a1*b2 - a2*b1) != b × a

 

 

 

- 행렬 관점

 

다음과 같이 표현할 수도 있다.

출처 :&amp;amp;amp;amp;amp;nbsp;https://en.wikipedia.org/wiki/Cross_product

 

 

// 2차원 유사 외적 : 2차원에서는 두 벡터에 수직인 벡터가 존재하지 않지만, 하나의 2차원 벡터 U = (ux, uy)에 수직인 벡터 V는 구할 수 있다.

 

 

- 추가 공식

 

1, 3번 공식이 자주 쓰인다.

 

 

* 사용 이유

 

- 게임에서 사용하는 방식

 

게임에서는 두 방향 벡터를 가지고 이와 수직인 벡터를 구해야할 때 사용한다.

 

가장 대표적으로 컴퓨터 그래픽스 분야에서 삼각형의 법선 벡터를 구할 때 사용된다.

 

 

- 사용 사례

 

@ 삼각형의 법선벡터

삼각형의 법선 벡터를 구할 수 있다. 

 

 

@ 회전 시뮬레이션

회전력을 시뮬레이션하기 위해서 토크(돌림힘)를 거쳐야 하는데, 이때 힘에 따라 객체를 회전을 시뮬레이션할 수 있다.

 

 

* 내적과 외적 활용하기

 

문제 1. 플레이어와 몬스터가 존재하고, 플레이어가 바라보는 방향을 v1, 플레이어위치를 a 몬스터 위치를 b, 하늘 방향벡터를 up이라고 할때 플레이어가 몬스터를 바라보기 위해서는 어느방향으로 얼마나 회전해야할까? (단 플레이어와 몬스터가 존재하는 좌표계는 왼손좌표계이다.)

 

 

1.1. 플레이어에서 몬스터로의 방향을 v2 = b - a라고 하자.

 

1.2. v1과 v2를 내적하여 각도를 구한다. 단, 크기만 나오기 때문에 아직 방향은 알 수 없다.

사이의 각도를 θ라고 하면 θ = cos-1( v1 · v2 / ||v1|| ||v2||)

여기서 θ 두 각도 중 더 작은 각도를 의미하기 때문에 최소회전으로 몬스터를 바라볼 수 도록 보장할 수 있다.

 

1.3. 방향을 판별하기 위해서 v1과 v2를 외적하여 그 결과인 n을 up벡터와 내적하여 관계를 알아본다.

n = v1 × v2 = (v1y*v2z - v1z*v2y, v1z*v2x - v1x*v2z, v1x*v2y - v1y*v2x)

 

n · up > 0

 : n과 up이 같은 방향이기 때문에 왼손법칙(왼손좌표계이므로)에 의해서 플레이어가 반시계 방향으로 회전해야한다.

 

n · up < 0

 : n과 up이 다른 방향이기 때문에 왼손법칙(왼손좌표계이므로)에 의해서 플레이어가 시계 방향으로 회전해야한다.

 

 

'수학 > 선형대수학' 카테고리의 다른 글

내적  (0) 2022.11.16
Gimbal lock(짐벌락)  (0) 2022.06.11
사원수  (0) 2021.11.12
여러 변환 정리  (2) 2021.11.12
행렬 대수 정리  (0) 2021.11.12

+ Recent posts