public bool IsSimple()
 {
     for (int i = 0; i < Count; ++i)
     {
         int iplus = NextIndex(i);
         for (int j = i + 1; j < Count; ++j)
         {
             int     jplus = NextIndex(j);
             Point2D temp  = null;
             if (TriangulationUtil.LinesIntersect2D(mPoints[i], mPoints[iplus], mPoints[j], mPoints[jplus], ref temp, mEpsilon))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
 public static bool LinesIntersect2D(Point2D ptStart0, Point2D ptEnd0, Point2D ptStart1, Point2D ptEnd1, ref Point2D pIntersectionPt, double epsilon)
 {
     return(TriangulationUtil.LinesIntersect2D(ptStart0, ptEnd0, ptStart1, ptEnd1, true, true, false, ref pIntersectionPt, epsilon));
 }