Autor Tema: [UNITY] Cuaterniones vs Euler  (Leído 2224 veces)

Curro

  • Socio
  • New Jammer
  • *
  • Mensajes: 34
  • Molas: 16
[UNITY] Cuaterniones vs Euler
« en: 22 de Junio de 2015, 03:00:41 pm »
Muchos reniegan de los Cuaterniones por  estar lejos de la comprensión humana, otros son felices usando rotaciones mediante ángulos Euler sin saber lo que se les viene encima... aprovecho para comentar un poco por qué se suelen usar.

Básicamente, dejando de lado toda la matemática detrás de los Cuaterniones (si alguien lo quiere explicar bienvenido sea), yo los prefiero porque además de que representan un movimiento de rotación relativa (con lo que se pueden multiplicar por ejemplo para encadenar rotaciones), evitan un gran problema que existe al usar rotaciones con ángulos Euler, que se llama Gimbal Lock.

Aquí tenéis un vídeo que lo explica de manera muy visual y sencilla:


RicoAlbe

  • Socio
  • Super Jammer
  • ***
  • Mensajes: 221
  • Molas: 40
Re:Cuaterniones vs Euler
« Respuesta #1 en: 22 de Junio de 2015, 07:40:48 pm »
Hacedle caso a este señor, los ángulos de euler dan problemas al hacer las cosas. Claro que también permiten hacer las cosas al ser perfectamente entendibles, al contrario que los cuaterniones, que no hay manera de entenderlos. Al menos hasta que alguien aparezca por aquí y nos ilumine a todos.

DavidRico

  • Socio
  • New Jammer
  • *
  • Mensajes: 38
  • Molas: 9
    • Rodaja
Re:Cuaterniones vs Euler
« Respuesta #2 en: 22 de Junio de 2015, 08:45:03 pm »
El mayor problema de los cuaterniones es que, aunque sean mejores, son más "difíciles" de entender, sobre todo cuando la documentación de Unity (por poner un ejemplo) te dice que "esto es complicado y mejor que no lo toques". De hecho, yo sería feliz si el maldito Unity permitiera poder hacerlo todo con cuaterniones o todo con ángulos de Euler, en vez de la estúpida amalgama que hay ahora mismo, en que estás continuamente convirtiendo cuaterniones a Euler y vuelta a cuaterniones...  >:(

JaviCepa

  • Socio
  • Mega Jammer
  • ****
  • Mensajes: 433
  • Molas: 45
    • @JaviCepa
Re:Cuaterniones vs Euler
« Respuesta #3 en: 22 de Junio de 2015, 09:40:17 pm »
jajajaj totalmente de acuerdo, lo de la documentación es de coña...

Y más aún cuando los cuaterniones que usan son "los de la casa", para mi los cuaterniones han sido matrices 4x4 de toda la vida y ellos te plantan un vector de 4x1 y te dicen "es demasiado complicado, mejor preguntale a Euler".

Mi consejo: ángulos de Euler para definir posiciones absolutas y cuaterniones (o rotaciones relativas en ángulos de Euler) para interpolar.

jesusj

  • Socio
  • New Jammer
  • *
  • Mensajes: 12
  • Molas: 4
Re:Cuaterniones vs Euler
« Respuesta #4 en: 29 de Junio de 2015, 07:52:27 pm »
En realidad el problema que tienen los Cuaterniones es un problema de abstracción. Me explico.

Los cuaterniones como bien dice Javi tienen una representación matricial de 4x4, pero es un poco farragoso trabajar con tantoelemento. La otra forma de representarse es mediante un "falso" vector de 4 elementos (digo lo de "falso" porque tiene 4 componentes como un Vector4 pero sus operaciones internas no cumplen las mismas propiedades ni  están definidas de la misma manera que en los vectores).

En la representación vectorial, con los tres primeros elementos del cuaternión lo que estamos diciendo es cuáles son las coordenadas del vector con respecto al que queremos hacer la rotación. Con el último, si queremos hacer una rotación de A radianes lo que debemos introducir es el cos(A/2).
De este modo si yo quiero rotar pi radianes hacia la izquierda con respecto al eje X lo que le diré sera (1, 0, 0, cos(pi/2)). Si quiero hacer lo mismo hacia la derecha diré (-1, 0, 0, cos(pi/2)) ya que cos(A)=cos(2pi-A)=cos(-A), así que tenemos que decirle al cuaternión que queremos girar para el otro lado dándole la vuelta al vector.

Por esto decía que es un problema de abstracción, tienes que obtener primero cuál es el vector con respecto al que quieres hacer tu rotación.