3次元の回転を表すクラス
More...
#include <webcface/transform.h>
|
static std::array< std::array< double, 3 >, 3 > | eulerToMatrix (const std::array< double, 3 > &rot, AxisSequence axis) |
| オイラー角から回転行列への変換
|
|
static std::array< double, 3 > | matrixToEuler (const std::array< std::array< double, 3 >, 3 > &rmat, AxisSequence axis) |
| 回転行列からオイラー角への変換
|
|
static std::array< std::array< double, 3 >, 3 > | quaternionToMatrix (const std::array< double, 4 > &quat) |
| クォータニオンから回転行列への変換
|
|
static std::array< double, 4 > | matrixToQuaternion (const std::array< std::array< double, 3 >, 3 > &rmat) |
| 回転行列からクォータニオンへの変換
|
|
static std::array< double, 4 > | axisAngleToQuaternion (const std::array< double, 3 > &axis, double angle) |
| 回転軸と角度からクォータニオンに変換
|
|
static std::pair< std::array< double, 3 >, double > | quaternionToAxisAngle (const std::array< double, 4 > &quat) |
| クォータニオンから回転軸と角度に変換
|
|
|
| Rotation (const std::optional< std::array< double, 3 > > &rot, const std::optional< std::array< std::array< double, 3 >, 3 > > &rmat) |
|
|
std::optional< std::array< double, 3 > > | rot_ |
|
std::optional< std::array< std::array< double, 3 >, 3 > > | rmat_ |
|
3次元の回転を表すクラス
- Since
- ver2.5
- 内部では z軸,y軸,x軸の順に回転させる系のオイラー角(Tait-Bryan角) または3x3回転行列(ver2.5〜) で保持している。
- todo: 回転行列の代わりにクォータニオンを使うほうが良かったかも
- 送受信時にはすべてこのzyxのオイラー角に変換される。
- 2次元の回転を表すのにも使われ、 その場合オイラー角 rot() の最初の要素(=z軸周りの回転)を使って回転を表し、 残りの要素(x,y軸周りの回転)を0とする。
- See also
- AxisSequence
◆ Rotation() [1/2]
Rotation |
( |
const std::optional< std::array< double, 3 > > & |
rot, |
|
|
const std::optional< std::array< std::array< double, 3 >, 3 > > & |
rmat |
|
) |
| |
|
inlineprotected |
◆ Rotation() [2/2]
◆ appliedTo() [1/3]
この回転をPointに適用する
- Since
- ver2.5
- this * target と同じ。
- thisもtargetも変更されない。
◆ appliedTo() [2/3]
この回転をRotationに適用する
- Since
- ver2.5
- this * target と同じ。
- thisもtargetも変更されない。
◆ appliedTo() [3/3]
この回転をTransformに適用する
- Since
- ver2.5
- this * target と同じ。
- thisもtargetも変更されない。
◆ axisAngleToQuaternion()
std::array< double, 4 > axisAngleToQuaternion |
( |
const std::array< double, 3 > & |
axis, |
|
|
double |
angle |
|
) |
| |
|
static |
回転軸と角度からクォータニオンに変換
- Since
- ver2.5
◆ eulerToMatrix()
std::array< std::array< double, 3 >, 3 > eulerToMatrix |
( |
const std::array< double, 3 > & |
rot, |
|
|
AxisSequence |
axis |
|
) |
| |
|
static |
オイラー角から回転行列への変換
- Since
- ver2.5
◆ inversed()
逆回転を取得
- Since
- ver2.5
thisは変更されない。
◆ matrixToEuler()
std::array< double, 3 > matrixToEuler |
( |
const std::array< std::array< double, 3 >, 3 > & |
rmat, |
|
|
AxisSequence |
axis |
|
) |
| |
|
static |
回転行列からオイラー角への変換
- Since
- ver2.5
◆ matrixToQuaternion()
std::array< double, 4 > matrixToQuaternion |
( |
const std::array< std::array< double, 3 >, 3 > & |
rmat | ) |
|
|
static |
回転行列からクォータニオンへの変換
- Since
- ver2.5
◆ operator!=() [1/2]
bool operator!= |
( |
const Rotation & |
other | ) |
const |
|
inline |
◆ operator!=() [2/2]
bool operator!= |
( |
const Transform & |
other | ) |
const |
|
inline |
◆ operator*() [1/3]
この回転をPointに適用する
- Since
- ver2.5
- See also
- appliedTo
◆ operator*() [2/3]
この回転をRotationに適用する
- Since
- ver2.5
- See also
- appliedTo
◆ operator*() [3/3]
この回転をTransformに適用する
- Since
- ver2.5
- See also
- appliedTo
◆ operator*=()
このRotationを別のRotationに適用した結果で置き換える
- Since
- ver2.5
this = this * target と同じ。
◆ operator==() [1/2]
bool operator== |
( |
const Rotation & |
other | ) |
const |
- 回転行列の各要素の差が 1e-8 未満のときtrue
- Transformと比較することもできる (平行移動0のTransformとして扱う)
◆ operator==() [2/2]
bool operator== |
( |
const Transform & |
other | ) |
const |
◆ quaternionToAxisAngle()
std::pair< std::array< double, 3 >, double > quaternionToAxisAngle |
( |
const std::array< double, 4 > & |
quat | ) |
|
|
static |
クォータニオンから回転軸と角度に変換
- Since
- ver2.5
◆ quaternionToMatrix()
std::array< std::array< double, 3 >, 3 > quaternionToMatrix |
( |
const std::array< double, 4 > & |
quat | ) |
|
|
static |
クォータニオンから回転行列への変換
- Since
- ver2.5
クォータニオンは w, x, y, z の順で表す。
◆ rot() [1/4]
std::array< double, 3 > & rot |
( |
| ) |
|
|
inline |
◆ rot() [2/4]
std::array< double, 3 > rot |
( |
| ) |
const |
|
inline |
◆ rot() [3/4]
double & rot |
( |
std::size_t |
index | ) |
|
|
inline |
3次元の回転をZYX順のオイラー角として取得・変更
- Since
- ver1.6
- Parameters
-
- Deprecated:
- ver2.5〜
◆ rot() [4/4]
double rot |
( |
std::size_t |
index | ) |
const |
|
inline |
3次元の回転をZYX順のオイラー角として取得
- Since
- ver1.6
- Parameters
-
- Deprecated:
- ver2.5〜
◆ rot2D()
◆ rotAxisAngle()
std::pair< std::array< double, 3 >, double > rotAxisAngle |
( |
| ) |
const |
|
inline |
◆ rotEuler()
3次元の回転をオイラー角として取得
- Since
- ver2.5
- Parameters
-
axis | 回転軸の順序 (ver2.5〜) ver2.4までは z, y, x の順しか指定できない |
◆ rotMatrix() [1/2]
const std::array< std::array< double, 3 >, 3 > & rotMatrix |
( |
| ) |
const |
|
inline |
◆ rotMatrix() [2/2]
double rotMatrix |
( |
std::size_t |
row, |
|
|
std::size_t |
col |
|
) |
| const |
|
inline |
◆ rotQuat()
std::array< double, 4 > rotQuat |
( |
| ) |
const |
|
inline |
◆ rotFromEuler
回転をオイラー角から初期化
- Since
- ver2.5
- Parameters
-
rot | オイラー角 (内的回転の順の3パラメーター) |
axis | 回転軸の順序 |
◆ rotFromMatrix
Rotation rotFromMatrix |
( |
const std::array< std::array< double, 3 >, 3 > & |
matrix | ) |
|
|
friend |
回転を回転行列から初期化
- Since
- ver2.5
- Parameters
-
pos | x, y, z 座標 |
rotMatrix | 回転行列 |
- Todo:
- Eigenの配列とか生ポインタとか? 他の型から行列の値を渡せると良い?
◆ Transform
◆ rmat_
std::optional<std::array<std::array<double, 3>, 3> > rmat_ |
|
mutableprotected |
◆ rot_
std::optional<std::array<double, 3> > rot_ |
|
mutableprotected |
The documentation for this class was generated from the following files: