센로그

2. Vectors and Matrices 본문

게임/그래픽 프로그래밍

2. Vectors and Matrices

seeyoun 2023. 3. 31. 20:00

◆ Vectors and Matrices

3D 그래픽에서는 많은 벡터와 행렬 연산이 나오기 때문에 잘 알고있어야 함~

 


◆ 벡터의 크기 (Magnitude)

||v|| = \(\sqrt{a² + b²}\)

Vector v = (3,1)일 때 v의 크기 ||v|| = \(\sqrt{3² + 1²}\) = \(\sqrt{10}\) 
 


◆ 벡터의 연산 - 덧셈, 뺄셈, 상수배

덧셈, 뺄셈, 상수배는 각각 요소별로 계산하면 됨

 

< 예시 >
Vector a = (1,2) 이고 Vector b = (2,1)일 때

  • a + b = (3,3)
  • a - b = (-1,1)
  • 3a = (3,6)
     

◆ 벡터의 연산 - 스칼라곱 (Dot Product, Scalar Product)

aㆍb = a₁b₁ + a₂b₂ = ||a||||b||cosθ
내적정사영의 크기.

< 예시 >

Vector a = (1,2) 이고 Vector b = (3,4)일 때
a와 b의 내적 aㆍb = 1*3 + 2*4 =11
 

기하학적으로, aㆍb 는 ||a||||b||cosθ 이다. 

 
 
< 특징 >

  • aㆍa = 1
  • a, b가 서로 수직인 경우, aㆍb = 0 
  • aㆍb = bㆍa

 

내적은 Lighting을 계산할 때 사용됨!

 

* 스칼라 곱(dotproduct)과 내적(inner product)의 차이!

스칼라 곱실수 벡터 공간에서 정의되고, 내적복소수 벡터 공간에서 정의된다.


 


◆ 벡터의 연산 - 벡터 곱 (Cross Product, Vector Product)

u x v는 (u ∧ v 라고도 쓴다!) 행렬식(Determinant)으로 계산한다.
오른손 법칙!

 

 
기하학적으로, || a x b || ||a||||b||sinθ 이다. 아래 평행사변형의 면적을 의미함.

 
< 특징 >

  • a x a = 0
    평행한 벡터끼리는 평행사변형을 만들 수 없다.

 

* 벡터 곱(cross product)과 외적(outer product)의 차이!

벡터 곱은 벡터로 보고 곱한  것이고, 외적은 행렬로 보고 곱한 것임.
따라서 벡터 곱의 결과는 벡터인 반면, 외적의 결과는 행렬이다.


[ 벡터곱 ]




[ 외적 ]



 


◆ 단위 벡터 (Unit Vector)

크기(magnitude)가 1인 벡터

: vector a의 단위벡터

 

 

다음과 같이 표기하면 단위벡터임

: m햇 이라고 읽음

보통 알파벳 위에 ^ 표시를 쓰고, '햇' 이라고 읽는다.

 


◆ 항등 행렬 (Identity Matrix)

주대각선의 원소가 모두 1이며 나머지 원소는 모두 0정사각 행렬

  • AI = IA = A
    어떤 행렬 A에 항등 행렬을 곱한 결괏값은 자기자신이다.

 


◆ 행렬의 성질

A, B, C가 행렬이라 하자.

  • A + B = B + A
  • (A + B) + C = A + (B + C)
  • A(B + C) = AB + BC
  • AB != BA
  • (AB)C = A(BC)

 


◆ 전치 행렬 (Transpose Matrix)

 


◆ 역행렬 (Inverse Matrix)

행렬 A의 역행렬은 다음과 같이 계산할 수 있다.

 

당연하게도, det(A) == 0이면 역행렬이 존재하지 않는다.

Comments