170 lines
7.0 KiB
HTML
170 lines
7.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<title>libigl</title>
|
|
<meta name="author" content="Alec Jacobson and Daniele Panozzo and others"/>
|
|
<link type="text/css" rel="stylesheet" href="tutorial/style.css"/>
|
|
<script type='text/javascript' src='http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
|
|
<link rel='stylesheet' href='http://yandex.st/highlightjs/7.3/styles/default.min.css'>
|
|
<script src='http://yandex.st/highlightjs/7.3/highlight.min.js'></script>
|
|
<script>hljs.initHighlightingOnLoad();</script>
|
|
</head>
|
|
<body>
|
|
|
|
<h1 id="libigl-asimplecgeometryprocessinglibrary">libigl - A simple C++ geometry processing library</h1>
|
|
|
|
<figure>
|
|
<img src="libigl-teaser.png" alt="" />
|
|
<figcaption></figcaption></figure>
|
|
|
|
<p><a href="https://github.com/libigl/libigl/">https://github.com/libigl/libigl/</a></p>
|
|
|
|
<p>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 cotangent 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 <a href="http://eigen.tuxfamily.org">Eigen</a> feel a lot more
|
|
like MATLAB.</p>
|
|
|
|
<p>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 <a href="build/">compiled</a> into a statically linked
|
|
library, for faster compile times with your projects.</p>
|
|
|
|
<p>We use the <a href="http://eigen.tuxfamily.org">Eigen</a> library heavily in our code. Our
|
|
group prototypes a lot in MATLAB, and we have a useful <a href="matlab-to-eigen.html">conversion
|
|
table</a> from
|
|
MATLAB to libigl/Eigen.</p>
|
|
|
|
<h2 id="tutorial">Tutorial</h2>
|
|
|
|
<p>As of version 1.0, libigl includes an introductory
|
|
<a href="tutorial/tutorial.html">tutorial</a> that covers
|
|
its basic functionalities.</p>
|
|
|
|
<h2 id="installation">Installation</h2>
|
|
|
|
<p>Libigl is a <em>header</em> library. You do <strong>not</strong> need to build anything to install.
|
|
Simply add <code>igl/</code> to your include path and include relevant headers. Here is a
|
|
small “Hello, World” program:</p>
|
|
|
|
<pre><code class="cpp">#include <igl/cotmatrix.h>
|
|
#include <Eigen/Dense>
|
|
#include <Eigen/Sparse>
|
|
#include <iostream>
|
|
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<double> L;
|
|
igl::cotmatrix(V,F,L);
|
|
std::cout<<"Hello, mesh: "<<std::endl<<L*V<<std::endl;
|
|
return 0;
|
|
}
|
|
</code></pre>
|
|
|
|
<p>If you save this in <code>hello.cpp</code>, then you could compile this with (assuming
|
|
Eigen is installed in /opt/local/include/eigen3):</p>
|
|
|
|
<pre><code class="bash">gcc -I/opt/local/include/eigen3 -I./igl/ hello.cpp -o hello
|
|
</code></pre>
|
|
|
|
<p>Running <code>./hello</code> would then produce</p>
|
|
|
|
<pre><code>Hello, mesh:
|
|
0.5 0.5
|
|
-0.5 0.5
|
|
-0.5 -0.5
|
|
0.5 -0.5
|
|
</code></pre>
|
|
|
|
<h2 id="dependencies">Dependencies</h2>
|
|
|
|
<p>Dependencies are on a per-include basis and the majority of the functions in
|
|
libigl depends only on the <a href="http://eigen.tuxfamily.org">Eigen</a> library.</p>
|
|
|
|
<p>For more information see our <a href="tutorial/tutorial.html">tutorial</a>.</p>
|
|
|
|
<h3 id="gccandtheoptionalcgaldependency">GCC and the optional CGAL dependency</h3>
|
|
|
|
<p>The <code>include/igl/cgal/*.h</code> headers depend on CGAL. It has come to our attention
|
|
that CGAL does not work properly with GCC 4.8. To the best of our knowledge,
|
|
GCC 4.7 and clang will work correctly.</p>
|
|
|
|
<h3 id="openmpandwindows">OpenMP and Windows</h3>
|
|
|
|
<p>Some of our functions will take advantage of OpenMP if available. However, it
|
|
has come to our attention that Visual Studio + Eigen does not work properly
|
|
with OpenMP. Since OpenMP only improves performance without affecting
|
|
functionality we recommend avoiding OpenMP on Windows or proceeding with
|
|
caution.</p>
|
|
|
|
<h2 id="download">Download</h2>
|
|
|
|
<p>You can keep up to date by cloning a read-only copy of our GitHub
|
|
<a href="https://github.com/libigl">repository</a>.</p>
|
|
|
|
<h2 id="howtocontribute">How to contribute</h2>
|
|
|
|
<p>If you are interested in joining development, please fork the repository and
|
|
submit a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a>
|
|
with your changes.</p>
|
|
|
|
<h2 id="license">License</h2>
|
|
|
|
<p>libigl is primarily <a href="http://www.mozilla.org/MPL/2.0/">MPL2</a> licensed
|
|
(<a href="http://www.mozilla.org/MPL/2.0/FAQ.html">FAQ</a>). Some files contain
|
|
third-party code under other licenses. We’re currently in the processes of
|
|
identifying these and marking appropriately.</p>
|
|
|
|
<h2 id="attribution">Attribution</h2>
|
|
|
|
<p>If you use libigl in your academic projects, please cite the papers we
|
|
implement as appropriate. To cite the library in general, you could use this
|
|
BibTeX entry:</p>
|
|
|
|
<pre><code class="bibtex">@misc{libigl,
|
|
title = {{libigl}: A simple {C++} geometry processing library},
|
|
author = {Alec Jacobson and Daniele Panozzo and others},
|
|
note = {http://libigl.github.io/libigl/},
|
|
year = {2015},
|
|
}
|
|
</code></pre>
|
|
|
|
<h2 id="contact">Contact</h2>
|
|
|
|
<p>Libigl is a group endeavor led by <a href="http://www.cs.columbia.edu/~jacobson/">Alec
|
|
Jacobson</a> and <a href="http://www.inf.ethz.ch/personal/dpanozzo/">Daniele
|
|
Panozzo</a>. Please <a href="mailto:alecjacobson@gmail.com,daniele.panozzo@gmail.com">contact
|
|
us</a> if you have
|
|
questions or comments. We are happy to get feedback!</p>
|
|
|
|
<p>If you’re using libigl in your projects, quickly <a href="mailto:alecjacobson@gmail.com,daniele.panozzo@gmail.com">drop us a
|
|
note</a>. Tell us who you
|
|
are and what you’re using it for. This helps us apply for funding and justify
|
|
spending time maintaining this.</p>
|
|
|
|
<p>If you find bugs or have problems please use our <a href="https://github.com/libigl/libigl/issues">github issue tracking
|
|
page</a>.</p>
|
|
|
|
<h2 id="copyright">Copyright</h2>
|
|
|
|
<p>2015 Alec Jacobson, Daniele Panozzo, Olga Diamanti, Christian Schüller, Kenshi
|
|
Takayama, Leo Sacht, Wenzel Jacob, Nico Pietroni, Amir Vaxman</p>
|
|
|
|
<figure>
|
|
<img src="tutorial/images/libigl-logo.jpg" alt="" />
|
|
<figcaption></figcaption></figure>
|
|
|
|
</body>
|
|
</html>
|