[공부]/컴퓨터 그래픽스

[컴퓨터 그래픽스] 벡터, 행렬

개발꿈냥무 2024. 3. 3. 19:54

스칼라(scalar) : 실수값 1개 (예: 1.0, 0.1234, -4.35)

 

위치(position) : 좌표, point 라고도 함

- 표기 : p, q, r (볼드체) 또는 P, Q, R (대문자)

- 2차원 좌표 (x, y), 3차원 좌표 (x, y, z), 4차원 좌표 (x, y, z, w)

 

벡터(vector) : 변화량 = 방향(direction) & 크기(magnitude) --> 변화량이 같으면 같은 벡터!

- 표기 : u, v, w (볼드체) 등

- 2차원 벡터 (x, y), 3차원 벡터 (x, y, z), 4차원 벡터 (x, y, z, w)

- 가능한 연산 : 벡터의 합성(vector = vector + vector) 등

 

cf) position = 'origin'(원점) + vector 라 할 수 있음

  • position = position + vector (위치 이동)
  • vector = position - position

 

벡터의 크기(또는 길이) = |v| 

늘린 벡터의 크기는 원래 벡터 크기 x 늘린 크기 : | αv | = | α ||v|

 

 

 

벡터의 다양한 해석 (vector 4의 경우)

  1. 배열 원소 4개
  2. 좌표 (x, y, z, w)
  3. 텍스처 좌표 (s, t, p, q)
  4. RGBA 색상 (r, g, b, a)

 


단위 벡터 (unit vector)

= 크기가 1 인 벡터

 

vector normalization (단위 벡터 계산 과정) : u = (1 / |v|) x v

 

 

기저 벡터 (basis vector)

= 좌표축(x, y, z축) 상의 단위 벡터

 

 

 

수학적 관점의 벡터 공간 (Vector Space) : 스칼라와 벡터로 정의

  • 스칼라, 스칼라 계산 : α = β + γ
  • 스칼라, 벡터 곱셈 : v = 2u
  • 벡터, 벡터 덧셈 : w = u + v
  • 벡터 = 기저 벡터들의 합 : w = 2i + 3j + 4k

 

수학적 관점의 어파인 공간 (Affine Space) : 벡터 공간 + points (또는 positions)

  • 스칼라, 스칼라 계산
  • 스칼라, 벡터 곱셈
  • 벡터, 벡터 덧셈
  • 위치, 벡터 덧셈 : p = q + v
  • 위치, 위치 뺄셈 : v = p - q
  • 좌표 = 원점 + 기저 벡터들의 합 : p = o + 2i + 3j + 4k

 

수학적 관점의 유클리드 공간 (Euclidean Space) : add 거리(distance)

  • 벡터, 좌표 관계식 : v + u = (p - q) + (q - r) = p - r

 


행렬 (Matrix)

m x n 행렬은 m개 row(행), n개 column(열)

  • 행 벡터 (row vector) = 1 x n matrix
  • 열 벡터 (column vector) = m x 1 matrix

 

벡터와 벡터의 곱셈

  • 스칼라곱, 내적 (dot product)
  • 벡터곱, 외적 (cross product) : 일종의 행렬식(determinant) 계산

 

행렬과 벡터의 곱셈 : '여러 개의 벡터'와 벡터의 내적

(행렬 = 여러 개의 벡터로 해석 가능)

 

 

행렬과 행렬의 곱셈 : 행렬에 행렬 곱해서 새로운 행렬 만듦

 

 

cf)

  • 벡터 : 좌표로 해석 가능
  • 행렬 : 여러 개의 벡터(즉, 벡터의 집합)로 해석 가능 & 좌표의 변환으로 해석 가능
  • 3차원 행렬식 
  • 4차원 행렬식

 


벡터 = GPU의 레지스터!

하나의 레지스터(또는 cluster)는 4개의 float를 저장! → 경우에 따라 1, 2, 3개 또는 4개의 float 사용

 

즉, CPU의 레지스터가 숫자 하나(스칼라값)를 저장하는 반면에

GPU의 레지스터는 기본이 float 값 4개를 저장할 수 있게 되어있음