対処しなければならないクワッドの数を減らすことで、問題をより簡単にすることができる場合があります。
四角形の一部が閉じたシェルを形成していることがわかります。したがって、これらのクワッドはエッジで接続されます。四角形の 3 つの相互に隣接するエッジ (つまり、エッジが閉じたループを形成する) が別の四角形のエッジと重なる場合、これらの四角形はシェルの一部である可能性があります (これらの相互に隣接するエッジは 2D 領域の境界として機能します。その領域をクワッドの「接続面」と呼びます)。これらの「シェル候補」のリストを作成します。ここで、このリストを調べて、別の候補と重ならないエッジを持つ候補 (つまり、エッジがリストにないクワッドのエッジと重なる) を除外します。クワッドを削除できなくなるまで、このカリング プロセスを繰り返します。あなたが残したものは、あなたの殻になるはずです。「非シェル クワッド」を作成する
このシェルの周りにバウンディング ボックス (または球、楕円など) を描画します。ここで、非シェル クワッドのリストを調べて、境界領域の外側にあるクワッドを除外します。これらは間違いなく内部にはありません。
残りの非シェル クワッドを取ります。これらは、形状の内部にある場合とない場合があります。これらの四角形のそれぞれについて、バウンディング シェイプのサーフェスで終わる各面の中心から四角形に垂直な線を引きます。各線をトレースし、線がシェル リスト内のクワッドの「接続された面」を何回通過するかを数えます。この数が奇数の場合、その頂点は形状の内部にあります。偶数の場合、頂点は外側にあります。頂点が内側か外側かに基づいて、四角形が内側か外側かを判断できます。