Main Content

rotvec

四元数の回転ベクトルへの変換 (ラジアン単位)

説明

rotationVector = rotvec(quat) は、quaternion 配列 quat を等価のラジアン単位の回転ベクトルからなる N 行 3 列の行列に変換します。quat の要素は変換前に正規化されます。

すべて折りたたむ

ランダムな quaternion スカラーをラジアン単位の回転ベクトルに変換します。

quat = quaternion(randn(1,4));
rotvec(quat)
ans = 1×3

    1.6866   -2.0774    0.7929

入力引数

すべて折りたたむ

変換する四元数。quaternion オブジェクト、または任意の次元の quaternion オブジェクトの配列として指定します。

出力引数

すべて折りたたむ

回転ベクトル (ラジアン単位)。回転ベクトルの N 行 3 列の数値行列として返されます。ここで、Nquat 引数内の四元数の数です。

各行は回転ベクトルの [X Y Z] 角度を表します。rotationVectori 番目の行は要素 quat(i) に対応します。

回転ベクトルのデータ型は、quat の基となるデータ型と同じです。

データ型: single | double

アルゴリズム

3 次元での回転はすべて、3 要素の回転軸と回転角度の合計 4 要素で表現できます。回転軸が単位長さになるように制約されていれば、回転角度をベクトル要素に分散させることで表現を 3 要素に縮小できます。

四元数は軸角度形式で表現できることを思い出してください。

q=cos(θ2)+sin(θ2)(xi+yj+zk),

ここで、θ は回転角度であり、[x,y,z] は回転軸を表します。

次の形式の四元数を考えます。

q=a+bi+cj+dk,

回転角度は四元数の軸角度形式を使用して求めることができます。

θ=2cos1(a).

正規化された軸であると仮定すると、θbc、および d の各部分に分散させることで、情報を失うことなく四元数を回転ベクトルに書き換えることができます。q の回転ベクトル表現は次のようになります。

qrv=θsin(θ2)[b,c,d].

拡張機能

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

バージョン履歴

R2019b で導入

参考

関数

オブジェクト