/// <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)); } )); } }
/// <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)); } ); } }