본문 바로가기

공부/Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문

[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 2 - 수학 기초

728x90
반응형

 

 

2.1 행렬과 벡터

m x n 행렬

 

  • 행렬은 말 그대로 행(row)열(column)로 구성되는데, m개의 행과 n개의 열을 가진 행렬은 다음 그림과 같이 표현된다.

 

행렬의 곱

  • 행렬의 곱은 다음과 같이 곱해질 수 있다.
  • A의 크기가 l*m이고, B의 크기가 m*n이라면, AB의 크기는 l*n이 된다.

 

  •  - (x, y), (x, y, z)는 행벡터(row vector)라고 부른다.

행벡터

 

  • 어떤 행렬 M이 주어졌을 때, 그것의 행과 열을 바꿔 놓은 것을 전치행렬(transpose)이라고 하며 다음과 같이 표기한다.

전치행렬

 

  • Mv의 행렬-벡터의 곱셈은 다음과 같이 표현할 수 있다.

2차원 배열 (열벡터의 곱)
Mv의 행렬-벡터 곱센은 열벡터 v 대신 행벡터 v^T를 사용하되, 이를 M^T의 왼쪽에 배치

 

 

OpenGL은 열벡터를 사용하고 Mv와 같이 행렬-벡터 곱셈을 표현하는 반면, Direct3D는 행벡터를 사용하고 v^TM^T와 같은 방식을 사용한다.

 

 

  • 단위 행렬은 정사각행렬 중, 왼쪽 위 끝과 오른쪽 아래를 잇는 대각선에 놓인 원소는 모두 1이고 나머지 원소는 모두 0인 경우이다. (I로 표기한다.)

단위 행렬

  • 임의의 행렬 M에 대해서, 다음과 같이 MI = IM = M 이라는 공식이 성립한다.
  • 두 개의 정사각행렬 A와 B가 곱해져서 그 결과가 I(단위행렬)이 된다면, 즉 AB = I라면, B는 A의 역행렬(Inverse)이라고 부르며 A^-1로 표기한다.

역행렬에 대한 정의

 

  • 주어진 벡터를 자기 자신의 길이로 나눈 것을 정규화(nomalization)라고 하고, 그 길이는 항상 1이기 때문에 단위 벡터(unit vector)라고 부른다.

벡터 v의 길이

 

 


 

 

2.2 좌표계와 기저

  • 그래픽스에서는 좌표를 간단하게 공간(Space)이라고 부른다.

좌측부터 표준기저, 유효한 기저, 비표준 직교정규 기저라고 한다.

  • 표준기저에서 보다시피 e1과 e2가 주축(principal zxis, x축과 y축)에 나란하므로 {e1, e2}를 특별히 표준 기저(standard basis)라고 한다.
  • 표준 기저는 선형조합하여 2차원 공간의 모든 벡터를 표현할 수 있다.

3차원 공간에서의 표준 기저

  • 3차원 공간에서의 표준 기저 (e1, e2, e3)를 보여준다.

 

 


 

 

2.3 내적

두 벡터의 상대적인 방향에 따라 내적의 부호가 달라진다.

  • 두 벡터 a와 b사이의 각도를 ∂로 표기하면 다음과 같이 정의된다.

  • a와 b가 서로 수직이라면, ∂가 90도가 되어 a·b는 0이다.
  • 만약 ∂가 예각이라면, a·b는 양수이고, ∂가 둔각이라면 a·b는 음수다.
  • 하나의 단위 벡터를 자기 자신과 내적하면 1이 된다. 즉, a가 단위 벡터라면 a·a는 1이다.

 

 


 

 

2.4 벡터곱

  • 두 개의 3차원 벡터 a와 b의 벡터곱은 a X b로 표기된다.
  • 벡터곱 a X b의 방향은 오른손 법칙으로 결정된다.

오른손 법칙

  • 즉, 오른손 네 손가락이 첫 번째 벡터 a에서 두 번째 벡터 b쪽으로 감싸며 움직일 때 엄지 손가락이 a X b의 방향을 가리키게 된다.

 

  • a X b의 길이는 다음과 같이 성립된다. (= a와 b에 의해 만들어지는 평행사변형의 넓이와 같다.

 

b X a = -a X b (서로 방향이 반대다. 하지만 길이는 같을 것)
  • 외적의 공식은 다음과 같다.

외적의 공식

 

 


 

 

2.5 직선 및 선형보간

직선 및 선형보간의 정의

  • P0와 P1을 잇는 벡터는 P1-P0를 사용하여 정의할 수 있다.

  • P0와 P1을 잇는 무한한 직선은 다음과 같이 나타낼 수 있다. (P0는 시작점, -∞ < t <∞) 매개변수 방정식으로 정의된다.
  • t에 따라서 무한한 길이의 직선에 특정한 점이 형성이 된다.
  • 만약, t의 범위가 [0, ∞]로 정의되어 있다면, P(t)에서 시작해서 P1-P0 방향으로 무한한하게 뻗어 나가는 광선(Ray)이 된다.
  • 반면, t의 범위가 유한하게 한정된다면 P(t)는 선분을 표현한다.

 

t의 범위는 0과 1사이

  • 위에 나온 식은 다음과 같이 재정의할 수 있다.
  • t의 범위가 0과 1사이에서의 선분에 있어서 표현할 수 있는 점들은 그 지점의 특정한 t, 1-t를 배정함으로써 정의가 된다.
  • 선분안에 모든 점들은 양쪽 끝 값을 선형보간(linear interpolation)하여 표현할 수 있다.
  • 선형보간은 그래픽스에서 아주 많이 나오는 개념중에 하나다. 꼭 기억해두자.

 

  • P0와 P1에 특정한 값이 저장되어 있다면, 그 값들도 선형보간될 수 있다. (색상 같은 경우)

색상들도 당연히 선형보간될 수 있다. (RGB값)

 

 


 

 

출처

https://www.youtube.com/watch?v=774mc7tC594 

728x90