diff --git a/Triangle.NET/Triangle/Geometry/ITriangle.cs b/Triangle.NET/Triangle/Geometry/ITriangle.cs
index 93d78d0..7b22f16 100644
--- a/Triangle.NET/Triangle/Geometry/ITriangle.cs
+++ b/Triangle.NET/Triangle/Geometry/ITriangle.cs
@@ -16,7 +16,7 @@ namespace TriangleNet.Geometry
///
/// The triangle id.
///
- int ID { get; }
+ int ID { get; set; }
///
/// First vertex id of the triangle.
diff --git a/Triangle.NET/Triangle/Geometry/Point.cs b/Triangle.NET/Triangle/Geometry/Point.cs
index 7f70192..72145a4 100644
--- a/Triangle.NET/Triangle/Geometry/Point.cs
+++ b/Triangle.NET/Triangle/Geometry/Point.cs
@@ -7,9 +7,6 @@
namespace TriangleNet.Geometry
{
using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
///
/// Represents a 2D point.
@@ -41,35 +38,39 @@ namespace TriangleNet.Geometry
#region Public properties
///
- /// Gets the vertex id.
+ /// Gets or sets the vertex id.
///
public int ID
{
get { return this.id; }
+ set { this.id = value; }
}
///
- /// Gets the vertex x coordinate.
+ /// Gets or sets the vertex x coordinate.
///
public double X
{
get { return this.x; }
+ set { this.x = value; }
}
///
- /// Gets the vertex y coordinate.
+ /// Gets or sets the vertex y coordinate.
///
public double Y
{
get { return this.y; }
+ set { this.y = value; }
}
///
- /// Gets the vertex boundary mark.
+ /// Gets or sets the vertex boundary mark.
///
public int Boundary
{
get { return this.mark; }
+ set { this.mark = value; }
}
#endregion
diff --git a/Triangle.NET/Triangle/IO/InputTriangle.cs b/Triangle.NET/Triangle/IO/InputTriangle.cs
index 32ca324..01e2a5a 100644
--- a/Triangle.NET/Triangle/IO/InputTriangle.cs
+++ b/Triangle.NET/Triangle/IO/InputTriangle.cs
@@ -31,6 +31,7 @@ namespace TriangleNet.IO
public int ID
{
get { return 0; }
+ set { }
}
///
diff --git a/Triangle.NET/Triangle/Mesh.cs b/Triangle.NET/Triangle/Mesh.cs
index 1749fe5..fd41cff 100644
--- a/Triangle.NET/Triangle/Mesh.cs
+++ b/Triangle.NET/Triangle/Mesh.cs
@@ -187,7 +187,7 @@ namespace TriangleNet
behavior.MaxAngle = quality.MaximumAngle;
behavior.MaxArea = quality.MaximumArea;
- // TODO: behavior.VarArea = quality.VariableArea;
+ behavior.VarArea = quality.VariableArea;
this.Refine();
}
diff --git a/Triangle.NET/Triangle/Topology/DCEL/Face.cs b/Triangle.NET/Triangle/Topology/DCEL/Face.cs
index e3f6d47..14b4217 100644
--- a/Triangle.NET/Triangle/Topology/DCEL/Face.cs
+++ b/Triangle.NET/Triangle/Topology/DCEL/Face.cs
@@ -26,6 +26,7 @@ namespace TriangleNet.Topology.DCEL
#endregion
internal int id;
+ internal int mark;
internal Point generator;
@@ -33,11 +34,12 @@ namespace TriangleNet.Topology.DCEL
internal bool bounded;
///
- /// Gets the face id.
+ /// Gets or sets the face id.
///
public int ID
{
get { return id; }
+ set { id = value; }
}
///
@@ -81,7 +83,7 @@ namespace TriangleNet.Topology.DCEL
public override string ToString()
{
- return string.Format("F-ID {0}", generator.id);
+ return string.Format("F-ID {0}", generator == null ? id : generator.id);
}
}
}
diff --git a/Triangle.NET/Triangle/Topology/DCEL/HalfEdge.cs b/Triangle.NET/Triangle/Topology/DCEL/HalfEdge.cs
index 3f72422..bff3dcc 100644
--- a/Triangle.NET/Triangle/Topology/DCEL/HalfEdge.cs
+++ b/Triangle.NET/Triangle/Topology/DCEL/HalfEdge.cs
@@ -9,6 +9,7 @@ namespace TriangleNet.Topology.DCEL
public class HalfEdge
{
internal int id;
+ internal int mark;
internal Vertex origin;
internal Face face;
@@ -16,11 +17,18 @@ namespace TriangleNet.Topology.DCEL
internal HalfEdge next;
///
- /// Gets the half-edge id.
+ /// Gets or sets the half-edge id.
///
public int ID
{
get { return id; }
+ set { id = value; }
+ }
+
+ public int Boundary
+ {
+ get { return mark; }
+ set { mark = value; }
}
///
diff --git a/Triangle.NET/Triangle/Topology/DCEL/Vertex.cs b/Triangle.NET/Triangle/Topology/DCEL/Vertex.cs
index 966d916..2929e09 100644
--- a/Triangle.NET/Triangle/Topology/DCEL/Vertex.cs
+++ b/Triangle.NET/Triangle/Topology/DCEL/Vertex.cs
@@ -6,6 +6,8 @@
namespace TriangleNet.Topology.DCEL
{
+ using System.Collections.Generic;
+
public class Vertex : TriangleNet.Geometry.Point
{
internal HalfEdge leaving;
@@ -40,5 +42,27 @@ namespace TriangleNet.Topology.DCEL
{
this.leaving = leaving;
}
+
+ ///
+ /// Enumerates all half-edges leaving this vertex.
+ ///
+ ///
+ public IEnumerable EnumerateEdges()
+ {
+ var edge = this.Leaving;
+ int first = edge.ID;
+
+ do
+ {
+ yield return edge;
+
+ edge = edge.Twin.Next;
+ } while (edge.ID != first);
+ }
+
+ public override string ToString()
+ {
+ return string.Format("V-ID {0}", base.id);
+ }
}
}
diff --git a/Triangle.NET/Triangle/Topology/Triangle.cs b/Triangle.NET/Triangle/Topology/Triangle.cs
index 9e42182..30379a4 100644
--- a/Triangle.NET/Triangle/Topology/Triangle.cs
+++ b/Triangle.NET/Triangle/Topology/Triangle.cs
@@ -106,11 +106,12 @@ namespace TriangleNet.Topology
#region Public properties
///
- /// Gets the triangle id.
+ /// Gets or sets the triangle id.
///
public int ID
{
get { return this.id; }
+ set { this.id = value; }
}
///