05. 다섯 번째 수업: 시공간을 늘리고 비틀어라! 선형 변환 (Linear Transformation)

여기 2D 게임 속, 점 좌표 $X(2), Y(1)$ 즉 $\begin{bmatrix} 2 \ 1 \end{bmatrix}$ 에 캐릭터 도트 이미지가 박혀 있다고 합시다. 그래픽 디자이너가 “야, 이 캐릭터를 허공에서 $\mathbf{90^\circ}$ 빙글~ 돌려서 옆으로 누운 시체 포즈로 회전 스킵 렌더링해버려!” 라고 명령서를 쾅 꽂았습니다.

당신의 머리론 도저히 $2, 1$ 숫자를 몇으로 바꿔 넣어야 $\mathbf{90^\circ}$ 정밀 회전 바디 뼈대 폴리곤을 이뤄낼 지 계산기 버그가 뜹니다. 이때 선형대수학 수학자가 웃음을 터뜨리며 ‘회전 변환 마법진 매트릭스 부적 템플릿 $R$’ 배열 부적을 한 장 던져 줍니다.

\[R = \begin{bmatrix} \cos 90^\circ & -\sin 90^\circ \\ \sin 90^\circ & \cos 90^\circ \end{bmatrix} = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}\]

“자, 이 $R$ 행렬 부적을 네 캐릭터의 점 $\begin{bmatrix} 2 \ 1 \end{bmatrix}$ 가로 세로 파트 앞에 세워두고 ‘행렬 곱셈(박치기 아까 배운 그 $L$ 자 무식 충돌)’ 을 한 대 갈겨보거라!!”

기존의 (2, 1) 좌표에 90도 회전 매트릭스 부적 행렬 R을 곱하자, 벡터가 허공을 빙글 돌아 (-1, 2) 위치로 순간이동 왜곡해 버리는 선형 변환 스펠 SVG

1. 폭파 변환! 매트릭스의 시공간 회전

시키는 대로 캐릭터 점의 왼쪽 면상에 회전 행렬 매트릭스 $R$ 을 세워두고 충돌 곱셈 계산을 가동합니다.

\[\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \times \begin{bmatrix} 2 \\ 1 \end{bmatrix} \ = \ \begin{bmatrix} (0\times2) + (-1\times1) \\ (1\times2) + (0\times1) \end{bmatrix} \ = \ \mathbf{\begin{bmatrix} -1 \\ 2 \end{bmatrix}}\]

세상에!! 멀쩡히 $(2, 1)$ 좌표 평면에 누워 숨 쉬던 우측 점이, 순식간에 $(-1, 2)$ (왼쪽 위 맵 영토로 $90^\circ$ 완벽하게 허공 스핀을 터트려 날아간 스팟 위치 좌표) 로 뿅! 하고 오차 $0.001\%$ 도 없이 텔레포트 좌표 강제 치환 에임이 박혀버렸습니다!!

2. 함수 $f(x)$ 찌질이들을 가뿐히 넘어서는 위엄

이것이 행렬이 20세기 공학 우주를 정복한 이유입니다. 지금까지 함수 $f(x)$ 는 기껏해야 숫자 $2$ 를 넣으면 숫자 $5$ 하나가 “뿅” 배출되는 허접 깡통이었습니다. 차원을 넘거나 방향을 비틀진 못합니다. 하지만 이 악마의 $\mathbf{2 \times 2}$ 정사각 매리트릭스 배열 뼈대 스펠 코드는:

“야! 모니터 화면 전체 픽셀 수십만 개의 점(Vector 좌표) 전체 묶음 데이터! 내 몸체 앞으로 다 일렬 줄 세워 모여! 자, 우주 ‘가로로 3배 늘이기 볼륨 스택’ 변환 행렬 $\begin{bmatrix} 3 & 0 \ 0 & 1 \end{bmatrix}$ 을 곱셈 한 방 쾅 내리친다!!”

이 한 번 크래시 연산으로, 수십만 개의 모든 점 렌더링 앵커가 모니터 상에서 강제로 스크린 좌우 3배 와이드 광폭으로 물리 엔진 찰흙처럼 주우욱 늘어나 찌그러지는 초토화 시공간 왜곡 스펠이 펼쳐집니다!

3. 리니어(Linear) 의 마법, 뼈대는 안 부서진다!

우리는 이것을 ‘선형 변환 (Linear Transformation)’ 이라고 모십니다. 우주를 비틀고 찌그러뜨리고 돌려버려도, 원래 가로세로 바둑판의 “모든 평행 격자 점 간격 타일” 이나 “직선 라인 원점” 의 골격 자체는 헝겊처럼 찰흙처럼 일차원적으로 똑바로 평행하게 늘어져 나란히 유지된다(곡선으로 휘거나 뜯어지진 않는다) 는 자비로운 법칙입니다.

아까 4장에서 배웠던 기괴한 “L자 행렬 곱셈 법칙” 은 바로 이 우주 스크린 공간의 X축 뼈대와 Y축 뼈대를 모조리 동시다발적으로 체인 리액션 믹서기로 조합 왜곡 시키기 위해 발명된 궁극의 시공간 렌더링 체인 스크립트였던 것입니다! 6장에서 파이썬 텐서 NumPy 로 이 마법을 손쉽게 갈격 박살내겠습니다.

서브목차