"Great customer service. The folks at Novedge were super helpful in navigating a somewhat complicated order including software upgrades and serial numbers in various stages of inactivity. They were friendly and helpful throughout the process.."
Ruben Ruckmark
"Quick & very helpful. We have been using Novedge for years and are very happy with their quick service when we need to make a purchase and excellent support resolving any issues."
Will Woodson
"Scott is the best. He reminds me about subscriptions dates, guides me in the correct direction for updates. He always responds promptly to me. He is literally the reason I continue to work with Novedge and will do so in the future."
Edward Mchugh
"Calvin Lok is “the man”. After my purchase of Sketchup 2021, he called me and provided step-by-step instructions to ease me through difficulties I was having with the setup of my new software."
Mike Borzage
February 15, 2026 12 min read

Geometry processing matured when brilliant one-off programs became shared, dependable libraries. In a field where a single misclassified orientation test can ruin an entire model, the demand for reliability pushed researchers and engineers toward common codebases that favored exactness, teachability, and reproducibility over ad‑hoc brilliance. The rise of shared libraries did not suppress innovation; it amplified it, allowing specialists to focus on novel ideas rather than re-implementing brittle building blocks. Two families of tools crystallized this evolution. The first is the rigor-driven, specification-heavy computational geometry tradition that culminated in CGAL, designed so that every numeric decision is defensible, every precondition explicit, and every algorithm tied to a published proof. The second is the nimble, mesh-first, header-only era, exemplified by libigl, which optimized for speed-to-result, friendly APIs, and classroom-ready examples while strategically delegating numerically treacherous steps to proven exact kernels. Together they transformed geometry processing from a craft practiced with private toolkits into a culture of reusable, citably correct software—one that underpins modern CAD, graphics, CAE, GIS, and robotics workflows. What follows traces why those libraries were needed, how CGAL and libigl emerged with distinct philosophies, and why their complementary legacies continue to converge on the future geometry stack.
By the late 1980s and 1990s, computational geometry and computer graphics were laboratories of ingenuity: SoCG, SIGGRAPH, and SGP regularly debuted novel algorithms, while textbooks by Franco P. Preparata and Michael I. Shamos, Joseph O’Rourke, and Herbert Edelsbrunner codified theory. Yet the code remained scattered. Graduate students maintained private repositories; industrial teams kept kernel code proprietary; and benchmark comparisons were fragile because tiny implementation choices upended outcomes. In CAD, graphics, and CAE alike, floating‑point brittleness haunted production. Degeneracies—collinear triples, co-spherical quads, sliver triangles—triggered negative areas, flipped face orientations, or disconnected topology. Reference implementations were hard to reuse: they assumed specific data layouts, lacked documentation, or treated I/O and predicates as side effects. Data structures were especially ad‑hoc: polygon soups mixed with quasi-manifold meshes; edge adjacency reconstructed on demand in O(n) loops; face loops wandered without consistent twin/next pointers. Over time, the cost of this fragmentation became obvious. Researchers repeated infrastructure work to plot a single figure; companies re‑debugged the same predicates when porting to new compilers; and reviewers could not confidently reproduce results. The field needed libraries that treated robustness as a first-class feature, specified algorithms in reusable interfaces, and made precise commitments about numeric behavior.
Only a shared library culture could replace brittle silos with common, testable, and teachable building blocks.
Foundational ideas were ready; they needed a durable software expression. On the topology side, the DCEL and halfedge lineage from Leonidas J. Guibas and Jorge Stolfi championed explicit incidence: vertices know edges; edges know their twins, next, and previous; faces know boundaries and holes. This eliminated ambiguity and made local edits—edge flips, splits, collapses—safe and auditable. On the algorithmic side, pillars like Delaunay/Voronoi constructions, arrangements of curves and surfaces, polygon clipping with holes, straight skeletons, and convex hulls were well understood theoretically, but needed robust predicates and disciplined memory models. Meanwhile, the “exactness movement” tackled the heart of numerical fragility. Jonathan Richard Shewchuk’s robust orient2d/orient3d and incircle predicates, exact arithmetic via LEDA (Kurt Mehlhorn et al.), and multiprecision libraries like GMP/MPFR entered practice. Filtered computation—cheap floating-point estimates guarded by certified fallbacks—delivered the best of both worlds: speed in the common case, exact predicates when inputs are adversarial. Pre/post-conditions and certifiable outputs (e.g., provably Delaunay triangulations, non-self-intersecting polygon Boolean results) became goals to encode in APIs rather than informal promises. These roots converged on a vision: algorithms decoupled from representations, kernels explicit about numeric guarantees, and packages that mirrored proofs with code that refused to lie about edge cases.
While theory matured, industry needed guarantees. Aerospace and automotive programs at Boeing, Airbus, General Motors, and BMW depended on kernel operations—offsetting, filleting, Boolean assembly—that could not silently corrupt geometry. CAM and additive manufacturing pipelines required reliable slicing even for intersecting or nearly coplanar features. GIS demanded exact polygon overlays at national-map scales. Robotics labs needed arrangements and visibility computations that withstood real-world sensor noise. Proprietary kernels such as ACIS (Spatial) and Parasolid (Siemens) delivered industrial robustness but did not resolve academia’s need for a common, citable foundation. Across SIGGRAPH, SGP, and SoCG, reviewers sought repeatable experiments rather than one-off binaries. A shared library would level the playing field, making comparisons fair and results portable. Moreover, education benefited: classrooms could move from pseudo-code to live, inspectable implementations. The momentum coalesced around two complementary solutions. One, forged in EU-funded collaborations and centered at INRIA and partners, would pursue industrial-strength exactness and package vast swaths of computational geometry as reusable modules. The other, sparked by researcher-educators focused on meshes, linear algebra, and rapid iteration, would compress the path from “load a triangle mesh” to “publish a figure,” while opportunistically tapping exact kernels when needed. The result was a healthy two-track ecosystem where rigor and velocity reinforced each other.
CGAL—the Computational Geometry Algorithms Library—emerged in the mid-1990s as a European collaborative effort under the EU ESPRIT framework, transforming computational geometry from a literature of proofs into a commons of certified implementations. Anchored by INRIA (notably INRIA Sophia Antipolis–Méditerranée) and partners across academia and research institutes, the project brought together a constellation of leaders and maintainers. Among the most recognizable are Monique Teillaud (INRIA), Sylvain Pion (whose work on exact/filtered kernels and predicates shaped CGAL’s numeric backbone), and Andreas Fabri, who later co-founded GeometryFactory in France to provide professional support and dual licensing. The project’s governance matured with package maintainers responsible for subsystems—triangulations, arrangements, Nef polyhedra, mesh generation—ensuring continuity and code review. Connections to the LEDA community (Kurt Mehlhorn and MPI for Informatics) and the broader SoCG community reinforced a culture of algorithms backed by proofs and measured against reproducible tests. Over time, CGAL built an editorial board, publication channels, and thorough documentation that let researchers cite specific packages and versions, not just “our lab’s code.” That citability—and the ability to combine independently maintained packages—made CGAL a durable standard across research, education, and industry experiments that demanded correctness.
CGAL set out to engineer theory into practice without compromising on numerical integrity. Its architecture revolves around C++ templates that separate algorithms from representations via concepts and traits. Algorithms state what they need—point types, predicates, constructions—while traits classes adapt user data structures. At the numeric core, CGAL exposes several kernels that spell out the speed/robustness tradeoff: inexact (fast floating point), Exact_predicates_inexact_constructions (EPIC) for robust decisions with approximate constructions, and Exact_predicates_exact_constructions (EPEC) for full exactness, often backed by GMP/MPFR-based number types such as CGAL::Gmpq. Filtered predicates deliver performance: a quick floating-point check succeeds for most inputs; ambiguous cases escalate to exact arithmetic. This layered approach, championed by contributors like Sylvain Pion, ensures that API-level invariants—planarity, orientation, non-self-intersection—hold across platforms. Certification is more than a slogan: CGAL mirrors the literature with explicit preconditions, assertions, and postconditions; packages ship with demos, tests, and references to canonical papers. The result is a library where users can switch kernels by type aliasing to trade speed for guarantees without rewriting algorithms, and where the documentation honestly states what is certified and under which numeric assumptions. It is software designed to be cited, taught, and trusted.
CGAL’s influence stems from flagship packages that encoded years of research into dependable tools. In 2D and 3D, its triangulation and Delaunay triangulation modules support incremental, randomized, and kinetic variants, handling degeneracies through exact predicates. The polygon package supports polygons with holes and a battery of Boolean ops; in 2D arrangements, Arrangement_2 constructs subdivisions induced by curves, a workhorse for visibility and motion planning research. Nef polyhedra, inspired by W. Nef’s sets of half-spaces, deliver exact 3D Boolean operations on polyhedra, providing inside/outside semantics immune to topological glitches—an ability that made CGAL attractive wherever precision trumped raw speed. Straight skeletons enable robust inward offsets and roof models; Minkowski sums support motion planning and morphological ops; mesh generation packages (Surface_mesh, Mesh_3) create certified-quality meshes for PDE and CAE. In the open-source design world, OpenSCAD famously relies on CGAL for polygon/polyhedron Booleans, giving makers access to exact modeling without a proprietary kernel. CGAL’s licensing balanced openness and sustainability: a GPL/LGPL core encouraged academic adoption and reproducibility, while GeometryFactory’s commercial licenses and services supported integration in closed-source products. The community invested in long-term maintenance, careful API evolution, and documentation that made the library a living textbook across CAD research, GIS operations, and robotics labs that needed correctness without guesswork.
As CGAL proved that industrial-strength exactness could be shared, a new need emerged in the 2010s: a fast, frictionless path from a triangle mesh to a publishable figure or prototype. libigl answered that call. Initiated by Alec Jacobson (then at Columbia University, later University of Toronto) and Daniele Panozzo (ETH Zurich, later NYU Courant), libigl distilled years of mesh processing practice into a header-only library that paired clean APIs with didactic examples. Its backbone is Eigen, the C++ template library for linear algebra led by Gaël Guennebaud and Benoît Jacob, which made sparse/dense operators, factorizations, and solvers readily accessible. The libigl team—Jacobson, Panozzo, and a growing community including collaborators and students from groups led by Olga Sorkine-Hornung, Keenan Crane’s contemporaries in discrete geometry, and many contributors via GitHub—set explicit goals: make everyday mesh operations a single function call; ship lightweight viewers and UIs; favor clear, literate implementations that double as teaching material. That ethos resonated with classrooms and labs, where time to first result matters. Crucially, libigl did not ignore robustness: it provided “copyleft” wrappers that call out to CGAL for exact Booleans and predicates when users needed guarantees beyond fast floating-point paths. The result was a practical bridge between research code and courseware that lowered the barrier to entry for newcomers and startups alike.
libigl’s architecture starts with a simple proposition: if you have V (vertices) and F (faces), you should be minutes away from visualization, differential operators, and deformation results. The library emphasizes header-only distribution to remove build friction; a user can drop include files into a project and compile. APIs follow an immediate-mode style: functions take matrices (e.g., Eigen::MatrixXd for vertices, Eigen::MatrixXi for faces) and return results directly, often without elaborate object lifecycles. The built-in viewer (and integrations with ImGui/NanoGUI) makes interactive experimentation trivial, while a gallery of examples doubles as documentation. Robustness is addressed through two strategies. First, native implementations adopt numerically stable formulations (e.g., cotangent Laplacians with careful area weighting). Second, for operations most exposed to geometric degeneracy—mesh Boolean operations, winding-number tests, and exact predicates—libigl exposes “copyleft” CGAL wrappers (e.g., igl::copyleft::cgal::mesh_boolean) so users can swap speed for certainty. The message is clear: don’t reinvent robust kernels; wire them in where it counts. This philosophy scaled to pedagogy as well. Instructors can lead students from a blank C++ file to ARAP deformation or parameterization in a single lab session, and then, when precision matters, flip a compile flag to bring in exactness via CGAL.
libigl packaged the “curricular greatest hits” of geometry processing as first-class functions. Discrete differential geometry operators—combinatorial and cotangent Laplacians, mean curvature, principal curvatures—arrived as one-liners, as did Poisson and heat-based smoothing. As‑Rigid‑As‑Possible (ARAP) and related deformation tools made modeling-driven editing approachable; parameterization modules (harmonic, LSCM, SLIM-inspired formulations) turned meshes into textures and simulation domains. Remeshing tools—quadric error-based simplification, isotropic and quad remeshing helpers—are paired with robust self‑intersection detection and repair. Geodesics via the heat method, inspired by work from Keenan Crane and collaborators, made pathfinding a linear solve. Signed distance fields and the fast winding number technique integrated ideas from research by the Jacobson/Schmidt communities to enable rapid inside/outside queries for soups and scans. With ImGui-based UIs and easy bridges to Polyscope (Nicholas Sharp and Alec Jacobson), visualization is nearly frictionless. This repertoire, plus mesh Booleans via CGAL wrappers, made libigl a de facto standard in classrooms and labs. Startups and research prototypes could stand on it to build viewers, repair pipelines, or experiment with novel solvers without owning a CAD kernel. In effect, libigl proved that usability and velocity can be first-class, while robustness is maintained through strategic handoffs rather than kernel reinvention.
CGAL and libigl reframed the social contract of geometry software. CGAL demonstrated that rigor and exactness—long considered too expensive or too arcane—can be engineered at scale, documented, and shared across institutions. Its concepts/traits separation, kernel spectrum, and culture of certification brought the guarantees of proofs into everyday development. libigl showed that equally important is the developer experience: a student, researcher, or startup should be able to move from triangles on disk to a compelling experiment in a single sitting. Crucially, this velocity did not require abandoning robustness; by delegating fragile predicates and Booleans to CGAL when needed, libigl fused usability with dependability. Together they raised expectations. Reviewers now ask why a paper’s code is not on a public library; engineers assume mesh Booleans should not explode on coplanar features; students expect to learn from source that reads like a lecture. The net effect is a cultural shift: reproducibility, testability, and teachability are no longer afterthoughts but primary design goals. As a result, geometry processing has widened its footprint—from CAD and simulation to robotics, AR/VR, fabrication, and GIS—backed by libraries that make both exploration and production possible without sacrificing correctness.
Between and around CGAL and libigl, a constellation of focused libraries filled specific niches, collectively raising the ecosystem’s capability ceiling. Qhull (Barber–Dobkin–Huhdanpaa) delivers convex hulls, half-space intersections, and Delaunay in pragmatic C, widely used for its simplicity and speed. Jonathan R. Shewchuk’s Triangle remains the go-to for quality 2D meshing with constraints, while Hang Si’s TetGen provides tetrahedralization for 3D domains, both underpinned by careful predicates and mesh quality guarantees. OpenMesh, from RWTH Aachen’s Computer Graphics Group, offers a solid halfedge mesh data structure and algorithms, decoupled from kernel-level exactness but ideal as a backbone for modeling tools. In the 2D planar realm, Clipper (Angus Johnson) made polygon clipping and offsets popular with a permissive license, and GEOS/JTS (Martin Davis and contributors) brought robust planar operations to GIS and server-side stacks. On the discrete differential geometry and visualization front, geometry-central (Nicholas Sharp and collaborators) provides modern data structures and operators, while VTK and VTK‑m (Kitware) underpin large-scale visualization pipelines and data-parallel acceleration. These tools rarely compete directly; they compose. A project might use libigl for rapid mesh manipulation, CGAL for exact Booleans, TetGen for volumetric meshing, and VTK for rendering. The health of geometry processing has always been pluralistic: small, focused libraries that interoperate through clear data models and explicit contracts.
The most durable lesson for CAD, CAM, and adjacent domains is that robustness is an invisible feature—until it fails. Exactness, filtered predicates, and disciplined data structures are nonnegotiable in production modeling, slicing, and simulation pipelines. The second lesson is cultural: reproducibility and teachability multiply impact. Clean APIs, permissive licenses, and exemplar notebooks turn algorithms into community habits. Looking ahead, the geometry stack is converging toward three axes. First, GPU‑native operators and data-parallel frameworks are migrating more of the pipeline onto accelerators; the challenge is to reconcile exactness with massively parallel execution, perhaps with new filtered-predicate designs suited to SIMT. Second, out‑of‑core processing and streaming algorithms are becoming essential for massive scans and point clouds, where memory-bound performance and progressive results matter. Third, safe systems languages—particularly Rust—promise stronger invariants for kernel-level code, while WebAssembly enables zero‑install viewers, repair tools, and even light modeling in the browser. The decisive factor will be the health of the commons: funding, governance, mentorship, and industry–academia co‑development. If sustained, tomorrow’s stack can blend CGAL’s cathedral—certified kernels and principled contracts—with libigl’s bazaar—frictionless exploration and literate code—into a hybrid that keeps both rigor and velocity at the forefront.

June 04, 2026 2 min read
Read More
June 04, 2026 2 min read
Read More
June 04, 2026 2 min read
Read MoreSign up to get the latest on sales, new releases and more …