Skip to content
A general-purpose library for applied geometry
C++ CMake
Branch: master
Clone or download
nmwsharp Merge pull request #13 from MarkGillespie/UniformizationFeatures
Updated eigenvalue solver for complex matrices
Latest commit 05563d3 Nov 9, 2019

README.md

Documention is hosted at geometry-central.net


Welcome to Geometry Central

Geometry-central is a modern C++ library of data structures and algorithms for geometry processing, with a particular focus on surface meshes.

Features include:

  • A polished halfedge mesh class, with efficient support for mesh modification, and a system of containers for associating data with mesh elements.
  • Implementations of canonical geometric quantities on surfaces, ranging from normals and curvatures to tangent vector bases to operators from discrete differential geometry.
  • A suite of powerful algorithms, including computing distances on surface, generating direction fields, and manipulating intrinsic Delaunay triangulations.
  • A coherent set of sparse linear algebra tools, based on Eigen and augmented to automatically utilize better solvers if available on your system.

Sample:

// Load a mesh
std::unique_ptr<HalfedgeMesh> mesh;
std::unique_ptr<VertexPositionGeometry> geometry;
std::tie(mesh, geometry) = loadMesh("spot.obj"); 

// Compute vertex areas
VertexData<double> vertArea(*mesh, 0.);
geometry->requireFaceAreas();
for(Vertex v : mesh->vertices()) {
  for(Face f : v.adjacentVertices()) {
    vertArea[v] += geometry->faceAreas[f] / f.degree();
  }
}

For more, see the tutorials. To get started with the code, see building.

What is geometry-central not?

  • A user interface. Geometry-central does not include any facilities for user interaction; it is an algorithms and data structures library on which you might build user-facing tools. This philosphy keeps the library lightweight, and avoids dependencies on rendering and windowing systems. For a UI that interoperates well with geometry-central, see Polyscope.
  • A research code dump. Geometry-central was built by researchers, and is used to prototype research projects. However, we strive to ensure that this library contains only polished & tested, broadly useful algorithms.

Related alternatives: CGAL, libIGL, OpenMesh, Polygon Mesh Processing Library, CinoLib


Credits

Geometry-central is developed primarily by Nicholas Sharp, with contributions from Keenan Crane, Yousuf Soliman, Mark Gillespie, Rohan Sawhney, and many others.

If geometry-central contributes to an academic publication, cite it as:

@misc{geometrycentral,
  title = {geometry-central},
  author = {Nicholas Sharp and Keenan Crane and others},
  note = {www.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.

You can’t perform that action at this time.