#include <list>
#include <map>
#include <set>
#include "sh.hpp"
#include "ShMeshImpl.hpp"
Include dependency graph for ShMesh.hpp:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Namespaces | |
namespace | ShUtil |
To use this class, define CopyConstructible vertex, face, and edge classes to hold your vertex/face/edge specific data that are subclasses of ShMeshVertex, ShMeshFace, and ShMeshEdge respectively.
The half-edge ShMesh class always keeps the following invariants: * Edge pointers: For any edge e, a) if e.next, then e.next->prev = e b) if e.next, then e.next->start == e->end c) if e.prev, then e.prev->next = e d) if e.prev, then e.prev->end == e->start e) if e.sym != 0, then e.sym->sym = e
* Vertex edge: For any vertex v, v.edge.start = v
* Face edge: For any face f, f.edge.face = f, and f.edge->next->next... = f.edge after following enough next pointers.
All the public ShMesh class functions maintain these invariants.
Null Pointers: For any edge e, e.start and e.end are always != 0. For any face f, f.edge is always != 0. All other pointers can be 0.
Definition in file ShMesh.hpp.