컴퓨터 그래픽스

6.27 2장 - 수학 기초

새우급여기 2024. 6. 30. 16:13

 이번 강의에서는 행렬, 벡터를 살펴보았다. 컴퓨터 그래픽스가 수학을 많이 필요로 하는 분야임이 실감난다.

이미 알고있는 것은 간단하게 정리하려 했으나 꼼꼼하게 공부하자는 의미에서 강의 내용을 정리본에 모두 포함시켰다.

 

 

 

행렬의 곱

A, B 두 행렬은 각각 열 크기와 행 크기가 같으므로 곱셈 가능하다.

.

 

2차원 벡터, 3차원 벡터

기본적으로 로우벡터라고 함.

열의 형태로 작성하면 column 벡터.

행렬*행렬 방식과 똑같이 적용 가능.

전치행렬: 어떤 행렬 M의 행, 열 바꾼 것

행렬과 벡터를 곱한 값은 행렬과 벡터를 각각 전치시킨 것의 곱과 같음.

openGL은 열 벡터, Direct3D는 행 벡터 사용함.

 

단위 행렬: 정사각 행렬 중 왼쪽 위 끝, 오른쪽 아래 잇는 대각선에 있는 원소가 모두 1이고 나머지 0인 행렬

역행렬: 두 정사각 행렬 A, B가 있다고 가정하면, AB = I라면

B는 A의 역행렬. 반대로 A는 B의 역행렬이 될 수 있음.

 

벡터

정규화: 벡터 v를 자신의 길이로 나누는 과정 --> v/||v||

단위(unit) 벡터: 길이가 1인 벡터

 

좌표계(공간) = 원점 + 기저

e1(1,0), e2(0,1)이면

표준기저 —> 3e1 + 5e2

표준기저X —> (3, 5) = 3(1, 1)+1(0, 2)

 

직교 정규(표준기저X) —> (3, 5) = 4**√2u + √2v**

2차원 공간에 있는 모든 벡터는 u, v의 선형 조합으로 나타낼 수 있음

 

Dot Product(= Inner Prod = 내적)

내적: n차원 벡터 a,b가 있다면 a와 b의 내적은 다음과 같이 정의된다.

1.

2. |a||b|cosΘ (Θ는 a, b 사이의 각도)

  • 두 벡터 수직 이루면 내적은 0
  • 예각이면 1
  • 둔각일 경우는 -1

하나의 단위 벡터 자기 자신과 내적할 경우 1

 

Cross Product

3차원 벡터에서만 정의됨.

오른손 법칙

오른손 손가락 네 개를 a에서 b쪽 방향으로 감싸쥐면

엄지 손가락은 a * b의 방향울 가리킨다.

이 때 a * b의 길이는 a와 b에 의해 만들어지는 평행사변형의 넓이와 같다.

—> ||a*b|| - ||a||||b||sinΘ

a*b와 b*a는 길이는 같지만 반대 방향을 가리킨다.

 

 

직선 및 선형보간

p0와 p1을 잇는 무한한 직선 표현한 매개변수 방정식

 

t의 값에 따라 P(t)의 값이 어떻게 도출되는가?

  • t = 0이면 P0
  • t = 1이면 P1
  • t = [0 , ∞]이면 광선
  • t = [- ∞ , ∞]이면 양쪽으로 무한히 뻗는 직선
  • t = [0, 1]일때는 p0와 p1을 잇는 선분. P(t)를 p0와 p1의 선형보간이라고 한다.

 

p0 = (x0 y0 z0)

p1 = (x1 y1 z1)

선형보간을 통해 x, y 좌표 계산

 

c0 = (R0, G0, B0), c1 = (R1, G1, B1)이면 선형보간된 색상은 아래와 같이 정의된다.

 

이미지 출처

[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문]