Computational Geometry Resources
26 January 2026
A little while back, I got introduced to the wondrous world of Computational Geometry. This is a branch of computer science that concerns itself with data structures and algorithms for geometric problems.
Throughout the last year I’ve read numerous papers and books that helped me understand the field, and gave me the right handles for building a 3D modeling application.
Books are useful for building a strong foundation. Papers are useful for learning about the cutting edge and novel techniques.
Note that this document is a work-in-progress and I’ll occasionally add content to it.
Data structures #
Spatial Indexing #
Spatial indexing data structures solve a simple problem; improving the time complexity of spatial queries.
Let’s say we have a list of bounding boxes in N-dimensional space. For this list, I want to get all pairs of boxes that intersect with each other. The naive implementation would look like this:
| |
This has a time complexity of O(n), which is not ideal in the context of geometric problems, because we’re often dealing with large values for n. With a spatial indexing data structure, we can rewrite the function as follows:
| |
While this might look intimidating, the amount of computation is drastically reduced, because we’re ignoring large amounts of bounding boxes when traversing the tree. Traversal is done using depth-first search (DFS).
Bounding volume hierarchy (BVH) #
RTree #
Spatial hash #
Octree #
VDB #
Mesh graph and boundary representation (BRep) #
Half Edge #
Winged Edge #
Partial Entity #
Algorithms #
Earcut and polygon triangulation #
Boolean operations #
Concepts #
Axis-aligned bounding box (AABB) #
Robustness #
Morton encoding #
Homogeneous integer coordinates #
CAD #
Surfaces #
Non-uniform rational B-splines (NURBS) #
Analytical surfaces (spherical) #
Topology #
Algorithms #
Unsorted #
Websites #
- IFC specifications, e.g. the specification for IfcKernel in IFC2x3
Books #
- (1985) Geometric Modeling by Michael E. Mortenson: This book covers how to mathematically model curves, surfaces, and solids.
- (1979) Computational Geometry for Design and Manufacture by I. D. Faux and Michael J. Pratt.
- (1994) Information Modeling: The EXPRESS Way by Douglas A. Schenck and Peter R. Wilson. This book contains the grammar of the EXPRESS language (used in the context of the STEP file format). I’ve used this book extensively as a reference for how to implement an IFC / STEP reader, due to the ISO specification being expensive.
Papers #
- (2022) EMBER: Exact Mesh Booleans via Efficient & Robust Local Arrangements: Uses homogeneous integer coordinates and plane-based representations for robustness.
Open-source repositories #
- libigl: A header only C++ geometry processing library that contains many implementations of computational geometry research papers.
- Manifold: A geometry library for manifold triangle meshes and performing robust boolean operations on them.
- CGAL: The Computational Geometry Algorithms Library. Contains various geometric algorithms and data structures.
- Open CASCADE: The only open-source CAD kernel, which contains BRep structures and algorithms for operating on CAD geometry.
- madmann91/bvh: A BVH construction and traversal library with good performance.
- g-truc/glm: A math library with vector, matrix and quaternion math. Mainly created for graphics programming purposes, but potentially good enough for geometric algorithms too.
- Polyscope: A simple 3D geometry viewer.
- libspatialindex: A C++ implementation of R*-tree, an MVR-tree and a TPR-tree with C API
- eigen: A C++ template library for linear algebra; matrix and vector math. Eigen also supports larger matrices and vectors, where glm is predominantly for matrices of size 2x2, 3x3 or 4x4, and vectors of size 2, 3 or 4.
- gcherchi/InteractiveAndRobustMeshBooleans: A research codebase accompanying the paper “Interactive And Robust Mesh Booleans” by G. Cherchi. This is not production ready code and will crash on certain types of input.
- fcpw: Fastest Closest Points in the West. A library for closest point queries. Semi-abandoned, but still useful as reference.