10.31 정규화된 선형 보간(NLERP)과 비교
1. NLERP의 개념
정규화된 선형 보간(Normalized Linear Interpolation, NLERP)은 쿼터니언의 선형 결합 후 정규화하여 단위 쿼터니언을 유지하는 보간 방법이다. LERP의 단순함과 SLERP의 단위 노름 보존의 장점을 결합하려는 시도이다.
\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}
2. NLERP의 단계
NLERP는 다음의 두 단계로 구성된다.
- 선형 보간: \mathbf{q}_{\text{lerp}} = (1-t)\mathbf{q}_0 + t\mathbf{q}_1
- 정규화: \mathbf{q}_{\text{nlerp}} = \mathbf{q}_{\text{lerp}}/\lVert\mathbf{q}_{\text{lerp}}\rVert
이는 개념적으로 매우 단순하다.
3. NLERP의 기하학적 해석
3.1 차원 직선의 단위 구면으로의 투영
NLERP는 4차원 공간의 두 점(쿼터니언)을 연결하는 직선 위의 점을 단위 구면 S^3로 투영하는 것이다. 즉, LERP의 결과(단위 구면 안쪽에 있음)를 원점에서 방사형으로 밀어내어 구면에 닿게 한다.
3.2 SLERP와 같은 경로
NLERP의 결과는 SLERP와 같은 경로를 따른다. 즉, S^3 상의 측지선 위의 점들이다. 두 방법의 차이는 매개변수화이다.
- SLERP: t에 비례하여 측지선 위를 이동 (일정한 각속도)
- NLERP: t에 비례하여 LERP 위를 이동한 후 구면으로 투영 (비균일한 각속도)
4. NLERP의 성질
4.1 단위 노름 보존
정의에 의해 결과가 항상 단위 쿼터니언이다.
4.2 끝점 일치
\mathrm{NLERP}(\mathbf{q}_0, \mathbf{q}_1, 0) = \mathbf{q}_0
\mathrm{NLERP}(\mathbf{q}_0, \mathbf{q}_1, 1) = \mathbf{q}_1
4.3 측지선
NLERP의 결과 점들이 S^3 상의 측지선(대원) 위에 있다. SLERP와 같은 경로를 따른다.
4.4 비균일한 각속도
매개변수 t가 균일하게 증가할 때, 각속도가 일정하지 않다. 보간이 끝점 근처에서는 빠르고 중간에서는 느리다(또는 그 반대).
5. SLERP와 NLERP의 비교
5.1 경로의 동일성
SLERP와 NLERP는 S^3 상의 같은 경로를 따른다. 결과 쿼터니언이 같은 측지선 위에 있다.
5.2 매개변수화의 차이
- SLERP: t가 균일하게 증가하면 경로 위의 위치가 일정한 각속도로 진행
- NLERP: t가 균일하게 증가하면 경로 위의 위치가 비균일한 각속도로 진행
5.3 정확도 비교
5.3.1 작은 각도 (\Omega < 10°)
SLERP와 NLERP의 차이가 10^{-4} 이하로 무시할 수 있다. 실용적으로 두 방법이 등가이다.
5.3.2 중간 각도 (\Omega = 30° - 60°)
차이가 점점 커지지만 여전히 작다(10^{-2} 수준). 시각적으로 구분하기 어렵다.
5.3.3 큰 각도 (\Omega > 90°)
차이가 명확해진다. NLERP는 끝점 근처에서 빠르게 진행하고 중간에서 천천히 진행한다. 시각적으로 “스냅” 효과가 나타날 수 있다.
6. 성능 비교
6.1 SLERP의 계산 비용
- 내적 계산: 4 곱셈, 3 덧셈
- \arccos 또는 \mathrm{atan2} (1회)
- \sin 2회 (분자)
- \sin 1회 (분모, \sin\Omega)
- 나눗셈 2회
- 곱셈과 덧셈: 약 8 곱셈, 4 덧셈
총 약 15 곱셈, 7 덧셈, 3-4 삼각 함수
6.2 NLERP의 계산 비용
- 선형 결합: 8 곱셈, 4 덧셈
- 노름 계산: 4 곱셈, 3 덧셈, 1 제곱근
- 나눗셈: 4회
총 약 16 곱셈, 7 덧셈, 1 제곱근, 4 나눗셈
6.3 비교
NLERP가 삼각 함수를 피하므로 일반적으로 더 빠르다. 특히 작은 각도에서는 정확도 차이가 미미하므로 NLERP가 성능 면에서 유리하다.
현대 프로세서에서는 삼각 함수의 비용이 점점 감소하고 있으므로, 성능 차이가 크지 않을 수 있다. 그러나 SIMD 최적화의 가능성을 고려하면 NLERP가 여전히 약간 빠르다.
7. NLERP의 비균일성
NLERP의 비균일성을 수학적으로 분석하자. t에 대한 보간된 쿼터니언의 각도 변화율은
\frac{d\phi}{dt}
이다. 이 값이 t에 따라 변한다.
7.1 작은 각도 극한
\Omega \to 0일 때, NLERP와 SLERP가 동일해져 d\phi/dt = \Omega이 된다 (상수).
7.2 큰 각도 극한
\Omega \to \pi일 때, NLERP의 d\phi/dt가 끝점에서 최대, 중간에서 최소가 된다. 이는 LERP의 경로가 중간에서 가장 멀리 구면에서 벗어나기 때문이다.
7.3 정량적 분석
\Omega = 90°인 경우, NLERP의 각속도가 끝점에서 약 \sqrt{2}배 빠르고 중간에서 약 1/\sqrt{2}배 느리다. 이는 시각적으로 감지될 수 있는 차이이다.
8. NLERP의 구현
8.1 기본 알고리즘
function nlerp(q0, q1, t):
# 부호 보정 (짧은 경로 선택)
if dot(q0, q1) < 0:
q1 = -q1
# 선형 보간
q_lerp = (1 - t) * q0 + t * q1
# 정규화
return q_lerp / norm(q_lerp)
8.2 부호 보정의 중요성
SLERP와 마찬가지로 NLERP에서도 부호 보정이 필수이다. 부호 보정이 없으면 보간이 긴 경로를 따를 수 있다.
8.3 최적화
NLERP는 이미 단순하지만 다음의 최적화가 가능하다.
- 노름의 역수 계산: 1/\lVert\mathbf{q}\rVert를 한 번만 계산
- 빠른 역제곱근: Quake의 유명한 역제곱근 알고리즘 사용 (현대 CPU에서는
rsqrt명령)
9. NLERP의 응용
9.1 실시간 시스템
게임 엔진과 시각화 도구에서 NLERP가 자주 사용된다. 속도와 단위 노름 보존이 결합되어 실용적이다.
9.2 작은 회전 보간
매 프레임마다 작은 회전이 있는 경우(예: 카메라 평활화, 캐릭터 자세 갱신) NLERP가 SLERP와 거의 동등한 품질을 제공한다.
9.3 자세 추정 평활화
자세 추정의 후처리에서 인접 시각의 자세를 NLERP로 평활화할 수 있다.
9.4 모바일 환경
제한된 계산 자원을 가진 모바일 기기에서 NLERP가 선호된다.
9.5 모션 블렌딩
게임에서 캐릭터 애니메이션의 블렌딩에 NLERP가 사용된다. 작은 회전 차이에서 시각적 차이가 없다.
10. NLERP가 부적절한 경우
10.1 정밀한 일정한 각속도가 필요한 경우
매니퓰레이터의 작업 공간 자세 보간 등에서 일정한 각속도가 중요하면 SLERP가 필수이다. 비균일한 각속도는 작업 정밀도를 저하시킨다.
10.2 큰 회전의 단일 보간
한 번에 큰 각도를 보간하는 경우(예: 애니메이션의 키프레임 사이) NLERP의 비균일성이 시각적으로 명확해진다. SLERP가 권장된다.
10.3 우주선 자세 제어
우주선의 자세 제어 등 정밀한 응용에서는 SLERP가 표준이다. NLERP의 근사 오차가 허용되지 않을 수 있다.
11. NLERP의 개선
11.1 가속/감속 함수 적용
NLERP의 비균일성을 완화하기 위해 매개변수 t를 비선형 함수로 변환할 수 있다.
\mathrm{NLERP}(\mathbf{q}_0, \mathbf{q}_1, f(t))
적절한 f(t)를 선택하면 일정한 각속도에 가깝게 만들 수 있다.
11.2 다단계 NLERP
큰 회전을 작은 단계로 나누어 각 단계에서 NLERP를 적용한다. 각 단계가 작으면 비균일성이 거의 없다.
function multi_step_nlerp(q0, q1, t, num_steps):
result = q0
for i in range(1, num_steps + 1):
s = t * i / num_steps
result = nlerp(result, q1, s)
return result
이는 실시간 시스템에서 동적으로 쿼터니언이 변하는 경우에 적합하다.
12. 일반화: 가중 평균
NLERP는 두 쿼터니언의 보간이지만, 여러 쿼터니언의 가중 평균으로 일반화할 수 있다.
\mathbf{q}_{\text{avg}} = \frac{\sum_i w_i\mathbf{q}_i}{\lVert\sum_i w_i\mathbf{q}_i\rVert}
여기서 w_i는 각 쿼터니언의 가중치이다. 이는 자세 추정이나 애니메이션 블렌딩에서 사용된다. 그러나 이 방법은 여러 쿼터니언의 “진정한 평균“은 아니다(고유값 기반 평균이 더 정확).
13. SLERP와 NLERP의 정량적 비교
13.1 경로 길이
SLERP는 측지선 길이를 매개변수 t에 비례하여 분할한다. NLERP는 LERP의 직선 길이를 분할한 후 구면으로 투영한다.
13.2 각속도의 표준 편차
\Omega = 90°에서 NLERP의 각속도 표준 편차는 \Omega/\sqrt{2}의 약 10%이다. 즉, 평균의 10% 정도 변동이 있다.
13.3 시각적 품질
대부분의 시각적 응용에서 \Omega < 60°이면 차이가 거의 느껴지지 않는다. \Omega > 90°에서는 명확해진다.
14. 알고리즘 선택 가이드
14.1 SLERP를 선택해야 하는 경우
- 정밀한 일정한 각속도가 필요
- 큰 회전(\Omega > 90°)의 단일 보간
- 우주선/로봇 제어 등 정밀 응용
- 학술적 분석과 정확성 검증
14.2 NLERP를 선택해야 하는 경우
- 계산 속도가 중요
- 작은 회전의 보간 (매 프레임 갱신 등)
- 모바일이나 제한된 자원 환경
- 시각적 차이가 무시할 수 있는 응용
15. 결론
NLERP는 SLERP보다 단순하고 빠르며, 대부분의 실용적 응용에서 충분한 품질을 제공한다. 특히 작은 회전 보간에서는 두 방법의 차이가 거의 없다. 그러나 정밀한 일정한 각속도가 필요한 경우와 큰 회전의 단일 보간에서는 SLERP가 권장된다. 응용의 요구에 따라 적절한 방법을 선택하는 것이 중요하다.
16. 참고 문헌
- 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.
- Watt, A., & Watt, M. (1992). Advanced Animation and Rendering Techniques. Addison-Wesley.
- Eberly, D. H. (2002). 3D Game Engine Design (2nd ed.). Morgan Kaufmann.
- Lengyel, E. (2011). Mathematics for 3D Game Programming and Computer Graphics (3rd ed.). Course Technology.
version: 1.0