diff --git a/Triangle.NET/TestApp/IO/GeometryWriter.cs b/Triangle.NET/TestApp/IO/GeometryWriter.cs
new file mode 100644
index 0000000..c416866
--- /dev/null
+++ b/Triangle.NET/TestApp/IO/GeometryWriter.cs
@@ -0,0 +1,89 @@
+// -----------------------------------------------------------------------
+//
+// Christian Woltering, Triangle.NET, http://triangle.codeplex.com/
+//
+// -----------------------------------------------------------------------
+
+namespace MeshExplorer.IO
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.IO;
+ using TriangleNet.Geometry;
+
+ ///
+ /// Writes an InputGeometry to standard Triangle format.
+ ///
+ public static class GeometryWriter
+ {
+ public static void Write(InputGeometry geometry, string filename)
+ {
+ using (StreamWriter writer = new StreamWriter(filename))
+ {
+ WritePoints(writer, geometry.Points, geometry.Count);
+ WriteSegments(writer, geometry.Segments);
+ WriteHoles(writer, geometry.Holes);
+ }
+ }
+
+ private static void WritePoints(StreamWriter writer, IEnumerable points, int count)
+ {
+ int attributes = 0, index = 0;
+
+ var first = points.FirstOrDefault();
+
+ if (first.Attributes != null)
+ {
+ attributes = first.Attributes.Length;
+ }
+
+ writer.WriteLine("{0} {1} {2} {3}", count, 2, attributes, 1);
+
+ foreach (var item in points)
+ {
+ // Vertex number, x and y coordinates.
+ writer.Write("{0} {1} {2}", index, item.X.ToString(Util.Nfi), item.Y.ToString(Util.Nfi));
+
+ // Write attributes.
+ for (int j = 0; j < attributes; j++)
+ {
+ writer.Write(" {0}", item.Attributes[j].ToString(Util.Nfi));
+ }
+
+ // Write the boundary marker.
+ writer.WriteLine(" {0}", item.Boundary);
+
+ index++;
+ }
+ }
+
+ private static void WriteSegments(StreamWriter writer, IEnumerable edges)
+ {
+ int index = 0;
+
+ writer.WriteLine("{0} {1}", edges.Count(), 1);
+
+ foreach (var item in edges)
+ {
+ writer.WriteLine("{0} {1} {2} {3}", index, item.P0, item.P1, item.Boundary);
+
+ index++;
+ }
+ }
+
+ private static void WriteHoles(StreamWriter writer, IEnumerable holes)
+ {
+ int index = 0;
+
+ writer.WriteLine("{0}", holes.Count());
+
+ foreach (var item in holes)
+ {
+ writer.WriteLine("{0} {1} {2}", index, item.X.ToString(Util.Nfi), item.Y.ToString(Util.Nfi));
+
+ index++;
+ }
+ }
+ }
+}
diff --git a/Triangle.NET/TestApp/Mesh Explorer.csproj b/Triangle.NET/TestApp/Mesh Explorer.csproj
index 3845269..a291fc1 100644
--- a/Triangle.NET/TestApp/Mesh Explorer.csproj
+++ b/Triangle.NET/TestApp/Mesh Explorer.csproj
@@ -106,6 +106,7 @@
+
diff --git a/Triangle.NET/Triangle/Enums.cs b/Triangle.NET/Triangle/Enums.cs
index e0d227c..0668d17 100644
--- a/Triangle.NET/Triangle/Enums.cs
+++ b/Triangle.NET/Triangle/Enums.cs
@@ -47,7 +47,11 @@ namespace TriangleNet
///
/// Create segments on the convex hull (boolean).
///
- Convex
+ Convex,
+ ///
+ /// Algorithm used for triangulation (TriangulationAlgorithm).
+ ///
+ TriangulationAlgorithm
};
///
diff --git a/Triangle.NET/Triangle/Mesh.cs b/Triangle.NET/Triangle/Mesh.cs
index ad24ec5..e36d14e 100644
--- a/Triangle.NET/Triangle/Mesh.cs
+++ b/Triangle.NET/Triangle/Mesh.cs
@@ -566,7 +566,7 @@ namespace TriangleNet
if (value)
{
behavior.MinAngle = 20.0;
- behavior.MaxAngle = 140.0;
+ behavior.MaxAngle = 0.0;
UpdateOptions();
}
@@ -656,6 +656,22 @@ namespace TriangleNet
logger.Warning("Invalid option value.", "Mesh.SetOption(int)");
}
+ ///
+ /// Set options for mesh generation.
+ ///
+ /// Mesh gerneration option.
+ /// New option value.
+ public void SetOption(Options option, TriangulationAlgorithm value)
+ {
+ if (option == Options.TriangulationAlgorithm)
+ {
+ behavior.Algorithm = value;
+ return;
+ }
+
+ logger.Warning("Invalid option value.", "Mesh.SetOption(TriangulationAlgorithm)");
+ }
+
///
/// Keeps options synchronized.
///
diff --git a/Triangle.NET/Triangle/NewLocation.cs b/Triangle.NET/Triangle/NewLocation.cs
index b2dc352..c9376b2 100644
--- a/Triangle.NET/Triangle/NewLocation.cs
+++ b/Triangle.NET/Triangle/NewLocation.cs
@@ -2500,9 +2500,9 @@ namespace TriangleNet
//double p[5];
- double[] petalx = new double[24];
- double[] petaly = new double[24];
- double[] petalr = new double[24];
+ double[] petalx = new double[2 * numpoints];
+ double[] petaly = new double[2 * numpoints];
+ double[] petalr = new double[2 * numpoints];
double[] wedges = new double[2000];
double xmid, ymid, dist, x3, y3;
@@ -2758,9 +2758,9 @@ namespace TriangleNet
//double p[5];
- double[] petalx = new double[100];
- double[] petaly = new double[100];
- double[] petalr = new double[100];
+ double[] petalx = new double[2 * numpoints];
+ double[] petaly = new double[2 * numpoints];
+ double[] petalr = new double[2 * numpoints];
double[] wedges = new double[2000];
double xmid, ymid, dist, x3, y3;