diff --git a/Triangle.NET/TestApp/FormMain.cs b/Triangle.NET/TestApp/FormMain.cs index e328b66..66043b5 100644 --- a/Triangle.NET/TestApp/FormMain.cs +++ b/Triangle.NET/TestApp/FormMain.cs @@ -626,8 +626,13 @@ namespace MeshExplorer { if (mesh != null) { - mesh.Check(); - ShowLog(); + bool isConsistent, isDelaunay; + mesh.Check(out isConsistent, out isDelaunay); + + if (!isConsistent || !isDelaunay) + { + ShowLog(); + } } } diff --git a/Triangle.NET/Triangle/Geometry/Edge.cs b/Triangle.NET/Triangle/Geometry/Edge.cs index c754a0f..07d7bc6 100644 --- a/Triangle.NET/Triangle/Geometry/Edge.cs +++ b/Triangle.NET/Triangle/Geometry/Edge.cs @@ -22,7 +22,8 @@ namespace TriangleNet.Geometry /// public int P0 { - get; private set; + get; + private set; } /// @@ -30,7 +31,8 @@ namespace TriangleNet.Geometry /// public int P1 { - get; private set; + get; + private set; } /// @@ -38,7 +40,8 @@ namespace TriangleNet.Geometry /// public int Boundary { - get; private set; + get; + private set; } /// diff --git a/Triangle.NET/Triangle/Geometry/EdgeEnumerator.cs b/Triangle.NET/Triangle/Geometry/EdgeEnumerator.cs index 5984e95..81ba7fc 100644 --- a/Triangle.NET/Triangle/Geometry/EdgeEnumerator.cs +++ b/Triangle.NET/Triangle/Geometry/EdgeEnumerator.cs @@ -20,6 +20,7 @@ namespace TriangleNet.Geometry IEnumerator triangles; Otri tri = default(Otri); Otri neighbor = default(Otri); + Osub sub = default(Osub); Edge current; Vertex p1, p2; @@ -82,7 +83,10 @@ namespace TriangleNet.Geometry p1 = tri.Org(); p2 = tri.Dest(); - current = new Edge(p1.id, p2.id); + tri.SegPivot(ref sub); + + // Boundary mark of dummysub is 0, so we don't need to worry about that. + current = new Edge(p1.id, p2.id, sub.seg.boundary); } tri.orient++; diff --git a/Triangle.NET/Triangle/Geometry/InputGeometry.cs b/Triangle.NET/Triangle/Geometry/InputGeometry.cs index 66afa94..1461137 100644 --- a/Triangle.NET/Triangle/Geometry/InputGeometry.cs +++ b/Triangle.NET/Triangle/Geometry/InputGeometry.cs @@ -86,7 +86,7 @@ namespace TriangleNet.Geometry /// /// Gets the list of input segments. /// - public IEnumerable Segments + public ICollection Segments { get { return segments; } } @@ -94,7 +94,7 @@ namespace TriangleNet.Geometry /// /// Gets the list of input holes. /// - public IEnumerable Holes + public ICollection Holes { get { return holes; } } @@ -102,7 +102,7 @@ namespace TriangleNet.Geometry /// /// Gets the list of regions. /// - public IEnumerable Regions + public ICollection Regions { get { return regions; } } diff --git a/Triangle.NET/Triangle/Mesh.cs b/Triangle.NET/Triangle/Mesh.cs index 9f68495..0d3214b 100644 --- a/Triangle.NET/Triangle/Mesh.cs +++ b/Triangle.NET/Triangle/Mesh.cs @@ -516,10 +516,12 @@ namespace TriangleNet /// /// Check mesh consistency and (constrained) Delaunay property. /// - public void Check() + /// Value indicating if mesh topology is consistent. + /// Value indicating if mesh is Delaunay. + public void Check(out bool isConsistent, out bool isDelaunay) { - quality.CheckMesh(); - quality.CheckDelaunay(); + isConsistent = quality.CheckMesh(); + isDelaunay = quality.CheckDelaunay(); } #region Options diff --git a/Triangle.NET/Triangle/Quality.cs b/Triangle.NET/Triangle/Quality.cs index 4ad3afe..5857090 100644 --- a/Triangle.NET/Triangle/Quality.cs +++ b/Triangle.NET/Triangle/Quality.cs @@ -123,21 +123,20 @@ namespace TriangleNet } } - if (horrors == 0) + if (horrors == 0 && Behavior.Verbose) { - if (Behavior.Verbose) - { - logger.Info("In my studied opinion, the mesh appears to be consistent."); - } - } - else if (horrors == 1) - { - logger.Info("Precisely one festering wound discovered."); - } - else - { - logger.Info(horrors + " abominations witnessed."); + logger.Info("Mesh topology appears to be consistent."); + //logger.Info("In my studied opinion, the mesh appears to be consistent."); } + //else if (horrors == 1) + //{ + // logger.Info("Precisely one festering wound discovered."); + //} + //else + //{ + // logger.Info(horrors + " abominations witnessed."); + //} + // Restore the status of exact arithmetic. Behavior.NoExact = saveexact; @@ -212,21 +211,21 @@ namespace TriangleNet } } - if (horrors == 0) + + if (horrors == 0 && Behavior.Verbose) { - if (Behavior.Verbose) - { - logger.Info("By virtue of my perceptive intelligence, I declare the mesh Delaunay."); - } - } - else if (horrors == 1) - { - logger.Info("Precisely one terrifying transgression identified."); - } - else - { - logger.Info(horrors + " obscenities viewed with horror."); + logger.Info("Mesh is Delaunay."); + //logger.Info("By virtue of my perceptive intelligence, I declare the mesh Delaunay."); } + //else if (horrors == 1) + //{ + // logger.Info("Precisely one terrifying transgression identified."); + //} + //else + //{ + // logger.Info(horrors + " obscenities viewed with horror."); + //} + // Restore the status of exact arithmetic. Behavior.NoExact = saveexact;