EN FR
EN FR


Section: New Software and Platforms

Geogram

Participant : Bruno Lévy.

Stemming from project GOODSHAPE (ERC Starting Grant) and project VORPALINE (ERC Proof of Concept) Geogram is a programming library of geometric algorithms. It includes a simple yet efficient mesh data structure (for surface and volumetric meshes), exact computer arithmetics (a-la Shewchuck, implemented in GEO::expansion), a predicate code generator (PCK: Predicate Construction Kit), standard geometric predicates (orient/insphere), Delaunay triangulation, Voronoi diagram, spatial search data structures, spatial sorting, and less standard ones (more general geometric predicates, intersection between a Voronoi diagram and a triangular or tetrahedral mesh embedded in n dimensions). The latter is used by FWD/WarpDrive, the first algorithm that computes semi-discrete optimal transport in 3D that scales up to 1 million Dirac masses (see compute_OTM in the example programs). Geogram is licensed under the three-clauses BSD license.

Geogram Pluggable Software Modules: Some users are interested in small subsets of Geogram. Following the principle that Geogram should be as easy to use/compile as possible, some subsets of functionalities are alternatively available as a standalone pair of (header,implementation) files, automatically extracted/assembled from Geogram sourcetree. This makes the functionality usable with 0 dependency: client code that uses a PSM just need to insert the header and the implementation file into the project (rather than linking with the entire Geogram library). The Pluggable Software Modules are licensed under the three-clause BSD license. These Pluggable Software Modules include:

  • OpenNL: a library of easy-to-use numerical solvers for sparse matrices,

  • MultiPrecision: a number-type that can be used for computations in arbitrary precision, based on Shewchuk's arithmetic expansion  [43] . It is shipped with wrapper classes to use it as a number type for CGAL,

  • Predicates: implementation of exact and symbolically perturbed predicates with arithmetic filters (based on a combination of Meyer and Pion's arithmetic filter generator  [38] and our MultiPrecision library).