【内積】3D空間を分ける

その他

内積は、2つのベクトルを使って3D空間を2つに分けることできます。判定には、内積の符号を使います。

コードにすると、以下のような感じになります。例えば、多角形の凹凸を調べることができます。

Point3D p0 = poly->get_vertex(iNode)->get_position();
Point3D p1 = poly->get_vertex(iNode + 1)->get_position();
Point3D p2 = poly->get_vertex(iNode + 2)->get_position();
Vector3D vec01 = p1 - p0;
Vector3D vec02 = p2 - p0;

double check = dotProduct(vec01, vec02);

if(check > 0)
{
  //  + だったら
}else
{
 //  - だったら
}