2026/01/02

KVKV-X

クォータニオンとは

クォータニオン(Quaternion)は3次元空間の回転を表現するための数学モデルです。
ロボット制御、ドローン制御、姿勢制御、3Dグラフィックスなどで広く使用されています。 オイラー角ではジンバルロックが発生する場合がありますが、クォータニオンではその問題を回避できます。

クォータニオンの利用例

  • 携帯の中のジャイロで姿勢をリアルタイムで計算
  • ゲームの中の回転はユニティやアンリアルなどのエンジンが計算
  • スペースXのロケットが着陸するときの姿勢制御をリアルタイムで計算
  • ロボット制御
  • 自動運転
  • AR(仮想現実)

関連ページ

一覧

クォータニオン生成 (Quaternion)

Quaternion

KV
quaternionFB
KV-X
quaternionFBKVX
入力
ww
スカラー部(実部)
x
ベクトル部x(虚部)
y
ベクトル部y(虚部)
z
ベクトル部z(虚部)
出力
outQT
クォータニオン

【例】

入力
ww
1.0
x
2.0
y
3.0
z
4.0
出力
outQT
[1.0, 2.0, 3.0, 4.0]
【 計算式 】
\begin{align} q=q_w+q_xi+q_yj+q_zk=& \begin{bmatrix} q_w \\ q_x \\ q_y \\ q_z \\ \end{bmatrix} \\ i^2+j^2+k^2=&-1 \\ ij=&k \\ jk=&i \\ ki=&j \end{align}

比較 (qtEQ)

qtEQ

KV
qtEQFB
KV-X
qtEQFBKVX
入力
qt1
クォータニオン1
qt2
クォータニオン2
出力
result
結果

加算 (qtADD)

qtADD

KV
qtADDFB
KV-X
qtADDFBKVX
入力
qt1
クォータニオン1
qt2
クォータニオン2
出力
outQT
結果クォータニオン

【例】

入力
qt1
[1.0, 1.0, 1.0, 1.0]
qt2
[0.5, 2.0, 1.0, 0.0]
出力
outQT
[1.5, 3.0, 2.0, 1.0]
【 計算式 】
\[ Q1+Q2 = \begin{bmatrix} a_{w} \\ a_{x} \\ a_{y} \\ a_{z} \\ \end{bmatrix} + \begin{bmatrix} b_{w} \\ b_{x} \\ b_{y} \\ b_{z} \\ \end{bmatrix} = \begin{bmatrix} a_w+b_w\\ a_x+b_x\\ a_y+b_y\\ a_z+b_z \end{bmatrix} \]

減算 (qtSUB)

qtSUB

KV
qtSUBFB
KV-X
qtSUBFBKVX
入力
qt1
クォータニオン1
qt2
クォータニオン2
出力
outQT
結果クォータニオン

【例】

入力
qt1
[1.0, 1.0, 1.0, 1.0]
qt2
[0.5, 2.0, 1.0, 0.0]
出力
outQT
[0.5, -1.0, 0.0, 1.0]
【 計算式 】
\[ Q1+Q2 = \begin{bmatrix} a_{w} \\ a_{x} \\ a_{y} \\ a_{z} \\ \end{bmatrix} - \begin{bmatrix} b_{w} \\ b_{x} \\ b_{y} \\ b_{z} \\ \end{bmatrix} = \begin{bmatrix} a_w-b_w\\ a_x-b_x\\ a_y-b_y\\ a_z-b_z \end{bmatrix} \]

外積 (qtCross)

qtCross

KV
qtCrossFB
KV-X
qtCrossFBKVX
入力
qt1
クォータニオン1
qt2
クォータニオン2
出力
outQT
結果クォータニオン

【例】

入力
qt1
[1.0, 1.0, 1.0, 1.0]
qt2
[0.5, 2.0, 1.0, 0.0]
出力
outQT
[-2.5, 1.5, 3.5, -0.5]
【 計算式 】
\[ Q1\times Q2 = \begin{bmatrix} a_{w} \\ a_{x} \\ a_{y} \\ a_{z} \\ \end{bmatrix} \times \begin{bmatrix} b_{w} \\ b_{x} \\ b_{y} \\ b_{z} \\ \end{bmatrix} = out \] \[ (a,b,c,d)(e,f,g,h) = ( ae-bf-cg-dh, af+be+ch-dg, ag-bh+ce+df, ah+bg-cf+de ) \]

共役 (qtCQ)

qtCQ

KV
qtCQFB
KV-X
qtCQFBKVX
入力
QT
クォータニオン
出力
outQT
結果クォータニオン

【例】

入力
QT
[0.5, 2.0, 1.0, 0.0]
出力
outQT
[0.5, -2.0, -1.0, 0.0]
【 計算式 】
\[ \bar{Q1} = \begin{bmatrix} a_{w} \\ -a_{x} \\ -a_{y} \\ -a_{z} \\ \end{bmatrix} = out \]

実部の設定 (qtSetReal)

qtSetReal

KV
qtSetRealFB
KV-X
qtSetRealFBKVX
入力
ww
スカラー部(実部)
qt
クォータニオン
出力
qt
結果クォータニオン

【例】

入力
ww
0.5
qt
[0.0, 0.0, 0.0, 0.0]
出力
qt
[0.5, 0.0, 0.0, 0.0]

虚部の設定 (qtSetImag)

qtSetImag

KV
qtSetImagFB
KV-X
qtSetImagFBKVX
入力
vector
ベクトル部(虚部)
qt
クォータニオン
出力
qt
結果クォータニオン

【例】

入力
vector
[1.0, 2.0, 3.0]
qt
[0.0, 0.0, 0.0, 0.0]
出力
qt
[0.0, 1.0, 2.0, 3.0]

ダウンロード

keisanKVLib.kufb (ライブラリのみ)
keisanKVXLib.kufb (ライブラリのみ)

※ KV-Xの動作確認はシミュレータで行いました


この記事へのコメント