Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

parfois, *

Multiplication des quaternions

Depuis R2019b

Description

exemple

quatC = A*B implémente la multiplication de quaternions si A ou B est un quaternion. Soit A ou B doit être un scalaire.

Vous pouvez utiliser la multiplication par quaternions pour composer des opérateurs de rotation :

  • Pour composer une séquence de rotations de trame, multipliez les quaternions dans l'ordre de la séquence de rotations souhaitée. Par exemple, pour appliquer un quaternion p suivi d'un quaternion q , multipliez dans l'ordre pq. L'opérateur de rotation devient (pq)v(pq), où v représente l'objet à faire pivoter spécifié sous forme de quaternion. * représente la conjugaison.

  • Pour composer une séquence de rotations de points, multipliez les quaternions dans l'ordre inverse de la séquence de rotations souhaitée. Par exemple, pour appliquer un quaternion p suivi d'un quaternion q , multipliez dans l'ordre inverse, qp. L'opérateur de rotation devient (qp)v(qp).

Exemples

réduire tout

Créez un vecteur colonne 4 par 1, A, et un scalaire, b. Multipliez A par 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

Arguments d'entrée

réduire tout

Entrée à multiplier, spécifiée comme un objet quaternion , un tableau d'objets quaternion de n'importe quelle dimensionnalité, un scalaire réel ou un tableau de nombres réels de n'importe quelle dimensionnalité. Les valeurs numériques doivent être du type de données single ou double.

Si B est non scalaire, alors A doit être scalaire.

Entrée à multiplier, spécifiée comme un objet quaternion , un tableau d'objets quaternion de n'importe quelle dimensionnalité, un scalaire réel ou un tableau de nombres réels de n'importe quelle dimensionnalité. Les valeurs numériques doivent être du type de données single ou double.

Si A est non scalaire, alors B doit être scalaire.

Arguments de sortie

réduire tout

Produit Quaternion, renvoyé sous la forme d'un objet quaternion ou d'un tableau d'objets quaternion .

Algorithmes

réduire tout

Multiplication de quaternions par un scalaire réel

Étant donné un quaternion

q=aq+bqi+cqj+dqk,

le produit de q et un β réel scalaire est

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

Multiplication de quaternions par un scalaire de quaternions

La définition des éléments de base des quaternions,

i2=j2=k2=ijk=-1,

peut être développé pour remplir un tableau résumant la multiplication des éléments de base des quaternions :

 "1""je"jk
"1"1jejk
"je"je−1k−j
jj−k−1je
kkj−je−1

Lors de la lecture du tableau, les lignes sont lues en premier, par exemple : ij = k et ji = −k.

Étant donné deux quaternions, q=aq+bqi+cqj+dqk, et p=ap+bpi+cpj+dpk, la multiplication peut être développée comme suit :

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

Vous pouvez simplifier l'équation en utilisant la table de multiplication des quaternions :

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

Références

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

Capacités étendues

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2019b