Winged edge

The winged edge data structure is a data representation used to describe polygon models in computer graphics. It explicitly describes the geometry and topology of faces, edges, and vertices when three or more surfaces come together and meet at a common edge. The ordering is such that the surfaces are ordered counter-clockwise with respect to the innate orientation of the intersection edge. Moreover the representation allows numerically unstable situations like that depicted below.

The winged edge data structure allows for quick traversal between faces, edges, and vertices due to the explicitly linked structure of the network. This rich form of specifying an unstructured grid is in contrast to simpler specifications of polygon meshes such as a node and element list, or the implied connectivity of a regular grid. It has application in common modelling operations such as subdivision, extrusion etc.

Pseudocode

Here is a data structure suitable for representing a winged edge. The abbreviation "WE" stands for "Winged Edge".

class WE_Edge {
  WE_Vertex vert1, vert2;
  WE_Face aFace, bFace;
  WE_Edge aPrev, aNext, bPrev, bNext; // clockwise ordering
  WE_EdgeDataObject data;
}
class WE_Vertex {
  List<WE_Edge> edges;
  WE_VertexDataObject data;
}
class WE_Face {
  List<WE_Edge> edges;
  WE_FaceDataObject data;
}

See also

External links

The Wikibook Wings 3D/User Manual has a page on the topic of: The Nature of Subdivision Modeling/Winged Edge Topology
This article is issued from Wikipedia - version of the 6/1/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.