KoreanFoodie's Study

게임수학 - 행렬을 이용한 회전변환 본문

Game Dev/Game Math

게임수학 - 행렬을 이용한 회전변환

GoldGiver 2022. 10. 26. 07:03

이득우님의 '이득우의 게임수학' 책을 보며 좋은 내용을 정리하고 있습니다. 더 자세한 내용이 궁금하시다면, 책을 구매해 직접 읽어보시기를 추천드립니다!

행렬을 이용한 회전변환

행렬을 이용해 어떤 물체를 반시계 방향으로 90 도 회전시키는 행렬을 구한다고 생각해 보자.

위의 그림을 보면, 두 벡터가 다음과 같이 변환된다.

  • 표준기저벡터 e1 : (1, 0) -> (0, 1)
  • 표준기저벡터 e2 : (0, 1) -> (-1, 0)

따라서 반시계로 90 도 회전 변환을 수행하는 행렬을 다음과 같이 설계할 수 있다.

 

시계방향으로 90 도 회전을 하는 경우는 다음과 같을 것이다 :

사실 90 도 회전의 경우는 행렬을 사용하지 않고 간단하게 다음과 같이 구할 수 있다.
- 시계 방향으로 90 도 회전 : (x, y) -> (-y, x)
- 반시계 방향으로 90 도 회전 : (x, y) -> (y, -x)

 

그렇다면 주어진 각도 θ 로 벡터 공간을 회전시키는 회전 변환 행렬을 구해보자. 위와 마찬가지로, 표준기저벡터가 어떻게 변하는지만 추적하면 된다!

  • 표준기저벡터 e1 : (1, 0) -> (cosθ, sinθ)
  • 표준기저벡터 e2 : (0, 1) -> (-sinθ, cosθ)

 

 

전단 변환행렬

이번에는 표준기저벡터 e1 을 고정한 상태에서 표준기저벡터 e2 를 x 축 방향으로 미는 변환을 생각해 보자. 원리는 위와 같다!

 

 

삼각함수의 덧셈 정리

학교에서 배운 삼각함수의 덧셈 정리는 다음과 같다.

위의 회전변환의 원리를 이해하고 있다면, 위의 식이 벡터 공간을 반시계 방향으로 α + β 만큼 회전시킨 것과 연관이 있음을 알 수 있을 것이다. 이는 벡터 공간을 각각 α, β 만큼 회전시킨 것을 합친 것을 의미한다.

 

따라서 벡터를 α + β 만큼 회전시키는 변환 행렬은 다음과 같다.

 

Comments