수학/이득우의 게임 수학

로드리게스 회전

monstro 2026. 5. 6. 20:36
728x90
반응형

- 개요

이전까지는 3차원 공간에서의 회전을 위해 오일러 각을 사용하였다

그러나 오일러 각은 짐벌락 현상이 발생하고 회전 보간이 어렵다는 문제점이 존재한다

 

회전 평면의 설정 - 이미지 출처 : https://gaussian37.github.io/vision-concept-axis_angle_rotation/

 

오일러 각의 문제를 해결하기 위해서는 임의의 축에 대한 평면의 회전 방식을 사용하면 해결할 수 있다

이런 방식을 축-각 회전이라 부르고 3차원 공간에서 지정된 임의의 축직교하는 평면에서 회전이 진행되는 형태이다

그리고 로드리게스 회전축-각 회전의 공식을 의미한다

 

- 회전 평면의 구성

위의 이미지의 회전 평면의 구성은 다음과 같다

  • n 벡터 : 회전축의 벡터 + 크기를 1정규화
  • P 점 : 회전시킬
  • P` 점 : 최종적으로 회전할
  • O 점 : 월드 공간의 원점
  • O` 점 : 회전 평면의 중심점

 

따라서 최종적으로 구하고자 하는 값은 OP` 벡터인, u` 벡터의 값이다

 

- 로드리게스 회전 공식 유도 과정

1) 유도할 식의 확인

 

P의 좌표값은 위와 같이 설정할 수 있다

 

 

원점 O에서부터 회전시킬 점 P까지의 벡터u 벡터로 지정한다

 

 

최종적으로 도출할 축-각 회전의 공식

 

최종적으로 임의의 축 n에 대해 벡터 u를 각 θ만큼 회전시킨 벡터 u`를 계산하는 축-각 회전의 공식은 위와 같다

이어서 해당 공식이 어떻게 계산되었는지 알아본다

 

2) OO` 벡터의 계산

이미지 출처 : https://gaussian37.github.io/vision-concept-axis_angle_rotation/

 

먼저 원점 O에서 회전시킬 점 P로 향하는 벡터 u를 평면의 회전축에 해당하는 법선 벡터 n에 투영한다

벡터 u가 투영할 벡터 n의 크기가 1이므로 벡터의 투영 공식을 적용할 수 있다

이때 생성된 벡터를 벡터 v라고 표현한다

 

벡터 내적의 투영 공식으로 구한 벡터 v

 

최종적으로 벡터 v의 값은 위와 같다

 

3) O`P` 벡터 계산

 

회전 평면의 중점 O`에서 회전시킬 점 P로 향하는 벡터 O`P의 값은 위와 같다

 

이미지 출처 : https://gaussian37.github.io/vision-concept-axis_angle_rotation/

 

평면에서 점 P를 각 θ만큼 회전한 O`P` 벡터를 구하기 위해 회전 평면을 위와 같이 위에서 내려다본다

이때 벡터 O`P`를 가로 성분세로 성분으로 분리하면 각각 다음과 같다

 

이미지 출처 : https://gaussian37.github.io/vision-concept-axis_angle_rotation/

 

벡터 O`P`의 가로 성분

 

가로 성분에 해당하는 벡터는 위와 같다

 

이미지 출처 : https://gaussian37.github.io/vision-concept-axis_angle_rotation/

 

벡터 O`P`의 세로 성분

 

이어서 세로 성분에 해당하는 벡터를 구해야 한다

법선 벡터 n과 벡터 O`P를 외적하여 세로 성분의 벡터를 구할 수 있고 O`Q로 표현한다

 

 

최종적으로 벡터 O`P`의 값은 위와 같다

 

3) 최종 벡터 OP` 계산

이미지 출처 : https://gaussian37.github.io/vision-concept-axis_angle_rotation/

 

최종 벡터 OP`는 위와 같이 선분 O`P`에 벡터 v를 더하여 얻을 수 있다

 

 

위의 계산 과정을 식으로 표현하면 위와 같다

 

4) 최종 결과

 

3)에서 계산한 식에서 벡터 v(u ⋅ n) ⋅ n으로 치환하면 최종 식이 유도된다

728x90
반응형