From f022884735f63de730c0d32cd8259c66d7d67c96 Mon Sep 17 00:00:00 2001 From: "SND\\wo80_cp" Date: Wed, 27 Aug 2014 16:21:47 +0000 Subject: [PATCH] Point properties are writable now git-svn-id: https://triangle.svn.codeplex.com/svn@75299 0e2699bc-83d4-4a8f-98e7-55e24ab8c7a5 --- Triangle.NET/Triangle/Geometry/ITriangle.cs | 2 +- Triangle.NET/Triangle/Geometry/Point.cs | 15 ++++++------ Triangle.NET/Triangle/IO/InputTriangle.cs | 1 + Triangle.NET/Triangle/Mesh.cs | 2 +- Triangle.NET/Triangle/Topology/DCEL/Face.cs | 6 +++-- .../Triangle/Topology/DCEL/HalfEdge.cs | 10 +++++++- Triangle.NET/Triangle/Topology/DCEL/Vertex.cs | 24 +++++++++++++++++++ Triangle.NET/Triangle/Topology/Triangle.cs | 3 ++- 8 files changed, 50 insertions(+), 13 deletions(-) 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; } } ///