그래픽스/DX11

D3D11 회전축에 대한 벡터의 회전

뽀또치즈맛 2024. 12. 13. 00:28

 

회전축에 대한 벡터의 회전

 
회전도 행렬로 표현할 수 있다.

회전을 하려면 먼저 회전축을 결정해야한다.
어떠한 축에 대해서 회전해야할지,
 
그 다음은 몇 도만큼 돌아가야할지를 결정한다.
 
회전은 비교적 3차원 공간보단
2차원 공간에서 구현하기 쉽다.
 
(3차원 회전을 다룰 때는 사원수(Quaternion)를 사용하게 된다.
숫자 4개를 사용해서 회전을 표현하는 것이다.)
 
회전을 시키고자 한다면, 2차원 평면에서의 회전을 생각하면 좀더 쉽다.

2D 평면에서 회전을 생각해보자.
서로 다른 벡터가 필요하다는 것을 금방 알 수 있다.
 

회전 과정

 
1. 먼저 회전축 벡터(n)와 회전하고 싶은 벡터(v)를 외적 (Cross Product)를 한다.
 
2. 외적 값은 회전축 벡터(n)와 회전하고 싶은 벡터(v) 두 벡터에 모두에 해서 수직이다.
 
3. 회전하고 싶은 벡터(v)를 회전축 벡터(n)에 대해 외적한 벡터를
회전하고 싶은 벡터(v)에서 빼준다.
 
4. 그 값은 수직인 벡터가 된다.

 
그럼 다음과 같은 삼각형이 만들어진다.
여기서 n x v 의 벡터와 v는 길이가 동일하다.
 
이처럼 길이는 같지만 서로 다른 벡터 두 벡터를 통해
회전축을 따라 회전을 할 수 있는 것이다.
 

 
형렬로 표현하면 다음과 같이 이루어진다.

 
이 부분은 그래픽스에 많이 노출되어야
제대로 이해가 가는 부분이다.
따라서 D3D12 Luna책도 보고,
직접 렌더러도 많이 짜보고, 렌더러 코드도 많이 봐보면서
제대로 이해하려 노력하자.
 
++
회전 행렬의 역행렬은 전치 행렬과 동일하다.
회전의 역변환 행렬이 필요한 경우에 전치 행렬로 쉽게 구할 수 있다.