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

剛体

#include <PHSolid.h>

PHSolidに対する継承グラフ

Public メソッド

 SPR_OBJECTDEF (PHSolid)
 
 ACCESS_DESC_STATE_PRIVATE (PHSolid)
 
 PHSolid (const PHSolidDesc &desc=PHSolidDesc(), SceneIf *s=NULL)
 
virtual SceneObjectIfCloneObject ()
 
CDShapeIfCreateAndAddShape (const IfInfo *info, const CDShapeDesc &desc)
 
ObjectIfCreateObject (const IfInfo *info, const void *desc)
 オブジェクトの作成
 
bool AddChildObject (ObjectIf *obj)
 子オブジェクトの追加
 
bool DelChildObject (ObjectIf *obj)
 子オブジェクトの削除
 
size_t NChildObject () const
 子オブジェクトの数
 
ObjectIfGetChildObject (size_t pos)
 子オブジェクトの取得
 
virtual bool CalcBBox ()
 剛体と各形状のローカルBBoxを計算
 
virtual void CalcAABB ()
 剛体と各形状のワールドBBoxを計算
 
virtual void GetBBoxSupport (const Vec3f &dir, float &minS, float &maxS)
 
virtual void GetBBox (Vec3d &bbmin, Vec3d &bbmax, bool world)
 
void SetUpdated (bool set)
 
bool IsUpdated ()
 
void Step ()
 時刻を進める.
 
void AddForce (Vec3d f)
 力を質量中心に加える
 
void AddTorque (Vec3d t)
 トルクを加える
 
void AddForce (Vec3d f, Vec3d r)
 力を 位置r(World系) に加える
 
Vec3d GetForce () const
 拘束力以外の剛体に加わった外力。拘束力はPHConstraintから取得しなければならない。
 
Vec3d GetTorque () const
 拘束力以外の剛体に加わった外力によるトルク。拘束トルクはPHConstraintから取得しなければならない。
 
double GetMass ()
 質量
 
double GetMassInv ()
 質量の逆数
 
void SetMass (double m)
 質量の設定
 
void SetMassInv (double minv)
 質量の逆数の設定
 
Vec3d GetCenterOfMass ()
 ローカルフレームから見た,剛体の質量中心位置の設定
 
void SetCenterOfMass (const Vec3d &c)
 ローカルフレームから見た,剛体の質量中心位置の取得
 
Matrix3d GetInertia ()
 慣性テンソル
 
Matrix3d GetInertiaInv ()
 慣性テンソルの逆数
 
Matrix3d GetGlobalInertia ()
 グローバル回転の慣性テンソル
 
void SetInertia (const Matrix3d &I)
 慣性テンソルの設定
 
void SetInertiaInv (const Matrix3d &_Iinv)
 慣性テンソルを逆数で設定
 
void CompInertia ()
 
PHIntegrationMode GetIntegrationMode ()
 積分方式の取得
 
void SetIntegrationMode (PHIntegrationMode m)
 積分方式の設定
 
Posed GetPose ()
 位置と向き
 
Vec3d GetFramePosition ()
 フレーム位置の取得
 
Posed GetPrevPose ()
 
Vec3d GetDeltaPosition ()
 
Vec3d GetDeltaPosition (const Vec3d &p)
 
Vec3d GetPrevFramePosition ()
 
Matrix3d GetRotation ()
 
Quaterniond GetOrientation ()
 向きの取得
 
void SetPose (const Posed &p)
 向きの取得
 
void SetFramePosition (const Vec3d &p)
 
void SetCenterPosition (const Vec3d &p)
 重心位置の設定(World)
 
void SetRotation (const Matrix3d &r)
 
void SetOrientation (const Quaterniond &q)
 向きの設定
 
void SetDv (const SpatialVector &a)
 向きの設定
 
Vec3d GetVelocity ()
 速度の変化量を設定する <!!>aabbReadyが必要なのかが分からない [詳細]
 
void SetVelocity (const Vec3d &v)
 質量中心の速度の設定
 
Vec3d GetAngularVelocity ()
 角速度の取得
 
void SetAngularVelocity (const Vec3d &av)
 角速度の設定
 
void SetGravity (bool bOn)
 質量中心の速度と角速度をまとめて取得 [詳細]
 
void SetDynamical (bool bOn)
 物理法則に従うかどうか設定
 
bool IsDynamical ()
 物理法則に従っているかどうかを取得
 
void SetStationary (bool bOn)
 
bool IsStationary ()
 
void SetFrozen (bool bOn)
 速度が一定以下の時,積分を行わないように設定
 
bool IsFrozen ()
 速度が一定以下で積分を行わないかどうかを取得
 
PHTreeNodeIfGetTreeNode ()
 
- Public メソッド inherited from PHBody
 SPR_OBJECTDEF_ABST (PHBody)
 
Vec3d GetCenterPosition ()
 重心位置(回転中心)の取得(World)
 
Vec3d GetPointVelocity (Vec3d posW)
 任意の位置での速度の取得
 
virtual bool InvalidateBbox ()
 
int NFrame ()
 shapeの数。
 
void AddFrame (PHFrameIf *frame)
 shapeを、位置指定込みで追加する.
 
PHFrameIfGetFrame (int i)
 frameで取得
 
int NShape ()
 この剛体が持つ Spr::CDShape の数
 
CDShapeIfGetShape (int i)
 この剛体が持つ i番目の SPR::CDShape の取得
 
void AddShape (CDShapeIf *shape)
 shape を この剛体が持つSpr::CDShapeのリスト の最後に追加する.
 
void AddShapes (CDShapeIf **shBegin, CDShapeIf **shEnd)
 
void RemoveShape (int i)
 i番目のshapeを削除
 
void RemoveShapes (int iBegin, int iEnd)
 iBegin番目からiEnd-1番目までを削除
 
void RemoveShape (CDShapeIf *shape)
 この剛体が持つshapeを全て削除
 
Posed GetShapePose (int i)
 この剛体が持つ i番目の SPR::CDShape のこの剛体から見た姿勢を取得
 
void ClearShape ()
 この剛体が持つ i番目の SPR::CDShape のこの剛体から見た姿勢を設定
 
void SetShapePose (int i, const Posed &pose)
 この剛体が持つSPR::CDShape を削除
 
- Public メソッド inherited from SceneObject
virtual void SetScene (SceneIf *s)
 
virtual SceneIfGetScene () const
 
- 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 Print (std::ostream &os) const
 デバッグ用の表示
 
virtual void PrintShort (std::ostream &os) const
 
virtual const ObjectIfGetChildObject (size_t pos) const
 
virtual void Clear ()
 すべての子オブジェクトの削除とプロパティのクリア
 
virtual void Loaded (UTLoadContext *)
 ファイルロード後に一度呼ばれる。ノードの設定に使う。 呼び出し順序に依存する処理がしたい場合は、UTLoadHandeler と UTLoadTask を使うと良い。 
 
virtual void Setup ()
 ノードの設定をするための関数
 
virtual bool GetDesc (void *desc) const
 デスクリプタの読み出し(コピー版)
 
virtual void SetDesc (const void *desc)
 デスクリプタの設定
 
virtual const void * GetDescAddress () const
 デスクリプタの読み出し(参照版)
 
virtual size_t GetDescSize () 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 メソッド inherited from PHSolidDesc
void Init ()
 

Public 変数

int femIndex
 
- Public 変数 inherited from PHBody
int id
 
bool bboxReady
 bboxの再計算用フラグ
 
bool aabbReady
 aabbの再計算用フラグ
 
PHBBox bbLocal
 ローカル座標のBBox
 
PHBBox bbWorld
 ワールド座標のBBox
 
std::vector< UTRef< PHFrame > > frames
 Collision形状
 
- Public 変数 inherited from PHSolidDesc
double mass
 質量
 
Matrix3d inertia
 慣性テンソル (Local系)
 
Vec3d center
 質量中心の位置 (Local系)
 
bool dynamical
 物理法則に従うか(速度は積分される)
 
bool stationary
 
- Public 変数 inherited from PHSolidState
Vec3d velocity
 質量中心の速度 (World系)
 
Vec3d angVelocity
 角速度 (World系)
 
Posed pose
 座標原点の位置と向き (World系)
 
- Public 変数 inherited from PHSolidStatePrivate
bool bFrozen
 フリーズ状態か
 
bool bUpdated
 複数のエンジンでSolidの更新を管理するためのフラグ
 
Vec3d nextForce
 次の積分でこの剛体に加わわる力(World系)
 
Vec3d nextTorque
 次の積分でこの剛体に加わわるトルク(World系)
 
Vec3d force
 前の積分でこの剛体に加わった力(World系)
 
Vec3d torque
 前の積分でこの剛体に加わったトルク(World系)
 
Vec3d accel
 
Vec3d angAccel
 

Protected メソッド

Vec3d Euler (const Matrix3d &I, const Vec3d &t, const Vec3d &w)
 オイラーの運動方程式 慣性行列は対角行列を前提.
 
virtual void AfterSetDesc ()
 SetDesc()のあとに呼ばれる
 
- 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()の前に呼ばれる
 

Protected 変数

PHIntegrationMode integrationMode
 積分方式
 
- Protected 変数 inherited from NamedObject
UTString name
 名前
 
NameManagernameManager
 名前の検索や重複管理をするもの.SceneやSDKなど.
 

LCP関連補助変数

PHConstraintEngineengine
 
PHTreeNodetreeNode
 関節系を構成している場合の対応するノード
 
double minv
 質量の逆数
 
Matrix3d Iinv
 慣性行列の逆行列
 
SpatialMatrix Minv
 
SpatialVector f
 ローカル座標での外力
 
SpatialVector v
 ローカル座標での現在の速度
 
SpatialVector dv0
 外力のみによる速度変化
 
SpatialVector dv
 外力と拘束力による速度変化
 
SpatialVector dV
 Correctionによる移動量,回転量
 
double velocityNorm
 
double angVelocityNorm
 
void UpdateCacheLCP (double dt)
 LCP関連補助変数の初期化。毎ステップLCPの前に呼ばれる。
 
virtual void UpdateVelocity (double *dt)
 dvを速度に足し込む
 
virtual void UpdatePosition (double dt)
 速度を位置に足し込む。UpdateVelocity()の後でUpdatePosition()ならば、シンプレクティック数値積分になる。
 
bool IsArticulated ()
 ABAの支配下にあるかどうか
 

Additional Inherited Members

- 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からメモリブロックに戻す.
 

関数

Vec3d GetVelocity ( )
inlinevirtual

質量中心の速度の取得

PHBodyを実装しています。

参照先 PHSolidState::velocity.

void SetGravity ( bool  bOn)

(最後のStep()での)剛体の質量中心の加速度 重力を加えるかどうか設定


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