Hola, estoy tratando de averiguar cómo calcular el inverso de un cuaternión. Un ejemplo de código sería increíble.Calcular Quaternion inversa
Saludos
Hola, estoy tratando de averiguar cómo calcular el inverso de un cuaternión. Un ejemplo de código sería increíble.Calcular Quaternion inversa
Saludos
Ver Wikipedia article para toda la matemática Quaternion.
No sé qué idioma quieres usar, pero intentaré dar algunos consejos en Haskell.
data Quaternion = Q Double Double Double Double deriving (Show, Eq)
En primer lugar, debe implementar la multiplicación y la adición de cuaterniones.
instance Num Quaternion where
(+) = q_plus
(*) = q_mult
--....
q_plus (Q a b c d) (Q a' b' c' d') = Q (a + a') (b + b') (c + c') (d + d')
q_mult (Q a b c d) (Q a' b' c' d') = Q a'' b'' c'' d''
where
a'' = a * a' - b * b' - c * c' - d * d'
b'' = a * b' + b * a' + c * d' - d * c'
c'' = a * c' - b * d' + c * a' + d * b'
d'' = a * d' + b * c' - c * b' + d * a'
Multiplicación con escalar debe hacerse a través de una conversión:
scalar_to_q a = Q a 0 0 0
Definir
i = Q 0 1 0 0
j = Q 0 0 1 0
k = Q 0 0 0 1
luego implementar el conjugado y el módulo:
q_conjugate q = (scalar_to_q (negate .5)) * (q + i * q * i + j * q * j + k * q * k)
q_modulus q = sqrt $ q * (q_conjugate q)
Ahora, la inversa :
q_inverse q = (q_conjugate q) * (scalar_to_q (m * m))
where
m = q_modulus q
Espero que sea útil.
PD: la definición de instancia anterior simplificará un poco las cosas si se completa con éxito. Te dejo completar los huecos.
Gracias. ¡Respuesta impresionante! – user346443
¿Por qué se cierra esta pregunta ?, es una pregunta legítima que pregunta cómo calcular un inverso de un cuaternión. ¿StackOverflow no se está moderando demasiado? – kaalus
Mira el Matrix and Quaternion FAQ. También hay algunas muestras de código.
@TabbyCool ¿Cómo "intentaría" algo? ¿Esperas que literalmente obtenga un bolígrafo y un bloc de notas y redescubra una pieza matemática que la humanidad tardó cientos de años en descifrar? – MaiaVictor