libsurf
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:
[legend]
Collaboration diagram for DcMeshCritBase:
[legend]

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