クォータニオン(四元数)を扱うクラス [詳細]
#include <quaternion.h>
Public 型 | |
typedef T | value_type |
MISTのコンテナ内に格納するデータ型.mist::array< data > の data と同じ | |
typedef size_t | size_type |
符号なしの整数を表す型.コンテナ内の要素数や,各要素を指定するときなどに利用し,内部的には size_t 型と同じ | |
typedef ptrdiff_t | difference_type |
符号付きの整数を表す型.コンテナ内の要素数や,各要素を指定するときなどに利用し,内部的には ptrdiff_t 型と同じ | |
typedef float_type< T >::value_type | float_type |
長さなどを計算するときに用いる浮動小数点型 |
Public メソッド | |
quaternion () | |
デフォルトコンストラクタ(全要素を0で初期化する) | |
quaternion (const value_type &ww, const value_type &xx, const value_type &yy, const value_type &zz) | |
ww,xx,yy,zz の値を用いて初期化する | |
quaternion (const value_type &ww) | |
ww,xx,yy,zz の値を用いて初期化する | |
template<class TT > | |
quaternion (const quaternion< TT > &q) | |
他のクォータニオンオブジェクト(データ型が異なる)を用いて初期化する | |
quaternion (const quaternion< T > &q) | |
他のクォータニオンオブジェクト(データ型が同じ)を用いて初期化する | |
template<class TT > | |
quaternion (value_type ww, const vector3< TT > &v) | |
実数成分 ww と虚数成分のベクトル v を用いて初期化する | |
template<class TT > | |
quaternion (const vector3< TT > &axis, value_type theta) | |
クォータニオンを用いた任意軸周りの回転 | |
template<class TT > | |
quaternion (vector3< TT > dir, vector3< TT > up) | |
カメラの視線方向と上向き方向を用いて,カメラの姿勢を表すクォータニオンを計算する | |
template<class TT > | |
const quaternion & | operator= (const quaternion< TT > &q) |
他のクォータニオンオブジェクトを代入する | |
const quaternion & | operator= (const quaternion< T > &q) |
他のクォータニオンオブジェクトを代入する | |
quaternion | operator- () const |
符号反転したクォータニオンを返す | |
template<class TT > | |
const quaternion & | operator+= (const quaternion< TT > &q) |
クォータニオンの足し算 | |
template<class TT > | |
const quaternion & | operator+= (const TT &a) |
クォータニオンへの実数成分の足し算 | |
template<class TT > | |
const quaternion & | operator-= (const quaternion< TT > &q) |
クォータニオンの引き算 | |
template<class TT > | |
const quaternion & | operator-= (const TT &a) |
クォータニオンへの実数成分の引き算 | |
template<class TT > | |
const quaternion & | operator*= (const quaternion< TT > &q) |
クォータニオンの掛け算 | |
template<class TT > | |
const quaternion & | operator*= (const TT &a) |
クォータニオンへの実数成分の掛け算 | |
template<class TT > | |
const quaternion & | operator/= (const quaternion< TT > &q) |
クォータニオンの割り算 | |
template<class TT > | |
const quaternion & | operator/= (const TT &a) |
クォータニオンを実数成分で割る | |
bool | operator== (const quaternion &q) const |
2つのクォータニオンが同一かどうかを判定する | |
bool | operator!= (const quaternion &q) const |
2つのクォータニオンが等しくないどうかを判定する | |
bool | operator< (const quaternion &q) const |
2つのベクトルの < を判定する | |
bool | operator<= (const quaternion &q) const |
2つのベクトルの <= を判定する | |
bool | operator> (const quaternion &q) const |
2つのベクトルの > を判定する | |
bool | operator>= (const quaternion &q) const |
2つのベクトルの >= を判定する | |
const quaternion | conjugate () const |
共役クォータニオン | |
const quaternion | inv () const |
逆クォータニオン | |
const quaternion | unit () const |
単位クォータニオン | |
template<class TT > | |
value_type | inner (const quaternion< TT > &q) const |
クォータニオンの内積 | |
float_type | length () const |
クォータニオンのノルム | |
template<class TT > | |
const vector3< TT > | rotate (const vector3< TT > &v) const |
クォータニオンを用いたベクトルの回転 |
Static Public メソッド | |
template<class TT > | |
static quaternion | rotate (vector3< TT > v1, vector3< TT > v2) |
ベクトル1からベクトル2への回転を表すクォータニオンを作成する | |
template<class TT > | |
static quaternion | rotate (vector3< TT > v1, vector3< TT > v2, const vector3< TT > &axis) |
指定した回転軸を用いてベクトル1からベクトル2への回転を表すクォータニオンを作成する |
変数 | |
value_type | w |
実数成分 | |
value_type | x |
虚数成分1 | |
value_type | y |
虚数成分2 | |
value_type | z |
虚数成分3 |
クォータニオン(四元数)を扱うクラス
T | … 内部で用いるデータ型 |
|
inline |
クォータニオンを用いた任意軸周りの回転
[in] | axis | … 回転軸 |
[in] | theta | … 回転角度 |
参照先 mist::vector3< T >::x, mist::vector3< T >::y, と mist::vector3< T >::z.
|
inline |
カメラの視線方向と上向き方向を用いて,カメラの姿勢を表すクォータニオンを計算する
[in] | dir | … 回転前のベクトル |
[in] | up | … 回転後のベクトル |
参照先 mist::quaternion< T >::rotate(), と mist::vector3< T >::unit().
|
inline |
共役クォータニオン
|
inline |
クォータニオンの内積
[in] | q | … 右辺値 |
参照先 mist::quaternion< T >::w, mist::quaternion< T >::x, mist::quaternion< T >::y, と mist::quaternion< T >::z.
参照元 mist::interpolate().
|
inline |
|
inline |
クォータニオンのノルム
|
inline |
2つのクォータニオンが等しくないどうかを判定する
[in] | q | … 右辺値 |
true | … どれか1つでも等しくない場合 |
false | … 全ての要素が等しい場合 |
|
inline |
クォータニオンの掛け算
[in] | q | … 右辺値 |
参照先 mist::quaternion< T >::w, mist::quaternion< T >::x, mist::quaternion< T >::y, と mist::quaternion< T >::z.
|
inline |
クォータニオンへの実数成分の掛け算
[in] | a | … 実数成分 |
|
inline |
クォータニオンの足し算
[in] | q | … 右辺値 |
参照先 mist::quaternion< T >::w, mist::quaternion< T >::x, mist::quaternion< T >::y, と mist::quaternion< T >::z.
|
inline |
クォータニオンへの実数成分の足し算
[in] | a | … 実数成分 |
|
inline |
クォータニオンの引き算
[in] | q | … 右辺値 |
参照先 mist::quaternion< T >::w, mist::quaternion< T >::x, mist::quaternion< T >::y, と mist::quaternion< T >::z.
|
inline |
クォータニオンへの実数成分の引き算
[in] | a | … 実数成分 |
|
inline |
|
inline |
クォータニオンを実数成分で割る
[in] | a | … 実数成分 |
|
inline |
2つのベクトルの < を判定する
[in] | q | … 右辺値 |
true | … p < q の場合 |
false | … p >= q の場合 |
参照先 mist::quaternion< T >::w, mist::quaternion< T >::x, mist::quaternion< T >::y, と mist::quaternion< T >::z.
|
inline |
2つのベクトルの <= を判定する
[in] | q | … 右辺値 |
true | … p <= q の場合 |
false | … p > q の場合 |
|
inline |
2つのクォータニオンが同一かどうかを判定する
[in] | q | … 右辺値 |
true | … 全ての要素が等しい場合 |
false | … どれか1つでも等しくない場合 |
参照先 mist::quaternion< T >::w, mist::quaternion< T >::x, mist::quaternion< T >::y, と mist::quaternion< T >::z.
|
inline |
2つのベクトルの > を判定する
[in] | q | … 右辺値 |
true | … p > q の場合 |
false | … p <= q の場合 |
|
inline |
2つのベクトルの >= を判定する
[in] | q | … 右辺値 |
true | … p >= q の場合 |
false | … p < q の場合 |
|
inline |
クォータニオンを用いたベクトルの回転
[in] | v | … 回転されるベクトル |
参照先 mist::quaternion< T >::x, mist::vector3< T >::x, mist::quaternion< T >::y, mist::vector3< T >::y, mist::quaternion< T >::z, と mist::vector3< T >::z.
|
inlinestatic |
ベクトル1からベクトル2への回転を表すクォータニオンを作成する
[in] | v1 | … 回転前のベクトル |
[in] | v2 | … 回転後のベクトル |
参照先 mist::vector3< T >::inner(), mist::vector3< T >::outer(), と mist::vector3< T >::unit().
|
inlinestatic |
指定した回転軸を用いてベクトル1からベクトル2への回転を表すクォータニオンを作成する
[in] | v1 | … 回転前のベクトル |
[in] | v2 | … 回転後のベクトル |
[in] | axis | … 回転軸ベクトル |
参照先 mist::vector3< T >::inner(), mist::vector3< T >::outer(), と mist::vector3< T >::unit().
|
inline |