선형성: 예측 가능한 비례 관계
벡터와 스칼라 곱셈으로 생성된 벡터는 벡터와 평행한 원점을 지나는 일직선 상에 위치합니다. 이러한 직선의 형태를 띠는 성질을 선형성(Linearity)이라고 합니다.
수학에서는 선형성을 가법성(Additivity)과 1차 동차성(Homogeneity of degree1) 두 가지 조건을 모두 만족하는 함수의 성질로 정의합니다.
- 가법성 : $f(x1+x2)=f(x1)+f(x2)$
- 1차 동차성 : $f(k·x)=k·f(x)$
1. 선형 함수
- 원점을 지나는 직선 함수 f(x) = ax
- 가법성 검증
f(x1 + x2) = a(x1 + x2) //좌변
f(x1) + f(x2) = ax1 + ax2 //우변
- 1차 동차성 검증
f(kx) = a(kx) //좌변
kf(x) = k(ax) //우변
y = ax는 선형성을 만족하는 것을 알 수 있습니다.
- $f(x) = x^2$와 같은 곡선 함수
- 가법성 검증 → 선형성 만족 X
$f(x1 + x2) = (x1 + x2)^2 = x1^2 + x2^2 + 2x1x2$ //좌변
f(x1) + f(x2) = x1^2 + x2^2 //우변
- f(x) = ax 에 스칼라 b를 더한 f(x) = ax + b
- 가법성 검증 → 선형성 만족 X
f(x1 + x2) = a(x1 + x2) + b //좌변
f(x1) + f(x2) = ax1 + ax2 + 2b //우변
왜 직선의 형태를 띰에도 선형성을 만족하지 못할까?
선형성은 단지 곧게 뻗은 직선의 성질이 아니라, 두 집합의 순수한 비(Ratio)로 구성된 1차적 대응 관계를 의미합니다.
2. 벡터 공간의 선형 변환
입력과 출력을 2차원 벡터 공간으로 설정한 상황에서 선형성을 가지는 함수에 대해 알아보자
$$ f(v)=f(x,y)=(ax+by,cx+dy) $$
가법성과 1차 동차성을 모두 만족하므로 선형 함수입니다.
- 표준기저벡터의 선형 결합으로 형성된 벡터 공간은 선형성을 지닙니다.
- 이 벡터 공간을 선형 함수로 변화시킨 새로운 공간도 기저벡터의 선형 결합으로 형성되므로 선형성을 지닙니다.
이렇게 두 공간이 동일한 구조를 지닐 때 두 공간의 대응 관계를 변환(Transformation)이라고 부르고. 선형성을 유지시켜주는 선형 함수는 선형 변환(Linear transformation)이라고 합니다.
벡터 공간에서 발생하는 선형 변환의 원리는 크기 변환이나 회전 변환과 관련있습니다.
선형 변환은 게임의 가상 세계를 구축하는 데 필요한 모든 변환의 기본 바탕이 됩니다. 선형 변환의 계산을 체계화하여 손쉽게 계산할 수 있는 도구가 행렬입니다.
행렬
행렬은 수를 사각형의 형태로 행과 열을 맞춰 배열한 테이블입니다. 선형 변환과 벡터를 나타내는 데 사용됩니다.
위를 순서대로 정방행렬, 행벡터, 열벡터라고 부릅니다.
선형 변환을 표현할 때는 행과 열의 크기가 같은 정방행렬(Square matric)을 사용합니다.
벡터는 한 줄로 구성된 행렬이며 가로 또는 세로로 표현할 수 있는데 열벡터, 행벡터라고 부릅니다.
1. 행렬의 기본 연산
- 행렬과 행렬의 덧셈
A + B = ┌ a b ┐ + ┌ e f ┐ = ┌ a + e b + f ┐
└ c d ┘ └ g h ┘ └ c + g d + h ┘
- 행렬과 스칼라의 곱셈
k · A = k · ┌ a b ┐ = ┌ k · a k · b ┐
└ c d ┘ └ k · c k · d ┘
- 행렬의 전치(Transpose)
┌ a d ┐T
│ b e │ = ┌ a d c ┐
└ c f ┘ └ d e f ┘
- 행렬과 행렬의 곱셈 (줄여서 행렬 곱)
(아래에서 주의 깊게 다룹니다)
2. 행렬의 곱셈
행렬의 곱셈은 앞에 위치한 행렬의 행벡터와 뒤에 위치한 행렬의 열벡터를 각각 곱하는 방식으로 진행됩니다.
행렬 곱셈의 중요한 성질 중 하나는 교환 법칙이 성립하지 않습니다. 결합법칙은 만족합니다.
행렬 곱을 전치한 결과는 순서를 바꾼 후 각각 전치해 곱한 결과와 동일합니다.
$(A · B)^T = B^T · A^T$
3. 정방행렬의 곱셈
결합 법칙이 성립하는 행렬 곱의 성질은 컴퓨터 그래픽 연산에서 아주 유용하게 활용됩니다. 100개의 점으로 구성된 물체가 모니터에 표현되기까지 5번의 선형 변환이 발생한다면
각 점마다 5번의 행렬 곱이 수행되므로 100개 점에 대한 행렬 곱의 총 횟수는 500
이때 결합 법칙이 성립하는 행렬 연산의 특징을 이용하면 계산량을 줄이되 동일한 결과를 얻을 수 있습니다. 4 + 1*100 = 104
행렬은 컴퓨터 그래픽스에서 가상 세계를 구축하는데 필요한 계산량을 크게 줄여주는 중요한 역할을 수행합니다.
행렬의 설계
평면상의 물체를 우리가 원하는 대로 변환하기 위해 2×2 행렬을 설계하는 방법에 대해 살펴보겠습니다.
정방행렬과 표준기저벡터가 변환된 두 벡터 (a, c)와 (b, d)와의 관계를 분석해보면 이들은 정방행렬을 구성하는 열벡터임을 알 수 있습니다.
1. 크기 변환행렬
크기 변환행렬(Scale transformation matrix)은 물체의 크기를 변경하는 행렬입니다. 크기 변환은 각 표준기저벡터를 동일한 방향으로 지정한 크기만큼 늘리는 변환을 의미합니다.
$$ S=\begin{bmatrix} a & 0 \\ 0 & b \end{bmatrix} $$
2. 회전 변환행렬
회전 변환행렬(Rotation transformation matrix)은 주어진 각 θ로 벡터 공간을 회전시키는 행렬입니다.
$$ R_θ=\begin{bmatrix} cosθ & -sinθ \\ sinθ & cosθ \end{bmatrix} $$
3. 전단 변환행렬
전단 변환행렬(Shear transformation matrix)은 표준기저벡터 e1을 고정한 상태에서 e2를 x축 방향으로 미는 경우입니다.
x축 방향으로 a만큼 미는 전단 변환행렬을 다음과 같습니다.
$$ S=\begin{bmatrix} 1 & a \\ 0 & 1 \end{bmatrix} $$
4. 삼각함수의 덧셈 정리
행렬 곱을 사용해 삼각함수의 덧셈 정리를 유도할 수 있습니다.
각 α + β의 회전 변환은 각 α에 대한 회전 변환을 수행한 후 각 β에 대한 회전 변환을 이어서 변환 결과와 동일합니다.
이를 통해 아래와 같은 삼각함수의 덧셈 정리를 얻을 수 있습니다.
cos(α + β) = cosα cosβ - sinα sinβ
sin(α + β) = sinα cosβ + cosα sinβ
역행렬
선형 변환을 수행하는 행렬은 본질적으로 함수의 성질을 지니기 때문에 항등함수와 역함수에 대응하는 항등행렬과 역행렬이라는 개념이 존재합니다.
항등행렬(Identity matrix)은 원 공간의 변화없이 동일한 공간으로 유지하는 변환을 의미합니다.
$I=\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$
역행렬(Inverse matrix)은 행렬 곱의 결과가 항등행렬이 나오는 행렬을 의미합니다.
$A · A^{-1} = A^{-1} · A = I$
1. 역행렬의 존재를 판별하는 행렬식
역행렬 또한 함수이므로, 두 공간의 변환이 전단사로 대응될 때만 역행렬이 존재합니다. 역행렬이 존재하는지 파악할 수 있는 특별한 수식이 있는 데 이것을 행렬식(Determinant) 이라고 합니다.
$A=\begin{bmatrix} a & b \\ c & d \end{bmatrix}$ , $det(A) = ad - bc$
det(A)의 값이 0인 선형 변환은 전단사 대응이 성립하지 않아 역행렬이 존재하지 않습니다.
- 행렬식이 0일 경우?
표준기저벡터가 (a,c)와 (b,d)로 변환된 새로운 벡터 공간의 넓이, 평행사변형의 넓이 Area(P)는 ad-bc. 이 넓이가 0이라는 것은 2차원의 평면 영역이 1차원의 직선 영역으로 압축되었다는 것을 뜻하며, 그렇기 때문에 더 이상 2차원으로 돌아갈 수 없게 됩니다.
- 행렬식이 음수일 경우?
두 표준기저벡터가 엇갈리면서 평면이 뒤집힌 것입니다.
2. 크기 변환행렬의 역행렬
$S=\begin{bmatrix} a & 0 \\ 0 & b \end{bmatrix}$ $S^{-1}=\begin{bmatrix} 1/a & 0 \\ 0 & 1/b \end{bmatrix}$
3. 전단 변환행렬의 역행렬
$S=\begin{bmatrix} 1 & a \\ 0 & 1 \end{bmatrix}$ $S^{-1}=\begin{bmatrix} 1 & -a \\ 0 & 1 \end{bmatrix}$
4. 회전 변환행렬의 역행렬
회전행렬의 역행렬은 별도로 삼각함수를 사용하지 않아도 기존 행렬에 전치연산을 적용하는 방법으로 쉽게 구할 수 있습니다.
5. 행렬 곱의 역행렬
합성함수에 해당하는 두 행렬 곱의 역행렬도 다음 수식이 성립합니다.
$(A·B)^{-1} = B^{-1} · A^{-1}$
출처: 이득우의 게임수학
'책 > 이득우의 게임 수학' 카테고리의 다른 글
[게임수학] 삼각함수: 회전을 위한 수학 (1) | 2024.12.30 |
---|---|
[게임수학] 벡터: 가상 공간의 탄생 (3) | 2024.12.20 |
[게임수학] 수: 가상 세계를 구성하는 가장 작은 단위 (3) | 2024.12.19 |