Mathematical Definition of Matrix (행렬의 수학적 정의)
선형대수학에서는 행과 열로 이루어진 사각형의 배열(2차원 배열)이라 정의
벡터는 여러개의 스칼라로 이루어진 숫자의 집합
행렬은 여러개의 벡터로 이루어진 집합
Matrix Dimensions and Notation (행렬의 차수)
- 행렬은 행과 열로 구성
- 몇 개의 행과 열로 이루어져 있냐에 따라 모양이 달라짐

Square Matrix (정방행렬)
- 행과 열이 같은 차수로 이루어진 행렬
- 대각행렬 (Diagonal Matrix) : 각각의 행과 열이 마주치는 부분에만 값이 존재하는 행렬

- 단위행렬 (I; Identify Matrix) : 대각행렬중 각 값들이 전부 1로 이루어진 행렬
- 단위행렬은 곱셈에 대한 항등식 연산 성립
- 특정 행렬에 단위행렬을 곱하면 해당 특정행렬의 값 유지
Vector as Matrix (벡터와 행렬)
- 벡터를 표현할때의 2가지 방법 (행벡터, 열벡터)
- 차이는 별로 중요하지 않으나 인지하고 사용
Matrix Transposition (전치행렬)
- r x c 행렬 M이 있다고 가정
- 전치(Transpose)는 M^T로 표현
- 전치행렬은 r x c를 c x r로 바꾸어 표현하는 행렬
- 행과 열을 뒤집는다 생각
- 벡터를 전치하면 행벡터 <=> 열벡터
- 전치행렬을 다시 전치하면 원본 행렬
- 대각행렬의 전치행렬은 원본 대각행렬과 동일
Multiplying a Matrix with a Scalar (행렬의 스칼라배 곱셈)
- 행렬에 스칼라를 곱할 수 있음
- 행렬의 각 요소에 k를 곱해주면 가능

Multiplying Two Matrices (두 행렬의 곱셈)
- r x n 행렬 A와 n x c 행렬 B를 곱하면 r x c 행렬 AB 도출
- A행렬의 열과 B행렬의 행이 일치하지 않으면 곱셈 성립 불가
- 행렬간의 곱셈은 내적과 관련
- 행렬 곱셈에서 각 요소는 A행렬의 행벡터와 B행렬의 열벡터간의 내적을 통해 계산

- 3D 그래픽스에서는 대부분 4x4행렬의 곱셈을 사용
- 행렬의 곱셈에 대한 특징
- 단위행렬에 행렬을 곱하면 기존 행렬 반환 (MI = IM = M)
- 결합법칙 성립 ((AB)C = A(BC))
- 분배법칙 성립 (A(B+C) = AB+AC)
- 교환법칙은 성립 불가 (AB != BA)
Multiplying a Matrix with a Vector (행렬과 벡터의 곱셈)
- 3D 그래픽스에서는 행렬간 곱셈만큼 벡터와 행렬간의 곱셈도 자주 사용
- 행렬간 곱셈과 마찬가지로 조건이 맞지 않으면 곱셈 성립 불가
- 결과로 나오는 벡터의 각 요소는 행렬의 단일 행 또는 열이 있는 원래 벡터의 내적 (N개의 내적값)
- 행렬의 각 요소는 벡터의 각 요소에 작용하는 가중치로 볼 수 있음
- 두 벡터의 덧셈에 행렬곱은 분배법칙 성립
- 벡터에 행렬을 곱하는 것은 아핀변환이 아닌 선형변환 (합 연산이 없음)
Row vs Column Vectors (행벡터와 열벡터)
- 행벡터 x 행렬을 구하면 행벡터 반환
- 열벡터 x 행렬을 구하면 열벡터 반환
- 대부분의 산업에서는 열벡터가 표준으로 사용
- 3D 게임에서는 컴퓨터 코드상에서 행벡터가 더 가독성이 좋음
- DirectX에서는 행벡터 사용, OpenGL에서는 열벡터 사용
Geometric Interpretation of Matrix (기하학적 관점에서의 행렬)
- 보통 행렬은 선형변환 표현
- 선형변환 : 평행선을 보존하고 원점이 변하지 않는 변환 / 길이, 각도, 면적이 변경됨
- 행렬은 좌표 공간의 변환을 나타냄
- 기저벡터에 행렬 M을 곱한 결과

- 각각의 기저벡터 값을 활용해 X,Y,Z의 벡터를 구성하는 3개의 행벡터 값을 각 기저벡터에 곱해줘 만들어지는 벡터(v) 도출 가능
- 위의 벡터 v (새로운 기저벡터)를 행렬에 곱한 결과

- 행렬의 각 값을 간소화 시킨 결과

- 행렬과 공간 변환에 대한 관계
- M = [2, 1][-1, 2]
- 위 행렬에서 각각의 행을 p, q로 뽑을 수 있음
- p = [2, 1], q = [-1, 2]
- 표준기저벡터에서의 좌표계에서 해당 행렬을 곱하면 x기저벡터는 p벡터로 변환, y기저벡터는 q벡터로 변환

- 얼추 각도로 보면 26.5°정도 회전 및 길이 증가
- 기저벡터가 영향을 받는다는것은 모든 벡터들이 기저벡터가 변하는 만큼의 영향을 받는다는 뜻
- x,y 기저벡터로 이루어진 정사각형이 p, q로 이루어진 평행사변형을 완성함으로서 미치는 공간이 회전 및 증가 확인

- 이 평행사변형을 스큐박스라고 함
- 행렬 M이 좌표 공간을 회전시킬뿐만 아니라 크기도 조정
- 3D에서는 표준기저벡터 x, y, z로 확장
- 영벡터에 정사각행렬을 곱하면 결과는 영벡터
- 어떤 좌표공간으로 변환하더라도 행렬곱으로 변환을 진행한다면 원점 유지
참고 및 출처:
게임 개발을 위한 수학