内積は、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
{
// - だったら
}