Por que as pessoas usam quaternions?


15

Eu os uso como caixa preta há um tempo, estou apenas aprendendo sobre matemática, mas gostaria de algumas respostas definitivas para essa pergunta.

Até agora, o único benefício que me deparei pessoalmente é a capacidade de SLERP entre dois ângulos - para obter o mesmo efeito com um vetor em que você precisa de um trabalho bastante feio (vincular intrinsecamente 0 e 2PI).


O SLERP não é apenas a interpolação entre dois ângulos: também pode ser feito facilmente com a matriz. Ele pode interpolar entre duas orientações arbitrárias que são muito mais complexas quando feitas com matrizes.
Calmarius

Respostas:


23

Os quaternions resolvem alguns problemas com elegância:

  • Eles são tão compactos quanto as representações de eixo-ângulo (4 valores escalares)
  • Eles são facilmente convertidos para e de representações matriciais
  • A interpolação funciona de qualquer ângulo do início ao fim, sem revestimento especial
  • Eles nunca exibem bloqueio de cardan

Você pode contornar esses problemas com outras representações, mas os quaternions são uma boa opção para sua simplicidade e desempenho algorítmico.


11
isto é EXATAMENTE o que eu estava procurando!
8269 SirYakalot

@Kai Interpolation works from any start to end angle without special casing , existe realmente um caso especial, quando eles não estão no mesmo hemisfério da hiperesfera, esse é realmente um caso especial que você deve considerar, já que sempre existem duas direções para interpolar para o alvo e você deseja escolher o
caminho

2
@ Kai They never exhibit gimbal lock- isso não é bem verdade. Eles podem, basta multiplicar q(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20). É verdade que eles podem ser usados ​​para evitar o bloqueio do cardan, mas matrizes, ângulos de eixo e outros também podem. Portanto, essa não é uma propriedade única dos quaternions. De fato, você pode fazer isso com a maioria das representações de rotação, mas com ângulos de euler. A única mensagem verdadeira aqui pode ser "Euler engles sofre de bloqueio do cardan", mas pode ser evitado por muitas outras representações de rotação, não apenas quaterniões.
Maik Semder

O desempenho de um quaternário também não é geralmente melhor em todos os casos, por exemplo, é mais rápido girar um vetor usando uma matriz 3x3 do que usando um quaternion. Aqui está um artigo interessante sobre isso.
Maik Semder

3

O uso do SLERP mencionado é um caso específico de um atributo mais geral de quaternions: você pode interpolar suavemente entre diferentes valores de rotação.

Ao interpolar os valores de rotação dos ângulos de Euler, você obtém movimentos estranhos, e simplesmente não há maneira lógica de interpolar os valores das rotações do eixo-ângulo (bem, além de dois ângulos diferentes em torno do mesmo eixo).


+1. Pode-se interpolar entre (w1, alfa1) e (w2, alfa2) convertendo essas representações de eixo angular em quats e, em seguida, empregando SLERP. Obviamente, pode-se fazer isso através de um esquema de spline / spline de Bezier / de Casteljau e usar um "polígono / conjunto" de quaterniões-chave dessa maneira e criar uma rotação complicada. Talvez essa seja a única coisa que os quaternions fazem mais naturalmente do que outras representações, já que SLERP e multiSLERP ou suas variações (NLERP, SQUAD) criam pares de eixos / ângulos de rotação intermediários que se encontram em um caminho de rotação geodésico / mais curto. Parabéns.
Teodron #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.