private void menuToolsCheck_Click(object sender, EventArgs e) { if (mesh != null) { bool save = Log.Verbose; Log.Verbose = true; bool isConsistent = MeshValidator.IsConsistent(mesh); bool isDelaunay = MeshValidator.IsDelaunay(mesh); Log.Verbose = save; if (isConsistent) { Log.Instance.Info("Mesh topology appears to be consistent."); } if (isDelaunay) { Log.Instance.Info("Mesh is (conforming) Delaunay."); } ShowLog(); } }
private static void ProcessMesh(IMesh mesh, MeshResult result) { result.NumberOfTriangles += mesh.Triangles.Count; if (!MeshValidator.IsConsistent((Mesh)mesh)) { result.Invalid += 1; } }
public static bool Run(bool print = false) { var pts = new List <Vertex> { // The 4 corners of the rectangle. new Vertex(1.5, 1.0), new Vertex(1.5, -1.0), new Vertex(-1.5, -1.0), new Vertex(-1.5, 1.0), // The edge midpoints. new Vertex(0.0, 1.0), new Vertex(0.0, -1.0), new Vertex(1.5, 0.0), new Vertex(-1.5, 0.0) }; var r = new Random(78403); // The original rectangle. var poly = Rotate(pts, 0); for (int i = 0; i < 10; i++) { var mesh = poly.Triangulate(); var list = MeshValidator.GetDegenerateBoundaryTriangles(mesh); if (print && list.Any()) { Console.WriteLine("Iteration {0}: found {1} degenerate triangle(s) of {2}.", i, list.Count(), mesh.Triangles.Count); foreach (var t in list) { Console.WriteLine(" [{0} {1} {2}]", t.GetVertexID(0), t.GetVertexID(1), t.GetVertexID(2)); } } // Random rotation. poly = Rotate(pts, Math.PI * r.NextDouble()); } return(true); }