From 227e9d9c6624e6e9995ae2e2ad99dfdc474bfec2 Mon Sep 17 00:00:00 2001 From: wo80 Date: Mon, 28 Feb 2022 00:27:51 +0100 Subject: [PATCH] Mesh converter: use singleton pattern instead of static methods. --- src/MeshExplorer/IO/Formats/JsonFile.cs | 2 +- src/Triangle/IO/TriangleFormat.cs | 2 +- src/Triangle/Meshing/Converter.cs | 26 +++++++++++++++++-------- src/Triangle/Meshing/GenericMesher.cs | 2 +- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/MeshExplorer/IO/Formats/JsonFile.cs b/src/MeshExplorer/IO/Formats/JsonFile.cs index 6946a67..4dacc1c 100644 --- a/src/MeshExplorer/IO/Formats/JsonFile.cs +++ b/src/MeshExplorer/IO/Formats/JsonFile.cs @@ -96,7 +96,7 @@ namespace MeshExplorer.IO.Formats } } - return Converter.ToMesh(geometry, triangles); + return Converter.Instance.ToMesh(geometry, triangles); } public void Write(IMesh mesh, string filename) diff --git a/src/Triangle/IO/TriangleFormat.cs b/src/Triangle/IO/TriangleFormat.cs index 2a85e8d..2bc858a 100644 --- a/src/Triangle/IO/TriangleFormat.cs +++ b/src/Triangle/IO/TriangleFormat.cs @@ -42,7 +42,7 @@ namespace TriangleNet.IO if (geometry != null && triangles != null) { - return Converter.ToMesh(geometry, triangles.ToArray()); + return Converter.Instance.ToMesh(geometry, triangles.ToArray()); } } diff --git a/src/Triangle/Meshing/Converter.cs b/src/Triangle/Meshing/Converter.cs index edd32fc..7ce5b54 100644 --- a/src/Triangle/Meshing/Converter.cs +++ b/src/Triangle/Meshing/Converter.cs @@ -20,14 +20,25 @@ namespace TriangleNet.Meshing /// /// The Converter class provides methods for mesh reconstruction and conversion. /// - public static class Converter + public class Converter { + private static readonly Lazy lazy = new Lazy(() => new Converter()); + + /// + /// Gets the instance. + /// + public static Converter Instance { get { return lazy.Value; } } + + private Converter() + { + } + #region Triangle mesh conversion /// /// Reconstruct a triangulation from its raw data representation. /// - public static Mesh ToMesh(Polygon polygon, ICollection triangles) + public Mesh ToMesh(Polygon polygon, ICollection triangles) { return ToMesh(polygon, triangles.ToArray()); } @@ -35,7 +46,7 @@ namespace TriangleNet.Meshing /// /// Reconstruct a triangulation from its raw data representation. /// - public static Mesh ToMesh(Polygon polygon, ITriangle[] triangles, Configuration config = null) + public Mesh ToMesh(Polygon polygon, ITriangle[] triangles, Configuration config = null) { Otri tri = default(Otri); Osub subseg = default(Osub); @@ -82,7 +93,7 @@ namespace TriangleNet.Meshing /// Finds the adjacencies between triangles by forming a stack of triangles for /// each vertex. Each triangle is on three different stacks simultaneously. /// - private static List[] SetNeighbors(Mesh mesh, ITriangle[] triangles) + private List[] SetNeighbors(Mesh mesh, ITriangle[] triangles) { Otri tri = default(Otri); Otri triangleleft = default(Otri); @@ -199,7 +210,7 @@ namespace TriangleNet.Meshing /// /// Finds the adjacencies between triangles and subsegments. /// - private static void SetSegments(Mesh mesh, Polygon polygon, List[] vertexarray) + private void SetSegments(Mesh mesh, Polygon polygon, List[] vertexarray) { Otri checktri = default(Otri); Otri nexttri; // Triangle @@ -224,7 +235,6 @@ namespace TriangleNet.Meshing if (mesh.behavior.Poly) { // Link the segments to their neighboring triangles. - boundmarker = 0; i = 0; foreach (var item in mesh.subsegs.Values) { @@ -341,7 +351,7 @@ namespace TriangleNet.Meshing #region DCEL conversion - public static DcelMesh ToDCEL(Mesh mesh) + public DcelMesh ToDCEL(Mesh mesh) { var dcel = new DcelMesh(); @@ -379,7 +389,7 @@ namespace TriangleNet.Meshing } Otri tri = default(Otri), neighbor = default(Otri); - TriangleNet.Geometry.Vertex org, dest; + TVertex org, dest; int id, nid, count = mesh.triangles.Count; diff --git a/src/Triangle/Meshing/GenericMesher.cs b/src/Triangle/Meshing/GenericMesher.cs index 3d8c2cb..fe62bbe 100644 --- a/src/Triangle/Meshing/GenericMesher.cs +++ b/src/Triangle/Meshing/GenericMesher.cs @@ -227,7 +227,7 @@ namespace TriangleNet.Meshing } } - return Converter.ToMesh(polygon, triangles); + return Converter.Instance.ToMesh(polygon, triangles); } } }