コード例 #1
0
        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();
            }
        }
コード例 #2
0
        private static void ProcessMesh(IMesh mesh, MeshResult result)
        {
            result.NumberOfTriangles += mesh.Triangles.Count;

            if (!MeshValidator.IsConsistent((Mesh)mesh))
            {
                result.Invalid += 1;
            }
        }
コード例 #3
0
ファイル: Example10.cs プロジェクト: Geri-Borbas/Triangle.NET
        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);
        }