Eu sou um físico e tenho aprendido um pouco de programação, e encontrei muitas pessoas usando quatérnios para rotações em vez de escrever coisas na forma de matriz / vetor.
Na física, há boas razões para não usarmos quatérnios (apesar da história bizarra que ocasionalmente é contada sobre Hamilton / Gibbs / etc). A física exige que nossas descrições tenham um bom comportamento analítico (isso tem um significado precisamente definido, mas em alguns aspectos bastante técnicos que vão muito além do que é ensinado nas aulas normais de introdução, então não vou entrar em detalhes). Acontece que os quatérnios não têm esse comportamento agradável e, portanto, não são úteis, e os vetores / matrizes têm, então os usamos.
No entanto, restrito a rotações e descrições rígidas que não usam nenhuma estrutura analítica, as rotações 3D podem ser descritas de forma equivalente de qualquer maneira (ou de algumas outras maneiras).
Geralmente, queremos apenas um mapeamento de um ponto X = (x, y, z) para um novo ponto X '= (x', y ', z') sujeito à restrição de que X 2 = X ' 2 . E há muitas coisas que fazem isso.
A maneira ingênua é apenas desenhar os triângulos que isso define e usar trigonometria, ou usar o isomorfismo entre um ponto (x, y, z) e um vetor (x, y, z) e a função f (X) = X 'e uma matriz MX = X ', ou usando quatérnions, ou projetando componentes do vetor antigo ao longo do novo usando algum outro método (x, y, z) T. (a, b, c) (x', y ', z '), etc.
Do ponto de vista matemático, essas descrições são todas equivalentes neste cenário (como um teorema). Todos eles têm o mesmo número de graus de liberdade, o mesmo número de restrições, etc.
Então, por que os quatérnios parecem preferir os vetores?
As razões usuais que vejo não são travamento do cardan ou problemas numéricos.
O argumento sem travamento do cardan parece estranho, já que esse é apenas um problema de ângulos de euler. Também é apenas um problema de coordenadas (assim como a singularidade em r = 0 nas coordenadas polares (o Jacobiano perde a classificação)), o que significa que é apenas um problema local, e pode ser resolvido trocando as coordenadas, girando para fora da degeneração, ou usando dois sistemas de coordenadas sobrepostos.
Tenho menos certeza sobre questões numéricas, já que não sei em detalhes como esses dois (e quaisquer alternativas) seriam implementados. Eu li que normalizar novamente um quatérnio é mais fácil do que fazer isso para uma matriz de rotação, mas isso só é verdadeiro para uma matriz geral; uma rotação tem restrições adicionais que trivializam isso (que são construídas na definição de quatérnios) (na verdade, isso tem que ser verdade, pois eles têm o mesmo número de graus de liberdade).
Então, qual é a razão para o uso de quatérnions sobre vetores ou outras alternativas?