public static void Triangulate(TriangulationContext tcx) { switch (tcx.Algorithm) { case TriangulationAlgorithm.DTSweep: default: DTSweep.Triangulate((DTSweepContext)tcx); break; } }
/// <summary> /// Creates constraints and populates the context with points /// </summary> /// <param name="tcx">The context</param> public void Prepare(TriangulationContext tcx) { if (triangles == null) { triangles = new List<DelaunayTriangle>(points.Count); } else { triangles.Clear(); } // Outer constraints for (int i = 0; i < points.Count - 1; i++) tcx.NewConstraint(points[i], points[i + 1]); tcx.NewConstraint(points[0], points[points.Count - 1]); tcx.Points.AddRange(points); // Hole constraints if (holes != null) { foreach (Triangulatable p in holes) { for (int i = 0; i < p.points.Count - 1; i++) tcx.NewConstraint(p.points[i], p.points[i + 1]); tcx.NewConstraint(p.points[0], p.points[p.points.Count - 1]); tcx.Points.AddRange(p.points); } } if (steinerPoints != null) { tcx.Points.AddRange(steinerPoints); } }