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>
TVector.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を頂点とする矩形内に収まるようにする).
 

説明

  • TVector : 管理情報をテンプレートの引数にすることで, 余分なメモリを一切使わずに一般のベクトルを扱うことができるベクトルの型. 配列をキャストしてベクトルにすることもできる.
  • VVector : 管理情報をメモリに持ち,サイズの変更ができるベクトルの型.
  • EVector : 管理情報だけを持ち,データは外部の配列などを使うベクトルの型. 互いに内積などの演算を行うことができる.また,TMatrix, VMatrix, EMatrix 型の行列 との演算もできる.