작성
·
266
답변 3
0
https://learn.microsoft.com/en-us/windows/win32/direct3d9/transforms
DirectX9설명을 봤을 때 rome님 말씀대로 행렬을 만들고 있었습니다.
DirectX9 에서는 좌표 벡터를 행 벡터로 간주하고, 변환 행렬을 강의처럼 오른쪽에 곱하고 있는데
DirectX11로 오면서 좌표 벡터를 열 벡터로 간주하고, 변환 행렬을 왼쪽에서 곱하고 있는 듯 합니다.
0
0
회전행렬은 방향 코사인 행렬을 계산하여 구해집니다.
x'1축과 x1축과의 사이각을 (x1', x1) 이라 하고, 일반화 해서 xi'축과 xj 축 사이의 각을 (xi', xj) 라 해봅시다.
그렇게 되면 3차원의 경우 (x1', x2', x3') 과 (x1, x2, x3)의 총 9가지의 관계를 구할수 있습니다.
그래서 일반적인 3차원 회전행렬 L(람다)를 구할때 아래 처럼 구하게 됩니다.
l11 = cos(x1', x1);
l12 = cos(x1', x2);
l13 = cos(x1', x3);
l21 = cos(x2', x1);
l22 = cos(x2', x2);
l23 = cos(x2', x3);
l31 = cos(x3', x1);
l32 = cos(x3', x2);
l33 = cos(x3', x3);
회전 행렬 람다는
(l11, l12, l13)
(l21, l22, l23)
(l31, l32, l33)
가 됩니다.
해당 관계의 특수 예들이 X축 회전행렬, Y축 회전 행렬, Z축 회전 행렬 등으로 표현하면 강의에 나온것처럼 됩니다.