Applied 3D geometry in C++, with a focus on surface meshes.
Applied 3D geometry in C++, with a focus on surface meshes.
Geometry-central is a modern C++ library of data structures and algorithms for geometry processing, with a particular focus on surface meshes.
Features include:
Sample:
// Load a mesh
std::unique_ptr mesh;
std::unique_ptr geometry;
std::tie(mesh, geometry) = readSurfaceMesh("spot.obj");
// Compute vertex areas
VertexData vertexAreas(*mesh);
geometry->requireFaceAreas();
for(Vertex v : mesh->vertices()) {
double A = 0.;
for(Face f : v.adjacentFaces()) {
A += geometry->faceAreas[f] / v.degree();
}
vertexAreas[v] = A;
}Check out the docs, tutorials, and build instructions at geometry-central.net. Use the sample project to get started with a build system and a gui.
Related alternatives: CGAL, libIGL, OpenMesh, Polygon Mesh Processing Library, CinoLib
Credits
Geometry-central is developed by Nicholas Sharp, with many contributions from Keenan Crane, Yousuf Soliman, Mark Gillespie, Rohan Sawhney, and many others.
If geometry-central contributes to an academic publication, cite it as:
@article{geometrycentral,
title={GeometryCentral: A modern C++ library of data structures and algorithms for geometry processing},
author={Nicholas Sharp and Keenan Crane and others},
howpublished="\\url{https://geometry-central.net/}",
year={2019}
}Development of this software was funded in part by NSF Award 1717320, an NSF graduate research fellowship, and gifts from Adobe Research and Autodesk, Inc.
No open issues yet, or sync has not completed.