etc

Z축에 대한 회전 공식 (+유도 과정)

lim.dev 2019. 4. 16. 01:18

directX를 이용해 라이브러리를 개발하던 중

z 축을 기준으로 회전하는 공식을 유도한 과정이다.

이 평면좌표 위의 두 선을

이 위치로 옮겼다 생각하자

좌표 두 개를 각각 (x, y), (x', y')라고 정해주면

알 수 있는 사실은 다음과 같다.

먼저 x'를 구해보자.

 

 x' = xcosθ - ysinθ 

y'를 구해보자

 y' = xsinθ + ycosθ 

구한 식은 행렬로 나타낼 수 있다.

(수학에서의 행렬은 연립방정식을 풀기 위해 사용되지만 cpu graphics에서의 행렬은  변환의 목적으로 쓰인다.)

 

행렬은 인풋값과 아웃풋 값이 같아야 계산 가능하다.

그렇기에 나는 저 행렬을 3by 3 행렬로 인풋 값에 z값까지 받아오게끔 변형시켰다.

(당연히 아웃풋도 z'까지 나온다.)

 

[ X' ]      [ cosθ   -sinθ   0 ] [ x ]

| y  |  =  | sinθ    cosθ    0 | | y |

[ z' ]      [   0      0      1   ] [ z ]

 

이런 식으로,,

 

참고로 Scale, Translate, Rotation의 각각 행렬을 보면,

이렇게 나타나 지는데 ST행렬은 아래와 같이 표현될 수 있다.

이렇듯 2차원을 translate 하면 3차원이 되고 3dmax 등에서는 3차원에서 한번 더 평행 이동함으로써 4차원 행렬을 사용한다. (4 by 4)

--------------------------------------------------------------------------

 

Y = TRX와 Y = RTX 

 

두 식은 확연히 다르니 주의해서 구현하도록 하자!