From 164318fd8e62f89116ba2a13d5ad4a7c77939107 Mon Sep 17 00:00:00 2001 From: wo80 Date: Tue, 19 Jul 2022 00:53:01 +0200 Subject: [PATCH] Update QualityMeasure class. --- src/Triangle.Examples/Generate.cs | 7 +++++++ src/Triangle.Examples/Program.cs | 2 +- src/Triangle/Tools/QualityMeasure.cs | 29 ++++++++++------------------ 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/Triangle.Examples/Generate.cs b/src/Triangle.Examples/Generate.cs index 64c0e7a..85bea7f 100644 --- a/src/Triangle.Examples/Generate.cs +++ b/src/Triangle.Examples/Generate.cs @@ -40,6 +40,13 @@ namespace TriangleNet /// /// Creates a rectangle contour. /// + /// Minimum x value (left). + /// Minimum y value (bottom). + /// Width of the rectangle. + /// Height of the rectangle. + /// The desired boundary segment length. + /// The vertices and boundary segment label. + /// public static Contour Rectangle(double x, double y, double width, double height, double size = 0d, int label = 0) { diff --git a/src/Triangle.Examples/Program.cs b/src/Triangle.Examples/Program.cs index 3854ac4..0f2c0c3 100644 --- a/src/Triangle.Examples/Program.cs +++ b/src/Triangle.Examples/Program.cs @@ -18,7 +18,7 @@ namespace TriangleNet Check("Example 8", Example8.Run()); Check("Example 9", Example9.Run()); Check("Example 10", Example10.Run()); - Check("Example 11", Example10.Run()); + Check("Example 11", Example11.Run()); } static void Check(string item, bool success) diff --git a/src/Triangle/Tools/QualityMeasure.cs b/src/Triangle/Tools/QualityMeasure.cs index d79a979..87c661a 100644 --- a/src/Triangle/Tools/QualityMeasure.cs +++ b/src/Triangle/Tools/QualityMeasure.cs @@ -9,6 +9,7 @@ namespace TriangleNet.Tools { using System; using TriangleNet.Geometry; + using TriangleNet.Meshing; /// /// Provides mesh quality information. @@ -57,16 +58,16 @@ namespace TriangleNet.Tools AlphaMeasure alphaMeasure; Q_Measure qMeasure; - Mesh mesh; - /// /// Initializes a new instance of the class. /// - public QualityMeasure() + public QualityMeasure(IMesh mesh) { areaMeasure = new AreaMeasure(); alphaMeasure = new AlphaMeasure(); qMeasure = new Q_Measure(); + + Compute(mesh); } #region Public properties @@ -161,23 +162,13 @@ namespace TriangleNet.Tools #endregion - /// - /// Update all quality measures. - /// - public void Update(Mesh mesh) + private void Compute(IMesh mesh) { - this.mesh = mesh; - // Reset all measures. areaMeasure.Reset(); alphaMeasure.Reset(); qMeasure.Reset(); - Compute(); - } - - private void Compute() - { Point a, b, c; double ab, bc, ca; double lx, ly; @@ -185,7 +176,7 @@ namespace TriangleNet.Tools int n = 0; - foreach (var tri in mesh.triangles) + foreach (var tri in mesh.Triangles) { n++; @@ -241,7 +232,7 @@ namespace TriangleNet.Tools /// Because the finite element node adjacency relationship is symmetric, /// we are guaranteed that ML = MU. /// - public int Bandwidth() + public static int Bandwidth(IMesh mesh) { if (mesh == null) return 0; @@ -250,15 +241,15 @@ namespace TriangleNet.Tools int gi, gj; - foreach (var tri in mesh.triangles) + foreach (var tri in mesh.Triangles) { for (int j = 0; j < 3; j++) { - gi = tri.GetVertex(j).id; + gi = tri.GetVertexID(j); for (int k = 0; k < 3; k++) { - gj = tri.GetVertex(k).id; + gj = tri.GetVertexID(k); mu = Math.Max(mu, gj - gi); ml = Math.Max(ml, gi - gj);