diff --git a/Triangle.NET/Triangle/IO/TriangleReader.cs b/Triangle.NET/Triangle/IO/TriangleReader.cs
index d769196..fb3a90f 100644
--- a/Triangle.NET/Triangle/IO/TriangleReader.cs
+++ b/Triangle.NET/Triangle/IO/TriangleReader.cs
@@ -19,6 +19,7 @@ namespace TriangleNet.IO
public class TriangleReader
{
static NumberFormatInfo nfi = NumberFormatInfo.InvariantInfo;
+
int startIndex = 0;
#region Helper methods
@@ -98,20 +99,20 @@ namespace TriangleNet.IO
///
/// Reads geometry information from .node or .poly files.
///
- public void Read(string filename, out Polygon geometry)
+ public void Read(string filename, out Polygon polygon)
{
- geometry = null;
+ polygon = null;
string path = Path.ChangeExtension(filename, ".poly");
if (File.Exists(path))
{
- geometry = ReadPolyFile(path);
+ polygon = ReadPolyFile(path);
}
else
{
path = Path.ChangeExtension(filename, ".node");
- geometry = ReadNodeFile(path);
+ polygon = ReadNodeFile(path);
}
}
diff --git a/Triangle.NET/Triangle/Meshing/ConstraintMesher.cs b/Triangle.NET/Triangle/Meshing/ConstraintMesher.cs
index 548b4be..0bf5afe 100644
--- a/Triangle.NET/Triangle/Meshing/ConstraintMesher.cs
+++ b/Triangle.NET/Triangle/Meshing/ConstraintMesher.cs
@@ -296,7 +296,6 @@ namespace TriangleNet.Meshing
Vertex horg, hdest;
var dummytri = mesh.dummytri;
- var dummysub = mesh.dummysub;
// Find a triangle handle on the hull.
hulltri.tri = dummytri;
diff --git a/Triangle.NET/Triangle/Meshing/GenericMesher.cs b/Triangle.NET/Triangle/Meshing/GenericMesher.cs
index 74f1019..75c6dfc 100644
--- a/Triangle.NET/Triangle/Meshing/GenericMesher.cs
+++ b/Triangle.NET/Triangle/Meshing/GenericMesher.cs
@@ -182,16 +182,16 @@ namespace TriangleNet.Meshing
for (i = 0; i < nx; i++)
{
// Bottom
- a = points[i * (ny + 1)];
- b = points[(i + 1) * (ny + 1)];
+ a = points[(ny + 1) * i];
+ b = points[(ny + 1) * (i + 1)];
segments.Add(new Segment(a, b, 1));
a.Label = b.Label = 1;
// Top
- a = points[i * (ny + 1) + nx];
- b = points[(i + 1) * (ny + 1) + nx];
+ a = points[ny + (ny + 1) * i];
+ b = points[ny + (ny + 1) * (i + 1)];
segments.Add(new Segment(a, b, 1));
diff --git a/Triangle.NET/Triangle/Meshing/Iterators/RegionIterator.cs b/Triangle.NET/Triangle/Meshing/Iterators/RegionIterator.cs
index ab264ed..2a249a9 100644
--- a/Triangle.NET/Triangle/Meshing/Iterators/RegionIterator.cs
+++ b/Triangle.NET/Triangle/Meshing/Iterators/RegionIterator.cs
@@ -18,12 +18,10 @@ namespace TriangleNet.Meshing.Iterators
///
public class RegionIterator
{
- Mesh mesh;
List viri;
public RegionIterator(Mesh mesh)
{
- this.mesh = mesh;
this.viri = new List();
}
@@ -37,8 +35,6 @@ namespace TriangleNet.Meshing.Iterators
Otri neighbor = default(Otri);
Osub neighborsubseg = default(Osub);
- Behavior behavior = mesh.behavior;
-
// Loop through all the infected triangles, spreading the attribute
// and/or area constraint to their neighbors, then to their neighbors'
// neighbors.
diff --git a/Triangle.NET/Triangle/Meshing/Iterators/VertexCirculator.cs b/Triangle.NET/Triangle/Meshing/Iterators/VertexCirculator.cs
index 189e1d3..44821a6 100644
--- a/Triangle.NET/Triangle/Meshing/Iterators/VertexCirculator.cs
+++ b/Triangle.NET/Triangle/Meshing/Iterators/VertexCirculator.cs
@@ -9,12 +9,8 @@ namespace TriangleNet.Meshing.Iterators
{
List cache = new List();
- Mesh mesh;
-
public VertexCirculator(Mesh mesh)
{
- this.mesh = mesh;
-
mesh.MakeVertexMap();
}
diff --git a/Triangle.NET/Triangle/NewLocation.cs b/Triangle.NET/Triangle/NewLocation.cs
index e45264d..4755b21 100644
--- a/Triangle.NET/Triangle/NewLocation.cs
+++ b/Triangle.NET/Triangle/NewLocation.cs
@@ -69,6 +69,7 @@ namespace TriangleNet
// Based on using -U switch, call the corresponding function
if (behavior.MaxAngle == 0.0)
{
+ // Disable the "no max angle" code. It may return weired vertex locations.
return FindNewLocationWithoutMaxAngle(org, dest, apex, ref xi, ref eta, true, badotri);
}
@@ -101,7 +102,7 @@ namespace TriangleNet
////////////////////////////// HALE'S VARIABLES //////////////////////////////
// keeps the difference of coordinates edge
- double xShortestEdge = 0, yShortestEdge = 0, xMiddleEdge, yMiddleEdge, xLongestEdge, yLongestEdge;
+ double xShortestEdge = 0, yShortestEdge = 0;
// keeps the square of edge lengths
double shortestEdgeDist = 0, middleEdgeDist = 0, longestEdgeDist = 0;
@@ -218,8 +219,6 @@ namespace TriangleNet
/// smallest angle corner: dest
/// largest angle corner: apex
xShortestEdge = xao; yShortestEdge = yao;
- xMiddleEdge = xda; yMiddleEdge = yda;
- xLongestEdge = xdo; yLongestEdge = ydo;
shortestEdgeDist = aodist;
middleEdgeDist = dadist;
@@ -234,8 +233,6 @@ namespace TriangleNet
/// smallest angle corner: dest
/// largest angle corner: org
xShortestEdge = xao; yShortestEdge = yao;
- xMiddleEdge = xdo; yMiddleEdge = ydo;
- xLongestEdge = xda; yLongestEdge = yda;
shortestEdgeDist = aodist;
middleEdgeDist = dodist;
@@ -250,8 +247,6 @@ namespace TriangleNet
/// smallest angle corner: org
/// largest angle corner: apex
xShortestEdge = xda; yShortestEdge = yda;
- xMiddleEdge = xao; yMiddleEdge = yao;
- xLongestEdge = xdo; yLongestEdge = ydo;
shortestEdgeDist = dadist;
middleEdgeDist = aodist;
@@ -265,8 +260,6 @@ namespace TriangleNet
/// smallest angle corner: org
/// largest angle corner: dest
xShortestEdge = xda; yShortestEdge = yda;
- xMiddleEdge = xdo; yMiddleEdge = ydo;
- xLongestEdge = xao; yLongestEdge = yao;
shortestEdgeDist = dadist;
middleEdgeDist = dodist;
@@ -280,8 +273,6 @@ namespace TriangleNet
/// smallest angle corner: apex
/// largest angle corner: org
xShortestEdge = xdo; yShortestEdge = ydo;
- xMiddleEdge = xao; yMiddleEdge = yao;
- xLongestEdge = xda; yLongestEdge = yda;
shortestEdgeDist = dodist;
middleEdgeDist = aodist;
@@ -296,8 +287,6 @@ namespace TriangleNet
/// smallest angle corner: apex
/// largest angle corner: dest
xShortestEdge = xdo; yShortestEdge = ydo;
- xMiddleEdge = xda; yMiddleEdge = yda;
- xLongestEdge = xao; yLongestEdge = yao;
shortestEdgeDist = dodist;
middleEdgeDist = dadist;
@@ -801,7 +790,7 @@ namespace TriangleNet
////////////////////////////// HALE'S VARIABLES //////////////////////////////
// keeps the difference of coordinates edge
- double xShortestEdge = 0, yShortestEdge = 0, xMiddleEdge, yMiddleEdge, xLongestEdge, yLongestEdge;
+ double xShortestEdge = 0, yShortestEdge = 0;
// keeps the square of edge lengths
double shortestEdgeDist = 0, middleEdgeDist = 0, longestEdgeDist = 0;
@@ -931,8 +920,6 @@ namespace TriangleNet
/// smallest angle corner: dest
/// largest angle corner: apex
xShortestEdge = xao; yShortestEdge = yao;
- xMiddleEdge = xda; yMiddleEdge = yda;
- xLongestEdge = xdo; yLongestEdge = ydo;
shortestEdgeDist = aodist;
middleEdgeDist = dadist;
@@ -947,8 +934,6 @@ namespace TriangleNet
/// smallest angle corner: dest
/// largest angle corner: org
xShortestEdge = xao; yShortestEdge = yao;
- xMiddleEdge = xdo; yMiddleEdge = ydo;
- xLongestEdge = xda; yLongestEdge = yda;
shortestEdgeDist = aodist;
middleEdgeDist = dodist;
@@ -963,8 +948,6 @@ namespace TriangleNet
/// smallest angle corner: org
/// largest angle corner: apex
xShortestEdge = xda; yShortestEdge = yda;
- xMiddleEdge = xao; yMiddleEdge = yao;
- xLongestEdge = xdo; yLongestEdge = ydo;
shortestEdgeDist = dadist;
middleEdgeDist = aodist;
@@ -978,8 +961,6 @@ namespace TriangleNet
/// smallest angle corner: org
/// largest angle corner: dest
xShortestEdge = xda; yShortestEdge = yda;
- xMiddleEdge = xdo; yMiddleEdge = ydo;
- xLongestEdge = xao; yLongestEdge = yao;
shortestEdgeDist = dadist;
middleEdgeDist = dodist;
@@ -993,8 +974,6 @@ namespace TriangleNet
/// smallest angle corner: apex
/// largest angle corner: org
xShortestEdge = xdo; yShortestEdge = ydo;
- xMiddleEdge = xao; yMiddleEdge = yao;
- xLongestEdge = xda; yLongestEdge = yda;
shortestEdgeDist = dodist;
middleEdgeDist = aodist;
@@ -1009,8 +988,6 @@ namespace TriangleNet
/// smallest angle corner: apex
/// largest angle corner: dest
xShortestEdge = xdo; yShortestEdge = ydo;
- xMiddleEdge = xda; yMiddleEdge = yda;
- xLongestEdge = xao; yLongestEdge = yao;
shortestEdgeDist = dodist;
middleEdgeDist = dadist;
@@ -3959,10 +3936,10 @@ namespace TriangleNet
double dxod, dyod, dxda, dyda, dxao, dyao;
double dxod2, dyod2, dxda2, dyda2, dxao2, dyao2;
- double apexlen, orglen, destlen, minedge;
+ double apexlen, orglen, destlen;
double angle; // in order to check minimum angle condition
- double maxangle, maxedge; // in order to check minimum angle condition
+ double maxangle; // in order to check minimum angle condition
// calculate the side lengths
dxod = x1 - x2;
@@ -3987,64 +3964,48 @@ namespace TriangleNet
// try to find the minimum edge and accordingly the pqr orientation
if ((apexlen < orglen) && (apexlen < destlen))
{
- // The edge opposite the apex is shortest.
- minedge = apexlen;
// Find the square of the cosine of the angle at the apex.
angle = dxda * dxao + dyda * dyao;
angle = angle * angle / (orglen * destlen);
-
-
}
else if (orglen < destlen)
{
- // The edge opposite the origin is shortest.
- minedge = orglen;
// Find the square of the cosine of the angle at the origin.
angle = dxod * dxao + dyod * dyao;
angle = angle * angle / (apexlen * destlen);
-
-
}
else
{
- // The edge opposite the destination is shortest.
- minedge = destlen;
// Find the square of the cosine of the angle at the destination.
angle = dxod * dxda + dyod * dyda;
angle = angle * angle / (apexlen * orglen);
}
+
// try to find the maximum edge and accordingly the pqr orientation
if ((apexlen > orglen) && (apexlen > destlen))
{
- // The edge opposite the apex is longest.
- maxedge = apexlen;
// Find the cosine of the angle at the apex.
maxangle = (orglen + destlen - apexlen) / (2 * Math.Sqrt(orglen * destlen));
}
else if (orglen > destlen)
{
- // The edge opposite the origin is longest.
- maxedge = orglen;
// Find the cosine of the angle at the origin.
maxangle = (apexlen + destlen - orglen) / (2 * Math.Sqrt(apexlen * destlen));
}
else
{
- // The edge opposite the destination is longest.
- maxedge = destlen;
// Find the cosine of the angle at the destination.
maxangle = (apexlen + orglen - destlen) / (2 * Math.Sqrt(apexlen * orglen));
}
-
// Check whether the angle is smaller than permitted.
if ((angle > behavior.goodAngle) || (behavior.MaxAngle != 0.00 && maxangle < behavior.maxGoodAngle))
{
return true;// it is a bad triangle
}
- return false;// it is a good triangle
+ return false;// it is a good triangle
}
///
diff --git a/Triangle.NET/Triangle/Topology/DCEL/Face.cs b/Triangle.NET/Triangle/Topology/DCEL/Face.cs
index ade0bdc..7073920 100644
--- a/Triangle.NET/Triangle/Topology/DCEL/Face.cs
+++ b/Triangle.NET/Triangle/Topology/DCEL/Face.cs
@@ -8,7 +8,7 @@ namespace TriangleNet.Topology.DCEL
{
using System.Collections.Generic;
using TriangleNet.Geometry;
-
+
///
/// A face of DCEL mesh.
///