# libigl - A simple C++ geometry processing library

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: "<