행렬
Matrix
행렬
행렬은 DirectX를 비롯한 게임 프로그래밍에서 가장 많이 쓰이는 수학 개념 중 하나이다.
행렬은 행과 열로 이루어진 벡터라고 볼 수 있다. 2차원 평면에서의 벡터를 성분 단위로 나누면 표현 방법에 따라 2x1 또는 2x1 행렬로 표현이 가능하다.
그럼 이 행렬이라는 건 대체 왜 게임에서 사용이 될까?
게임 요소 중 가장 중요한 것은 어떤 물체 등의 상태를 나타내는 것이 중요하다.
이때 이 물체의 위치, 방향, 회전, 크기를 조정할 때 행렬이 쓰인다.
보통 수학에서는 2x2, 3x3 행렬이 많이 쓰이지만 게임 프로그래밍에서는 4x4 행렬을 기본으로 사용한다.
위의 4가지 행렬들의 곱으로 이루어진 것이 바로 변환행렬이다.
이 변환행렬 하나로 하나의 상태를 나타내게 된다.
변환 행렬
변환행렬을 만들 때 가장 중요한 것은 4가지 행렬들을 곱하는 순서이다.
정해진 순서대로 곱하지 않으면 원하는 대로 변환이 이루어지지 않는다.
Transform 행렬

Rotation 행렬

Scale 행렬

Position 행렬

이렇게 4가지 행렬을 TRSp 순서로 곱해야한다.
T ( R ( S p ) )
행렬은 곱하는 순서가 중요하기 때문에 결합 법칙은 성립하지만, 교환 법칙은 성립하지 않는다.
교환을 하는 순간 순서가 바뀌기 때문에 원하는대로 변환이 이루어지지 않는다.