# libigl - A simple C++ geometry processing library ![](libigl-teaser.png) libigl is a simple C++ geometry processing library. We have a wide functionality including construction of sparse discrete differential geometry operators and finite-elements matrices such as the contangent Laplacian and diagonalized mass matrix, simple facet and edge-based topology data structures, mesh-viewing utilities for OpenGL and GLSL, and many core functions for matrix manipulation which make [Eigen](http://eigen.tuxfamily.org) feel a lot more like MATLAB. It is first and foremost a header library. Each header file contains a single function. Most are tailored to operate on a generic triangle mesh stored in an n-by-3 matrix of vertex positions V and an m-by-3 matrix of triangle indices F. The library may also be [compiled](build/) into a statically linked library, for faster compile times with your projects. We use the [Eigen](http://eigen.tuxfamily.org) library heavily in our code. Our group prototypes a lot in MATLAB, and we have a useful [conversion table](matlab-to-eigen.html) from MATLAB to libigl/Eigen. # Tutorial As of version 1.0, libigl includes an introductory [tutorial](tutorial/tutorial.html) that covers its basic functionalities. ## Installation Libigl is a *header* library. You do **not** need to build anything to install. Simply add `igl/` to your include path and include relevant headers. Here is a small "Hello, World" program: ```cpp #include #include #include #include int main() { Eigen::MatrixXd V(4,2); V<<0,0, 1,0, 1,1, 0,1; Eigen::MatrixXi F(2,3); F<<0,1,2, 0,2,3; Eigen::SparseMatrix L; igl::cotmatrix(V,F,L); std::cout<<"Hello, mesh: "<