GEL

GEL

GEometry and Linear algebra

GEL is a C++ library of geometry processing tools mostly intended for computer graphics applications.

https://github.com/janba/GEL
PyGEL - Python bindings for GEL.
Reference manual for PyGEL

Main Features of GEL

  • a fairly mature half-edge based polygonal mesh data structure,
  • a graph data structure,
  • voxel grid data structures,
  • spatial data structures for triangles and points

    Unique functionality includes

  • Local Separator Skeletonization
  • Inverse skeletonization: Face extrusion quad meshes (FEQ) from graphs.

    Common geometry utilities

    There are also several features that you will find elsewhere but which are included in GEL and work well. These features include:
  • Garland-Heckbert simplification of triangle meshes,
  • signed distance field (SDF) computation,
  • iso-surface polygonization,
  • edge flipping-based mesh optimization,
  • mesh smoothing (including anisotropic smoothing).
  • Apart from these things, GEL also contains a linear algebra library for small vectors and matrices (2D, 3D, and 4D) as well as tools for visualizing meshes using OpenGL. One could argue that using a library such as Eigen for the former and perhaps PolyScope for that latter would be more appropriate. However, having these things be part of GEL makes the library more self contained.

    GEL requires a recent C++ compiler but has very few dependencies. For visualization, OpenGL and GLFW are required, but these dependencies can be omitted if visualization is not needed. This somewhat limits the capabilities of GEL, and most projects that use GEL would also require other libraries (such as a linear algebra library) but by not requiring these to be installed as dependencies of GEL, compilation is simplified and porting to new platforms becomes much easier.