행렬


Matrix


행렬


행렬은 DirectX를 비롯한 게임 프로그래밍에서 가장 많이 쓰이는 수학 개념 중 하나이다.

행렬은 행과 열로 이루어진 벡터라고 볼 수 있다. 2차원 평면에서의 벡터를 성분 단위로 나누면 표현 방법에 따라 2x1 또는 2x1 행렬로 표현이 가능하다.

그럼 이 행렬이라는 건 대체 왜 게임에서 사용이 될까?

게임 요소 중 가장 중요한 것은 어떤 물체 등의 상태를 나타내는 것이 중요하다.

이때 이 물체의 위치, 방향, 회전, 크기를 조정할 때 행렬이 쓰인다.

보통 수학에서는 2x2, 3x3 행렬이 많이 쓰이지만 게임 프로그래밍에서는 4x4 행렬을 기본으로 사용한다.

위의 4가지 행렬들의 곱으로 이루어진 것이 바로 변환행렬이다.

이 변환행렬 하나로 하나의 상태를 나타내게 된다.


변환 행렬


변환행렬을 만들 때 가장 중요한 것은 4가지 행렬들을 곱하는 순서이다.

정해진 순서대로 곱하지 않으면 원하는 대로 변환이 이루어지지 않는다.


Transform 행렬


Transform Matrix

Rotation 행렬


Rotation Matrix

Scale 행렬


Scale Matrix

Position 행렬


Position Matrix

이렇게 4가지 행렬을 TRSp 순서로 곱해야한다.

T ( R ( S p ) )

행렬은 곱하는 순서가 중요하기 때문에 결합 법칙은 성립하지만, 교환 법칙은 성립하지 않는다.

교환을 하는 순간 순서가 바뀌기 때문에 원하는대로 변환이 이루어지지 않는다.