728x90
반응형
2.1 행렬과 벡터
- 행렬은 말 그대로 행(row)과 열(column)로 구성되는데, m개의 행과 n개의 열을 가진 행렬은 다음 그림과 같이 표현된다.
- 행렬의 곱은 다음과 같이 곱해질 수 있다.
- A의 크기가 l*m이고, B의 크기가 m*n이라면, AB의 크기는 l*n이 된다.
- - (x, y), (x, y, z)는 행벡터(row vector)라고 부른다.
- 어떤 행렬 M이 주어졌을 때, 그것의 행과 열을 바꿔 놓은 것을 전치행렬(transpose)이라고 하며 다음과 같이 표기한다.
- Mv의 행렬-벡터의 곱셈은 다음과 같이 표현할 수 있다.
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)라고 부른다.
2.2 좌표계와 기저
- 그래픽스에서는 좌표를 간단하게 공간(Space)이라고 부른다.
- 표준기저에서 보다시피 e1과 e2가 주축(principal zxis, x축과 y축)에 나란하므로 {e1, e2}를 특별히 표준 기저(standard basis)라고 한다.
- 표준 기저는 선형조합하여 2차원 공간의 모든 벡터를 표현할 수 있다.
- 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, 1-t를 배정함으로써 정의가 된다.
- 선분안에 모든 점들은 양쪽 끝 값을 선형보간(linear interpolation)하여 표현할 수 있다.
- 선형보간은 그래픽스에서 아주 많이 나오는 개념중에 하나다. 꼭 기억해두자.
- P0와 P1에 특정한 값이 저장되어 있다면, 그 값들도 선형보간될 수 있다. (색상 같은 경우)
출처
https://www.youtube.com/watch?v=774mc7tC594
728x90
'공부 > Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문' 카테고리의 다른 글
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 6 - OpenGL ES와 쉐이더 (0) | 2022.02.14 |
---|---|
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 5 - 정점 처리 (0) | 2022.02.13 |
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 4 - 좌표계와 변환 (0) | 2022.02.12 |
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 3 - 모델링 (0) | 2022.02.11 |
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 1 - 서론 (0) | 2021.07.10 |