Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
剛体のインタフェース
#include <SprPHSolid.h>
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 ¢er) |
質量中心を設定する [詳細] | |
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 () |
PHTreeNodeIf * | GetTreeNode () |
ツリーノードを取得する 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 () |
登録されている形状の個数を取得する [詳細] | |
CDShapeIf * | GetShape (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) | |
SceneIf * | GetScene () |
所属Sceneの取得 | |
SceneObjectIf * | CloneObject () |
自分を所属Sceneに複製する | |
Public メソッド inherited from NamedObjectIf | |
SPR_IFDEF (NamedObject) | |
const char * | GetName () const |
名前の取得 | |
void | SetName (const char *n) |
名前の設定 | |
NameManagerIf * | GetNameManager () |
名前管理オブジェクトの取得 | |
Public メソッド inherited from ObjectIf | |
SPR_IFDEF (Object) | |
ObjectIf * | GetObjectIf () |
const ObjectIf * | GetObjectIf () 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 |
子オブジェクトの数 | |
ObjectIf * | GetChildObject (size_t pos) |
子オブジェクトの取得 | |
const ObjectIf * | GetChildObject (size_t pos) const |
bool | AddChildObject (ObjectIf *o) |
子オブジェクトの追加.複数のオブジェクトの子オブジェクトとして追加してよい. 例えば,GRFrameはツリーを作るが,全ノードがGRSceneの子でもある. | |
bool | DelChildObject (ObjectIf *o) |
子オブジェクトの削除 | |
void | Clear () |
すべての子オブジェクトの削除と、プロパティのクリア | |
ObjectIf * | CreateObject (const IfInfo *info, const void *desc) |
オブジェクトを作成し,AddChildObject()を呼ぶ. | |
template<class T > | |
ObjectIf * | CreateObject (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 AddTorque | ( | Vec3d | t | ) |
t | トルク |
Vec3d GetDeltaPosition | ( | ) | const |
pos | 重心からの相対位置.この位置の並進移動量を返す. |
Vec3d GetForce | ( | ) | const |
Matrix3d GetGlobalInertia | ( | ) |
Matrix3d GetInertia | ( | ) |
Matrix3d GetInertiaInv | ( | ) |
double GetMass | ( | ) |
double GetMassInv | ( | ) |
Quaterniond GetOrientation | ( | ) | const |
Vec3d GetTorque | ( | ) | const |
bool IsDynamical | ( | ) |
参照元 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 | ) |
bOn | trueならば剛体は物理法則にしたがって運動する. 物理法則に従わない剛体も,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 | ) |
bOn | trueならば剛体に重力が加わる.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().