Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
C++ の template 機能を生かしたベクトルライブラリ. メモリと管理情報(ベクトルのサイズなど)の持ち方で3種ある。 [詳細]
#include <algorithm>
#include <iostream>
#include <math.h>
#include <assert.h>
#include <stddef.h>
#include <vector>
#include <string.h>
構成 | |
class | VectorDesc< EXP, RET, E, Z > |
class | TVectorDesc< STR, EXP, RET, E, Z > |
class | VectorImp< D > |
ベクトルの演算などの実装 [詳細] | |
class | TVectorBase< N, D > |
次元をテンプレートで持つベクトルの基本型 [詳細] | |
class | TVectorSlice< SZ, STR, OD > |
class | TSubVector< SZ, OD > |
class | EVectorSlice< D > |
class | ConstEVectorSlice< D > |
class | VectorImp< D > |
ベクトルの演算などの実装 [詳細] | |
class | TVectorBase< N, D > |
次元をテンプレートで持つベクトルの基本型 [詳細] | |
class | TSubVectorDim< SOFF, SDIM > |
部分ベクトル型作成のためのユーティリティークラス. [詳細] | |
class | TVector< N, T > |
ベクトル型. [詳細] | |
class | TVectorSlice< SZ, STR, OD > |
class | TSubVector< SZ, OD > |
class | VVector< T > |
ベクトル型. [詳細] | |
class | ConstEVector< T > |
ベクトル型. [詳細] | |
class | EVector< T > |
class | ConstEVectorSlice< D > |
class | EVectorSlice< D > |
マクロ定義 | |
#define | TYPENAME typename |
#define | DEF_VECTOR_BASIC_MEMBER(THIS) |
ベクトル型派生クラスに必要なメンバの定義. [詳細] | |
#define | DEF_TVECTOR_BASIC_MEMBER(THIS) |
関数 | |
template<class AD , class BD > | |
TYPENAME AD::ret_type | operator+ (const VectorImp< AD > &a, const VectorImp< BD > &b) |
ベクトルの和(return a + b). [詳細] | |
template<class AD , class BD > | |
TYPENAME AD::ret_type | operator- (const VectorImp< AD > &a, const VectorImp< BD > &b) |
ベクトルの差(return a - b). [詳細] | |
template<class BD > | |
TYPENAME BD::ret_type | operator* (const TYPENAME BD::element_type &a, const VectorImp< BD > &b) |
スカラーとベクトルの積(return a * b). [詳細] | |
template<class BD > | |
TYPENAME BD::ret_type | operator* (const VectorImp< BD > &a, const TYPENAME BD::element_type &b) |
スカラーとベクトルの積(return a * b). [詳細] | |
template<class AD , class BD > | |
AD::element_type | operator* (const VectorImp< AD > &a, const VectorImp< BD > &b) |
ベクトルの内積(return a * b). [詳細] | |
template<class AD , class BD > | |
bool | operator== (const VectorImp< AD > &a, const VectorImp< BD > &b) |
比較(return a == b). [詳細] | |
template<class AD , class BD > | |
bool | operator!= (const VectorImp< AD > &a, const VectorImp< BD > &b) |
比較(return a != b). [詳細] | |
template<class BD > | |
std::ostream & | operator<< (std::ostream &os, const VectorImp< BD > &v) |
ストリームに書式付で出力する. | |
template<class BD > | |
std::istream & | operator>> (std::istream &is, VectorImp< BD > &v) |
ストリームから書式付で入力する. | |
template<class AD , class BD > | |
AD::element_type | cross (const TVectorBase< 2, AD > &a, const TVectorBase< 2, BD > &b) |
2次元ベクトルの外積(return a x b). [詳細] | |
template<class AD , class BD > | |
AD::element_type | operator% (const TVectorBase< 2, AD > &a, const TVectorBase< 2, BD > &b) |
template<class AD , class BD > | |
AD::element_type | operator^ (const TVectorBase< 2, AD > &a, const TVectorBase< 2, BD > &b) |
template<class AD , class BD > | |
TYPENAME AD::ret_type | cross (const TVectorBase< 3, AD > &a, const TVectorBase< 3, BD > &b) |
3次元ベクトルの外積(return a x b). [詳細] | |
template<class AD , class BD > | |
TYPENAME AD::ret_type | operator% (const TVectorBase< 3, AD > &a, const TVectorBase< 3, BD > &b) |
template<class AD , class BD > | |
TYPENAME AD::ret_type | operator^ (const TVectorBase< 3, AD > &a, const TVectorBase< 3, BD > &b) |
template<class AD , class BD > | |
TYPENAME AD::ret_type | interpolate (TYPENAME AD::element_type &t, const VectorImp< AD > &a, const VectorImp< BD > &b) |
補間 [詳細] | |
演算. | |
template<class D > | |
void | clear (VectorImp< D > &a, const TYPENAME D::element_type v=D::zero(0)) |
ベクトルの要素を全てvにする. [詳細] | |
template<class AD , class BD > | |
void | assign (VectorImp< AD > &a, const VectorImp< BD > &b) |
代入(a = b). [詳細] | |
template<class AD , class BD > | |
void | assign (TVectorBase< 2, AD > &a, const TVectorBase< 2, BD > &b) |
代入(a = b) 2要素専用 | |
template<class AD , class BD > | |
void | assign (TVectorBase< 3, AD > &a, const TVectorBase< 3, BD > &b) |
代入(a = b) 3要素専用 | |
template<class AD , class BD > | |
void | assign (TVectorBase< 4, AD > &a, const TVectorBase< 4, BD > &b) |
代入(a = b) 4要素専用 | |
template<class AD > | |
void | assign (VectorImp< AD > &a, const TYPENAME AD::element_type *b) |
代入(a = b). [詳細] | |
template<class AD , class BD > | |
void | add (VectorImp< AD > &a, const VectorImp< BD > &b) |
加算(a += b). [詳細] | |
template<class AD , class BD > | |
void | sub (VectorImp< AD > &a, const VectorImp< BD > &b) |
減算(a -= b). [詳細] | |
template<class AD > | |
void | multi (VectorImp< AD > &a, const TYPENAME AD::element_type &b) |
定数倍(*this *= b). [詳細] | |
template<class AD , class BD > | |
void | multi_each (VectorImp< AD > &a, const VectorImp< BD > &b) |
定数倍(*this *= b). [詳細] | |
template<class AD > | |
void | div (VectorImp< AD > &a, const TYPENAME AD::element_type &b) |
定数分の1(*this /= b). [詳細] | |
template<class AD , class BD > | |
TYPENAME AD::element_type | dot (const VectorImp< AD > &a, const VectorImp< BD > &b) |
内積(return *this * b). [詳細] | |
template<class AD , class BD > | |
TYPENAME AD::element_type | dot (const TVectorBase< 3, AD > &a, const TVectorBase< 3, BD > &b) |
template<class AD , class BD > | |
bool | equal (const VectorImp< AD > &a, const VectorImp< BD > &b) |
比較(return *this == b). [詳細] | |
template<class AD , class BD > | |
void | element_min_impl (VectorImp< AD > &a, const VectorImp< BD > &b) |
要素ごとの最小値(min(*this, b)). [詳細] | |
template<class AD , class BD > | |
TYPENAME AD::ret_type | element_min (const VectorImp< AD > &a, const VectorImp< BD > &b) |
template<class AD , class BD > | |
void | element_max_impl (VectorImp< AD > &a, const VectorImp< BD > &b) |
要素ごとの最大値(max(*this, b)). [詳細] | |
template<class AD , class BD > | |
TYPENAME AD::ret_type | element_max (const VectorImp< AD > &a, const VectorImp< BD > &b) |
template<class AD , class BD , class ED > | |
void | clip (const VectorImp< AD > &a, const VectorImp< BD > &b, const VectorImp< ED > &e) |
クリッピングする(bとeを頂点とする矩形内に収まるようにする). | |