예지의 테크 로그포스 (Yeji's Tech Log Force)
[Graphics Study] 수학 기초 본문
컴퓨터 그래픽스는 선형대수(행렬, 벡터)가 기본이므로..
1. 간단히 행렬에 대한 복습
1. square matrix(정사각 행렬)
m x n matrix에서 m=n
2. 행렬 곱
A행렬의 열과 B행렬의 행이 같을 때 즉, A가 l x m, B가 m x n일 때만 가능. (l x m matrix)
A와 B를 곱하려면 A의 행 성분, B의 열의 대응하는 곱을 하나씩 곱.
3. Row vector, Column vector
Direct 3D는 row vector, OpenGL은 column vector사용.
4. Identify matrix(단위행렬)
어떤 행렬과 곱하더라도 그 행렬을 유지.
(1, 0) (1, 0, 0)
(0, 1) or (0, 1, 0) 처럼 대각선만 1이고 나머지는 0 인 경우
(0, 0, 1)
두 행렬을 곱해 AB=I 가 되었을 때 B = A^(-1). (역행렬.Inverse. A도 마찬가지.)
5. 2D vec, 3D vec
좌표는 (x, y) / (x, y, z)
크기는 각각을 제곱해서 루트
정규화는 자기벡터를 자기자신의 길이로 나눔
-> 정규화 된 벡터는 길이가 1 = 단위 벡터(Unit Vector)
2. Graphics에서의 수학
1. 2차원 공간
- Coordinate System(좌표계, Space)는 origin(원점)과 basis(기저)로 구성된다.
- Standard basis: 2D에서 e1(1,0), e2(0,1).
Orthonormal하면서 다른 모든 벡터를 표현 가능한 기저이다.
이 녀석은 2D 공간의 모든 벡터를 선형조합(Linear Combination) 형태로 표현 가능하게 한다.
- Orthonormal: Orthogonal + normalized.
e1과 e2가 90도를 이루고(Orthogonal), 둘은 각각 단위벡터(길이가 1).
그리고 단위벡터를 만드는 과정 Normalization.
정리하자면,
Standard basis를 통해 다른 모든 벡터를 만들 수 있다.
가령, (3,5)를 표현하고 싶다면 (3,5) = 3e1+5e2로 표현 가능하다.
그런데 e1(1,1)과 e2(0,2)등 다른 좌표 조합으로도 (3,5)를 만들 수는 있다. Standard일까? NO
각 좌표가 x,y축을 따라 평등하게 나란히 이어지지 않으므로(Orthonormal하지 않다) Non-Standart이다.
Standard가 아니라도 Orthogonal 할 수는 있다.
위 예시는 Orthonormal하지만 Standard basis는 아니다.
2. 3차원 공간
3D에서 Standard basis는 2D와 같은데 z좌표만 추가했다고 보면 된다.
위 예시 외에도 Standard는 아니겠지만 다양한 Orthogonal basis들이 존재한다.(2D와 마찬가지로)
3. Graphics에서의 수학
1. Dot Product(내적, Inner Product)
n차원의 좌표(a1, a2, ..., an), (b1, b2, ..., bn)이 주어졌을 때 둘의 내적은 a⋅b로 표기.
계산은 a1b1+a2b2+...anbn
이건 대수적인 정의. 또 다른 정의는 ||a|| ||b|| cosθ
e1(0,1), e2(1,0)의 예시에서, cosθ의 θ가 90도(cos90 = 0) 이므로 값은 a,b를 생각할 필요도 없이 0이다.
이와 관련하여 cosθ가 예각이면 내적은 양수, 둔각이면 음수이다.
단위벡터v를 내적하면 (v⋅v) 1이다. 왜? v⋅v = ||v|| ||v|| cos0 = 1.
Orthogonal(수직)인 벡터끼리 내적하면 앞서 말한대로 0.
2. Cross Product (3차원 벡터에서만 정의된다.)
Cross Product의 결과 값은 또 다른 3차원 벡터. 이 값은 어느 방향/길이를 가질까?
- 방향: 오른손 법칙
손가락 4개를 접은 부분이 a->b로 움직일 때, 엄지손가락의 방향이 Cross Product의 방향이다.
-길이: a x b 의 길이는 ||a|| ||b|| sinθ (θ는 a, b의 각도)
a, b가 만들어내는 평행사변형의 면적이 a x b의 길이이다.
그러므로 a=b라면 방향이 같으므로 zero vector(0,0,0). 평행사변형의 면적은 0.
b x a는 방향이 반대이므로 엄지손가락의 방향도 반대일 것이다. (길이는 같다. 평행사변형의 길이가 같으니)
3. Line, Ray, Linear Interpolation
선분을 수학적으로 나타내려면 어떻게 해야할까?p0에서 p1으로 이어지는 선분은 p1-p0.
p0~p1에 존재하는 매개변수 t에 따라 p(t) = p0 + t(p1-p0)즉, t가 0이면 p0, 1이면 p1이 된다.
t가 [-∞, ∞]이면 무한한 직선이다.t가 [0, ∞]이면 "->" 방향으로만 진행된다. 이를 Ray라고 한다.
t가 [0,1]이면 명확한 Line segment가 생성된다.
p0과 p1사이의 모든 점들은 양 끝점(p0, p1)을 선형보간해서 만들 수 있다.
예를 들어 RGB색깔표현 등에서 노랑(p0), 파랑(p1)두 점이 있다면 그 사이의 pt(t=0.5)초록을 얻을 수 있다. (그 외, 그 사이 다른 t 색깔들도 모두 선형보간하여 만들 수 있다.)
'CS > Computer Graphics' 카테고리의 다른 글
그래픽스 구성요소, 그래픽 시스템 (0) | 2023.04.23 |
---|---|
[Graphics Study] 변환 - 3D (0) | 2022.11.09 |
[Graphics Study] 변환 - 2D (0) | 2022.11.09 |
[Graphics Study] 모델링 (0) | 2022.10.17 |
[Graphics Study] 컴퓨터 그래픽스 (0) | 2022.10.15 |