10.29 구면 선형 보간(SLERP)의 원리와 유도

10.29 구면 선형 보간(SLERP)의 원리와 유도

1. SLERP의 정의와 배경

구면 선형 보간(Spherical Linear Interpolation, SLERP)은 두 단위 쿼터니언 사이를 4차원 단위 구면 S^3 상의 측지선을 따라 일정한 각속도로 보간하는 방법이다. 켄 슈메이크(Ken Shoemake)가 1985년 SIGGRAPH 논문 “Animating Rotation with Quaternion Curves“에서 도입하였으며, 이후 컴퓨터 그래픽스, 로봇 공학, 자세 추정 등 광범위한 분야에서 회전 보간의 표준 방법이 되었다.

SLERP는 단순히 4차원 공간에서 두 점을 직선으로 연결하는 LERP와 달리, 두 쿼터니언을 포함하는 단위 구면 위의 “대원(great circle)” 호를 따라 보간한다. 이는 SO(3) 매니폴드 상의 측지선 보간과 등가이며, 일정한 각속도로 진행하는 매끄러운 회전 운동을 산출한다.

2. SLERP의 공식

두 단위 쿼터니언 \mathbf{q}_0\mathbf{q}_1, 매개변수 t \in [0, 1]에 대해 SLERP는 다음과 같이 정의된다.

\mathrm{SLERP}(\mathbf{q}_0, \mathbf{q}_1, t) = \frac{\sin((1-t)\Omega)}{\sin\Omega}\mathbf{q}_0 + \frac{\sin(t\Omega)}{\sin\Omega}\mathbf{q}_1

여기서 \Omega는 두 쿼터니언 사이의 각도이며, 4차원 내적으로 정의된다.

\cos\Omega = \mathbf{q}_0\cdot\mathbf{q}_1 = q_{0,w}q_{1,w} + q_{0,x}q_{1,x} + q_{0,y}q_{1,y} + q_{0,z}q_{1,z}

3. 핵심 성질

3.1 끝점 일치

\mathrm{SLERP}(\mathbf{q}_0, \mathbf{q}_1, 0) = \mathbf{q}_0

\mathrm{SLERP}(\mathbf{q}_0, \mathbf{q}_1, 1) = \mathbf{q}_1

이는 위 공식에 t = 0, 1을 대입하여 직접 확인할 수 있다.

3.2 단위 노름 보존

결과가 항상 단위 쿼터니언이다. 별도의 정규화가 필요 없다.

3.3 일정한 각속도

매개변수 t가 균일하게 증가할 때, 보간된 쿼터니언이 일정한 각도 비율로 변한다. 즉, 회전 운동이 일정한 각속도로 진행된다.

3.4 측지선

S^3 상의 두 점 사이의 가장 짧은 경로(측지선)를 따른다. 이는 SO(3) 매니폴드 상의 자연스러운 회전 경로이다.

4. SLERP의 유도

4.1 측지선 위의 점 표현

단위 구면 S^3 상의 두 점 \mathbf{q}_0\mathbf{q}_1을 포함하는 측지선 위의 점을 매개변수 t로 표현한다. 측지선은 두 점을 포함하는 4차원 공간의 2차원 평면(원점을 포함)과 단위 구면의 교차이다. 이 측지선 위의 점은 두 쿼터니언의 선형 결합으로 표현된다.

\mathbf{q}(t) = a(t)\mathbf{q}_0 + b(t)\mathbf{q}_1

여기서 a(t)b(t)는 아직 결정되지 않은 함수이다.

4.2 조건의 설정

\mathbf{q}(t)가 SLERP의 정의를 만족하도록 다음의 조건을 부과한다.

조건 1: 끝점 일치

\mathbf{q}(0) = \mathbf{q}_0 \quad \Rightarrow \quad a(0) = 1, b(0) = 0

\mathbf{q}(1) = \mathbf{q}_1 \quad \Rightarrow \quad a(1) = 0, b(1) = 1

조건 2: 단위 노름 유지

\lVert\mathbf{q}(t)\rVert = 1 \quad \text{for all } t

조건 3: 일정한 각속도

\mathbf{q}_0로부터 \mathbf{q}(t)까지의 각도가 t에 비례해야 한다. 즉,

\mathbf{q}_0\cdot\mathbf{q}(t) = \cos(t\Omega)

여기서 \Omega\mathbf{q}_0\mathbf{q}_1 사이의 각도이다.

4.3 조건 3으로부터의 식

\mathbf{q}_0\cdot\mathbf{q}(t)를 전개하면

\mathbf{q}_0\cdot(a\mathbf{q}_0 + b\mathbf{q}_1) = a\lVert\mathbf{q}_0\rVert^2 + b(\mathbf{q}_0\cdot\mathbf{q}_1) = a + b\cos\Omega

이것이 \cos(t\Omega)과 같아야 하므로

a + b\cos\Omega = \cos(t\Omega) \quad \text{(식 1)}

대칭적으로 \mathbf{q}_1\cdot\mathbf{q}(t) = \cos((1-t)\Omega)이므로

a\cos\Omega + b = \cos((1-t)\Omega) \quad \text{(식 2)}

4.4 연립 방정식의 해

식 1과 식 2로 구성된 연립 방정식을 ab에 대해 푼다.

행렬 형태로

\begin{bmatrix}1 & \cos\Omega \\ \cos\Omega & 1\end{bmatrix}\begin{bmatrix}a \\ b\end{bmatrix} = \begin{bmatrix}\cos(t\Omega) \\ \cos((1-t)\Omega)\end{bmatrix}

행렬의 역은

\frac{1}{1 - \cos^2\Omega}\begin{bmatrix}1 & -\cos\Omega \\ -\cos\Omega & 1\end{bmatrix}

1 - \cos^2\Omega = \sin^2\Omega이므로

\begin{bmatrix}a \\ b\end{bmatrix} = \frac{1}{\sin^2\Omega}\begin{bmatrix}\cos(t\Omega) - \cos\Omega\cos((1-t)\Omega) \\ \cos((1-t)\Omega) - \cos\Omega\cos(t\Omega)\end{bmatrix}

4.5 삼각 함수 항등식의 적용

분자에 곱-합 공식을 적용한다. 첫 번째 성분에 대해

\cos(t\Omega) - \cos\Omega\cos((1-t)\Omega)

곱-합 공식 \cos A\cos B = \frac{1}{2}[\cos(A-B) + \cos(A+B)]를 적용하면

\cos\Omega\cos((1-t)\Omega) = \frac{1}{2}[\cos(t\Omega) + \cos((2-t)\Omega)]

따라서

\cos(t\Omega) - \frac{1}{2}[\cos(t\Omega) + \cos((2-t)\Omega)] = \frac{1}{2}[\cos(t\Omega) - \cos((2-t)\Omega)]

합-차 공식 \cos A - \cos B = -2\sin\frac{A+B}{2}\sin\frac{A-B}{2}을 적용하면

= -\sin\Omega\sin((t-1)\Omega) = \sin\Omega\sin((1-t)\Omega)

따라서

a = \frac{\sin\Omega\sin((1-t)\Omega)}{\sin^2\Omega} = \frac{\sin((1-t)\Omega)}{\sin\Omega}

마찬가지로

b = \frac{\sin(t\Omega)}{\sin\Omega}

4.6 최종 공식

유도된 계수를 대입하면 SLERP의 공식이 얻어진다.

\mathrm{SLERP}(\mathbf{q}_0, \mathbf{q}_1, t) = \frac{\sin((1-t)\Omega)}{\sin\Omega}\mathbf{q}_0 + \frac{\sin(t\Omega)}{\sin\Omega}\mathbf{q}_1

5. 공식의 검증

5.1 끝점에서의 값

t = 0:
\frac{\sin\Omega}{\sin\Omega}\mathbf{q}_0 + \frac{\sin 0}{\sin\Omega}\mathbf{q}_1 = \mathbf{q}_0 + 0 = \mathbf{q}_0 \checkmark

t = 1:
\frac{\sin 0}{\sin\Omega}\mathbf{q}_0 + \frac{\sin\Omega}{\sin\Omega}\mathbf{q}_1 = 0 + \mathbf{q}_1 = \mathbf{q}_1 \checkmark

5.2 단위 노름

\lVert\mathbf{q}(t)\rVert = 1이 모든 t에 대해 성립하는지 확인한다. 위의 유도 과정에서 이 조건을 자동으로 만족하도록 계수가 결정되었다. 구체적으로,

\lVert\mathbf{q}(t)\rVert^2 = a^2 + b^2 + 2ab\cos\Omega = \ldots = 1

(삼각 함수 항등식을 사용한 단순화 후)

5.3 일정한 각속도

\mathbf{q}_0\cdot\mathbf{q}(t) = \cos(t\Omega)이 성립하므로, \mathbf{q}(t)\mathbf{q}_0로부터 균일하게 각도 t\Omega만큼 멀어진다. 이는 일정한 각속도를 의미한다.

6. SLERP의 기하학적 해석

6.1 S^3 상의 측지선

SLERP는 단위 구면 S^3 상의 두 점을 잇는 측지선(대원 호) 위를 매개변수 t에 비례하는 속도로 진행한다. 이는 “구면 상의 가장 자연스러운 경로“이다.

6.2 일정한 속도

S^3의 거리 단위로 측정하면 SLERP의 속도가 일정하다. 즉, t가 균일하게 증가할 때 \mathbf{q}(t)가 구면 위에서 균일하게 이동한다.

6.3 회전 공간의 측지선

SO(3) 매니폴드의 측지선과 S^3의 측지선은 S^3 \to SO(3)의 이중 피복 사상 하에서 대응한다. 따라서 SLERP는 회전 공간의 자연스러운 보간이기도 하다.

7. LERP와의 비교

7.1 LERP (선형 보간)

\mathrm{LERP}(\mathbf{q}_0, \mathbf{q}_1, t) = (1-t)\mathbf{q}_0 + t\mathbf{q}_1

7.2 LERP의 한계

  • 결과가 단위 쿼터니언이 아님
  • 일정한 각속도가 아님
  • 경로가 S^3 상의 측지선이 아님

7.3 NLERP (정규화된 LERP)

\mathrm{NLERP}(\mathbf{q}_0, \mathbf{q}_1, t) = \frac{(1-t)\mathbf{q}_0 + t\mathbf{q}_1}{\lVert(1-t)\mathbf{q}_0 + t\mathbf{q}_1\rVert}

NLERP는 LERP 후 정규화하므로 단위 노름은 보존되지만, 여전히 일정한 각속도가 아니다. 경로는 SLERP와 같지만 매개변수화가 다르다.

8. 부호 이중성의 처리

SLERP 적용 전에 부호 보정이 필요하다. \mathbf{q}-\mathbf{q}가 같은 회전을 나타내므로, 보간이 짧은 경로를 따르도록 부호를 조정한다.

if dot(q0, q1) < 0:
    q1 = -q1

부호 보정 없이 SLERP를 수행하면 긴 경로(한 바퀴 이상)를 따라가는 의도하지 않은 결과가 될 수 있다.

9. 작은 각도에서의 수치 안정성

\Omega가 0에 가까우면 \sin\Omega도 0에 가까워 분모가 작아진다. 이 경우 수치 오차가 증가할 수 있다.

9.1 해결책: LERP로의 대체

작은 각도에서는 LERP와 SLERP의 차이가 무시할 수 있으므로, LERP로 대체하고 정규화한다.

if cos_omega > 0.9995:
    # 작은 각도
    return normalize((1-t) * q0 + t * q1)
else:
    # 일반 SLERP
    ...

9.2 대안: 테일러 전개

\sin((1-t)\Omega)/\sin\Omega \approx (1-t)(1 + O(\Omega^2))이므로, 작은 \Omega에 대해 계수가 (1-t)t에 수렴한다. 이는 LERP와 같다.

10. 알고리즘

function slerp(q0, q1, t):
    cos_omega = dot(q0, q1)
    
    # 부호 보정
    if cos_omega < 0:
        q1 = -q1
        cos_omega = -cos_omega
    
    # 작은 각도 처리
    if cos_omega > 0.9995:
        return normalize((1 - t) * q0 + t * q1)
    
    # 일반 SLERP
    omega = acos(cos_omega)
    sin_omega = sin(omega)
    a = sin((1 - t) * omega) / sin_omega
    b = sin(t * omega) / sin_omega
    
    return a * q0 + b * q1

11. SLERP의 응용

11.1 키프레임 애니메이션

3D 애니메이션에서 캐릭터의 자세를 키프레임으로 정의하고 SLERP로 사이를 보간한다. 매끄러운 회전 운동을 생성한다.

11.2 카메라 보간

가상 카메라가 여러 시점을 매끄럽게 전환할 때 SLERP가 사용된다.

11.3 매니퓰레이터 궤적

매니퓰레이터의 말단 장치 자세 보간에서 SLERP가 사용된다.

11.4 자세 추정

자세 추정 결과의 평활화에서 SLERP가 이용될 수 있다.

11.5 모션 캡처

모션 캡처 데이터의 누락 프레임 보간에 SLERP가 적용된다.

12. SLERP의 한계

12.1 다중 키프레임

SLERP는 두 쿼터니언 사이의 보간이다. 여러 키프레임 사이에서 SLERP를 차례로 사용하면 키프레임에서 미분이 연속적이지 않다. 이를 해결하기 위해 Squad와 같은 고차 보간이 도입되었다.

12.2 계산 비용

삼각 함수(\arccos\sin)의 계산이 필요하므로 LERP나 NLERP보다 비싸다. 실시간 시스템에서 성능이 중요한 경우 NLERP가 선호될 수 있다.

12.3 비선형

SLERP는 시간에 대해 비선형이므로, 예를 들어 쿼터니언 도함수 계산이 복잡할 수 있다.

13. 시각화

SLERP의 결과를 시각화하려면, 단위 구면 위에 두 쿼터니언을 그리고 그들을 잇는 대원 호 위를 매개변수 t가 증가함에 따라 이동하는 것을 상상한다. 4차원 공간은 시각화할 수 없지만, 3차원으로 축소한 비유가 도움이 된다.

14. 참고 문헌

  • Shoemake, K. (1985). “Animating Rotation with Quaternion Curves.” SIGGRAPH Computer Graphics, 19(3), 245–254.
  • Kuipers, J. B. (1999). Quaternions and Rotation Sequences. Princeton University Press.
  • Sola, J. (2017). “Quaternion Kinematics for the Error-State Kalman Filter.” arXiv:1711.02508.
  • Diebel, J. (2006). “Representing Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors.” Stanford University Technical Report.
  • Hanson, A. J. (2006). Visualizing Quaternions. Morgan Kaufmann.

version: 1.0