Springhead
An open source physics engine for virtual reality, haptics and motion generation.
構造体 PHSolidIf

剛体のインタフェース

#include <SprPHSolid.h>

PHSolidIfに対する継承グラフ

Public メソッド

 SPR_IFDEF (PHSolid)
 
void AddForce (Vec3d f)
 力を質量中心に加える [詳細]
 
void AddTorque (Vec3d t)
 トルクを加える [詳細]
 
void AddForce (Vec3d f, Vec3d r)
 力を指定した作用点に加える [詳細]
 
double GetMass ()
 質量を取得する [詳細]
 
double GetMassInv ()
 質量の逆数を取得する [詳細]
 
void SetMass (double m)
 質量を設定する [詳細]
 
void SetCenterOfMass (const Vec3d &center)
 質量中心を設定する [詳細]
 
Matrix3d GetInertia ()
 慣性テンソルを取得する [詳細]
 
Matrix3d GetInertiaInv ()
 慣性テンソルの逆数を取得する [詳細]
 
Matrix3d GetGlobalInertia ()
 グローバル回転の慣性テンソルを取得する [詳細]
 
void SetInertia (const Matrix3d &I)
 慣性テンソルを設定する [詳細]
 
void CompInertia ()
 形状と密度から重心,質量,慣性テンソルを自動的に設定する
 
void SetFramePosition (const Vec3d &p)
 剛体の位置を設定する [詳細]
 
void SetCenterPosition (const Vec3d &p)
 剛体の位置を設定する [詳細]
 
Vec3d GetDeltaPosition () const
 剛体の前のステップからの並進移動量を返す [詳細]
 
Vec3d GetDeltaPosition (const Vec3d &p) const
 
Quaterniond GetOrientation () const
 剛体の向きを取得する [詳細]
 
void SetOrientation (const Quaterniond &q)
 剛体の向きを設定する [詳細]
 
void SetPose (const Posed &p)
 剛体の位置と向きを設定する [詳細]
 
void SetVelocity (const Vec3d &v)
 剛体の速度を設定する [詳細]
 
void SetAngularVelocity (const Vec3d &av)
 剛体の角速度を設定する [詳細]
 
void SetDv (const SpatialVector &a)
 剛体の速度の変化量を設定する [詳細]
 
Vec3d GetForce () const
 最後のステップで、拘束力以外に剛体に加わった外力を取得する。 拘束力は PHConstraint とその派生クラスから取得しなければならない。 [詳細]
 
Vec3d GetTorque () const
 最後のステップで、拘束力以外に剛体に加わった外力トルクを取得する。 拘束力は PHConstraint とその派生クラスから取得しなければならない。 [詳細]
 
void SetGravity (bool bOn)
 重力を有効/無効化する [詳細]
 
void SetDynamical (bool bOn)
 物理法則に従うかどうかを有効/無効化する [詳細]
 
bool IsDynamical ()
 物理法則に従うかどうかを取得する [詳細]
 
void SetStationary (bool bOn)
 
bool IsStationary ()
 
PHTreeNodeIfGetTreeNode ()
 ツリーノードを取得する CreateRootNode,CreateTreeNodeによってツリーノードが割り当てられている場合, そのノードを返す.それ以外の場合はNULLを返す.
 
void UpdateCacheLCP (double dt)
 LCP関連補助変数の初期化する
 
- Public メソッド inherited from PHBodyIf
 SPR_IFDEF (PHBody)
 
Posed GetPose () const
 剛体の位置と向きを取得する [詳細]
 
Vec3d GetVelocity () const
 剛体の速度を取得する [詳細]
 
Vec3d GetAngularVelocity () const
 剛体の角速度を取得する [詳細]
 
Vec3d GetCenterOfMass ()
 質量中心を取得する [詳細]
 
Vec3d GetFramePosition ()
 剛体の位置を取得する [詳細]
 
Vec3d GetCenterPosition ()
 剛体の質量中心の位置を取得する [詳細]
 
bool IsDynamical ()
 動く物体かどうか
 
bool IsFrozen ()
 速度が0になり、計算省略のために凍らせているかどうか
 
void AddShape (CDShapeIf *shape)
 剛体に形状を登録する [詳細]
 
void AddShapes (CDShapeIf **shBegin, CDShapeIf **shEnd)
 
void RemoveShape (int index)
 剛体から形状を取り外す [詳細]
 
void RemoveShapes (int idxBegin, int idxEnd)
 
void RemoveShape (CDShapeIf *shape)
 剛体から形状を取り外す [詳細]
 
int NShape ()
 登録されている形状の個数を取得する [詳細]
 
CDShapeIfGetShape (int index)
 登録されている形状を取得する [詳細]
 
Posed GetShapePose (int index)
 形状の位置と向きを取得する [詳細]
 
void SetShapePose (int index, const Posed &pose)
 形状の位置と向きを設定する [詳細]
 
void ClearShape ()
 形状をClearする [詳細]
 
void GetBBox (Vec3d &bbmin, Vec3d &bbmax, bool world)
 Bounding boxを取得.必要なら再計算 [詳細]
 
bool InvalidateBbox ()
 Bounding Box キャッシュの無効化. [詳細]
 
- Public メソッド inherited from SceneObjectIf
 SPR_IFDEF (SceneObject)
 
SceneIfGetScene ()
 所属Sceneの取得
 
SceneObjectIfCloneObject ()
 自分を所属Sceneに複製する
 
- Public メソッド inherited from NamedObjectIf
 SPR_IFDEF (NamedObject)
 
const char * GetName () const
 名前の取得
 
void SetName (const char *n)
 名前の設定
 
NameManagerIfGetNameManager ()
 名前管理オブジェクトの取得
 
- Public メソッド inherited from ObjectIf
 SPR_IFDEF (Object)
 
ObjectIfGetObjectIf ()
 
const ObjectIfGetObjectIf () const
 
int DelRef () const
 
void Print (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含む。
 
void PrintShort (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含まない。
 
void DumpObjectR (std::ostream &os, int level=0) const
 オブジェクトツリーのメモリイメージをダンプ
 
int AddRef ()
 
int RefCount ()
 
size_t NChildObject () const
 子オブジェクトの数
 
ObjectIfGetChildObject (size_t pos)
 子オブジェクトの取得
 
const ObjectIfGetChildObject (size_t pos) const
 
bool AddChildObject (ObjectIf *o)
 子オブジェクトの追加.複数のオブジェクトの子オブジェクトとして追加してよい. 例えば,GRFrameはツリーを作るが,全ノードがGRSceneの子でもある.
 
bool DelChildObject (ObjectIf *o)
 子オブジェクトの削除
 
void Clear ()
 すべての子オブジェクトの削除と、プロパティのクリア
 
ObjectIfCreateObject (const IfInfo *info, const void *desc)
 オブジェクトを作成し,AddChildObject()を呼ぶ.
 
template<class T >
ObjectIfCreateObject (const T &desc)
 CreateObjectを呼び出すユーティリティ関数
 
const void * GetDescAddress () const
 デスクリプタの読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetDesc()は実装されていることが多い.
 
bool GetDesc (void *desc) const
 デスクリプタの読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetDescAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetDesc (const void *desc)
 デスクリプタの設定
 
size_t GetDescSize () const
 デスクリプタのサイズ
 
const void * GetStateAddress () const
 状態の読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetState()は実装されていることがある.
 
bool GetState (void *state) const
 状態の読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetStateAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetState (const void *state)
 状態の設定
 
bool WriteStateR (std::ostream &fout)
 状態の書き出し
 
bool WriteState (std::string fileName)
 
bool ReadStateR (std::istream &fin)
 状態の読み込み
 
bool ReadState (std::string fileName)
 
size_t GetStateSize () const
 状態のサイズ
 
void ConstructState (void *m) const
 メモリブロックを状態型に初期化
 
void DestructState (void *m) const
 状態型をメモリブロックに戻す
 

関数

void AddForce ( Vec3d  f)
引数
f
void AddForce ( Vec3d  f,
Vec3d  r 
)
引数
f力(ワールド座標系)
r作用点の位置(ワールド座標系)
void AddTorque ( Vec3d  t)
引数
tトルク
Vec3d GetDeltaPosition ( ) const
引数
pos重心からの相対位置.この位置の並進移動量を返す.
戻り値
前のステップからの並進移動量
Vec3d GetForce ( ) const
戻り値
剛体に加えられた力(World系)
Matrix3d GetGlobalInertia ( )
戻り値
慣性テンソル
Matrix3d GetInertia ( )
戻り値
慣性テンソル
Matrix3d GetInertiaInv ( )
戻り値
慣性テンソルの逆数
double GetMass ( )
戻り値
質量
double GetMassInv ( )
戻り値
質量の逆数
Quaterniond GetOrientation ( ) const
戻り値
シーンに対する剛体の向き
Vec3d GetTorque ( ) const
戻り値
剛体に加えられたトルク(World系、剛体の重心周り)
bool IsDynamical ( )
戻り値
trueならば剛体は物理法則にしたがって運動する.

参照元 MyApp::OnStep().

void SetAngularVelocity ( const Vec3d av)
引数
avシーンに対する剛体の角速度

参照元 SampleApp::Drop().

void SetCenterOfMass ( const Vec3d center)
引数
center質量中心の位置(剛体座標系)
void SetCenterPosition ( const Vec3d p)
引数
pシーンに対する剛体の質量中心の位置(World)
void SetDv ( const SpatialVector a)
引数
aシーンに対する剛体の速度の変化量
void SetDynamical ( bool  bOn)
引数
bOntrueならば剛体は物理法則にしたがって運動する. 物理法則に従わない剛体も,SetPose,SetVelocityなどの関数による位置や速度の更新は 可能です.

参照元 MyApp::BuildScene(), IKSampleApp::BuildScene(), VirtualHumanApp::BuildScene(), ShoulderJointLimitApp::BuildScene(), VTrajSampleApp::BuildScene(), FWOptimizerSample::BuildScene(), と SampleApp::CreateFloor().

void SetFramePosition ( const Vec3d p)
void SetGravity ( bool  bOn)
引数
bOntrueならば剛体に重力が加わる.falseならば加わらない.
void SetInertia ( const Matrix3d I)
引数
I慣性テンソル
void SetMass ( double  m)
引数
m質量
void SetOrientation ( const Quaterniond q)
引数
qシーンに対する剛体の向き

参照元 MyApp::BuildScene(), SampleApp::Drop(), と MyApp::OnAction().

void SetPose ( const Posed p)
引数
pシーンに対する剛体の位置と向き

参照元 MyApp::BuildScene(), と MyApp::OnStep().

void SetVelocity ( const Vec3d v)
引数
vシーンに対する剛体の質量中心の速度

参照元 SampleApp::Drop(), と MyApp::OnStep().


この構造体の説明は次のファイルから生成されました: