nmwsharp / geometry-central

Applied 3D geometry in C++, with a focus on surface meshes.
https://geometry-central.net
MIT License
1.1k stars 151 forks source link

Documentation is hosted at geometry-central.net


Welcome to Geometry Central

actions status linux actions status macOS actions status windows

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<SurfaceMesh> mesh;
std::unique_ptr<VertexPositionGeometry> geometry;
std::tie(mesh, geometry) = readSurfaceMesh("spot.obj"); 

// Compute vertex areas
VertexData<double> 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.