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

交差部分の解析をするクラス.(交差部分の形状を求める/初回の法線を積分で求める)

#include <CDDetectorImp.h>

Public 型

typedef std::vector
< CDContactAnalysisFace * > 
Vtxs
 
typedef std::vector
< CDContactAnalysisFace
VtxBuffer
 

Public メソッド

CDContactAnalysisFace ** FindIntersection (CDShapePair *cp)
 共通部分に含まれる共有点を求める. [詳細]
 
void IntegrateNormal (CDShapePair *cp)
 交差部分の形状の法線を積分して,衝突の法線を求める. 物体AとBの衝突の法線は,交差部分の面のうち,Aの面の法線の積分 からBの面の法線の積分を引いたものになる.
 
void CalcNormal (CDShapePair *cp)
 法線の計算.前回の法線の向きに物体を動かし, 物体を離して最近傍点を求める.
 

Public 変数

bool isValid
 交差部分のポリゴンは有効?
 

Static Public 変数

static Vtxs vtxs
 QuickHullの頂点
 
static VtxBuffer vtxBuffer
 
static CDQHPlanes
< CDContactAnalysisFace
planes
 
 

関数

CDContactAnalysisFace** FindIntersection ( CDShapePair cp)

返り値は共有点. cp の shapePoseW に shape[0], shape[1]の頂点をWorld系に変換する変換行列が入っていなければならない. また、GJKで求めたcommon pointを入れておくと収束が早くなるかも。 共通部分の共有点を求める。 戻り値は共有点があるとtrue, ないとfalseを返す ある場合はcorrectionCommonPointが更新される。共通部分の形状を求める. 結果は,共通部分を構成する面を vtxs.begin() から返り値までに, 共通部分を構成する頂点を, planes.begin から planes.end のうちの deleted==false のものに入れて返す. cp の shapePoseW に shape[0], shape[1]の頂点をWorld系に変換する 変換行列が入っていなければならない.


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