-
Notifications
You must be signed in to change notification settings - Fork 40
The Half Edge Data Structure and Adaption to TTL
An implementation of the the well-known half-edge data structure for triangulations is documented briefly on these pages, together with adaption of this data structure to "TTL, The Triangulation Template Library". Only the class hed::Dart and the
(static) struct hed::TTLtraits are documented thoroughly. These compounds represent the interface channels between TTL and the application data structure. See [Application Programming Interface to TTL] for a general documentation of this mechanism. Follow the links to the source code for classes that are not documented in detail --- most member functions are self-explanatory.
The classes hed::Node, hed::Edge and hed::Triangulation represent the half-edge data structure shown as a class diagram in the figure below. (Here "Edge" denotes a half-edge). These classes, together with hed::Dart and hed::TTLtraits for adaption to TTL, are encapsulated in the namespace hed.

Class Diagram for the Half-Edge Data Structure
Each half-edge has a pointer to the hed::Node it starts from, a pointer to the next half-edge belonging to the same triangle
(counterclockwise), and a pointer to its "twin-edge" belonging to another triangle.
The class hed::Triangulation containts a list of (half-)edges, each of which represents one triangle in the triangulation.
In addition, the class hed::Triangulation also serves as an interface to the TTL as it implements hed::TTLtraits::swapEdge, hed::TTLtraits::splitTriangle etc., which are functions required on the application side by function templates in TTL (via the traits class).
Consult the file main.cpp for a program using TTL and the half-edge data structure.
GoTools is the group name of many interdependent C++ software modules developed by the geometry group at SINTEF Digital, Department of Mathematics and Cybernetics. Starting around the year 2000, GoTools software has been developed for a range of different applications in many different projects. Most of the functionality is related to geometry, and in particular spline representations of geometry, see the highlights and overview of functionality. For more idetail, see GoTools manual.
GoTools is offered with the GNU Affero General Public License version 3. Alternatively, you can be released from the requirements of the license by purchasing a commercial license. Buying such a license is mandatory as soon as you develop commercial activities involving the GoTools library without disclosing the source code of your own applications.
Getting started
Miscellaneous
Functionality
- Modules
- gotools-core
- compositemodel
- implicitization
- igeslib
- intersections
- isogeometric_model
- lrsplines2D
- lrsplines3D
- parametrization
- qualitymodule
- topology
- trivariate
- trivariatemodel
- viewlib
Dependencies