ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION560 / 1500

두 quaternion의 내적이 음수일 때 왜 한쪽 부호를 뒤집어 보간하나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

q와 -q는 같은 3차원 회전이므로 내적이 음수라는 이유로 두 자세가 반대라고 해석하면 안 됩니다. SLERP 전에는 단위·finite 여부를 확인하고 d=clamp(dot(q0,q1),-1,1)를 계산합니다. d<0이면 q1의 모든 성분을 뒤집어 같은 회전의 다른 표현을 선택합니다. 그러면 4차원 단위 구면에서 두 endpoint를 잇는 두 호 중 짧은 호를 사용합니다. q0=(1,0,0,0), q1=(-1,0,0,0)은 둘 다 항등이므로 보정 없이 보간해서는 안 됩니다.

부호 변경은 회전 반전이 아니라 표현 변경입니다. 포탑의 720도 회전처럼 긴 경로가 의도라면 endpoint만으로 turn count를 복원할 수 없으므로 누적각이나 방향 flag를 저장해야 합니다. 상대 회전이 정확히 180도이면 동등한 두 회전 방향 중 하나를 결정적으로 선택하고, 이 처리를 Euler unwrap 문제와 혼동하지 않습니다.

실무에서는 sign correction 뒤에도 d를 다시 clamp하고 theta=acos(d)의 입력 범위를 보장합니다. 두 endpoint가 180도 근처면 어느 짧은 경로도 수치상 동등하지 않을 수 있으므로 이전 frame의 방향이나 애니메이션 metadata를 tie-breaker로 사용합니다. 따라서 “음수면 뒤집는다”는 한 줄은 정상적인 짧은 호 정책의 일부일 뿐, 회전 의도 저장을 대신하지 않습니다.

구현에서 d가 음수인 횟수와 보정 전후의 상대각을 기록하면 keyframe 데이터가 불안정한지 알 수 있습니다. 단순히 부호를 뒤집는 코드보다 “보정한 표현을 다음 key와 비교할지”까지 정해야 프레임마다 sign이 다시 바뀌는 현상을 막을 수 있습니다.

인접 key를 누적 정렬하면 quaternion 표현과 tangent 계산이 일관됩니다. 구간별 SLERP의 물리적 자세는 q와 -q가 같아 연속일 수 있지만, 그 사실만으로 SQUAD control과 도함수의 연속성까지 보장되지는 않습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • q와 -q가 같은 회전을 나타내며 부호 변경이 회전 반전이 아님을 설명합니다.
  • 단위 입력과 내적 부호 보정 후 짧은 호를 선택합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 반대 부호의 항등 quaternion을 서로 반대 자세로 해석합니다.
  • 두 끝점만으로 720도 회전 의도를 복원할 수 있다고 합니다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 정확히 180도인 상대 회전의 두 동등 경로 중 하나를 어떻게 고정할까요?
  • 회전 횟수를 보존해야 하는 애니메이션은 어떤 추가 정보를 저장하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

← 전체 질문 보기