![]() |
Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
交差部分の解析をするクラス.(交差部分の形状を求める/初回の法線を積分で求める)
#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系に変換する 変換行列が入っていなければならない.