Springhead
An open source physics engine for virtual reality, haptics and motion generation.
クラス CDConvexMesh

凸多面体

#include <CDConvexMesh.h>

CDConvexMeshに対する継承グラフ

Public メソッド

 SPR_OBJECTDEF (CDConvexMesh)
 
 CDConvexMesh (const CDConvexMeshDesc &desc)
 
void CalcFace ()
 頂点から面や接続情報を生成する.
 
virtual float CalcVolume ()
 CDShapeの仮想関数
 
virtual Vec3f CalcCenterOfMass ()
 重心の計算
 
virtual Matrix3f CalcMomentOfInertia ()
 密度1での慣性テンソルの計算
 
virtual void CalcMetrics ()
 体積, 重心, 慣性行列を計算して内部にキャッシュしておく
 
virtual bool IsInside (const Vec3f &p)
 
virtual int LineIntersect (const Vec3f &origin, const Vec3f &dir, Vec3f *result, float *offset)
 
virtual int Support (Vec3f &w, const Vec3f &v) const
 密度での慣性テンソルを返す(キャッシュ済みの) [詳細]
 
virtual bool FindCutRing (CDCutRing &r, const Posed &toW)
 切り口を求める.接触解析に使う.
 
virtual std::vector< int > & FindNeighbors (int vtx)
 頂点vtx のとなりの頂点を列挙する。
 
virtual Vec3f * GetBase ()
 頂点バッファを返す。
 
virtual int GetVtxCount () const
 
CDFaceIfGetFace (int i)
 
int NFace ()
 
Vec3f * GetVertices ()
 
int NVertex ()
 
virtual bool GetDesc (void *desc) const
 デスクリプタCDConvexMeshDescの読み書き
 
virtual void SetDesc (const void *desc)
 デスクリプタの設定
 
virtual size_t GetDescSize () const
 デスクリプタのサイズ
 
virtual void Print (std::ostream &os) const
 デバッグ用の表示
 
- Public メソッド inherited from CDConvex
 SPR_OBJECTDEF_ABST (CDConvex)
 
float GetVolume ()
 
Vec3f GetCenterOfMass ()
 体積を返す(キャッシュ済みの)
 
Matrix3f GetMomentOfInertia ()
 重心位置を返す(キャッシュ済みの)
 
virtual void CalcBBox (Vec3f &bbmin, Vec3f &bbmax, const Posed &pose)
 バウンディングボックスを求める.
 
virtual double CurvatureRadius (Vec3d p)
 表面上の点pにおける曲率半径を求める
 
virtual Vec3d Normal (Vec3d p)
 平面とした場合の値。現時点ではRoundConeについてのみ実装されている(09/02/08, mitake) [詳細]
 
- Public メソッド inherited from CDShape
 SPR_OBJECTDEF_ABST (CDShape)
 
void SetStaticFriction (float mu0)
 
float GetStaticFriction ()
 
void SetDynamicFriction (float mu)
 
float GetDynamicFriction ()
 
void SetElasticity (float e)
 
float GetElasticity ()
 
void SetDensity (float d)
 
float GetDensity ()
 
void SetContactSpring (float K)
 
float GetContactSpring ()
 
void SetContactDamper (float D)
 
float GetContactDamper ()
 
void SetReflexSpring (float K)
 
float GetReflexSpring ()
 
void SetReflexDamper (float D)
 
float GetReflexDamper ()
 
void SetFrictionSpring (float K)
 
float GetFrictionSpring ()
 
void SetFrictionDamper (float D)
 
float GetFrictionDamper ()
 
void SetVibration (float vibA, float vibB, float vibW)
 
void SetVibA (float vibA)
 
float GetVibA ()
 
void SetVibB (float vibB)
 
float GetVibB ()
 
void SetVibW (float vibW)
 
float GetVibW ()
 
void SetVibT (float vibT)
 
float GetVibT ()
 
void SetVibContact (bool vibContact)
 
bool GetVibContact ()
 
const PHMaterialGetMaterial ()
 
void SetMaterial (const PHMaterial &mat)
 
- Public メソッド inherited from NamedObject
 NamedObject (const NamedObject &n)
 
NamedObjectoperator= (const NamedObject &n)
 
virtual const char * GetName () const
 名前の取得
 
virtual void SetName (const char *n)
 名前の設定
 
virtual void SetNameManager (NameManagerIf *s)
 NameManagerを設定
 
virtual NameManagerIfGetNameManager () const
 NameManagerの取得
 
- Public メソッド inherited from Object
 SPR_OBJECTDEF (Object)
 クラス名の取得などの基本機能の実装
 
ObjectIfGetObjectIf ()
 
const ObjectIfGetObjectIf () const
 
virtual void PrintShort (std::ostream &os) const
 
virtual ObjectIfCreateObject (const IfInfo *info, const void *desc)
 オブジェクトの作成
 
virtual size_t NChildObject () const
 子オブジェクトの数
 
virtual ObjectIfGetChildObject (size_t pos)
 子オブジェクトの取得
 
virtual const ObjectIfGetChildObject (size_t pos) const
 
virtual bool AddChildObject (ObjectIf *o)
 子オブジェクトの追加
 
virtual bool DelChildObject (ObjectIf *o)
 子オブジェクトの削除
 
virtual void Clear ()
 すべての子オブジェクトの削除とプロパティのクリア
 
virtual void Loaded (UTLoadContext *)
 ファイルロード後に一度呼ばれる。ノードの設定に使う。 呼び出し順序に依存する処理がしたい場合は、UTLoadHandeler と UTLoadTask を使うと良い。 
 
virtual void Setup ()
 ノードの設定をするための関数
 
virtual const void * GetDescAddress () const
 デスクリプタの読み出し(参照版)
 
virtual bool GetState (void *state) const
 状態の読み出し(コピー版)
 
virtual const void * GetStateAddress () const
 状態の読み出し(参照版)
 
virtual void GetStateR (char *&state)
 状態の再帰的な読み出し
 
virtual void SetState (const void *state)
 状態の設定
 
virtual void SetStateR (const char *&state)
 状態の再帰的な設定
 
virtual bool WriteStateR (std::ostream &fout)
 状態のファイルへの書き出し
 
virtual bool WriteState (std::string fileName)
 
virtual bool ReadStateR (std::istream &fin)
 状態の読み込み
 
virtual bool ReadState (std::string fileName)
 
virtual size_t GetStateSize () const
 状態のサイズ
 
virtual void ConstructState (void *m) const
 メモリブロックを状態型に初期化
 
virtual void DestructState (void *m) const
 状態型をメモリブロックに戻す
 
virtual void DumpObjectR (std::ostream &os, int level=0) const
 メモリデバッグ用。単純にツリーのオブジェクトをファイルにダンプする。
 

Public 変数

int curPos
 探索開始頂点番号
 
std::vector< Vec3f > base
 頂点の座標(ローカル座標系)
 
std::vector< std::vector< int > > neighbor
 頂点の隣の頂点の位置が入った配列
 
CDFaces faces
 面(3角形 0..nPlanes-1 が独立な面,それ以降はMargeFaceで削除される同一平面上の面)
 
int nPlanes
 面(3角形のうち,MergeFace()で残った数)
 
- Public 変数 inherited from CDConvex
bool bboxReady
 PHFrameのBounding Boxの再計算の要否を表すフラグ
 
- Public 変数 inherited from CDShape
 SPR_DECLMEMBEROF_CDShapeDesc
 

Protected メソッド

void MergeFace ()
 同一平面上で接続されている3角形をマージする
 
- Protected メソッド inherited from NamedObject
virtual void PrintHeader (std::ostream &os, bool bClose) const
 開き括弧
 
- Protected メソッド inherited from Object
virtual void PrintChildren (std::ostream &os) const
 子オブジェクトをPrint
 
virtual void PrintFooter (std::ostream &os) const
 閉じ括弧
 
virtual void BeforeGetDesc () const
 GetDesc()の前に呼ばれる
 
virtual void AfterSetDesc ()
 SetDesc()のあとに呼ばれる
 

Additional Inherited Members

- Static Public メソッド inherited from CDShape
static float CalcCylinderVolume (float r, float l)
 
static Matrix3f CalcCylinderInertia (float r, float l)
 
static float CalcHemisphereCoM (float r)
 
static float CalcHemisphereVolume (float r)
 
static Matrix3f CalcHemisphereInertia (float r)
 
static float CalcConeCoM (float l)
 
static float CalcConeVolume (float r, float l)
 
static Matrix3f CalcConeInertia (float r, float l)
 
static float CalcTetrahedronVolume (const Vec3f &a, const Vec3f &b, const Vec3f &c)
 
static Vec3f CalcTetrahedronCoM (const Vec3f &a, const Vec3f &b, const Vec3f &c)
 
static Matrix3f CalcTetrahedronInertia (const Vec3f &a, const Vec3f &b, const Vec3f &c)
 
static float CalcRoundConeVolume (Vec2f radius, float length)
 
static Vec3f CalcRoundConeCenterOfMass (Vec2f radius, float length)
 
static Matrix3f CalcRoundConeMomentOfInertia (Vec2f radius, float length)
 
- Static Protected メソッド inherited from Object
static void ConstructState (ObjectIf *o, char *&s)
 sをoのStateとして初期化する.
 
static void DestructState (ObjectIf *o, char *&s)
 sをoのStateからメモリブロックに戻す.
 
- Protected 変数 inherited from CDConvex
float volume
 体積
 
Vec3f center
 重心
 
Matrix3f inertia
 慣性行列
 
- Protected 変数 inherited from NamedObject
UTString name
 名前
 
NameManagernameManager
 名前の検索や重複管理をするもの.SceneやSDKなど.
 

関数

virtual int Support ( Vec3f &  w,
const Vec3f &  v 
) const
virtual

サポートポイント(方向ベクトルvとの内積が最大の点)をwに格納する。 戻り値には、頂点番号があれば返す。無ければ-1。頂点番号はメッシュの頂点の場合 のほか、RoundConeなどの球の中心の番号のこともある

CDConvexを実装しています。


このクラスの説明は次のファイルから生成されました: