|
@@ -12,35 +12,30 @@
|
|
|
</head>
|
|
|
<body>
|
|
|
|
|
|
-<h1 id="libigl-asimplecgeometryprocessinglibrary">libigl - A simple c++ geometry processing library</h1>
|
|
|
+<h1 id="libigl-asimplecgeometryprocessinglibrary">libigl - A simple C++ geometry processing library</h1>
|
|
|
|
|
|
<figure>
|
|
|
<img src="tutorial/images/libigl-logo.jpg" alt="" />
|
|
|
<figcaption></figcaption></figure>
|
|
|
|
|
|
-<p><a href="http://libigl.github.io/libigl/">http://libigl.github.io/libigl/</a>
|
|
|
-<a href="https://github.com/libigl/libigl/">https://github.com/libigl/libigl/</a></p>
|
|
|
+<p><a href="https://github.com/libigl/libigl/">https://github.com/libigl/libigl/</a></p>
|
|
|
|
|
|
-<p>Copyright 2014 - Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi
|
|
|
-Takayama, Leo Sacht, Wenzel Jacob, etc.</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 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 <a href="http://eigen.tuxfamily.org">Eigen</a> feel a lot more like MATLAB.</p>
|
|
|
|
|
|
-<p>Libigl is first and foremost a <em>header</em> library. Each header file should
|
|
|
-contain a single function. This function may have multiple overloads and
|
|
|
-prototypes. All functions should use the <code>igl::</code> namespace and should adhere to
|
|
|
-the conventions and styles listed in the <a href="style_guidelines.html">style
|
|
|
-guidelines</a>.</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/README.html">compiled</a> into a statically linked library, for faster compile times with your projects.</p>
|
|
|
|
|
|
-<blockquote>
|
|
|
-<p><strong>New:</strong> As of 1 July 2014, we have released libigl as beta version 1.0.
|
|
|
-There are a number of changes we collected for this release to minimize
|
|
|
-confusion and changes to how you use libigl. See <a href="#version1.0changes">Version 1.0
|
|
|
-Changes</a>.</p>
|
|
|
-</blockquote>
|
|
|
+<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="http://libigl.github.io/libigl/tutorial/matlab-to-eigen.html">conversion table</a> from MATLAB to libigl/Eigen.</p>
|
|
|
+
|
|
|
+<h1 id="tutorial">Tutorial</h1>
|
|
|
+
|
|
|
+<p>As of version 1.0, libigl includes an introductory
|
|
|
+<a href="http://libigl.github.io/libigl/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.
|
|
|
-Simple add <code>igl/</code> to your include path and include relevant headers. Here’s a
|
|
|
+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>
|
|
@@ -64,8 +59,8 @@ int main()
|
|
|
}
|
|
|
</code></pre>
|
|
|
|
|
|
-<p>If you save this in <code>hello.cpp</code>, then on <code>gcc</code> with Eigen installed via
|
|
|
-macports for example you could compile this with:</p>
|
|
|
+<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>
|
|
@@ -79,514 +74,54 @@ macports for example you could compile this with:</p>
|
|
|
0.5 -0.5
|
|
|
</code></pre>
|
|
|
|
|
|
-<h2 id="tutorial">Tutorial</h2>
|
|
|
-
|
|
|
-<p>As of version 1.0, libigl includes an introductory
|
|
|
-<a href="http://libigl.github.io/libigl/tutorial/tutorial.html">tutorial</a> that covers
|
|
|
-its basic functionalities.</p>
|
|
|
-
|
|
|
<h2 id="dependencies">Dependencies</h2>
|
|
|
|
|
|
-<ul>
|
|
|
-<li>Eigen3 Last tested with Eigen Version 3.2</li>
|
|
|
-</ul>
|
|
|
-
|
|
|
-<h3 id="optional">Optional</h3>
|
|
|
-
|
|
|
-<ul>
|
|
|
-<li>OpenGL (disable with <code>IGL_NO_OPENGL</code>)
|
|
|
-
|
|
|
-<ul>
|
|
|
-<li>OpenGL >= 4 (enable with <code>IGL_OPENGL_4</code>)</li>
|
|
|
-</ul></li>
|
|
|
-<li>AntTweakBar (disable with <code>IGL_NO_ANTTWEAKBAR</code>) Last tested 1.16 (see
|
|
|
- <code>libigl/external/AntTweakBar</code>)</li>
|
|
|
-<li>GLEW Windows and Linux</li>
|
|
|
-<li>OpenMP</li>
|
|
|
-<li>libpng libiglpng extra only</li>
|
|
|
-<li>Mosek libiglmosek extra only</li>
|
|
|
-<li>Matlab libiglmatlab extra only</li>
|
|
|
-<li>boost libiglboost, libiglcgal extra only</li>
|
|
|
-<li>SSE/AVX libiglsvd3x3 extra only</li>
|
|
|
-<li>CGAL libiglcgal extra only
|
|
|
-
|
|
|
-<ul>
|
|
|
-<li>boost</li>
|
|
|
-<li>gmp</li>
|
|
|
-<li>mpfr</li>
|
|
|
-</ul></li>
|
|
|
-<li>CoMiSo libcomiso extra only</li>
|
|
|
-</ul>
|
|
|
-
|
|
|
-<h3 id="optionalincludedinexternal">Optional (included in external/)</h3>
|
|
|
-
|
|
|
-<ul>
|
|
|
-<li>TetGen libigltetgen extra only</li>
|
|
|
-<li>Embree libiglembree extra only</li>
|
|
|
-<li>tinyxml2 libiglxml extra only</li>
|
|
|
-<li>glfw libviewer extra only</li>
|
|
|
-<li>LIM liblim extra only</li>
|
|
|
-</ul>
|
|
|
-
|
|
|
-<h2 id="headeronly">Header only</h2>
|
|
|
-
|
|
|
-<p>Libigl is designed to work “out-of-the-box” as a headers only library. To
|
|
|
-include libigl in your project. You need only include the libigl/include/
|
|
|
-directory in your include path. To
|
|
|
-compile a hello-word example.cpp:</p>
|
|
|
-
|
|
|
-<pre><code>#include <Eigen/Dense>
|
|
|
-#include <igl/readOBJ.h>
|
|
|
-#include <iostream>
|
|
|
-int main(int argc, char * argv[])
|
|
|
-{
|
|
|
- if(argc>1)
|
|
|
- {
|
|
|
- Eigen::MatrixXd V;
|
|
|
- Eigen::MatrixXi F;
|
|
|
- igl::readOBJ(argv[1],V,F);
|
|
|
- std::cout<<"Hello, mesh with "<<V.rows()<<" vertices!"<<std::endl;
|
|
|
- }else{
|
|
|
- std::cout<<"Hello, world!"<<std::endl;
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<p>using gcc (replacing appropriate paths):</p>
|
|
|
-
|
|
|
-<pre><code>g++ -I/usr/local/igl/libigl/include \
|
|
|
- -I/opt/local/include/eigen3 example.cpp -o example
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<p>Then run this example with:</p>
|
|
|
-
|
|
|
-<pre><code>./example examples/shared/TinyTorus.obj
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h2 id="compilationasastaticlibrary">Compilation as a static library</h2>
|
|
|
-
|
|
|
-<p>Libigl is developed most often on Mac OS X, though has current users in Linux
|
|
|
-and Windows.</p>
|
|
|
-
|
|
|
-<h3 id="linuxmacosxcygwin">Linux/Mac OS X/Cygwin</h3>
|
|
|
-
|
|
|
-<p>Libigl may also be compiled to a static library. This is advantageous when
|
|
|
-building a project with libigl, since when used as an header-only library can
|
|
|
-slow down compile times.</p>
|
|
|
-
|
|
|
-<p>To build the entire libigl library producing lib/libigl.a, issue:</p>
|
|
|
-
|
|
|
-<pre><code>cd build
|
|
|
-make lib
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<p>You may need to edit Makefile.conf accordingly. Best to give yourself an
|
|
|
-<code>IGL_USERNAME</code> and add a custom install suite for yourself. Then you can enable
|
|
|
-appropriate extras.</p>
|
|
|
-
|
|
|
-<h4 id="extras">Extras</h4>
|
|
|
-
|
|
|
-<p>Once you’ve set up an <code>IGL_USERNAME</code> and enabled extras within Makefile.conf.
|
|
|
-You can build the extra libraries (into lib/ligiglpng.a, lib/libiglmatlab.a,
|
|
|
-lib/libigltetgen.a, lib/libiglmosek.a, etc.) by issuing:</p>
|
|
|
-
|
|
|
-<pre><code>cd build
|
|
|
-make extras
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h4 id="examples">Examples</h4>
|
|
|
-
|
|
|
-<p>You can make a slew of examples by issuing:</p>
|
|
|
-
|
|
|
-<pre><code>cd build
|
|
|
-make examples
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h4 id="external">External</h4>
|
|
|
-
|
|
|
-<p>Finally there are a number of external libraries that we include in
|
|
|
-./external/ because they are either difficult to obtain or they have been
|
|
|
-patched for easier use with libigl. Please see the respective readmes in
|
|
|
-those directories.</p>
|
|
|
-
|
|
|
-<h5 id="installinganttweakbar">Installing AntTweakBar</h5>
|
|
|
-
|
|
|
-<p>To build the a static AntTweakBar library on Mac OS X issue:</p>
|
|
|
-
|
|
|
-<pre><code>cd external/AntTweakBar/src
|
|
|
-make -f Makefile.osx.igl
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h5 id="installingtetgen">Installing Tetgen</h5>
|
|
|
-
|
|
|
-<p>To build the tetgen library and executable on Mac OS X issue:</p>
|
|
|
-
|
|
|
-<pre><code>cd external/tetgen
|
|
|
-make clean
|
|
|
-rm -f obj/*.o
|
|
|
-make -f Makefile.igl tetgen
|
|
|
-rm -f obj/*.o
|
|
|
-make -f Makefile.igl tetlib
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h5 id="installingmedit">Installing medit</h5>
|
|
|
-
|
|
|
-<p>To build the igl version of the medit executable on Mac OS X issue:</p>
|
|
|
-
|
|
|
-<pre><code>cd external/medit
|
|
|
-make -C libmesh
|
|
|
-make -f Makefile.igl medit
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h5 id="installingembree2.0">Installing Embree 2.0</h5>
|
|
|
-
|
|
|
-<p>To build the embree library and executables on Mac OS X issue:</p>
|
|
|
-
|
|
|
-<pre><code>cd external/embree
|
|
|
-mkdir build
|
|
|
-cd build
|
|
|
-cmake ..
|
|
|
-# Or using a different compiler
|
|
|
-#cmake .. -DCMAKE_C_COMPILER=/opt/local/bin/gcc -DCMAKE_CXX_COMPILER=/opt/local/bin/g++
|
|
|
-make
|
|
|
-# Could also install embree to your root, but libigl examples don't expect
|
|
|
-# this
|
|
|
-#sudo make install
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h5 id="installingtinyxml2">Installing tinyxml2</h5>
|
|
|
-
|
|
|
-<p>To build the a static tinyxml2 library on Mac OS X issue:</p>
|
|
|
-
|
|
|
-<pre><code>cd external/tinyxml2
|
|
|
-cmake .
|
|
|
-make
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h5 id="installingyimg">Installing YImg</h5>
|
|
|
-
|
|
|
-<p>To build the a static YImg library on Mac OS X issue:</p>
|
|
|
+<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>
|
|
|
|
|
|
-<pre><code>cd external/yimg
|
|
|
-make
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<p>You may need to install libpng. Systems with X11 might find this already
|
|
|
-installed at <code>/usr/X11/lib</code>.</p>
|
|
|
+<p>For more information see our <a href="tutorial/tutorial.html">tutorial</a>.</p>
|
|
|
|
|
|
-<h3 id="windowsexperimental">Windows (Experimental)</h3>
|
|
|
+<h1 id="download">Download</h1>
|
|
|
|
|
|
-<p>To build a static library (.lib) on windows, open Visual Studio 2010.</p>
|
|
|
+<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>
|
|
|
|
|
|
-<ul>
|
|
|
-<li>New > Project …</li>
|
|
|
-<li>Visual C++ > Win32</li>
|
|
|
-<li>Win32 Console Application</li>
|
|
|
-<li>Name: libiglVisualStudio</li>
|
|
|
-<li>Uncheck “Create directory for solution”</li>
|
|
|
-<li>Then hit OK, and then Next</li>
|
|
|
-<li>Check “Static Library”</li>
|
|
|
-<li>Uncheck “Precompiled headers”</li>
|
|
|
-<li>Add all include/igl/*.cpp to the sources directory</li>
|
|
|
-<li>Add all include/igl/*.h to the headers directory</li>
|
|
|
-<li>Open Project > libigl Properties…</li>
|
|
|
-<li>Add the path to eigen3 to the include paths</li>
|
|
|
-<li>Change the target name to libigl</li>
|
|
|
-<li>Build and pray (this should create libigl.lib</li>
|
|
|
-</ul>
|
|
|
+<h2 id="howtocontribute">How to contribute</h2>
|
|
|
|
|
|
-<p><a href="http://msdn.microsoft.com/en-us/library/ms235627(v=vs.80).aspx">Source</a></p>
|
|
|
+<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="examples">Examples</h2>
|
|
|
-
|
|
|
-<p>To get started, we advise that you take a look at a few examples:</p>
|
|
|
+<h2 id="license">License</h2>
|
|
|
|
|
|
-<pre><code>./examples/hello-world/
|
|
|
+<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>
|
|
|
|
|
|
-./examples/meshio/
|
|
|
+<h2 id="attribution">Attribution</h2>
|
|
|
|
|
|
-./examples/basic-topology/
|
|
|
+<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>
|
|
|
|
|
|
-./examples/ReAntTweakBar/
|
|
|
+<pre><code class="bibtex">@misc{libigl,
|
|
|
+ title = {{libigl}: A simple {C++} geometry processing library},
|
|
|
+ author = {Alec Jacobson and Daniele Panozzo and others},
|
|
|
+ note = {http://igl.ethz.ch/projects/libigl/},
|
|
|
+ year = {2014},
|
|
|
+}
|
|
|
</code></pre>
|
|
|
|
|
|
-<h2 id="extras">Extras</h2>
|
|
|
-
|
|
|
-<p>Libigl compartmentalizes dependences via its organization into a <em>main</em> libigl
|
|
|
-library and “extras.”</p>
|
|
|
-
|
|
|
-<h3 id="bbw">bbw</h3>
|
|
|
-
|
|
|
-<p>This library extra contains functions for computing Bounded Biharmonic Weights, can
|
|
|
-be used with and without the <a href="#mosek">mosek</a> extra via the <code>IGL_NO_MOSEK</code>
|
|
|
-macro.</p>
|
|
|
-
|
|
|
-<h3 id="boost">boost</h3>
|
|
|
-
|
|
|
-<p>This library extra utilizes the graph functions in the boost library for find
|
|
|
-connected components and performing breadth-first traversals.</p>
|
|
|
-
|
|
|
-<h3 id="cgal">cgal</h3>
|
|
|
-
|
|
|
-<p>This library extra utilizes CGAL’s efficient and exact intersection and
|
|
|
-proximity queries.</p>
|
|
|
-
|
|
|
-<h3 id="embree">embree</h3>
|
|
|
-
|
|
|
-<p>This library extra utilizes embree’s efficient ray tracing queries.</p>
|
|
|
-
|
|
|
-<h3 id="matlab">matlab</h3>
|
|
|
-
|
|
|
-<p>This library extra provides support for reading and writing <code>.mat</code> workspace
|
|
|
-files, interfacing with Matlab at run time and compiling mex functions.</p>
|
|
|
+<h1 id="contact">Contact</h1>
|
|
|
|
|
|
-<h3 id="mosek">mosek</h3>
|
|
|
+<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>This library extra utilizes mosek’s efficient interior-point solver for
|
|
|
-quadratic programs.</p>
|
|
|
-
|
|
|
-<h3 id="png">png</h3>
|
|
|
-
|
|
|
-<p>This library extra uses <code>libpng</code> and <code>YImage</code> to read and write <code>.png</code> files.</p>
|
|
|
-
|
|
|
-<h3 id="svd3x3">svd3x3</h3>
|
|
|
-
|
|
|
-<p>This library extra implements “as-rigid-as-possible” (ARAP) deformation
|
|
|
-techniques using the fast singular value decomposition routines
|
|
|
-written specifically for 3x3 matrices to use <code>SSE</code> intrinsics. This extra can
|
|
|
-still be compiled without sse support and support should be determined
|
|
|
-automatically at compile time via the <code>__SSE__</code> macro.</p>
|
|
|
-
|
|
|
-<h3 id="tetgen">tetgen</h3>
|
|
|
-
|
|
|
-<p>This library extra provides a simplified wrapper to the tetgen 3d tetrahedral meshing
|
|
|
-library.</p>
|
|
|
-
|
|
|
-<h3 id="viewer">viewer</h3>
|
|
|
-
|
|
|
-<p>This library extra utilizes glfw and glew to open an opengl context and launch
|
|
|
-a simple mesh viewer.</p>
|
|
|
-
|
|
|
-<h3 id="xml">xml</h3>
|
|
|
-
|
|
|
-<p>This library extra utilizes tinyxml2 to read and write serialized classes
|
|
|
-containing Eigen matrices and other standard simple data-structures.</p>
|
|
|
-
|
|
|
-<h2 id="development">Development</h2>
|
|
|
-
|
|
|
-<p>Further documentation for developers is listed in tutorial.html,
|
|
|
-style_guidelines.html</p>
|
|
|
-
|
|
|
-<h2 id="license">License</h2>
|
|
|
-
|
|
|
-<p>See <code>LICENSE.txt</code></p>
|
|
|
-
|
|
|
-<h2 id="zipping">Zipping</h2>
|
|
|
-
|
|
|
-<p>Zip this directory without .git litter and binaries using:</p>
|
|
|
-
|
|
|
-<pre><code>git archive -prefix=libigl/ -o libigl.zip master
|
|
|
-</code></pre>
|
|
|
-
|
|
|
-<h2 id="version1.0changes">Version 1.0 Changes</h2>
|
|
|
-
|
|
|
-<p>Our beta release marks our confidence that this library can be used outside of
|
|
|
-casual experimenting. To maintain order, we have made a few changes which
|
|
|
-current users should read and adapt their code accordingly.</p>
|
|
|
-
|
|
|
-<h3 id="renamedfunctions">Renamed functions</h3>
|
|
|
-
|
|
|
-<p>The following table lists functions which have changed name as of version
|
|
|
-1.0.0:</p>
|
|
|
-
|
|
|
-<table>
|
|
|
-<colgroup>
|
|
|
-<col style="text-align:left;"/>
|
|
|
-<col style="text-align:left;"/>
|
|
|
-</colgroup>
|
|
|
-
|
|
|
-<thead>
|
|
|
-<tr>
|
|
|
- <th style="text-align:left;">Old</th>
|
|
|
- <th style="text-align:left;">New</th>
|
|
|
-</tr>
|
|
|
-</thead>
|
|
|
-
|
|
|
-<tbody>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::add_barycenter</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::false_barycentric_subdivision</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::areamatrix</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::vector_area_matrix</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::barycentric2global</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::barycentric_to_global</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::boundary_faces</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::boundary_facets</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::boundary_vertices_sorted</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::boundary_loop</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::cotangent</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::cotmatrix_entries</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::edgetopology</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::edge_topology</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::gradMat</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::grad</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::is_manifold</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::is_edge_manifold</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::mexStream</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::MexStream</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::moveFV</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::average_onto_vertices</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::moveVF</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::average_onto_faces</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::plot_vector</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::print_vector</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::pos</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::HalfEdgeIterator</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::plane_project</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::project_isometrically_to_plane</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::project_points_mesh</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::line_mesh_intersection</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::read</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::read_triangle_mesh</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::removeDuplicates.cpp</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::remove_duplicates</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::removeUnreferenced</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::remove_unreferenced</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::tt</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::triangle_triangle_adjacency</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::vf</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::vertex_triangle_adjacency</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::write</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::write_triangle_mesh</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::manifold_patches</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::orientable_patches</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::selfintersect</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::remesh_self_intersections</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::project_mesh</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::line_mesh_intersection</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::triangulate</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::polygon_mesh_to_triangle_mesh</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::is_manifold</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::is_edge_manifold</code></td>
|
|
|
-</tr>
|
|
|
-<tr>
|
|
|
- <td style="text-align:left;"><code>igl::triangle_wrapper</code></td>
|
|
|
- <td style="text-align:left;"><code>igl::triangulate</code></td>
|
|
|
-</tr>
|
|
|
-</tbody>
|
|
|
-</table>
|
|
|
-
|
|
|
-<h3 id="miscellaneous">Miscellaneous</h3>
|
|
|
-
|
|
|
-<ul>
|
|
|
-<li>To match interfaces provided by (all) other quadratic optimization
|
|
|
- libraries, <code>igl::min_quad_with_fixed</code> and <code>igl::active_set</code> now expect as
|
|
|
- input twice the quadratic coefficients matrix, i.e. the Hessian. For
|
|
|
- example, <code>igl::min_quad_with_fixed(H,B,...)</code> minimizes <span class="math">\(\frac{1}{2}x^T H
|
|
|
- x+x^T B\)</span>.</li>
|
|
|
-<li>We have inverted the <code>IGL_HEADER_ONLY</code> macro to <code>IGL_STATIC_LIBRARY</code>. To
|
|
|
- compile using libigl as a header-only library, simply include headers and
|
|
|
- libigl in the header search path. To link to libigl, you must define the
|
|
|
- <code>IGL_STATIC_LIBRARY</code> macro at compile time and link to the <code>libigl*.a</code>
|
|
|
- libraries.</li>
|
|
|
-<li>Building libigl as a static library is now more organized. There is a
|
|
|
- <code>build/</code> directory with Makefiles for the main library (<code>Makefile</code>) and each
|
|
|
- dependency (e.g. <code>Makefile_mosek</code> for <code>libiglmosek.a</code>)</li>
|
|
|
-<li><code>igl::polar_svd</code> now always returns a rotation in <code>R</code>, never a reflection.
|
|
|
- This mirrors the behavior of <code>igl::polar_svd3x3</code>. Consequently the <code>T</code>
|
|
|
- part may have negative skews.</li>
|
|
|
-<li>We have organized the static</li>
|
|
|
-<li>The previous <code>igl::grad</code> function, which computed the per-triangle gradient
|
|
|
- of a per-vertex scalar function has been replaced. Now <code>igl::grad</code> computes
|
|
|
- the linear operator (previous computed using <code>igl::gradMat</code>). The gradient
|
|
|
- values can still be recovered by multiplying the operator against the scalar
|
|
|
- field as a vector and reshaping to have gradients per row.</li>
|
|
|
-<li><code>MASSMATRIX_*</code> has become <code>MASSMATRIX_TYPE_*</code></li>
|
|
|
-<li>The function <code>igl::project_normals</code>, which cast a line for each vertex of
|
|
|
- mesh <em>A</em> in the normal direction and found the closest intersection along
|
|
|
- these lines with mesh <em>B</em>, has been removed.</li>
|
|
|
-</ul>
|
|
|
-
|
|
|
-<h2 id="contact">Contact</h2>
|
|
|
-
|
|
|
-<p>Libigl is a group endeavor led by Alec Jacobson and Daniele Panozzo. Please
|
|
|
-contact <a href="mailto:alecjacobson@gmail.com">alecjacobson@gmail.com</a> if you have
|
|
|
-questions or comments. We are happy to get feedback! Enjoy!</p>
|
|
|
-
|
|
|
-<p>If you’re using libigl in your projects, quickly <a href="mailto:alecjacobson@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
|
|
|
+<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="academiccitation">Academic citation</h2>
|
|
|
-
|
|
|
-<p>If you use libigl in your research projects, please cite the papers we
|
|
|
-implement as appropriate. To cite the library in general, you could use this
|
|
|
-BibTeX entry:</p>
|
|
|
+<h3 id="copyright">Copyright</h3>
|
|
|
|
|
|
-<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 = {2014},
|
|
|
-}
|
|
|
-</code></pre>
|
|
|
+<p>2014 Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi
|
|
|
+Takayama, Leo Sacht, Wenzel Jacob, Nico Pietroni, Amir Vaxman</p>
|
|
|
|
|
|
</body>
|
|
|
</html>
|