index.html 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>libigl</title>
  6. <meta name="author" content="Alec Jacobson and Daniele Panozzo and others"/>
  7. <link type="text/css" rel="stylesheet" href="tutorial/style.css"/>
  8. <script type='text/javascript' src='http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
  9. <link rel='stylesheet' href='http://yandex.st/highlightjs/7.3/styles/default.min.css'>
  10. <script src='http://yandex.st/highlightjs/7.3/highlight.min.js'></script>
  11. <script>hljs.initHighlightingOnLoad();</script>
  12. </head>
  13. <body>
  14. <h1 id="libigl-asimplecgeometryprocessinglibrary">libigl - A simple C++ geometry processing library</h1>
  15. <figure>
  16. <img src="libigl-teaser.png" alt="" />
  17. </figure>
  18. <p><a href="https://github.com/libigl/libigl/">https://github.com/libigl/libigl/</a></p>
  19. <p>libigl is a simple C++ geometry processing library. We have a wide
  20. functionality including construction of sparse discrete differential geometry
  21. operators and finite-elements matrices such as the contangent Laplacian and
  22. diagonalized mass matrix, simple facet and edge-based topology data structures,
  23. mesh-viewing utilities for OpenGL and GLSL, and many core functions for matrix
  24. manipulation which make <a href="http://eigen.tuxfamily.org">Eigen</a> feel a lot more
  25. like MATLAB.</p>
  26. <p>It is first and foremost a header library. Each header file contains a single
  27. function. Most are tailored to operate on a generic triangle mesh stored in an
  28. n-by&#8211;3 matrix of vertex positions V and an m-by&#8211;3 matrix of triangle indices F.
  29. The library may also be <a href="build/">compiled</a> into a statically linked
  30. library, for faster compile times with your projects.</p>
  31. <p>We use the <a href="http://eigen.tuxfamily.org">Eigen</a> library heavily in our code. Our
  32. group prototypes a lot in MATLAB, and we have a useful <a href="matlab-to-eigen.html">conversion
  33. table</a> from
  34. MATLAB to libigl/Eigen.</p>
  35. <h1 id="tutorial">Tutorial</h1>
  36. <p>As of version 1.0, libigl includes an introductory
  37. <a href="tutorial/tutorial.html">tutorial</a> that covers
  38. its basic functionalities.</p>
  39. <h2 id="installation">Installation</h2>
  40. <p>Libigl is a <em>header</em> library. You do <strong>not</strong> need to build anything to install.
  41. Simply add <code>igl/</code> to your include path and include relevant headers. Here is a
  42. small &#8220;Hello, World&#8221; program:</p>
  43. <pre><code class="cpp">#include &lt;igl/cotmatrix.h&gt;
  44. #include &lt;Eigen/Dense&gt;
  45. #include &lt;Eigen/Sparse&gt;
  46. #include &lt;iostream&gt;
  47. int main()
  48. {
  49. Eigen::MatrixXd V(4,2);
  50. V&lt;&lt;0,0,
  51. 1,0,
  52. 1,1,
  53. 0,1;
  54. Eigen::MatrixXi F(2,3);
  55. F&lt;&lt;0,1,2,
  56. 0,2,3;
  57. Eigen::SparseMatrix&lt;double&gt; L;
  58. igl::cotmatrix(V,F,L);
  59. std::cout&lt;&lt;&quot;Hello, mesh: &quot;&lt;&lt;std::endl&lt;&lt;L*V&lt;&lt;std::endl;
  60. return 0;
  61. }
  62. </code></pre>
  63. <p>If you save this in <code>hello.cpp</code>, then you could compile this with (assuming
  64. Eigen is installed in /opt/local/include/eigen3):</p>
  65. <pre><code class="bash">gcc -I/opt/local/include/eigen3 -I./igl/ hello.cpp -o hello
  66. </code></pre>
  67. <p>Running <code>./hello</code> would then produce</p>
  68. <pre><code>Hello, mesh:
  69. 0.5 0.5
  70. -0.5 0.5
  71. -0.5 -0.5
  72. 0.5 -0.5
  73. </code></pre>
  74. <h2 id="dependencies">Dependencies</h2>
  75. <p>Dependencies are on a per-include basis and the majority of the functions in
  76. libigl depends only on the <a href="http://eigen.tuxfamily.org">Eigen</a> library.</p>
  77. <p>For more information see our <a href="tutorial/tutorial.html">tutorial</a>.</p>
  78. <h1 id="download">Download</h1>
  79. <p>You can keep up to date by cloning a read-only copy of our GitHub
  80. <a href="https://github.com/libigl">repository</a>.</p>
  81. <h2 id="howtocontribute">How to contribute</h2>
  82. <p>If you are interested in joining development, please fork the repository and
  83. submit a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a>
  84. with your changes.</p>
  85. <h2 id="license">License</h2>
  86. <p>libigl is primarily <a href="http://www.mozilla.org/MPL/2.0/">MPL2</a> licensed
  87. (<a href="http://www.mozilla.org/MPL/2.0/FAQ.html">FAQ</a>). Some files contain
  88. third-party code under other licenses. We&#8217;re currently in the processes of
  89. identifying these and marking appropriately.</p>
  90. <h2 id="attribution">Attribution</h2>
  91. <p>If you use libigl in your academic projects, please cite the papers we
  92. implement as appropriate. To cite the library in general, you could use this
  93. BibTeX entry:</p>
  94. <pre><code class="bibtex">@misc{libigl,
  95. title = {{libigl}: A simple {C++} geometry processing library},
  96. author = {Alec Jacobson and Daniele Panozzo and others},
  97. note = {http://libigl.github.io/libigl/},
  98. year = {2014},
  99. }
  100. </code></pre>
  101. <h1 id="contact">Contact</h1>
  102. <p>Libigl is a group endeavor led by <a href="http://www.cs.columbia.edu/~jacobson/">Alec
  103. Jacobson</a> and <a href="http://www.inf.ethz.ch/personal/dpanozzo/">Daniele
  104. Panozzo</a>. Please <a href="&#109;&#97;&#105;&#108;&#x74;&#111;&#x3a;&#x61;&#x6c;&#101;&#x63;&#x6a;&#x61;&#x63;&#111;&#98;&#115;&#111;&#110;&#64;&#103;&#109;&#x61;&#105;&#108;&#x2e;&#x63;&#x6f;&#x6d;&#44;&#x64;&#x61;&#110;&#105;&#101;&#x6c;&#101;&#x2e;&#x70;&#x61;&#110;&#x6f;&#122;&#x7a;&#x6f;&#64;&#x67;&#x6d;&#x61;&#x69;&#x6c;&#x2e;&#99;&#x6f;&#x6d;">&#99;&#x6f;&#x6e;&#116;&#x61;&#99;&#x74;
  105. &#117;&#115;</a> if you have
  106. questions or comments. We are happy to get feedback!</p>
  107. <p>If you&#8217;re using libigl in your projects, quickly <a href="&#x6d;&#x61;&#105;&#108;&#x74;&#x6f;&#58;&#97;&#x6c;&#101;&#99;&#106;&#x61;&#x63;&#111;&#x62;&#x73;&#x6f;&#110;&#64;&#103;&#x6d;&#x61;&#x69;&#x6c;&#46;&#99;&#x6f;&#x6d;&#x2c;&#100;&#x61;&#110;&#105;&#x65;&#108;&#x65;&#x2e;&#112;&#97;&#x6e;&#111;&#x7a;&#x7a;&#x6f;&#x40;&#103;&#109;&#x61;&#105;&#x6c;&#x2e;&#x63;&#111;&#109;">&#x64;&#x72;&#111;&#112; &#x75;&#x73; &#97;
  108. &#110;&#111;&#116;&#101;</a>. Tell us who you
  109. are and what you&#8217;re using it for. This helps us apply for funding and justify
  110. spending time maintaining this.</p>
  111. <p>If you find bugs or have problems please use our <a href="https://github.com/libigl/libigl/issues">github issue tracking
  112. page</a>.</p>
  113. <h3 id="copyright">Copyright</h3>
  114. <p>2014 Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi
  115. Takayama, Leo Sacht, Wenzel Jacob, Nico Pietroni, Amir Vaxman</p>
  116. <figure>
  117. <img src="tutorial/images/libigl-logo.jpg" alt="" />
  118. </figure>
  119. </body>
  120. </html>