A C++ library providing efficient and reliable algorithms for computational geometry problems.
CGAL (Computational Geometry Algorithms Library) is a comprehensive C++ library that provides efficient and reliable implementations of computational geometry algorithms. It solves complex geometric problems including convex hull computation, triangulation, Voronoi diagram generation, and mesh processing. The library is designed to handle numerical precision issues and degenerate cases that commonly arise in geometric computations.
C++ developers working in fields requiring geometric computations such as computer graphics, CAD software, GIS applications, robotics, scientific visualization, and computational mathematics. Researchers and engineers who need robust geometric algorithms for their projects.
Developers choose CGAL because it provides mathematically correct, industrial-strength implementations of complex geometric algorithms that are difficult to implement correctly from scratch. Its header-only design since version 5.0 simplifies integration, while its modular structure allows using only the needed components without unnecessary dependencies.
The public CGAL repository, see the README below
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Since version 5.0, CGAL is header-only, eliminating build steps and simplifying integration into C++ projects, as highlighted in the README.
Provides robust implementations of key algorithms like convex hulls and Voronoi diagrams, essential for graphics, CAD, and GIS applications.
Offers multiple kernels to balance precision and performance, ensuring reliable handling of degenerate cases and numerical issues.
Organized into specialized packages, allowing developers to include only necessary components, reducing bloat and improving maintainability.
Heavy reliance on C++ templates results in verbose code and challenging debug messages, requiring advanced C++ skills.
Being header-only can lead to long compilation times and large binary sizes when including multiple geometric packages.
Primarily a C++ library with no official bindings, making it unsuitable for projects using Python, JavaScript, or other languages.