コード例 #1
0
int IsDelaunay(Simplex* simplex, Vertex* point)
{ 
  double orientation = orient3dfast(simplex->m_SimplexPoints[0]->m_Point, 
                                    simplex->m_SimplexPoints[1]->m_Point, 
                                    simplex->m_SimplexPoints[2]->m_Point, 
                                    simplex->m_SimplexPoints[3]->m_Point);


  if (orientation <= 0)
  {
    printf("orientation error: %p, %lf\n",simplex,orientation);
  }

  double inSph = inspherefast(  simplex->m_SimplexPoints[0]->m_Point,
                                simplex->m_SimplexPoints[1]->m_Point, 
                                simplex->m_SimplexPoints[2]->m_Point, 
								simplex->m_SimplexPoints[3]->m_Point, point->m_Point); 

            
  if (inSph == 0) 
	  return -1;
                
  return inSph < 0;

}
コード例 #2
0
ファイル: PredWrapper.cpp プロジェクト: ltm920716/gDel3D
Side PredWrapper::doInsphereFast( Tet tet, int v ) const
{
    if ( v == _infIdx || tet.has( _infIdx ) ) 
        return SideZero; 

    const RealType* p[]  = { 
		getPoint( tet._v[0] )._p, 
		getPoint( tet._v[1] )._p, 
		getPoint( tet._v[2] )._p, 
		getPoint( tet._v[3] )._p, 
		getPoint( v )._p
	}; 

    const RealType det = inspherefast( p[0], p[1], p[2], p[3], p[4] );
    const Side s       = sphToSide( det );
    return s;
}