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 @@
+