저는 물리학 자이며 프로그래밍을 배우고 있으며 행렬 / 벡터 형식으로 작성하는 대신 회전에 쿼터니언을 사용하는 많은 사람들을 만났습니다.
물리학에서 우리가 쿼터니언을 사용하지 않는 아주 좋은 이유가 있습니다 (때때로 Hamilton / Gibbs / etc에 대해 이야기하는 기괴한 이야기에도 불구하고). 물리학은 우리의 설명이 좋은 분석적 행동을 가져야합니다 (정확하게 정의 된 의미가 있지만 일반적인 인트로 수업에서 가르치는 것보다 훨씬 더 기술적 인 방식이므로 자세히 설명하지 않겠습니다). 쿼터니언에는 이처럼 좋은 동작이 없기 때문에 유용하지 않으며 벡터 / 행렬도 그렇기 때문에 사용합니다.
그러나 해석 적 구조를 사용하지 않는 고정 회전 및 설명으로 제한되어 3D 회전은 어느 쪽이든 (또는 몇 가지 다른 방법) 동등하게 설명 될 수 있습니다.
일반적으로 X 2 = X ' 2 라는 제약 조건에 따라 점 X = (x, y, z)를 새로운 점 X'= (x ', y', z ')로 매핑하기를 원합니다 . 그리고 이것을하는 많은 일들이 있습니다.
순진한 방법은 이것이 정의하고 삼각법을 사용하는 삼각형을 그리거나 점 (x, y, z)과 벡터 (x, y, z)와 함수 f (X) = X '사이의 동형을 사용하는 것입니다. 행렬 MX = X ', 또는 쿼터니언을 사용하거나 다른 방법 (x, y, z)을 사용하여 새 벡터를 따라 이전 벡터의 구성 요소를 투영합니다 . T. (a, b, c) (x', y ', z ') 등
수학의 관점에서 이러한 설명은이 설정에서 모두 동일합니다 (정리로서). 그것들은 모두 동일한 수의 자유도, 동일한 수의 제약 조건 등을 갖습니다.
그렇다면 쿼터니언이 벡터보다 선호되는 이유는 무엇입니까?
내가 보는 일반적인 이유는 짐벌 잠금이 없거나 숫자 문제입니다.
no gimbal lock 인수는 오일러 각도의 문제 일 뿐이므로 이상하게 보입니다. 또한 좌표 문제 일뿐입니다 (극좌표에서 r = 0의 특이점 (Jacobian 느슨한 순위)과 동일). 이는 로컬 문제 일 뿐이며 좌표를 전환하고 축 퇴성에서 회전하여 해결할 수 있음을 의미합니다. 또는 두 개의 겹치는 좌표계를 사용합니다.
이 두 가지 (및 대안)가 어떻게 구현되는지 자세히 알지 못하기 때문에 수치 문제에 대해서는 확신이 없습니다. 쿼터니언을 다시 정규화하는 것이 회전 행렬에 대해 수행하는 것보다 쉽다는 것을 읽었지만 이것은 일반 행렬에만 해당됩니다. 회전에는이를 사소하게 만드는 추가 제약 조건이 있습니다 (쿼터니언 정의에 내장 됨) (사실 동일한 자유도를 갖기 때문에 이것은 참이어야합니다).
그렇다면 벡터 또는 다른 대안보다 쿼터니언을 사용하는 이유는 무엇입니까?