동차좌표
특정 목적으로 좌표계에 축을 하나 늘려 표현하는 것
(x, y, z) => (x, y, z, 1)
변환행렬
행렬을 특정하게 변환시키는 행렬들을 변환행렬이라고 하며,
변환행렬은 단위행렬, 크기 변환 행렬, 이동 행렬, 회전 행렬 등을 말한다.
변환행렬을 연속적으로 곱할 때는 T(이동) -> R(회전) -> S(크기) 순으로 하며,
회전의 경우 y -> x -> z 축을 순서로 곱해야 한다.
T Ry Rx Rz S [x, y, z, 1]
Quaternion rot = Quaternion.Euler(45, 0, 45);
Vector3 tran = new Vector3(2, 1, 5);
Vector3 scal = new Vector3(10, 10, 10);
worldMat = Matrix4x4.TRS(tran, rot, scal);
//worldMat = Matrix4x4.Translate(new Vector3(2, 1, 5)) *
Matrix4x4.Rotate(rot) *
Matrix4x4.Scale(new Vector3(10,10,10));
유니티에서 변환행렬을 만드는 방법
회전의 경우 일반적으로 사용하는 오일러 각을 사용할 시
짐벌락 문제가 발생하기 때문에 쿼터니언으로 변환하여 사용
Translate 함수를 이용 시에는 TRS 순서를 지켜서 곱해줘야 한다.
Matrix4x4 matrix = transform.localToWorldMatrix;
transform에서 해당 오브젝트의 변환행렬을 얻을 수 있음