KrisLibrary  1.0.0
TriMeshTopology.h
1 #ifndef MESHING_TRIMESH_TOPOLOGY_H
2 #define MESHING_TRIMESH_TOPOLOGY_H
3 
4 #include "TriMesh.h"
5 
6 namespace Meshing {
7 
18 {
19  virtual ~TriMeshTraversalCallback() {}
20  virtual void NewComponent(int c) {}
21  virtual void Tri(int t) {}
22  virtual void TriArc(int t,int e) {}
23  virtual void Edge(int v1,int v2) {}
24  virtual void Vertex(int v) {}
25 };
26 
32 {
33  void ClearTopology();
34  void CalcVertexNeighbors();
35  void CalcIncidentTris();
36  void CalcTriNeighbors();
37  bool IsConsistent();
38 
40 
41  void SplitEdge(int tri,int e,const Vector3& newPt);
43 
45 
46  void TriBFS(TriMeshTraversalCallback& callback);
47  void VertexBFS(TriMeshTraversalCallback& callback);
48  void BeginTriWalk();
49  void BeginVertexWalk();
50  void _TriBFS(int start,TriMeshTraversalCallback& callback);
51  void _VertexBFS(int start,TriMeshTraversalCallback& callback);
53 
56 
57  vector<vector<int> > vertexNeighbors;
58  vector<vector<int> > incidentTris;
59  vector<TriNeighbors> triNeighbors;
60  vector<int> visited;
61 };
62 
63 } //namespace Meshing
64 
65 #endif
A lightweight integer 3-tuple class.
Definition: IntTriple.h:9
IntTriple TriNeighbors
index 0,1,2=neighbor along edge 0,1,2 (or -1 if none)
Definition: TriMeshTopology.h:55
The namespace for all classes/functions in the Meshing package.
Definition: AnyGeometry.h:10
A 3D vector class.
Definition: math3d/primitives.h:136
A triangle mesh that contains connectivity relations between vertices and triangles.
Definition: TriMeshTopology.h:31
Abstract base class for an edge planner / edge checker (i.e., local planner).
Definition: EdgePlanner.h:49
vector< int > visited
temporary
Definition: TriMeshTopology.h:60
A callback base class for traversing triangle mesh topology.
Definition: TriMeshTopology.h:17
vector< TriNeighbors > triNeighbors
neighboring triangles of triangles
Definition: TriMeshTopology.h:59
vector< vector< int > > vertexNeighbors
neighboring vertices of vertices
Definition: TriMeshTopology.h:57
Definition: DCEL.h:5
A basic triangle mesh.
Definition: TriMesh.h:41
vector< vector< int > > incidentTris
triangles incident on vertices
Definition: TriMeshTopology.h:58