[컴퓨터 그래픽스] 벡터, 행렬
스칼라(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의 경우)
- 배열 원소 4개
- 좌표 (x, y, z, w)
- 텍스처 좌표 (s, t, p, q)
- 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개를 저장할 수 있게 되어있음