My Project
Loading...
Searching...
No Matches
Public Member Functions | List of all members
TriangleNet.Meshing.QualityMesher Class Reference

Provides methods for mesh quality enforcement and testing. More...

Public Member Functions

 QualityMesher (TriangleNetMesh triangleNetMesh, Configuration config)
 
void Apply (QualityOptions quality, bool delaunay=false)
 Apply quality constraints to a mesh.
 
void AddBadSubseg (BadSubseg badseg)
 Add a bad subsegment to the queue.
 
int CheckSeg4Encroach (ref Osub testsubseg)
 Check a subsegment to see if it is encroached; add it to the list if it is.
 
void TestTriangle (ref Otri testtri)
 Test a triangle for quality and size.
 

Detailed Description

Provides methods for mesh quality enforcement and testing.

Member Function Documentation

◆ AddBadSubseg()

void TriangleNet.Meshing.QualityMesher.AddBadSubseg ( BadSubseg  badseg)
inline

Add a bad subsegment to the queue.

Parameters
badsegBad subsegment.

◆ Apply()

void TriangleNet.Meshing.QualityMesher.Apply ( QualityOptions  quality,
bool  delaunay = false 
)
inline

Apply quality constraints to a mesh.

Parameters
qualityThe quality constraints.
delaunayA value indicating, if the refined mesh should be Conforming Delaunay.

◆ CheckSeg4Encroach()

int TriangleNet.Meshing.QualityMesher.CheckSeg4Encroach ( ref Osub  testsubseg)
inline

Check a subsegment to see if it is encroached; add it to the list if it is.

Parameters
testsubsegThe subsegment to check.
Returns
Returns a nonzero value if the subsegment is encroached.

A subsegment is encroached if there is a vertex in its diametral lens. For Ruppert's algorithm (-D switch), the "diametral lens" is the diametral circle. For Chew's algorithm (default), the diametral lens is just big enough to enclose two isosceles triangles whose bases are the subsegment. Each of the two isosceles triangles has two angles equal to 'b.minangle'.

Chew's algorithm does not require diametral lenses at all–but they save time. Any vertex inside a subsegment's diametral lens implies that the triangle adjoining the subsegment will be too skinny, so it's only a matter of time before the encroaching vertex is deleted by Chew's algorithm. It's faster to simply not insert the doomed vertex in the first place, which is why I use diametral lenses with Chew's algorithm.

◆ TestTriangle()

void TriangleNet.Meshing.QualityMesher.TestTriangle ( ref Otri  testtri)
inline

Test a triangle for quality and size.

Parameters
testtriTriangle to check.

Tests a triangle to see if it satisfies the minimum angle condition and the maximum area condition. Triangles that aren't up to spec are added to the bad triangle queue.


The documentation for this class was generated from the following file: