Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

veces, *

Multiplicación de cuaterniones

Desde R2019b

Sintaxis

Descripción

ejemplo

quatC = A*B implementa la multiplicación de cuaterniones si A o B es un cuaternión. O A o B debe ser un escalar.

Puedes usar la multiplicación de cuaterniones para componer operadores de rotación:

  • Para componer una secuencia de rotaciones de cuadros, multiplique los cuaterniones en el orden de la secuencia de rotaciones deseada. Por ejemplo, para aplicar un cuaternión p seguido de un cuaternión q , multiplique en el orden pq. El operador de rotación se convierte en (pq)v(pq), donde v representa el objeto a rotar especificado en forma de cuaternión. * representa la conjugación.

  • Para componer una secuencia de rotaciones de puntos, multiplique los cuaterniones en el orden inverso a la secuencia de rotaciones deseada. Por ejemplo, para aplicar un cuaternión p seguido de un cuaternión q , multiplique en orden inverso, qp. El operador de rotación se convierte en (qp)v(qp).

Ejemplos

contraer todo

Cree un vector columna de 4 por 1, A, y un escalar, b. Multiplica A por b.

A = quaternion(randn(4,4))
A = 4x1 quaternion array
      0.53767 +  0.31877i +   3.5784j +   0.7254k
       1.8339 -   1.3077i +   2.7694j - 0.063055k
      -2.2588 -  0.43359i -   1.3499j +  0.71474k
      0.86217 +  0.34262i +   3.0349j -  0.20497k

b = quaternion(randn(1,4))
b = quaternion
    -0.12414 +  1.4897i +   1.409j +  1.4172k

C = A*b
C = 4x1 quaternion array
      -6.6117 +   4.8105i +  0.94224j -   4.2097k
      -2.0925 +   6.9079i +   3.9995j -   3.3614k
       1.8155 -   6.2313i -    1.336j -     1.89k
      -4.6033 +   5.8317i + 0.047161j -    2.791k

Argumentos de entrada

contraer todo

Entrada para multiplicar, especificada como un objeto quaternion , un arreglo de objetos quaternion de cualquier dimensionalidad, un escalar real o un arreglo de números reales de cualquier dimensionalidad. Los valores numéricos deben ser del tipo de datos single o double.

Si B es no escalar, entonces A debe ser escalar.

Entrada para multiplicar, especificada como un objeto quaternion , un arreglo de objetos quaternion de cualquier dimensionalidad, un escalar real o un arreglo de números reales de cualquier dimensionalidad. Los valores numéricos deben ser del tipo de datos single o double.

Si A es no escalar, entonces B debe ser escalar.

Argumentos de salida

contraer todo

Producto Quaternion, devuelto como un objeto quaternion o un arreglo de objetos quaternion .

Algoritmos

contraer todo

Multiplicación de cuaterniones por un escalar real

Dado un cuaternión

q=aq+bqi+cqj+dqk,

el producto de q y un escalar real β es

βq=βaq+βbqi+βcqj+βdqk

Multiplicación de cuaterniones por un escalar de cuaterniones

La definición de los elementos básicos de los cuaterniones,

i2=j2=k2=ijk=-1,

se puede ampliar para completar una tabla que resuma la multiplicación de elementos básicos de cuaterniones:

 1"i"jk
11ijk
"i"i-1k−j
jj−k-1i
kkj−yo-1

Al leer la tabla, se leen primero las filas, por ejemplo: ij = k y ji = −k.

Dados dos cuaterniones, q=aq+bqi+cqj+dqk, y p=ap+bpi+cpj+dpk, la multiplicación se puede expandir como:

z=pq=(ap+bpi+cpj+dpk)(aq+bqi+cqj+dqk)=apaq+apbqi+apcqj+apdqk+bpaqi+bpbqi2+bpcqij+bpdqik+cpaqj+cpbqji+cpcqj2+cpdqjk+dpaqk+dpbqki+dpcqkj+dpdqk2

Puedes simplificar la ecuación usando la tabla de multiplicar de cuaterniones:

z=pq=apaq+apbqi+apcqj+apdqk+bpaqibpbq+bpcqkbpdqj+cpaqjcpbqkcpcq+cpdqi+dpaqk+dpbqjdpcqidpdq

Referencias

[1] Kuipers, Jack B. Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace, and Virtual Reality. Princeton, NJ: Princeton University Press, 2007.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2019b

Consulte también

Funciones

Objetos