→ 이 글은 「이득우의 게임 수학」을 바탕으로 작성했습니다.
■ 선형성
행렬에 대해 얘기하기 전에, 먼저 "벡터의 선형 변환"에서 말했던 선형성(Linarity)이란 성질에 대해 살펴보자.
스칼라 곱셈은 벡터와 평행한, 원점을 지나는 직선상에 위치하고 시각적인 부분에서 직선이 지니는 성질을 선형성이라 한다.
이러한 "직선"의 성질을 참/거짓으로 구분하기 위해 아래와 같은 명제를 사용해 두 조건을 모두 만족하는 함수의 성질로 정의한다.
$$ f(x_1 + x_2) = f(x_1) + f(x_2) \\ f(k\cdot x) = k \cdot f(x) $$
[가법성(위)과 1차 동차성(아래)]
- 가법성($f(x_1 + x_2) = f(x_1) + f(x_2)$) : 입력값을 더해서 얻은 출력과 각 입력값을 따로 함수에 넣어 얻은 출력들의 합이 같다.
- 1차 동차성($f(k * x) = k * f(x)$) : 어떤 함수 f에 대해 입력을 k배 해서 넣은 결과가, 원래 함수 출력값을 k배 한 것과 같다
1. 선형 함수
입력에 사용되는 요소 $x$와 출력이 모두 실수인, 그리고 원점을 지나는 직선 함수 $f(x) = ax$를 생각할 수 있고, 출력을 $y$로 둔다면, $y = ax$로 표현할 수 있다.
- $a$(비례 상수)는 기울기를 의미하며, 입력값 $x$가 증가할 때 $f(x)$가 얼마나 변하는지를 나타낸다.
이 함수가 가법성과 1차 동차성을 만족하는지 확인해 보자.
1. 가법성
$$ f(x_1 + x_2) = a(x_1+x_2) \\ f(x_1) + f(x_2) = ax_1 + ax_2 $$
a, x1, x2가 모두 체의 성질을 가지는 실수라면 분배법칙이 성립하므로, 가법성 역시 성립한다.
2. 1차 동차성
$$ f(k\cdot x) = a(k\cdot x) \\ k\cdot f(x) = k(a\cdot x) $$
$a,k,x$가 체의 성질을 만족하는 실수라면, 곱셈에 대한 결합, 교환 법칙을 만족하므로 가법성 역시 성립한다.
2. 비선형 함수
반대로 곡선의 성질을 띄는 함수 $f(x) = x^2$는 선형성을 만족하는지 확인해 보자.
$$ f(x_1 + x_2) = (x_1 + x_2)^2 = x_1^2 + 2x_1x_2 + x^2 \\ f(x_1) + f(x_2) = x_1^2 + x_2^2 $$
위 함수는 가법성을 만족하지 않기 때문에 선형성을 만족하는 함수가 아니다.
다음과 같이 원점을 지나지는 않지만, 직선의 성질을 지니고 있는 함수의 경우는 선형성을 만족하는지 확인해 보자.
$$ f(x_1 + x_2) = a(x_1 + x_2) + b \\ f(x_1) + f(x_2) = ax_1 + ax_2 + 2b $$
이 역시 계산 결과는 $b$만큼 차이가 나기 때문에 이 역시 선형성을 만족하는 함수가 아니다.
정리하자면 선형 함수는 꼭 "원점을 지나는 함수"여야 하고, "가법성 + 1차 동차성"을 만족해야 한다. 이는 입력과 출력이 항상 "일정한 비율"로 연결되어 있고, 더하기와 곱하기 연산을 그대로 보존하는 관계를 의미한다.
- 그렇기에 선형성은 "예측 가능한 비례 관계"이며, 반대로 역함수 $f(x)^{-1} = \frac{1}{a}x$가 존재하여 입력값을 거꾸로 계산하는 것이 가능하다.
■ 벡터 공간의 선형 변환
벡터 공간$V$의 원소인 벡터$\vec v$를, 가법성과 1차 동차성을 만족하는 선형 변환 함수에 넣어 다른 벡터 공간 $W$로 보낸다고 생각해 보자.
$$ f(\vec v) = f(x,y) = f(ax+by, cx + dy) $$
- x, y에 대해 선형성을 유지하고자 한다면, 단순 비의 형태를 사용해야 한다. (ax + z, by + w처럼 1차 결합이 깨지면 선형성은 유지되지 않음)
- 입력 벡터에 "고정된 상수"를 곱하고 더해서 새로운 벡터를 만드므로, 이는 선형 변환이 된다.
그렇다면 위 함수가 선형 변환을 만족하는지 확인해 보자.
1. 가법성
$$ f(v_1+v_2) = (x_1+x_2, y_1+y_2)\\ = (a(x_1+ x_2) + b(y_1+y_2), c(x_1+ x_2) + d(y_1+y_2)) \\ ==============================\\ f(v_1) + f(v_2) = (ax_1+by_1, cx_1 + dy_1) + (ax_2+by_2, cx_2 + dy_2) $$
2. 1차 동차성
$$ k\cdot f(\vec v) = kax + kby, kcx + kdy \\ f(k\cdot \vec v) = akx + bky, ckx + dky $$
가법성과 1차 동차성을 모두 만족하므로 함수 $f(x,y) = (ax + by, cx + dy)$는 선형 변환 함수이다.
- 표준기저벡터의 선형 결합으로 생성된 벡터 공간은 선형성의 성질을 지니고, 이 공간을 선형 함수로 변환시킨 새로운 공간도 기저 벡터의 선형 결합으로 생성되므로 선형성을 지닌다.
임의의 벡터를 $k$배 늘리는 작업은, 상수 $a = k, b = 0 , c = k , d= 0$을 대입한 것과 동일하다.
$$ f(\vec v) = f(x,y) = (kx, ky) $$
또한 임의의 벡터를 각 $\theta$만큼 회전시키는 작업은 상수 $a = \cos\theta , b = -\sin\theta, c =\sin\theta , d = \cos\theta$를 대입한 것과 동일하다.
$$ f(\vec v) = f(x,y) = (\cos\theta x - \sin \theta y, \sin\theta x + \cos\theta y) $$
이러한 선형 변환을 체계적으로 수행하기 위해, 선형 변환을 좌표계로 정해 수로 나타낸 결과물을 행렬(Matrix)이라 한다.
■ 행렬
$$ \begin{bmatrix} a & b & c \\ d & e & f\end{bmatrix} \\ A = \begin{bmatrix} x \\ y \end{bmatrix} B = \begin{bmatrix} x & y\end{bmatrix} $$
행렬은 사각의 형태로 행(row)과 열(col)을 맞추어 나열한 테이블을 의미한다.
- A는 열벡터, B는 행벡터로 표현한다.
선형 변환$f(\vec v) = (ax + by, cx + dy)$을 표현하는 행렬은 아래와 같이 나타낸다.
$$ \begin{bmatrix} a & b\\ c &d \end{bmatrix} $$
- 행과 열의 크기가 같은 행렬을 정방행렬(Square Matrix)이라 한다.
1. 행렬의 기본 연산
행렬의 기본 연산을 정리하자면, 다음과 같다.
A. 행렬과 행렬의 덧셈
$$ A + B = \begin{bmatrix} a & b\\ c &d \end{bmatrix} + \begin{bmatrix} e & f\\ g & h \end{bmatrix} = \begin{bmatrix} a + e & b + f \\ c + g& d + h \end{bmatrix} $$
크기가 같은 행렬의 경우에만 연산이 가능하며, 같은 위치의 원소를 더한다.
B. 행렬과 스칼라 곱셈
$$ k \cdot A = k \cdot \begin{bmatrix} a & b\\ c &d \end{bmatrix} = \begin{bmatrix} ka & kb\\ kc &kd \end{bmatrix} $$
행렬을 구성하는 모든 원소에 스칼라를 곱한다.
C. 행렬의 전치
$$ A = \begin{bmatrix} a & b & c \\d & e & f \end{bmatrix} \ \ A^T = \begin{bmatrix} a & d\\ b & e \\ c&f \end{bmatrix} $$
행렬의 전치는 첨자($T)$를 붙이며, 행과 열을 서로 바꾼다.
$$ \begin{bmatrix} a & b \\ c& d \end{bmatrix}^T = \begin{bmatrix} a&c\\b&d\end{bmatrix} $$
정방 행렬의 전치는 대각 성분을 중심으로 대칭된 행렬을 만든다.
2. 행렬의 곱셈
행렬의 곱셈은 앞에 위치한 행백터의 요소와, 뒤에 위치한 열벡터의 요소를 곱하는 방식으로 계산된다.
$$ \begin{bmatrix} a & b \\ c& d \end{bmatrix} \cdot \begin{bmatrix} e & f \\g & h \end{bmatrix} = \begin{bmatrix} ae + bg & af + bh \\ ce + dg & cf + dh\end{bmatrix} $$
- 행렬은 교환법칙은 성립하지 않지만(AB에선 A의 행과 B의 열이 만나지만, BA에선 B의 행과 A의 열이 만남), 결합법칙은 만족한다.
또 하나의 특징으론 두 행렬을 곱해 전치한 결과는, 연산 순서를 바꾼 뒤 두 행렬을 전치해 곱한 결과와 같다.
$$ (A\cdot B)^T = \begin{bmatrix} ae + bg & af + bh \\ ce + dg & cf + dh\end{bmatrix} ^T = \begin{bmatrix} ae + bg & ce + dg\\ af + bh & cf + dh\end{bmatrix} $$
$$ B^T\cdot A^T = \begin{bmatrix} e & g \\ f& h\end{bmatrix} \cdot \begin{bmatrix} a & c\\ b& d\end{bmatrix} = \begin{bmatrix} ea + gb & ec + gd \\ fa + hb & fc + hd \end{bmatrix} \\ \\ \therefore (A\cdot B)^T = B^T\cdot A^T $$
$a,b,c,d$로 구성된 정방행렬과, 2차원 벡터$(x,y)$를 열벡터로 설정한 두 행렬의 곱셈은 다음과 같이 표현된다.
$$ \begin{bmatrix} a & b\\ c&d\end{bmatrix} \cdot \begin{bmatrix} x \\ y\end{bmatrix} = \begin{bmatrix}ax + by \\ cx + dy \end{bmatrix} $$
- 즉 $2X2$정방행렬은 2차원 공간의 선형 변환 함수를 의미하고 함수$f(x,y) = (ax + by, cx + dy)$는 2차원 벡터에 선형 변환을 적용해 새로운 벡터를 생성하는 작업이다.
3. 정방행렬의 곱셈
$2X2$ 정방행렬 간 곱셈은 합성함수에 대응되는 연산이다.
$$ B \cdot A \cdot \vec v $$
- 합성 함수는 결합법칙을 만족한다. 따라서 $(B\cdot A)\cdot \vec v = B\cdot (A\cdot \vec v)$
이러한 합성 함수의 결합 법칙으로 인하여 연산량을 줄일 수 있다. 만약 5번의 변환 과정을 100번 수행한다 하면,
$$ E\cdot D\cdot C\cdot B\cdot A\cdot \vec {v_{100}} $$
각 점마다 5번의 연산을 수행하므로, 총 연산 횟수는 500번이다.하지만, $E\cdot D\cdot C\cdot B\cdot A$를 하나의 합성 함수 $F$로 만든다면,
$$ F \cdot \vec {v_{100}} $$
처음 합성함수를 만들기 위한 4번의 연산과 이후 100번의 연산으로 총 104번의 연산을 진행한다.
▶ 열 기준 행렬과 행 기준 행렬
수학에서 행렬을 다룰 때는 벡터를 열벡터로 나타내는 열 기준 행렬 방식을 주로 사용한다.
$$ \begin{bmatrix} a & b\\ c&d\end{bmatrix} \cdot \begin{bmatrix} x \\ y\end{bmatrix} $$
하지만 컴퓨터에서 행렬을 응용할 때는, 행 기준 행렬을 사용하는 경우도 존재한다.
- 이 경우 아래처럼 열 기준 행렬과 연산 순서를 바꾸고, 정방 행렬을 전치해야 동일한 결과가 나온다.
$$ \begin{bmatrix} a & b\\ c&d\end{bmatrix} \cdot \begin{bmatrix} x \\ y\end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy\end{bmatrix} \\ ==========================\\ \begin{bmatrix} x & y \end{bmatrix} \cdot \begin{bmatrix}a & c \\ b & d \end{bmatrix} = \begin{bmatrix} ax + by & cx + dy\end{bmatrix} $$
- 열 기준 행렬 : OpenGL, Unity
- 행 기준 행렬 : DirectX, Unreal
열 기준 행렬을 사용하던, 행 기준 행렬을 사용하던, 전치 관계의 차이만 있을 뿐이다.
- 열벡터 행렬을 전치한 결과는 행벡터가 되고, 행벡터의 계산 순서는 열벡터와 달리 순방향으로 진행된다.
■ 행렬의 설계
평면상의 물체를 원하는 형태로 변환하기 위해 선형 변환 행렬을 설계해 보자.
위처럼 표준기저벡터가 각각 선형 변환을 통해 $(a,c),(b,d)$에 대응되어 변환된다면,
$$ \vec w = x(a,c) + y(b,d) = (ax+by, cx+ dy) \\ \begin{bmatrix} a & b \\ c& d\end{bmatrix} \cdot \begin{bmatrix} x \\ y\end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy\end{bmatrix} $$
벡터 $\vec v$를 선형 변환하여 벡터 $\vec w$를 만드는 수식은 위와 같이 정리된다.
그래서 "선형 변환"을 행렬로 나타내면, 그 행렬은 결국 "기저벡터들을 어디로 보낼지"를 담고 있는 열벡터들의 모음이다.
1. 크기 변환행렬
$$ S = \begin{bmatrix} a & 0 \\ 0 & b\end{bmatrix} $$
크기 변환행렬은 표준기저벡터를 동일한 방향으로 지정된 크기만큼 늘린 변환을 의미한다.
- $e_1$을 $a$배 늘리거나 줄인다. $a(1,0) = (a,0)$
- $e_2$를 $b$배 늘리거나 줄인다. $b(0,1) = (0,b)$
2. 회전 변환행렬
90도 회전에 대한 변환행렬을 살펴보면, 양(+) 방향 회전과 음(-) 방향 회전이 존재한다.
2-1. 표준기저벡터를 90도 회전하면
$$ e_1 = (0,1) \ \ \ e_2 = (-1,0) \\ R_{\frac{\pi}{2}} = \begin{bmatrix} 0 & -1 \\ 1 & 0\end{bmatrix} $$
2-2. 표준기저벡터를 -90도 회전하면
$$ e_1 = (0,-1) \ \ \ e_2 = (1,0) \\ R_{-\frac{\pi}{2}} = \begin{bmatrix} 0 & 1 \\ -1 & 0\end{bmatrix} $$
▶ 벡터의 90도 회전은 반시계방향 회전이고, 회전 결과는 요소를 바꾼 뒤, 앞 요소에 음수를 부여한다.
▶ 벡터의 -90도 회전은 시계방향 회전이고, 회전 결과는 요소를 바꾼 뒤, 뒷 요소에 음수를 부여한다.
3. 표준기저벡터를 $\theta$회전하면
$$ e_1 = (\cos\theta,\sin\theta) \ \ \ e_2 = (-\sin\theta,\cos \theta) \\ R_{\theta} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{bmatrix} $$
3. 전단 변환행렬
표준기저벡터의 한 축을 고정한 채, 다른 기저벡터를 $x$축 방향으로 $a$만큼 움직이는 변환행렬을 의미한다.
$$ e_1 = (1,0) \ \ \ e_2 = (a,1) \\ S = \begin{bmatrix} 1 & a \\ 0 & 1\end{bmatrix} $$
■ 삼각함수의 덧셈(회전 변환의 합성)
임의의 벡터(v)에 대해 먼저 각도 a만큼 회전시키고 다시 각도 b만큼 회전시키는 것은 한 번에 각도(a + b)만큼 회전시키는 것과 동일하다(이는 증명할 필요가 없는 명제).
그렇다면 여기서 "삼각함수 덧셈 공식"유도가 가능하다.
각 $a$에 대한 회전변환행렬을 $R_a$, 각 $b$에 대한 회전변환행렬을 $R_b$로, 각 $a+b$에 대한 회전변환행렬을 $R_{(a+b)}$로 나타내면 아래와 같다.
$$ R_a = \begin{bmatrix} \cos a & -\sin a \\ \sin a & \cos a\end{bmatrix} \\ R_b = \begin{bmatrix} \cos b & -\sin b \\ \sin b & \cos b\end{bmatrix} \\ R_{a + b} = \begin{bmatrix} \cos (a +b) & -\sin (a+b) \\ \sin (a+b) & \cos (a+b)\end{bmatrix} $$
각 $a +b$의 회전 변환은 각$a$의 변환을 수행한 뒤, 각 $b$의 회전을 수행하는 것과 동일하므로, 아래와 같이 행렬 곱으로 나타낼 수 있다.
$$ R_b \cdot R_a = \begin{bmatrix} \cos b & -\sin b \\ \sin b & \cos b\end{bmatrix} \cdot \begin{bmatrix} \cos a & -\sin a \\ \sin a & \cos a\end{bmatrix} $$
$$ \begin{bmatrix}\cos a \cos b - \sin a \sin b & -(\cos b \sin a + \sin b \cos a)) \\ \cos a\sin b + \sin a \cos b & \cos a \cos b - \sin a \sin b \end{bmatrix} $$
즉, $R_{(a + b)} = R_b \cdot R_a$이니 $\cos (a +b) = \cos a \cos b - \sin a \sin b$로 유도된다는 것을 확인할 수 있다.
$$ \cos(\alpha + \beta) = \cos\alpha\cos\beta-\sin\alpha\sin\beta \\ \sin(\alpha+\beta) = \sin\alpha\cos\beta + \cos\alpha\sin\beta $$
▶ $R_{(a + b)} = R_b \circ R_a$ 에 대해
선형 변환 $T$는 항상 $T(\vec v) = A(\vec v)$꼴로 표현할 수 있다.
- 여기서 A는 $m \times n$ 행렬이다.
우리는 어떠한 선형 변환 함수를 쉽게 계산하기 위해 행렬이라는 것을 사용했다. 예를 들어 두 선형 변환이 있다고 해보자.
$$ T_1(\vec v) = A\vec v \ \ \ \ \ T_2(\vec v) = B\vec v $$
▼ 두 함수를 합성한다면,
$$ (T_2\circ T_1)(\vec v) = T_2(T_1(\vec v)) = B(A\vec v) $$
▼ 괄호를 묶으면,
$$ (BA)\vec v $$
따라서 합성 변환 $(T_2\circ T_1)$는 하나의 행렬 $BA$로 표현이 가능하고, 이 $BA$라는 게 바로 “행렬곱”의 정의 그 자체이다.
즉, 행렬곱은 “선형 변환의 합성”을 정확하게 반영하도록 정의된 연산이다. 그리고 행렬곱 = 합성함수라는 말은 “선형 변환”에 국한된 얘기이다.
- 행렬이란 본질적으로 $T(\vec v) = A\vec v$꼴의 “선형 함수”만 표현할 수 있기 때문.
그렇다면 회전 → 회전 변환 행렬이 아닌, 스케일 → 회전도 동일하게 표현할 수 있을까? 예를 들어
$$ A = \begin{bmatrix} 2 & 0 \\ 0&1 \end{bmatrix} $$
[x축 2배 스케일 조정]
$$ B = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} $$
[90도 회전]
이라 한다면 $T_1(\vec v) = A\vec v$(늘리기)와 $T_2(\vec v) = B\vec v$(회전)으로 표현이 가능하다. 마지막으로 합성하면 $T_2(T_1(\vec v)) = (BA)\vec v$가 된다.
즉, “먼저 스케일, 그다음에 회전을 한 번에 표현한다면 $BA$라는 새로운 행렬이 되는 거다.
- 단, 이동은 “선형 변환”이 아니다. 그래서 이동→회전 같은 것은 선형 변환 행렬만으로는 합칠 수 없다. 나중에 배울 동차 좌표를 사용해야 하나의 행렬곱으로 합성이 가능하다.
■ 역행렬
행렬은 본질적으로 함수의 성질을 지니기 때문에, 항등행렬(동일한 공간으로 유지)과 역행렬이 존재한다.
$$ I = \begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix} $$
- 또한, 어떤 행렬 곱의 결과가 항등행렬이 나온다면, 그 행렬은 역행렬이라 부른다.
$$ A\cdot A^{-1} = A^{-1} \cdot A = I $$
1. 행렬식
행렬도 함수이므로, 전단사 대응될 때만 역함수가 존재하며 이를 판단하기 위한 수식을 행렬식이라 한다.
$$ A = \begin{bmatrix} a & b\\ c&d\end{bmatrix} \\ \det(A) = ad - bc $$
두 표준기저벡터가 형성하는 정사각형 넓이는 1이고, 행렬에 의해 변환되며 평행사변형으로 바뀌고 넓이도 바뀐다.
전체 사각형 넓이에서 삼각형과 사각형 영역을 제외한 평행사변형의 넓이를 구하는 공식이 바로 행렬식 $ad-bc$ 이다.
이 행렬식의 값이 0이면, 평행사변형이 소멸되어 모든 요소는 1차원 위에 놓이게 되고 더 이상 2차원으로 돌아갈 수 없다.
→ 또한 행렬식의 부호를 통해 변환된 결과가 뒤집혔는지 확인 가능하다.
2. 크기 변환행렬의 역행렬
$$ S = \begin{bmatrix} a & 0 \\ 0 & b\end{bmatrix} \\ S^{-1} = \begin{bmatrix} \frac{1}{a} & 0 \\ 0 & \frac{1}{b}\end{bmatrix}
$$
크기 변환에 사용된 두 원소의 역수를 통해 크기 변환행렬의 역행렬을 구할 수 있다.
- 전단 변환행렬도 동일하다.
$$ S = \begin{bmatrix} 1 & a \\ 0 & 1\end{bmatrix} \\ S^{-1} = \begin{bmatrix} 1 & \frac{1}a \\ 0 & 1\end{bmatrix}
$$
3. 회전 변환행렬의 역행렬
$\cos$ 함수와 $\sin$ 함수는 다음과 같은 성질을 지니고 있었다.
$$ \cos(\theta) = \cos(-\theta) \\ -\sin(\theta) = \sin(-\theta) $$
따라서 이를 회전변환행렬에 적용시키면, 다음과 같이 역행렬을 구할 수 있다.
$$ R_{\theta} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{bmatrix} \\ R_{\theta}^{-1} = R_{\theta} = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta\end{bmatrix} $$
- 회전변환행렬의 역행렬은 전치 행렬과 동일하다. $R_{\theta}^{-1} = R_{\theta}^{T}$
4. 행렬 곱의 역행렬
합성함수는 역함수에 대해 $(g \circ f)^{-1} = f^{-1} \circ g^{-1}$이 성립된다.
- 즉 합성함수의 역함수는 $g$를 먼저 되돌리고 $f$를 그 뒤에 되돌린다.
합성함수에 해당하는 행렬 곱도 위와 같은 수식( $(A \circ B)^{-1} = A^{-1} \circ B^{-1}$ )이 성립되는데 만약, 역행렬이 존재하는 두 행렬을 곱한 행렬$A\cdot B =C$라고 가정해 보면
$$ C \cdot C^{-1} = I $$
- 어떤 함수와 그 함수의 역함수의 합성 결과는 항상 항등함수.
$$ (A\cdot B)\cdot (A\cdot B)^{-1} = I \\ A^{-1}\cdot (A\cdot B)\cdot (A\cdot B)^{-1} = A^{-1} $$
위 식$C \cdot C^{-1} = I$에 $(A\cdot B)$를 대입하고, 양변에 $A^{-1}$을 곱하면 다음과 같이 전개된다.
$$ (A^{-1}\cdot A)\cdot B\cdot (A\cdot B)^{-1} = A^{-1} \\ B^{-1}\cdot B\cdot (A\cdot B)^{-1} = A^{-1} \cdot B^{-1} \\(A\cdot B)^{-1} = B^{-1} \cdot A^{-1} $$
$A^{-1} \cdot A$는 항등행렬이므로 소거, 이후 양변에 $B^{-1}$을 곱하면 $B^{-1}\cdot B$도 항등행렬이므로 소거되므로 합성함수에 해당하는 행렬 곱도 동일한 수식을 지니는 것을 확인할 수 있다.
'게임수학' 카테고리의 다른 글
[게임수학] 3. 삼각함수 (2) | 2025.08.31 |
---|---|
[게임수학] 2. 벡터(Vector) (2) | 2025.08.27 |
[게임수학] 1. 수(Number)와 함수(Function) (2) | 2025.08.26 |