![]() |
Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
Quaternion/4元数.3x3行列の代わりに回転を表すために使える. 4変数で済む.補間や微分・積分がやりやすい.
TVec3との掛け算は,回転変換でオーバーロードされている.
#include <TQuaternion.h>

Public 型 | |
|
typedef TVecDesc< TQuaternion < ET >, ET > | desc |
| typedef PTM::TVectorBase< 4, desc > | base_type |
| typedef PTM::TSubVector< 3, desc > | vector_type |
| 3次元の部分ベクトル | |
Public 型 inherited from VectorImp< TVecDesc< TQuaternion< ET >, ET > > | |
|
typedef TVecDesc< TQuaternion < ET >, ET > | desc |
| typedef TYPENAME desc::exp_type | exp_type |
| typedef TYPENAME desc::ret_type | ret_type |
| typedef TYPENAME desc::element_type | element_type |
| typedef TYPENAME desc::zero | zero |
Public メソッド | |
| DEF_TVECTOR_BASIC_MEMBER (TQuaternion) | |
| 継承されない基本的なメンバの定義. [詳細] | |
| ET & | item_impl (size_t i) |
| 要素のアクセス | |
| const ET & | item_impl (size_t i) const |
| 要素のアクセス | |
| size_t | stride_impl () const |
| ストライド | |
| void | Conjugate () |
| 共役 | |
| TQuaternion | Conjugated () const |
| TQuaternion | Inv () const |
| 逆 | |
| template<class AM > | |
| void | FromMatrix (const AM &m) |
| 回転行列変換 | |
| template<class AM > | |
| void | ToMatrix (AM &mat) const |
| template<class VET > | |
| void | ToEuler (TVec3< VET > &v) const |
| オイラー角(Y軸(heading), Z軸(attitude), X軸(bank)の順のオイラー角)へ変換 | |
| template<class VET > | |
| void | FromEuler (const TVec3< VET > &v) |
| オイラー角(Y軸(heading), Z軸(attitude), X軸(bank)の順のオイラー角)から変換 | |
| void | RotationArc (const TVec3< ET > &lhs, const TVec3< ET > &rhs) |
| lhsを回転してrhsに一致させるクウォータニオン | |
| void | Euler (ET heading, ET attitude, ET bank) |
| オイラー角で指定 (FromEulerとまったく同じ) | |
| TVec3< ET > | ToEuler () const |
| TQuaternion< ET > | Derivative (const TVec3< ET > &w) const |
| 角速度からquaternionの時間微分を計算 [詳細] | |
| TVec3< ET > | AngularVelocity (const TQuaternion< ET > &qd) const |
| クウォータニオンの時間微分から角速度を計算 [詳細] | |
変数アクセス | |
| const element_type & | W () const |
| w成分 | |
| const element_type & | X () const |
| x成分 | |
| const element_type & | Y () const |
| y成分 | |
| const element_type & | Z () const |
| z成分 | |
| const vector_type & | V () const |
| element_type & | W () |
| z成分 | |
| element_type & | X () |
| x成分 | |
| element_type & | Y () |
| y成分 | |
| element_type & | Z () |
| z成分 | |
| vector_type & | V () |
| TVec3< ET > | RotationHalf () |
| 回転ベクトル.0..PIの範囲で回転ベクトルを返す. | |
| TVec3< ET > | Rotation () |
| 回転ベクトル2. 0..2PIの範囲で回転ベクトルを返す. angle から関数名変更 | |
| TVec3< ET > | Axis () const |
| 回転軸 | |
| ET | Theta () const |
| 回転角度 (angleに関数名を変更する予定) [詳細] | |
Public メソッド inherited from TVectorBase< 4, TVecDesc< TQuaternion< ET >, ET > > | |
| size_t | size_impl () const |
| void | resize_impl (size_t sz) |
Public メソッド inherited from VectorImp< TVecDesc< TQuaternion< ET >, ET > > | |
| VectorImp () | |
| コンストラクタ | |
| exp_type & | exp () |
| 実体の取得 | |
| const exp_type & | exp () const |
| const element_type & | item (size_t n) const |
| n番目の要素を返す(基数は0). | |
| element_type & | item (size_t n) |
| size_t | size () const |
| サイズの取得 | |
| void | resize (size_t sz) |
| サイズの設定 | |
| void | resize (size_t sz, const element_type v) |
| サイズの設定とベクトルの要素を全てvにする | |
| size_t | stride () const |
| ストライドの取得 | |
| TVectorSlice< SZ::SIZE, SZ::STRIDE, desc > & | t_slice (SZ) |
| スライスを返す.テンプレート版 このベクトルのSZ::OFFSET要素から SZ::OFFSET + SZ::SIZE要素までの 部分ベクトルへの参照を返す. [詳細] | |
|
const TVectorSlice< SZ::SIZE, SZ::STRIDE, desc > & | t_slice (SZ) const |
| TVectorSlice< SZ::SIZE, SZ::STRIDE, desc > & | t_slice (size_t off, SZ) |
| スライスを返す.サイズだけテンプレート版 このベクトルの off 要素から off + SZ::SIZE要素までの 部分ベクトルへの参照を返す. [詳細] | |
|
const TVectorSlice< SZ::SIZE, SZ::STRIDE, desc > & | t_slice (size_t off, SZ) const |
| TSubVector< SZ::SIZE, desc > & | sub_vector (SZ) |
| 部分ベクトルを返す.テンプレート版 | |
|
const TSubVector< SZ::SIZE, desc > & | sub_vector (SZ) const |
| TSubVector< SZ::SIZE, desc > & | sub_vector (size_t off, SZ) |
| 部分ベクトルを返す.サイズだけテンプレート版 | |
|
const TSubVector< SZ::SIZE, desc > & | sub_vector (size_t off, SZ) const |
| EVectorSlice< element_type > | v_range (size_t off, size_t sz) |
| 部分ベクトルを返す.変数版 | |
| ConstEVectorSlice< element_type > | v_range (size_t off, size_t sz) const |
| EVectorSlice< element_type > | v_slice (size_t off, size_t sz, size_t str) |
| ベクトルのスライスを返す. | |
| ConstEVectorSlice< element_type > | v_slice (size_t off, size_t sz, size_t str) const |
| void | clear (const element_type v=zero(0)) |
| ベクトルの要素を全てvにする. [詳細] | |
| void | assign (const VectorImp< B > &b) |
| 代入(*this = b). [詳細] | |
| void | assign (const element_type *b) |
| 代入(*this = b). [詳細] | |
| void | add (const VectorImp< B > &b) |
| 加算(*this += b). [詳細] | |
| void | sub (const VectorImp< B > &b) |
| 減算(*this -= b). [詳細] | |
| void | multi (const element_type &b) |
| 定数倍(*this *= b). [詳細] | |
| void | div (const element_type &b) |
| 定数分の1(*this /= b). [詳細] | |
| element_type | dot (const VectorImp< B > &b) const |
| 内積(return *this * b). [詳細] | |
| bool | equal (const VectorImp< B > &b) const |
| 比較(return *this == b). [詳細] | |
| void | element_min (const VectorImp< B > &b) |
| 要素ごとの最小値(min(*this, b)). [詳細] | |
| void | element_max (const VectorImp< B > &b) |
| 要素ごとの最大値(max(*this, b)). [詳細] | |
| element_type | square () const |
| ベクトルのノルム(大きさ)の2乗を返す. | |
| element_type | norm () const |
| ベクトルのノルム(大きさ)を返す. | |
| void | unitize () |
| 単位ベクトルにする. | |
| void | clip (const VectorImp< BD > &b, const VectorImp< ED > &e) |
| クリッピングする(bとeを頂点とする矩形内に収まるようにする). | |
| void | print (std::ostream &os, const char *sep="( )") const |
| 表示. [詳細] | |
| void | input (T &is) |
| 表示. [詳細] | |
| element_type & | operator[] (I n) |
| [] 演算子(基数は0). | |
| const element_type & | operator[] (I n) const |
| [] 演算子(基数は0) (const 版). | |
| operator element_type * () | |
| element_type * への変換 | |
| operator const element_type * () const | |
| ret_type | operator* (element_type b) const |
| ベクトルのスカラー倍(return this * b). [詳細] | |
| ret_type | operator/ (element_type b) const |
| ベクトルのスカラー分の1(return this / b). [詳細] | |
| ret_type | operator+= (const VectorImp< BD > &b) |
| += 演算子(*this = *this + b). [詳細] | |
| ret_type | operator-= (const VectorImp< BD > &b) |
| -= 演算子(*this = *this - b) [詳細] | |
| ret_type | operator*= (T b) |
| *= 演算子 (*this = *this * b) [詳細] | |
| ret_type | operator/= (T b) |
| /= 演算子 (*this = 1/b * *this). [詳細] | |
| ret_type | operator- () const |
| ret_type | unit () const |
| 単位ベクトルを返す. | |
Public 変数 | |
| union { | |
| ET data [4] | |
| struct { | |
| ET w | |
| ET x | |
| ET y | |
| ET z | |
| } | |
| }; | |
Protected メソッド | |
| void | set_default () |
| コンストラクタ | |
Protected メソッド inherited from VectorImp< TVecDesc< TQuaternion< ET >, ET > > | |
| void | init_buffer () |
| バッファの初期化.何もしない. | |
| void | set_default () |
| デフォルトコンストラクタ | |
初期化・構築 | |
| TQuaternion (element_type wi, element_type xi, element_type yi, element_type zi) | |
| コンストラクタ | |
| template<class B > | |
| void | InitDirect (element_type a, const PTM::TVectorBase< 3, B > v) |
| template<class B > | |
| void | InitDirect (element_type a, const PTM::TVectorBase< 4, B > v) |
| static TQuaternion< ET > | Rot (element_type angle, const TVec3< element_type > &axis) |
| static TQuaternion< ET > | Rot (element_type angle, char axis) |
| static TQuaternion< ET > | Rot (const TVec3< element_type > &rot) |
Additional Inherited Members | |
Static Public 変数 inherited from TVectorBase< 4, TVecDesc< TQuaternion< ET >, ET > > | |
| static const size_t | SIZE |
|
inline |
| qd | quaternionの時間微分 |
このquaternionとその時間微分qdから角速度wを計算する. ただしwは回転元(ワールド)座標系から見た回転先(ローカル)座標系の角速度を 回転元座標系で表わしたもの.
| DEF_TVECTOR_BASIC_MEMBER | ( | TQuaternion< ET > | ) |
|
inline |
| w | 角速度 |
このquaternionと角速度wから,quaternionの時間微分を計算する. ただしwは回転元(ワールド)座標系から見た回転先(ローカル)座標系の角速度を 回転元座標系で表わしたもの.
|
inline |
数値誤差でWが1.0を上回るとエラーする場合がある