사람들이 왜 쿼터니언을 사용합니까?


15

나는 그것들을 한동안 블랙 박스로 사용 해왔고, 나는 단지 수학에 대해 배우고 있지만이 질문에 대한 확실한 대답을 원합니다.

지금까지 개인적으로 만난 유일한 이점은 두 각도 사이에서 SLERP하는 기능입니다.


SLERP는 두 각도 사이의 보간이 아니라 매트릭스를 사용하여 쉽게 수행 할 수 있습니다. 행렬로 할 때 훨씬 더 복잡한 두 개의 임의의 방향 사이에서 보간 할 수 있습니다.
Calmarius

답변:


23

쿼터니언은 몇 가지 문제를 우아하게 해결합니다.

  • 축 각도 표현만큼 컴팩트합니다 (4 개의 스칼라 값)
  • 그것들은 매트릭스 표현으로 쉽게 변환되거나 매트릭스 표현에서 변환됩니다
  • 특수 케이싱없이 모든 각도에서 보간 작업
  • 그들은 짐벌 잠금을 보여주지 않습니다.

다른 표현으로 이러한 문제를 해결할 수 있지만 쿼터니언은 알고리즘 단순성과 성능에 적합합니다.


1
이것은 내가 찾던 것입니다!
SirYakalot

@Kai Interpolation works from any start to end angle without special casing, 실제로는 대구 의 같은 반구에 있지 않을 때 실제로 특별한 경우가 있습니다. 항상 목표에 보간하는 두 가지 방향이 있으므로 선택해야 할 것이기 때문에 실제로 고려해야 할 특별한 경우입니다. 바로 하나
Maik Semder

2
@ 카이 They never exhibit gimbal lock-그건 사실이 아닙니다. 그들은 단지 곱할 수 있습니다 q(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20). 사실은 짐벌 잠금을 피하기 위해 사용될 수 있지만 행렬, 축 각도 및 기타도 마찬가지입니다. 따라서 쿼터니언의 고유 한 속성이 아닙니다. 실제로 대부분의 회전 표현을 사용하지만 오일러 각도로 그렇게 할 수 있습니다. 유일한 진정한 여기 메시지는 "오일러 engles는 짐벌 락 고통"하지만 다른 회전 표현뿐만 아니라 사원 수 많은 의해 avaoided 할 수있다 할 수있다.
Maik Semder

쿼터니언의 성능은 모든 경우에 일반적으로 더 좋지 않습니다. 예를 들어 쿼터니언을 사용하는 것보다 3x3 행렬을 사용하여 벡터를 회전시키는 것이 더 빠릅니다. 여기 에 관한 흥미로운 논문이 있습니다.
Maik Semder

3

언급 한 SLERP 사용법은보다 일반적인 쿼터니언 속성의 특정한 경우입니다. 서로 다른 회전 값 사이를 부드럽게 보간 할 수 있습니다.

오일러 각도의 회전 값을 보간 할 때 이상한 움직임이 발생하며 축 각도 회전 값을 동일하게 보간 할 수있는 방법은 없습니다 (동일한 축 주위의 두 개의 다른 각도는 제외).


+1. 이러한 각도 축 표현을 쿼트로 변환 한 다음 SLERP를 사용하여 (w1, alpha1)과 (w2, alpha2) 사이를 보간 할 수 있습니다. 물론 Bezier / de Casteljau 구성표 / 스플라인 구성표를 통해 이러한 작업을 수행 할 수 있으며 이러한 방식으로 주요 쿼터니언의 "다각형 / 세트"를 사용하여 복잡한 회전을 수행 할 수 있습니다. SLERP 및 multiSLERP 또는 그 변형 (NLERP, SQUAD)이 측지선 / 가장 짧은 회전 경로에있는 중간 회전 축 / 각 쌍을 갖기 때문에 이것은 쿼터니언이 다른 표현보다 자연스럽게하는 유일한 방법 일 것입니다. 명성.
teodron
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.