dist
角距離 (ラジアン)
説明
は、2 つの四元数 distance
= dist(quatA,quatB
)quatA
と quatB
間の角距離 (ラジアン) を返します。
例
四元数距離の計算
単一の quaternion と quaternion のベクトルの各要素間の四元数距離を計算します。オイラー角を使用して quaternion を定義します。
q = quaternion([0,0,0],"eulerd","ZYX","frame")
q = quaternion
1 + 0i + 0j + 0k
qArray = quaternion([0,45,0;0,90,0;0,180,0;0,-90,0;0,-45,0],"eulerd","ZYX","frame")
qArray = 5x1 quaternion array
0.92388 + 0i + 0.38268j + 0k
0.70711 + 0i + 0.70711j + 0k
6.1232e-17 + 0i + 1j + 0k
0.70711 + 0i - 0.70711j + 0k
0.92388 + 0i - 0.38268j + 0k
quaternionDistance = rad2deg(dist(q,qArray))
quaternionDistance = 5×1
45.0000
90.0000
180.0000
90.0000
45.0000
dist
のいずれの引数もベクトルである場合、対応する要素間の四元数距離が計算されます。2 つの quaternion ベクトル間の四元数距離を計算します。
angles1 = [30,0,15; ... 30,5,15; ... 30,10,15; ... 30,15,15]; angles2 = [30,6,15; ... 31,11,15; ... 30,16,14; ... 30.5,21,15.5]; qVector1 = quaternion(angles1,"eulerd","ZYX","frame"); qVector2 = quaternion(angles2,"eulerd","ZYX","frame"); rad2deg(dist(qVector1,qVector2))
ans = 4×1
6.0000
6.0827
6.0827
6.0287
なお、四元数はその負数と同じ回転を表します。四元数およびその負数を計算します。
qPositive = quaternion([30,45,-60],"eulerd","ZYX","frame")
qPositive = quaternion
0.72332 - 0.53198i + 0.20056j + 0.3919k
qNegative = -qPositive
qNegative = quaternion
-0.72332 + 0.53198i - 0.20056j - 0.3919k
四元数とその負数間の距離を求めます。
dist(qPositive,qNegative)
ans = 0
四元数の成分は、その負数の成分と異なるように見えますが、いずれの表現も同じ回転を表しています。
入力引数
quatA,quatB
— 距離を計算する四元数
quaternion
オブジェクト | quaternion
オブジェクトの配列
距離を計算する四元数。コンマ区切りの quaternion
オブジェクトまたは任意の次元の quaternion
オブジェクトの配列として指定します。quatA
と quatB
のサイズは次のように互換性がなければなりません。
size(quatA) == size(quatB)
またはnumel(quatA) == 1
またはnumel(quatB) == 1
または[Adim1,…,AdimN] = size(quatA)
かつ[Bdim1,…,BdimN] = size(quatB)
の場合に、fori = 1:N
ループでAdimi==Bdimi
またはAdim==1
またはBdim==1
。四元数引数のいずれかに 1 つの四元数のみが含まれていた場合、この関数はその四元数ともう一方の引数内のすべての四元数の距離を返します。
出力引数
distance
— 角距離 (ラジアン)
数値スカラー | 数値配列
角距離 (ラジアン)。数値スカラーまたは数値配列として返されます。次元は size(quatA)
と size(quatB)
の和集合の最大です。
データ型: single
| double
アルゴリズム
関数 dist
は、2 つの四元数間の角距離を返します。
四元数は、回転の軸 (ub,uc,ud) および角度 θq によって として定義できます。
という形式の四元数が与えられた場合 (a は実数部)、角度 q は として解を求めることができます。
2 つの四元数 p と q、および積 について考えます。p が q に近づくにつれ、角度 z は 0 に近づき、z は単位四元数に近づきます。
2 つの四元数間の角距離は、 と表すことができます。
quaternion
データ型構文を使用すると、角距離は次のように計算されます。
angularDistance = 2*acos(abs(parts(p*conj(q))));
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)