libsurf
Programmer's Documentation

Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
DcFace Class Reference

Detailed Description

Face in a plane Delaunay triangulation.

DcFace is a simple, 'dumb' container for three vertex indices. It is used as a secondary data structure in DelaunayCore.

DcEdge and DcFace use 4-byte integer indices instead of pointers to objects in order to keep the object size as small as possible on 64bit systems, thus allowing more elements to fit into the processor cache.

See Also
DelaunayCore, DcEdge

#include <dcface.h>

Public Types

enum  SplitConfig {
  NoSplit = 0, SplitEdge0 = 1, SplitEdge1 = 2, SplitEdge2 = 4,
  QuadSplit = 7
}
 

Public Member Functions

 DcFace ()
 create undefined face
 
 DcFace (uint a, uint b, uint c)
 define face
 
 DcFace (const uint vip[])
 define face
 
bool valid () const
 check whether edge is defined
 
void invalidate ()
 make invalid
 
const uint * vertices () const
 access vertices
 
void copyVertices (uint v[]) const
 copy vertices
 
uint opposedVertex (uint s, uint t) const
 return vertex opposing edge vertices s, t, or NotFound
 
Real cosApexAngle (const PointList3d &pts, uint a) const
 determine cosine of angle at node a
 
uint find (uint v) const
 check whether face contains v
 
DcEdge edge (uint k) const
 compute edge k
 
uint esource (uint k) const
 return source vertex of edge k
 
uint etarget (uint k) const
 return target vertex of edge k
 
uint findEdge (uint s, uint t)
 find edge (s,t)
 
size_t zcode (const PointList< 2 > &vtx, Real qoffset, Real qscale) const
 determine Morton code (or z-code) from vertex array and quantization
 

Private Member Functions

void assign (uint a, uint b, uint c)
 set vertex indices
 

Private Attributes

uint vix [3]
 three vertices
 

Member Enumeration Documentation

Enumerator
NoSplit 

No split performed.

SplitEdge0 

First edge (v[0],v[1]) split.

SplitEdge1 

Second edge (v[1],v[2]) split.

SplitEdge2 

Third edge (v[2],v[0]) split.

QuadSplit 

All edges split.


The documentation for this class was generated from the following file:
Generated on Thu Sep 29 2022 03:03:15 for libsurf by   doxygen 1.8.5