基本中の基本

3Dの形状を表すメッシュ情報が閉じているか(穴みたいなのが開いてないか?)の判定。

メッシュ情報というのは面で構成されていて,たとえば三角形などだ。
つまり空間上に三角形を頂点を共有させながら並べる。

でその三角形で閉じた空間が出来ているのかどうかという判定となる。
この穴が開いているのかいないのかは,3Dの形状を使う様々な分野で問題になる。

さて,どうやって判定するのがいいか?

オーソドックスな答えとしては

ポリゴンから辺のデータを作り,辺に対してポリゴンが一つしかつながっていないものはあるか?

という判定を行えばいい。

例えばc++ならこんな感じでデータを用意してあげて

class Edge
{
  int    _node[2];
  int _polygon[2];
  int    _counter;
  Edge() : _counter(0){}
};

三角形のデータ分判定をして,counterが2でないものを探す事になる。