[게임 수학] #7 행렬(2)

송칭·2023년 12월 7일

게임 수학

목록 보기
7/9

행렬과 벡터의 변환


위와 같은 표준기저벡터 e1(1,0),e2(0,1)e_1(1,0), e_2(0,1)가 있다.

이 공간의 벡터 v=(x,y)\overrightarrow{v} = (x,y)는 표준기저벡터의 결합이다.
v=(x,y)=x(1,0)+y(0,1)\overrightarrow{v} = (x,y) = x*(1,0)+y*(0,1)


변환에 의해 아래의 새 벡터 e1(a,c),e2(b,d)e_1'(a,c), e_2'(b,d)가 생성된다고 가정하자. 이 공간에서도 똑같이 벡터 w\overrightarrow{w}는 다음과 같다.

v=x(a,c)+y(b,d)=(ax+by,cx+dy)\overrightarrow{v} = x*(a,c)+y*(b,d) = (ax+by, cx+dy)

이 식은 다음 행렬의 곱과 같다.

[abcd][xy]=[ax+bycx+dy]\begin{bmatrix}a&b\\c&d\\ \end{bmatrix}*\begin{bmatrix}x\\y\\ \end{bmatrix} = \begin{bmatrix}ax+by\\cx+dy\\\end{bmatrix}

a,b,c,da,b,c,d로 이루어진 2x2 정방행렬에 벡터 v\overrightarrow{v}를 곱한 것이다. (a,c)(a,c)(b,d)(b,d)는 2x2정방행렬의 열벡터이다.

크기 변환행렬

물체의 크기를 변환하는 행렬로, 벡터 공간의 각 표준기저벡터를 특정 크기만큼 바꾼다.

표준기저벡터 e1(1,0),e2(0,1)e_1(1,0), e_2(0,1)가 있을 때를 예로 들어보자.
e1e_1aa배로 변환하는 경우 a(1,0)=(a,0)a*(1,0)=(a,0)
e2e_2bb배로 변환하는 경우 b(0.1)=(0,b)b*(0.1)=(0,b)

e1,e2e_1,e_2를 각각 a,ba, b배로 변환한 표준기저벡터 (a,0),(0,b)(a,0), (0,b)를 열벡터로 설정해 만들어낸 크기 변환행렬은

[a00b]\begin{bmatrix}a&0\\0&b\\ \end{bmatrix} 와 같다.

회전 변환행렬

특정한 각도 θ\theta 만큼 물체를 회전시키는 행렬이다.

먼저 표준기저벡터 e1,e2e_1, e_29090^{\circ}90-90^{\circ} 변환하는 벡터를 구하자.
e1e_19090^{\circ}로 회전하는 경우 (0,1)(0,1)
e2e_29090^{\circ}로 회전하는 경우 (1,0)(-1,0)

9090^{\circ} 회전 변환행렬은 [0110]\begin{bmatrix}0&-1\\1&0\\ \end{bmatrix}이다.

e1e_190-90^{\circ}로 회전하는 경우 (0,1)(0,-1)
e2e_290-90^{\circ}로 회전하는 경우 (1,0)(1,0)

90-90^{\circ} 회전 변환행렬은 [0110]\begin{bmatrix}0&1\\-1&0\\ \end{bmatrix}이다.

이를 보다 일반화하여 특정한 각도 θ\theta만큼 회전한 경우를 가정해보자.
e1e_1θ\theta만큼 회전하는 경우 (cosθ,sinθ)(cos\theta,sin\theta)
e2e_2θ\theta만큼 회전하는 경우 (sinθ,cosθ)(-sin\theta,cos\theta)

θ\theta 회전 변환행렬은 [cosθsinθsinθcosθ]\begin{bmatrix}cos\theta&-sin\theta\\sin\theta&cos\theta\\ \end{bmatrix}이다.

전단 변환행렬

전단 변환이란 특정 축을 고정하고 다른 축을 밀어 대각선으로 이동시키는 것을 의미한다. e1e_1를 고정시키고, e2e_2aa만큼 민다면

e1e_1는 고정이므로 그대로 (1,0)(1,0)
e2e_2(a,1)(a,1)이 된다.

따라서 e1e_1를 고정시키고, e2e_2aa만큼 민 전단 변환행렬은 [1a01]\begin{bmatrix}1&a\\0&1\\ \end{bmatrix}이다.

역행렬

행렬도 함수의 성질을 지니며, 덕분에 각각 항등함수와 역함수에 대응되는 항등행렬과 역행렬이 존재한다.

항등행렬

원래 기존의 벡터공간을 변화없이 동일하게 변환하는 행렬이다.
항등행렬을 적용해 변환한 행렬은 표준기저벡터 e1(1,0),e2(0,1)e_1(1,0), e_2(0,1)가 그대로 유지된다. 따라서 II로 표시되는 항등행렬은 다음과 같다.

I=[1001]I=\begin{bmatrix}1&0\\0&1\\ \end{bmatrix}

역행렬

그렇다면 반대로 역행렬은 어떠한 행렬과의 곱셈이 항등행렬이 나오는 특수한 행렬이다. 임의의 행렬을 AA라고 할 때, 이의 역행렬A1A^{-1}과의 곱 AA1=IA*A^{-1}=I이다.

행렬식

어떤 특정한 행렬이 역행렬을 갖는지 알아낼 수 있는 특수한 식이다.
함수가 역함수를 가지려면, 그 함수는 전단사함수여야 한다. 마찬가지로 행렬이 역행렬이 존재하려면 두 공간의 변환이 전단사로 대응되어야 한다.

어떤 행렬 A=[abcd]A=\begin{bmatrix}a&b\\c&d\\ \end{bmatrix}의 행렬식 det(A)det(A)는 아래와 같다.
det(A)=adbcdet(A) = ad - bc

만일,det(A)det(A)가 0이 된다면 해당 변환은 전단사 대응이 성립하지 않아 역행렬이 존재하지 않는다고 말한다.

크기 변환행렬의 역행렬

S=[a00b],S1=[1/a001/b]S=\begin{bmatrix}a&0\\0&b\\ \end{bmatrix}, S^{-1} = \begin{bmatrix}1/a&0\\0&1/b\\ \end{bmatrix}

회전 변환행렬의 역행렬

S=[cosθsinθsinθcosθ],S1=[cosθsinθsinθcosθ]S=\begin{bmatrix}cos\theta&-sin\theta\\sin\theta&cos\theta\\ \end{bmatrix}, S^{-1}=\begin{bmatrix}cos\theta&sin\theta\\-sin\theta&cos\theta\\ \end{bmatrix}

전단 변환행렬의 역행렬

S=[1a01],S1=[1a01]S=\begin{bmatrix}1&a\\0&1\\ \end{bmatrix}, S^{-1} = \begin{bmatrix}1&-a\\0&1\\ \end{bmatrix}

행렬 곱의 역행렬

합성함수에서의 (g(gf)1=f1f)^{-1}=f^{-1}g1g^{-1} 규칙이 있었다.

마찬가지로 행렬의 곱도 같은 규칙이 존재한다.
(AB)1=B1A1(A*B)^{-1}=B^{-1}*A^{-1}

profile
게임 클라이언트

0개의 댓글