diff --git a/Triangle.NET/Triangle/Data/Segment.cs b/Triangle.NET/Triangle/Data/Segment.cs index 9e7263a..681540a 100644 --- a/Triangle.NET/Triangle/Data/Segment.cs +++ b/Triangle.NET/Triangle/Data/Segment.cs @@ -21,7 +21,7 @@ namespace TriangleNet.Data /// four pointers to vertices, plus two pointers to adjoining triangles, /// plus one boundary marker. /// - public class Segment + public class Segment : ISegment { // Hash for dictionary. Will be set by mesh instance. internal int hash; @@ -77,6 +77,8 @@ namespace TriangleNet.Data get { return this.boundary; } } + #endregion + /// /// Gets the segments endpoint. /// @@ -85,7 +87,13 @@ namespace TriangleNet.Data return this.vertices[index]; // TODO: Check range? } - #endregion + /// + /// Gets an adjoining triangle. + /// + public ITriangle GetTriangle(int index) + { + return triangles[index].triangle; + } public override int GetHashCode() { diff --git a/Triangle.NET/Triangle/Data/Triangle.cs b/Triangle.NET/Triangle/Data/Triangle.cs index 82ddf4b..ca1447c 100644 --- a/Triangle.NET/Triangle/Data/Triangle.cs +++ b/Triangle.NET/Triangle/Data/Triangle.cs @@ -8,9 +8,6 @@ namespace TriangleNet.Data { using System; - using System.Collections.Generic; - using System.Linq; - using System.Text; using TriangleNet.Geometry; /// @@ -151,7 +148,7 @@ namespace TriangleNet.Data /// /// The vertex index (0, 1 or 2). /// The segment opposite of vertex with given index. - public Segment GetSegment(int index) + public ISegment GetSegment(int index) { return subsegs[index].seg == Mesh.dummysub ? null : subsegs[index].seg; } diff --git a/Triangle.NET/Triangle/Geometry/ISegment.cs b/Triangle.NET/Triangle/Geometry/ISegment.cs new file mode 100644 index 0000000..a7cb5e4 --- /dev/null +++ b/Triangle.NET/Triangle/Geometry/ISegment.cs @@ -0,0 +1,47 @@ +// ----------------------------------------------------------------------- +// +// Triangle.NET code by Christian Woltering, http://triangle.codeplex.com/ +// +// ----------------------------------------------------------------------- + +namespace TriangleNet.Geometry +{ + using TriangleNet.Data; + + /// + /// Interface for segment geometry. + /// + public interface ISegment + { + #region Public properties + + /// + /// Gets the first endpoints vertex id. + /// + int P0 { get; } + + /// + /// Gets the seconds endpoints vertex id. + /// + int P1 { get; } + + /// + /// Gets the segment boundary mark. + /// + int Boundary { get; } + + /// + /// Gets the segments endpoint. + /// + /// The vertex index (0 or 1). + Vertex GetVertex(int index); + + /// + /// Gets an adjoining triangle. + /// + /// The triangle index (0 or 1). + ITriangle GetTriangle(int index); + + #endregion + } +} diff --git a/Triangle.NET/Triangle/Geometry/ITriangle.cs b/Triangle.NET/Triangle/Geometry/ITriangle.cs index bde827a..a7f78e6 100644 --- a/Triangle.NET/Triangle/Geometry/ITriangle.cs +++ b/Triangle.NET/Triangle/Geometry/ITriangle.cs @@ -6,10 +6,6 @@ namespace TriangleNet.Geometry { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Text; using TriangleNet.Data; /// @@ -72,7 +68,7 @@ namespace TriangleNet.Geometry /// /// The vertex index (0, 1 or 2). /// The segment opposite of vertex with given index. - Segment GetSegment(int index); + ISegment GetSegment(int index); /// /// Triangle area constraint. diff --git a/Triangle.NET/Triangle/IO/InputTriangle.cs b/Triangle.NET/Triangle/IO/InputTriangle.cs index 626c356..5a8fcc2 100644 --- a/Triangle.NET/Triangle/IO/InputTriangle.cs +++ b/Triangle.NET/Triangle/IO/InputTriangle.cs @@ -1,15 +1,13 @@ // ----------------------------------------------------------------------- // -// Original Triangle code by Jonathan Richard Shewchuk, http://www.cs.cmu.edu/~quake/triangle.html // Triangle.NET code by Christian Woltering, http://triangle.codeplex.com/ // // ----------------------------------------------------------------------- namespace TriangleNet.IO { - using System; - using TriangleNet.Geometry; using TriangleNet.Data; + using TriangleNet.Geometry; /// /// Simple triangle class for input. @@ -92,7 +90,7 @@ namespace TriangleNet.IO return null; } - public Segment GetSegment(int index) + public ISegment GetSegment(int index) { return null; } diff --git a/Triangle.NET/Triangle/Quality.cs b/Triangle.NET/Triangle/Quality.cs index a70d8a8..5884f43 100644 --- a/Triangle.NET/Triangle/Quality.cs +++ b/Triangle.NET/Triangle/Quality.cs @@ -123,19 +123,10 @@ namespace TriangleNet } } - if (horrors == 0 && Behavior.Verbose) + if (horrors == 0) // && Behavior.Verbose { 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,19 +203,10 @@ namespace TriangleNet } - if (horrors == 0 && Behavior.Verbose) + if (horrors == 0) // && Behavior.Verbose { 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; diff --git a/Triangle.NET/Triangle/Triangle.csproj b/Triangle.NET/Triangle/Triangle.csproj index 1bf10c9..0031228 100644 --- a/Triangle.NET/Triangle/Triangle.csproj +++ b/Triangle.NET/Triangle/Triangle.csproj @@ -60,6 +60,7 @@ +