Main Content

mtimes、*

四元数の乗算

R2019b 以降

説明

quatC = A*B は、A または B のいずれかが四元数である場合の四元数の乗算を実装します。A または B のいずれかはスカラーでなければなりません。

四元数の乗算を使用して回転演算子を構成できます。

  • 座標系の回転のシーケンスを構成するには、目的の回転シーケンスの順序で四元数を乗算します。たとえば、p 四元数の後に q 四元数を適用するには、pq の順序で乗算します。回転演算子は (pq)v(pq) になります。ここで、v は回転するオブジェクトであり、四元数形式で指定します。* は共役を表します。

  • 点の回転のシーケンスを構成するには、目的の回転シーケンスと逆の順序で四元数を乗算します。たとえば、p 四元数の後に q 四元数を適用するには、逆の順序 qp で乗算します。回転演算子は (qp)v(qp) になります。

すべて折りたたむ

4 行 1 列の列ベクトル A とスカラー b を作成します。Ab の乗算を行います。

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

入力引数

すべて折りたたむ

乗算する入力。quaternion オブジェクト、任意の次元の quaternion オブジェクトの配列、実数スカラー、または任意の次元の実数の配列として指定します。数値のデータ型は single または double でなければなりません。

B が非スカラーの場合、A はスカラーでなければなりません。

乗算する入力。quaternion オブジェクト、任意の次元の quaternion オブジェクトの配列、実数スカラー、または任意の次元の実数の配列として指定します。数値のデータ型は single または double でなければなりません。

A が非スカラーの場合、B はスカラーでなければなりません。

出力引数

すべて折りたたむ

四元数の積。quaternion オブジェクト、または quaternion オブジェクトの配列として返されます。

アルゴリズム

すべて折りたたむ

四元数の実数スカラーによる乗算

次の四元数について考えます。

q=aq+bqi+cqj+dqk,

q と実数スカラー β の積は次のようになります。

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

四元数の Quaternion スカラーによる乗算

四元数の基本要素の定義は次のとおりです。

i2=j2=k2=ijk=-1,

これを展開すると、四元数の基本要素の乗算をまとめた表を次のように埋めることができます。

 1ijk
11ijk
ii-1k−j
jj−k-1i
kkj−i-1

この表を読むときは、ij = k や ji = −k のように行を先に読みます。

2 つの四元数 q=aq+bqi+cqj+dqk,p=ap+bpi+cpj+dpk が与えられた場合、乗算を次のように展開できます。

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

この方程式は、四元数の乗算の表を使用して次のように単純化できます。

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

参照

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

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2019b で導入

参考

関数

オブジェクト