Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ShMesh.hpp File Reference

A basic mesh structure based on half-edges. More...

#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


Detailed Description

A basic mesh structure based on half-edges.

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.


Generated on Mon Jan 24 18:37:34 2005 for Sh by  doxygen 1.4.1