Programmer's Documentation

Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
DcMeshCritBase Class Referenceabstract

Detailed Description

Base class for mesh quality criteria.

Mesh quality criteria for use with mapped 2D Delaunay procedures all inherit from this class. All mesh refinement implementation should only use the interface provided by this base class.

See Also
DcMeshCrit, DcMeshHeightCrit

#include <dcmeshcrit.h>

Inheritance diagram for DcMeshCritBase:
Collaboration diagram for DcMeshCritBase:

Public Types

enum  SplitFlag {
  NoSplit =0, SplitEdge1 =1, SplitEdge2 =2, SplitEdge3 =3,
  InsertCircumCenter, InsertCircumCenterE1, InsertCircumCenterE2, InsertCircumCenterE3,
  InsertTriCenter, TooSmall

Public Member Functions

 DcMeshCritBase ()
 create empty criterion
virtual ~DcMeshCritBase ()
 virtual base class destructor
virtual DcMeshCritBasePtr clone () const =0
 create a clone of the same type
virtual void assign (const Surface *srf, const PointList< 2 > *uv, const PointList< 2 > *st, const PointList< 3 > *xy, const PointList< 3 > *nm)
 attach to point lists
void npass (uint n)
 change number of refinement passes
uint npass () const
 number of refinement passes allowed
void maxNodes (uint n)
 change max number of allowed nodes
uint maxNodes () const
 access maximum number of nodes
uint nSmooth () const
 number of vertex smoothing iterations
void nSmooth (uint n)
 number of vertex smoothing iterations
void nSkipSmooth (uint skip)
 one smoothing pass every skip refinement iterations
uint nSkipSmooth ()
 one smoothing pass every skip refinement iterations
Real wSmooth () const
 relaxation factor for vertex smoothing
void wSmooth (Real w)
 relaxation factor for vertex smoothing
Real maxGrowthRatio () const
 maximum permitted triangle growth ratio
void maxGrowthRatio (Real mgr)
 maximum permitted triangle growth ratio
virtual bool splitEdge (const Vct3 &ps, const Vct3 &pt, const Vct3 &tgs, const Vct3 &tgt, Real bf=1.0) const =0
 determine whether to split a boundary edge
virtual bool splitEdge (const AbstractUvCurve &cuv, Real ts, Real tt) const
 determine whether to split a curve on surface between ts and tt
virtual bool splitEdge (uint s, uint t) const =0
 determine whether to split boundary edge (s,t)
virtual int splitFace (uint a, uint b, uint c) const =0
 determine whether to split triangle (a,b,c)
int splitFace (const uint v[]) const
 convenience shortcut
int checkGrowthRatio (const uint va[], const uint vb[]) const
 return whether to split va if it is too large for neighbor vb

Static Public Member Functions

static Real ccRadius (const Real len[])
 determine circumcenter radius from triangle side lengths

Protected Member Functions

const Vct2 & puv (uint k) const
 access vertex
const Vct2 & pst (uint k) const
 access vertex
const Vct3 & pxy (uint k) const
 access vertex
const Vct3 & pnm (uint k) const
 access vertex

Protected Attributes

const Surfacepsf
 pointer to surface object for the evaluation of height criterion
const PointList< 2 > * ppuv
 pointer to mesh vertices in (u,v) plane
const PointList< 2 > * ppst
 pointer to mesh vertices in (s,t) plane
const PointList< 3 > * ppxy
 pointer to mesh vertices in (x,y,z) space
const PointList< 3 > * ppnm
 pointer to surface normals at vertices
Real maxGrowth
 maximum permitted growth ratio
Real omegaSmoothing
 relaxation factor using for vertex smoothing
uint nSmoothing
 number of vertex smoothing iterations desired
uint nInnerSmoothSkip
 smooth once every n refinement passes
uint nRefinePass
 maximum number of refinement passes
uint nMaxNodeCount
 maximum number of nodes accepted

The documentation for this class was generated from the following files:
Generated on Wed Jan 19 2022 03:03:16 for libsurf by   doxygen 1.8.5