Data Structures for Polygon Meshes
Simplest (but dumb)
- float triangle[n][3][3]; (each triangle stores 3 (x,y,z) points)
- redundant: each vertex stored multiple times
Vertex List, Face List
- List of vertices, each vertex consists of (x,y,z)
geometric (shape) info only
- List of triangles, each a triple of vertex id’s (or pointers)
topological (connectivity, adjacency) info only
Fine for many purposes, but finding the faces adjacent to a vertex takes O(F) time for a model with F faces. Such queries are important for topological editing.
Fancier schemes:
Store more topological info so adjacency queries can be answered in O(1) time.
Winged-edge data structure – edge structures contain all topological info (pointers to adjacent vertices, edges, and faces).
Quad-edge data structure – a variant of the above.