회전과 로보틱스 / NOTE 09

회전축과 회전각

Axis–Angle

회전축·회전각과 회전행렬 사이의 변환 과정을 살펴봅니다.

♫ 이 문서 듣기

개념에서 수식으로

먼저 이해할 내용

복잡한 회전도 하나의 회전축과 그 축 주위의 회전각으로 바라볼 수 있다. 이 글은 축을 기준축에 맞추어 회전한 뒤 되돌리는 방식으로 행렬을 구성하고, 반대로 행렬에서 축과 각도를 읽는 관계를 다룬다.

기호를 먼저 읽기

r
(rₓ,rᵧ,r_z)=길이가 1인 회전축
ϑ
축을 중심으로 한 회전각
α, β
축을 기준 방향에 맞추기 위한 보조 각도
rᵢⱼ
회전행렬의 성분

이 글의 흐름

보조 회전으로 축을 정렬하고 원하는 각도만큼 회전한 뒤 정렬을 되돌린다. 그 결과를 축 성분으로 표현하고, 마지막에는 행렬의 대각합과 비대각 차이에서 각도와 축을 구한다.

축을 정렬하고 회전한 뒤 되돌린다

R_z[α]와 Rᵧ[β] 같은 보조 변환은 임의의 축을 다루기 쉬운 방향에 맞추기 위해 사용한다. 가운데 회전이 실제로 원하는 ϑ 회전이다. 뒤에 나타나는 음의 각도는 앞서 한 정렬을 되돌리는 역할로 읽는다.

주제와 표기

γ/ϑ → Axis/Angle→Rotation MatrixABR

수식
수식

Rotation Matrix BAR

원본 도해
r=(rxryrz)

1

R[ϑ,r]=Rz[α]Ry[β]Rz[ϑ]Ry[β]Rz[α]

2

축 성분을 보조 각도로 바꾼다

rₓ와 rᵧ로 수평 성분의 길이를 구하고, 이를 이용해 α의 사인·코사인을 정한다. β는 수평 성분과 수직 성분 r_z의 관계를 나타낸다. 분모에 수평 성분의 길이가 있는 식은 그 길이가 0인 경우에 별도의 처리가 필요하다.

sin[α]=ryrx2+ry2;cos[α]=rxrx2+ry2;
sin[β]=rx2+ry2;cos[β]=rz;

3

α=ArcTan[ryrx];β=ArcTan[rx2+ry2rz];
수식

4

단위축 조건으로 전개를 줄인다

rₓ²+rᵧ²+r_z²=1을 이용하면 길이에 관련된 항을 줄일 수 있다. 제곱근과 분모가 포함된 중간식은 부호와 정의역까지 확인해야 하므로, 제곱 관계를 이용했다는 이유만으로 원래의 부호가 자동 복원된다고 보지 않는다.

rx2+ry2+rz2=1;
1+rx2+ry2rz2rz=1;

5

수식

행렬에서 회전각과 축을 다시 얻는다

세 대각 성분의 합에서 코사인 관계를 얻고 ArcCos로 각도를 읽는다. 이어서 서로 마주 보는 비대각 성분의 차이를 2sinϑ로 나누어 축 성분을 구한다. sinϑ가 0인 경우에는 이 나눗셈을 할 수 없으므로, 이 식을 모든 각도에 무조건 적용하지 않는다.

Rotation Matrix BAR → Axis γ/Angle ϑ

R[ϑ,r]=R[ϑ,r]
ϑ=arccos[r11+r22+r3312]
r=(rxryrz)=12sin[ϑ](r32r23r13r31r21r12)
rx2+ry2+rz2=1

정리하면

축-각도 표현은 회전의 기하학적 의미를 직접 보여준다. 다만 역변환 식의 분모가 0이 되는 회전은 일반식에 그대로 넣을 수 없으므로 분리해서 살펴야 한다.