secundaria - Operaciones de suma, resta y división de Quaternions en modelos 3D
suma resta multiplicacion y division de fracciones (1)
Acabo de profundizar un poco más en el uso de los cuaterniones en la programación de juegos en 3D (sí, sé sobre matrices y están bien, pero siempre tenemos que aprender algunas cosas nuevas), así que podemos rotar un objeto como este Pout = q*Pin*conjug(q)
, donde están q es cuaternión, Pin es un objeto de (digamos que estamos usando algún marco, donde esta clase está definida para nosotros) la clase conjug(q)
, conjug(q)
es el cuaternión q después de su conjugar y, finalmente, Pout
es el nuevo objeto de Vector3, que obtuvimos después de la rotación del objeto inicial de Vector3 Pin
por un ángulo alfa (o theta, lo que quieras). Además, sé que hay una manera de combinar rotaciones, como por q_final = q2*q1
: q_final = q2*q1
(esto representa la rotación por alfa1 y luego por los ángulos alfa2). Y, finalmente, el producto de punto representa el ángulo entre 2 cuaterniones en, digamos, esfera. Esto está claro para mí. Mi pregunta se referirá a cosas como división, suma y resta.
Mi pregunta es : ¿podría alguien decirme, por favor, cuáles son (representación, suma, restar -operaciones en cuaterniones) que representan en una programación en 3D? ¿Cómo afectarán en el modelo 3D?
Gracias de antemano por sus respuestas.
ps Si usted ( DarenW, bensiu, Dharmendra, Uwe Keim, Jennis ) no puede entender esta pregunta, por favor, abandone este tema. Alguien puede tener una respuesta. Gracias.
Como sabe, los cuaterniones son identificables con matrices reales 4x4. La multiplicación del cuaternión, la multiplicación escalar y la adición se conserva mediante esta identificación (ver http://en.wikipedia.org/wiki/Quaternion#Matrix_representations ). Entonces, convertir dos cuaterniones a matrices 4x4, sumarlos y convertirlos de nuevo es lo mismo que simplemente sumarlos. Lo mismo es cierto para la multiplicación.
La división de cuaternión A por cuaternión B no es más que multiplicar A por el inverso multiplicativo de B. Esto es equivalente a la forma de matriz de A multiplicada por el inverso de la forma de matriz de B.
Tenga en cuenta que las rotaciones de cuerpo rígido (sin cizalladura o escala) están representadas por cuaterniones de longitud de unidad . Entonces puede acumular rotaciones multiplicando cuarterios de unidades. La adición en este caso no es tan útil.
Finalmente, la razón principal por la que usamos quaterions en gráficos es en la interpolación de fotogramas clave (p. Ej., Eberly 1999 ). Es decir, si conocemos las rotaciones deseadas en k posiciones, podemos interpolar los quateriones, por ejemplo, con una spline, lo que da como resultado una curva con valor de cuaternión. Cada valor C (t) es una unidad cuaternión, por lo que representa una rotación intermedia. La interpolación de fotogramas clave es más difícil con matrices homogéneas porque no todas las matrices 4x4 representan transformaciones homogéneas: el proceso de interpolación puede agregar escalado, corte, etc.