凸メッシュ(Fig. #.#.#)のクラスはCDConvexMeshです. 凸メッシュとは凹みや穴を持たない多面体です. 頂点座標を指定することで自由な形を作成することができます.
CDConvexMeshDesc |
||
vector<Vec3f> |
vertices |
頂点座標の配列 |
CDConvexMeshIf |
||
Vec3f* GetVertices() |
頂点配列の先頭アドレス |
|
int NVertex() |
頂点数 |
|
CDFaceIf* GetFace(int i) |
番目の面 |
|
int NFace() |
面数 |
凸メッシュが作成される際,CDConvexMeshDesc::verticesに格納された頂点を内包する最小の凸多面体(凸包)が作成されます. 多面体の面を表すCDFaceのインタフェースを以下に示します.
CDFaceIf |
||
int* GetIndices() |
頂点インデックス配列の先頭アドレス |
|
int NIndex() |
面の頂点数 |
NIndexは面を構成する頂点の数を返します(通常かです). 面は頂点配列を直接保有せず,インデックス配列として間接的に頂点を参照します. したがって,面の頂点座標を得るには
// given CDConvexMeshIf* mesh CDFaceIf* face = mesh->GetFace(0); // get 0-th face int* idx = face->GetIndices(); Vec3f v = mesh->GetVertices()[idx[0]]; // get 0-th vertex
とします.