Machineboy空
게임을 지탱하는 기초수학 1-7. 행렬 본문
1. 행렬(Matrix)
행렬의 단순 정의
사각형 안에 수를 행렬과 열에 맞춰 배열한 것.
- 복잡한 선형 변환의 식을 계산하기 편하게 단순화시킨 계산 도구
- 선형 변환의 표현

- 함수로서의 행렬: 2 X 2 Matrix
- 벡터로서의 행렬: 2 X 1 Matrix

행렬의 기본 연산들
행렬과 행렬의 덧셈 연산

행렬과 스칼라의 곱셈 연산

행렬의 전치(Transpose) 연산

행렬과 행렬의 곱셈 연산

행렬 곱셈 연산의 특징
- 교환 법칙을 만족하지 않는다.
- 결합 법칙은 만족한다.


행렬 곱의 전치 연산
- 분배법칙을 만족한다.

2. 선형 변환과 행렬
벡터 공간의 특징을 그대로 유지하면서 선형성을 띄고, 새로운 공간으로 변환되는 과정(선형 변환)이 행렬에 대응된다.

정방행렬과 열벡터의 곱셈

이의 결과는 무엇을 의미하는가?
- 정방 행렬은 같은 차원의 공간이 서로 대응되는 선형변환을 의미한다.
- 열벡터는 벡터 공간의 벡터를 의미한다.
즉 (x,y)를 새로운 공간의 좌표(ax + by, cx + dy)에 대응시켜주는 것
행렬을 표현하는 두 가지 방법
열기반 행렬(Column Major): OpenGL 수학에서 사용하는 기본 방식
벡터를 열으로 표현.

행기반 행렬(Row Major): DirectX 및 게임 엔진에서 사용하는 방식
벡터를 행으로 표현.

어떤 벡터에 선형 변환을 적용해서 새로운 벡터를 만들어냈다고 하자.

열기반과 행기반은 전치 관계일 뿐 결과는 동일함을 보장해준다.
3. 선형 변환의 시각화
- 크기 변환
- 밀기 변환
- 회전 변환
원벡터 공간의 선형 변환
원 공간에 속한 임의의 벡터에 대한 조합식

선형 변환 후 변환된 기저 벡터를 조합해 벡터를 추적한다.


기저 벡터의 변환

크기 변환 행렬
직사각형을 a 만큼 가로로 늘이고,b만큼 세로로 줄이고 싶다고 할 때!

밀기 변환


원하는 변환을 위해 행렬을 설계하면 된다!
시계 방향 90도 회전 변환
물체의 모양은 그대로 간직하되 방향이 달라진 것.

반시계 방향 90도 회전 변환

임의의 각 θ에 대한 회전 변환

4. 행렬의 곱
행렬이 간편해서 쓴다기 보단, 행렬의 곱이 가진 성질을 사용하기 위해 변환에 행렬을 쓴다고 이해.
행렬의 곱
행렬은 하나의 선형 변환에 대응되며, 행렬의 곱은 선형 변환을 적용한 결과에 다시 선형 변환을 적용한 결과를 다음과 같이 진행된다.

두 행렬을 곱한 식(A·B)는 벡터공간 V에서 벡터공간 W로 직행하는 합성 변환을 의미하며
합성 함수의 AºB와 동일한 의미를 가진다.
삼각함수의 합 공식
행렬의 곱셈의 특징을 사용하면 삼각함수의 합 공식을 유도할 수 있다.

행렬의 장점
이러한 결합 법칙이 성립하는 행렬 연산의 특징은 변환이 여러 개가 존재하더라도 동일한 결과를 보장해 준다.
(A·B·C)· v = A · (B · (C·v))
앞으로 우리가 사용할 주요 선형 변환은 다음과 같다.
- Scale(S)
- Rotation(R)
- Translation(T)
- View(V)
- Projection(P)
10만개의 벡터에 위의 다섯가지 변환을 각각 적용하면 다음과 같이 50만번의 연산이 발생한다.
P·(V·(T·(R·(S·v))))
그런데 변환이 고정되어 있다면 PVTRS를 미리 계산해 행렬을 생성한 후 이를 사용하면 동일한 결과를 만들어주는 연산은 10만번으로 해결된다
P·(V·(T·(R·(S·v)))) = (PVTRS) · v
속도에 민감한 컴퓨터 그래픽에서는 행렬을 사용할 수 밖에 없다!
'Game > 게임 수학' 카테고리의 다른 글
게임 콘텐츠의 제작 원리 2-1. 아핀공간 (0) | 2025.02.27 |
---|---|
게임을 지탱하는 기초 수학 1-8. 역행렬 (0) | 2025.02.27 |
게임을 지탱하는 게임 수학 1-6. 선형성 (0) | 2025.02.25 |
게임을 지탱하는 기초 수학 1-5. 삼각함수 (0) | 2025.02.20 |
게임을 지탱하는 기초 수학 1-4. 선형 독립 (0) | 2025.02.19 |