Beispiel #1
0
 /// <summary>
 /// Returns the triangles subdivision of the current planar subdivision.
 /// </summary>
 /// <remarks>The triangles might contains virtual points that do not belongs to the inserted points, if you do not want those points, set <paramref name="includeVirtualPoints"> to false</paramref></remarks>
 /// <returns>The triangles subdivision in the current planar subdivision</returns>
 public Triangle2DF[] GetDelaunayTriangles(bool includeVirtualPoints = false)
 {
     using (VectorOfTriangle2DF triangleVec = new VectorOfTriangle2DF())
     {
         CvInvoke.cveSubdiv2DGetTriangleList(_ptr, triangleVec);
         Triangle2DF[] result = triangleVec.ToArray();
         if (includeVirtualPoints)
         {
             return(result);
         }
         Rectangle r = new Rectangle(_roi.Location, new Size(_roi.Width + 1, _roi.Height + 1));
         return
             (Array.FindAll(result, (Triangle2DF t) =>
         {
             return
             r.Contains(Point.Round(t.V0)) &&
             r.Contains(Point.Round(t.V1)) &&
             r.Contains(Point.Round(t.V2));
         }
                            ));
     }
 }
Beispiel #2
0
 /// <summary>
 /// Returns the triangles subdivision of the current planar subdivision. 
 /// </summary>
 /// <remarks>The triangles might contains virtual points that do not belongs to the inserted points, if you do not want those points, set <paramref name="includeVirtualPoints"> to false</paramref></remarks>
 /// <returns>The triangles subdivision in the current planar subdivision</returns>
 public Triangle2DF[] GetDelaunayTriangles(bool includeVirtualPoints = false)
 {
    using (VectorOfTriangle2DF triangleVec = new VectorOfTriangle2DF())
    {
       CvInvoke.cveSubdiv2DGetTriangleList(_ptr, triangleVec);
       Triangle2DF[] result = triangleVec.ToArray();
       if (includeVirtualPoints)
          return result;
       Rectangle r = new Rectangle(_roi.Location, new Size(_roi.Width + 1, _roi.Height + 1));
       return 
          Array.FindAll(result, (Triangle2DF t) =>
          {
             return
                r.Contains(Point.Round(t.V0))
                && r.Contains(Point.Round(t.V1))
                && r.Contains(Point.Round(t.V2));
          }
       );
    }
 }