english names for anchors
This commit is contained in:
+66
-66
@@ -35,15 +35,15 @@ lecture notes links to a cross-platform example application.</p>
|
||||
<h1 id="tableofcontents">Table of contents</h1>
|
||||
|
||||
<ul>
|
||||
<li><a href="#100">Chapter 1: Introduction to libigl</a>
|
||||
<li><a href="#chapter1:introductiontolibigl">Chapter 1: Introduction to libigl</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="#100b">Libigl design principles</a></li>
|
||||
<li><a href="#101">101 Mesh representation</a></li>
|
||||
<li><a href="#102">102 Visualizing surfaces</a></li>
|
||||
<li><a href="#103">103 Interaction with keyboard and mouse</a></li>
|
||||
<li><a href="#104">104 Scalar field visualization</a></li>
|
||||
<li><a href="#105">105 Overlays</a></li>
|
||||
<li><a href="#libigldesignprinciples">Libigl design principles</a></li>
|
||||
<li><a href="#meshrepresentation">101 Mesh representation</a></li>
|
||||
<li><a href="#visualizingsurfaces">102 Visualizing surfaces</a></li>
|
||||
<li><a href="#interactionwithkeyboardandmouse">103 Interaction with keyboard and mouse</a></li>
|
||||
<li><a href="#scalarfieldvisualization">104 Scalar field visualization</a></li>
|
||||
<li><a href="#overlays">105 Overlays</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#chapter2:discretegeometricquantitiesandoperators">Chapter 2: Discrete Geometric Quantities and
|
||||
Operators</a>
|
||||
@@ -99,49 +99,49 @@ lecture notes links to a cross-platform example application.</p>
|
||||
<li><a href="#arapwithgroupededge-sets">ARAP with grouped edge-sets</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li><a href="#500">Chapter 5: Parametrization</a>
|
||||
<li><a href="#chapter5:parametrization">Chapter 5: Parametrization</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="#501">501 Harmonic parametrization</a></li>
|
||||
<li><a href="#502">502 Least-Square Conformal Maps</a></li>
|
||||
<li><a href="#503">503 As-Rigid-As-Possible</a></li>
|
||||
<li><a href="#504">504 N-Rotationally symmetric tangent fields</a></li>
|
||||
<li><a href="#505">505 Global, seamless integer-grid parametrization</a></li>
|
||||
<li><a href="#506">506 Anisotropic remeshing using frame fields</a></li>
|
||||
<li><a href="#507">507 N-PolyVector fields</a></li>
|
||||
<li><a href="#508">508 Conjugate vector fields</a></li>
|
||||
<li><a href="#509">509 Planarization</a></li>
|
||||
<li><a href="#harmonicparametrization">501 Harmonic parametrization</a></li>
|
||||
<li><a href="#leastsquareconformalmaps">502 Least-Square Conformal Maps</a></li>
|
||||
<li><a href="#asrigidaspossible">503 As-Rigid-As-Possible</a></li>
|
||||
<li><a href="#nrotationallysymmetrictangetfields">504 N-Rotationally symmetric tangent fields</a></li>
|
||||
<li><a href="#globalseamlessintegergridparametrization">505 Global, seamless integer-grid parametrization</a></li>
|
||||
<li><a href="#anisotropicremeshingusingframefields">506 Anisotropic remeshing using frame fields</a></li>
|
||||
<li><a href="#npolyvectorfields">507 N-PolyVector fields</a></li>
|
||||
<li><a href="#conjugatevectorfields">508 Conjugate vector fields</a></li>
|
||||
<li><a href="#planarization">509 Planarization</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#600">Chapter 6: External libraries</a>
|
||||
<li><a href="#chapter6:externallibraries">Chapter 6: External libraries</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="#601">601 State serialization</a></li>
|
||||
<li><a href="#602">602 Mixing Matlab code</a>
|
||||
<li><a href="#stateserialization">601 State serialization</a></li>
|
||||
<li><a href="#mixingmatlabcode">602 Mixing Matlab code</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="#savingamatlabworkspace">Saving a Matlab workspace</a></li>
|
||||
<li><a href="#dumpingeigenmatricestocopyandpasteintomatlab">Dumping Eigen matrices to copy and paste into
|
||||
Matlab</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#603">603 Calling libigl functions from Matlab</a></li>
|
||||
<li><a href="#604">604 Triangulation of closed polygons</a></li>
|
||||
<li><a href="#605">605 Tetrahedralization of closed surfaces</a></li>
|
||||
<li><a href="#606">606 Baking ambient occlusion</a></li>
|
||||
<li><a href="#607">607 Picking vertices and faces</a></li>
|
||||
<li><a href="#608">608 Locally Injective Maps</a></li>
|
||||
<li><a href="#609">609 Boolean Operations on Meshes</a></li>
|
||||
<li><a href="#callinglibiglfunctionsfrommatlab">603 Calling libigl functions from Matlab</a></li>
|
||||
<li><a href="#triangulationofclosedpolygons">604 Triangulation of closed polygons</a></li>
|
||||
<li><a href="#tetrahedralizationofclosedsurfaces">605 Tetrahedralization of closed surfaces</a></li>
|
||||
<li><a href="#bakingambientocclusion">606 Baking ambient occlusion</a></li>
|
||||
<li><a href="#pickingverticesandfaces">607 Picking vertices and faces</a></li>
|
||||
<li><a href="#locallyinjectivemaps">608 Locally Injective Maps</a></li>
|
||||
<li><a href="#booleanoperationsonmeshes">609 Boolean Operations on Meshes</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#700">Chapter 7: Miscellaneous</a>
|
||||
<li><a href="#chapter7:miscellaneous">Chapter 7: Miscellaneous</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="#701">701 Mesh Statistics</a></li>
|
||||
<li><a href="#702">702 Generalized Winding Number</a></li>
|
||||
<li><a href="#703">703 Mesh Decimation</a></li>
|
||||
<li><a href="#meshstatistics">701 Mesh Statistics</a></li>
|
||||
<li><a href="#generalizedwindingnumber">702 Generalized Winding Number</a></li>
|
||||
<li><a href="#meshdecimation">703 Mesh Decimation</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#future">Chapter 8: Outlook for continuing development</a></li>
|
||||
</ul>
|
||||
|
||||
<h1 id="100">Chapter 1</h1>
|
||||
<h1 id="chapter1:introductiontolibigl">Chapter 1</h1>
|
||||
|
||||
<p>We introduce libigl with a series of self-contained examples. The purpose of
|
||||
each example is to showcase a feature of libigl while applying to a practical
|
||||
@@ -150,7 +150,7 @@ concepts of libigl and introduce a simple mesh viewer that allows to
|
||||
visualize a surface mesh and its attributes. All the tutorial examples are
|
||||
cross-platform and can be compiled on MacOSX, Linux and Windows.</p>
|
||||
|
||||
<h2 id="100b">libigl design principles</h2>
|
||||
<h2 id="libigldesignprinciples">libigl design principles</h2>
|
||||
|
||||
<p>Before getting into the examples, we summarize the main design principles in
|
||||
libigl:</p>
|
||||
@@ -209,7 +209,7 @@ inside each example folder.</p>
|
||||
solver</a> which has to be
|
||||
downloaded and compiled separately.</p>
|
||||
|
||||
<h2 id="101">Mesh representation</h2>
|
||||
<h2 id="meshrepresentation">Mesh representation</h2>
|
||||
|
||||
<p>libigl uses the <a href="http://eigen.tuxfamily.org/">Eigen</a> library to encode vector
|
||||
and matrices. We suggest that you keep the
|
||||
@@ -262,7 +262,7 @@ Similarly, a mesh can be written in an OBJ file using:</p>
|
||||
<p><a href="101_FileIO/main.cpp">Example 101</a> contains a simple mesh
|
||||
converter from OFF to OBJ format.</p>
|
||||
|
||||
<h2 id="102">Visualizing surfaces</h2>
|
||||
<h2 id="visualizingsurfaces">Visualizing surfaces</h2>
|
||||
|
||||
<p>Libigl provides an glfw-based OpenGL 3.2 viewer to visualize surfaces, their
|
||||
properties and additional debugging informations.</p>
|
||||
@@ -303,7 +303,7 @@ mesh." />
|
||||
<figcaption>(<a href="102_DrawMesh/main.cpp">Example 102</a>) loads and draws a
|
||||
mesh.</figcaption></figure>
|
||||
|
||||
<h2 id="103">Interaction with keyboard and mouse</h2>
|
||||
<h2 id="interactionwithkeyboardandmouse">Interaction with keyboard and mouse</h2>
|
||||
|
||||
<p>Keyboard and mouse events triggers callbacks that can be registered in the
|
||||
viewer. The viewer supports the following callbacks:</p>
|
||||
@@ -356,7 +356,7 @@ control the camera directly in your code.</p>
|
||||
the viewer’s callbacks. See the
|
||||
<a href="../include/igl/viewer/ViewerPlugin.h">Viewer_plugin</a> for more details.</p>
|
||||
|
||||
<h2 id="104">Scalar field visualization</h2>
|
||||
<h2 id="scalarfieldvisualization">Scalar field visualization</h2>
|
||||
|
||||
<p>Colors and normals can be associated to faces or vertices using the
|
||||
set_colors function:</p>
|
||||
@@ -394,7 +394,7 @@ color field.</figcaption></figure>
|
||||
types and can be easily reused for many different tasks. Not committing to
|
||||
heavy data structures types favors simplicity, ease of use and reusability.</p>
|
||||
|
||||
<h2 id="105">Overlays</h2>
|
||||
<h2 id="overlays">Overlays</h2>
|
||||
|
||||
<p>In addition to plotting the surface, the viewer supports the visualization of points, lines and text labels: these overlays can be very helful while developing geometric processing algorithms to plot debug informations.</p>
|
||||
|
||||
@@ -1676,7 +1676,7 @@ ARAP deformation on a detailed shape (left of middle), to ARAP with grouped
|
||||
rotation edge sets (right of middle), to the very fast subpsace method
|
||||
(right).</figcaption></figure>
|
||||
|
||||
<h1 id="500">Chapter 5: Parametrization</h1>
|
||||
<h1 id="chapter5:parametrization">Chapter 5: Parametrization</h1>
|
||||
|
||||
<p>In computer graphics, we denote as surface parametrization a map from the
|
||||
surface to <span class="math">\(\mathbf{R}^2\)</span>. It is usually encoded by a new set of 2D
|
||||
@@ -1702,7 +1702,7 @@ genus. They initially cut the mesh in multiple patches that can be separately pa
|
||||
<li><p><strong>Global seamless parametrization</strong>: these are global parametrization algorithm that hides the seams, making the parametrization “continuous”, under specific assumptions that we will discuss later.</p></li>
|
||||
</ol>
|
||||
|
||||
<h2 id="501">Harmonic parametrization</h2>
|
||||
<h2 id="harmonicparametrization">Harmonic parametrization</h2>
|
||||
|
||||
<p>Harmonic parametrization <a class="citation" href="#fn:16" title="Jump to citation">[16]<span class="citekey" style="display:none">eck_2005</span></a> is a single patch, fixed boundary parametrization
|
||||
algorithm that computes the 2D coordinates of the flattened mesh as two
|
||||
@@ -1746,7 +1746,7 @@ texture" />
|
||||
mesh with texture, (right) UV parametrization with
|
||||
texture</figcaption></figure>
|
||||
|
||||
<h2 id="502">Least squares conformal maps</h2>
|
||||
<h2 id="leastsquareconformalmaps">Least squares conformal maps</h2>
|
||||
|
||||
<p>Least squares conformal maps parametrization <a class="citation" href="#fn:17" title="Jump to citation">[17]<span class="citekey" style="display:none">levy_2002</span></a> minimizes the
|
||||
conformal (angular) distortion of the parametrization. Differently from
|
||||
@@ -1795,7 +1795,7 @@ with texture, (right) UV parametrization" />
|
||||
<figcaption>(<a href="502_LSCMParam/main.cpp">Example 502</a>) LSCM parametrization. (left) mesh
|
||||
with texture, (right) UV parametrization</figcaption></figure>
|
||||
|
||||
<h2 id="503">As-rigid-as-possible parametrization</h2>
|
||||
<h2 id="asrigidaspossible">As-rigid-as-possible parametrization</h2>
|
||||
|
||||
<p>As-rigid-as-possible parametrization <a class="citation" href="#fn:19" title="Jump to citation">[19]<span class="citekey" style="display:none">liu_2008</span></a> is a powerful single-patch,
|
||||
non-linear algorithm to compute a parametrization that strives to preserve
|
||||
@@ -1821,7 +1821,7 @@ texture" />
|
||||
(left) mesh with texture, (right) UV parametrization with
|
||||
texture</figcaption></figure>
|
||||
|
||||
<h2 id="504">N-rotationally symmetric tangent fields</h2>
|
||||
<h2 id="nrotationallysymmetrictangetfields">N-rotationally symmetric tangent fields</h2>
|
||||
|
||||
<p>The design of tangent fields is a basic tool used to design guidance fields for
|
||||
uniform quadrilateral and hexahedral remeshing. Libigl contains an
|
||||
@@ -1861,10 +1861,10 @@ N are of different types and they appear in different positions.</p>
|
||||
504</a>, where the degree of the field can be change
|
||||
pressing the number keys. <code>igl::nrosy</code> implements the algorithm proposed in
|
||||
<a class="citation" href="#fn:21" title="Jump to citation">[21]<span class="citekey" style="display:none">bommes_2009</span></a>. N-RoSy fields can also be interpolated with the algorithm
|
||||
proposed in <a class="citation" href="#fn:22" title="Jump to citation">[22]<span class="citekey" style="display:none">knoppel_2013</span></a>, see Section <a href="#507">507</a> for more details
|
||||
proposed in <a class="citation" href="#fn:22" title="Jump to citation">[22]<span class="citekey" style="display:none">knoppel_2013</span></a>, see Section <a href="#npolyvectorfields">npolyvectorfields</a> for more details
|
||||
(<a href="../include/igl/n_polyvector.h">igl::n_polyvector</a>).</p>
|
||||
|
||||
<h3 id="505">Global, seamless integer-grid parametrization</h3>
|
||||
<h3 id="globalseamlessintegergridparametrization">Global, seamless integer-grid parametrization</h3>
|
||||
|
||||
<p>The previous parametrization methods were focusing on creating parametrizations
|
||||
of surface patches aimed at texture mapping or baking of other surface
|
||||
@@ -1962,7 +1962,7 @@ it contains many overlaps.</p>
|
||||
<a href="https://github.com/hcebke/libQEx">libQEx</a> (not included in libigl).
|
||||
The full pipeline is implemented in <a href="505_MIQ/main.cpp">Example 505</a>.</p>
|
||||
|
||||
<h2 id="506">Anisotropic remeshing</h2>
|
||||
<h2 id="anisotropicremeshingusingframefields">Anisotropic remeshing</h2>
|
||||
|
||||
<p>Anisotropic and non-uniform quad remeshing is important to concentrate the
|
||||
elements in the regions with more details. It is possible to extend the MIQ
|
||||
@@ -2019,7 +2019,7 @@ generate the UV parametrization, but other algorithms could be applied: the
|
||||
only desiderata is that the generated quad mesh should be as isotropic as
|
||||
possible.</p>
|
||||
|
||||
<h2 id="507">N-PolyVector fields</h2>
|
||||
<h2 id="npolyvectorfields">N-PolyVector fields</h2>
|
||||
|
||||
<p>N-RoSy vector fields can be further generalized to represent arbitrary
|
||||
vector-sets, with arbitrary angles between them and with arbitrary lengths
|
||||
@@ -2040,7 +2040,7 @@ PolyVector fields. If the constraints are taken from an N-RoSy field,
|
||||
<code>igl::n_polyvector</code> generates a field that is equivalent, after normalization,
|
||||
to a globally optimal direction field.</p>
|
||||
|
||||
<h2 id="508">Conjugate vector fields</h2>
|
||||
<h2 id="conjugatevectorfields">Conjugate vector fields</h2>
|
||||
|
||||
<p>Two tangent vectors lying on a face of a triangle mesh are conjugate if</p>
|
||||
|
||||
@@ -2065,7 +2065,7 @@ closest conjugate field (<a href="508_ConjugateField/main.cpp">Example 508</a>).
|
||||
<figcaption>A smooth 4-PolyVector field (left) is deformed to become a conjugate field
|
||||
(right).</figcaption></figure>
|
||||
|
||||
<h2 id="509">Planarization</h2>
|
||||
<h2 id="planarization">Planarization</h2>
|
||||
|
||||
<p>A quad mesh can be transformed in a planar quad mesh with Shape-Up
|
||||
<a class="citation" href="#fn:26" title="Jump to citation">[26]<span class="citekey" style="display:none">bouaziz_2012</span></a>, a local/global approach that uses the global step to enforce
|
||||
@@ -2082,12 +2082,12 @@ quads." />
|
||||
igl::palanarize (right). The colors represent the planarity of the
|
||||
quads.</figcaption></figure>
|
||||
|
||||
<h1 id="600">Chapter 6: External libraries</h1>
|
||||
<h1 id="chapter6:externallibraries">Chapter 6: External libraries</h1>
|
||||
|
||||
<p>An additional positive side effect of using matrices as basic types is that it
|
||||
is easy to exchange data between libigl and other softwares and libraries.</p>
|
||||
|
||||
<h2 id="601">State serialization</h2>
|
||||
<h2 id="stateserialization">State serialization</h2>
|
||||
|
||||
<p>Geometry processing applications often require a considerable amount of
|
||||
computational time and/or manual input. Serializing the state of the application is a simple strategy to greatly increase the development efficiency. It allows to quickly start debugging just
|
||||
@@ -2206,7 +2206,7 @@ common to have to do small changes to figures, and being able to serialize the
|
||||
entire state just before you take screenshots will save you many painful hours
|
||||
before a submission deadline.</p>
|
||||
|
||||
<h2 id="602">Mixing Matlab code</h2>
|
||||
<h2 id="mixingmatlabcode">Mixing Matlab code</h2>
|
||||
|
||||
<p>Libigl can be interfaced with Matlab to offload numerically heavy computation
|
||||
to a Matlab script. The major advantage of this approach is that you will be
|
||||
@@ -2330,7 +2330,7 @@ L = sparse(LIJV(:,1),LIJV(:,2),LIJV(:,3));
|
||||
|
||||
<p>which is easily copied and pasted into Matlab for debugging, etc.</p>
|
||||
|
||||
<h2 id="603">Calling libigl functions from Matlab</h2>
|
||||
<h2 id="callinglibiglfunctionsfrommatlab">Calling libigl functions from Matlab</h2>
|
||||
|
||||
<p>It is also possible to call libigl functions from matlab, compiling them as MEX
|
||||
functions. This can be used to offload to C++ code the computationally
|
||||
@@ -2341,7 +2341,7 @@ We plan to provide wrappers for all our functions in the future, if you are
|
||||
interested in this feature (or if you want to help implementing it) please let
|
||||
us know.</p>
|
||||
|
||||
<h2 id="604">Triangulation of closed polygons</h2>
|
||||
<h2 id="triangulationofclosedpolygons">Triangulation of closed polygons</h2>
|
||||
|
||||
<p>The generation of high-quality triangle and tetrahedral meshes is a very common
|
||||
task in geometry processing. We provide wrappers in libigl to
|
||||
@@ -2365,7 +2365,7 @@ in its interior) is triangulated.</p>
|
||||
<img src="images/604_Triangle.png" alt="Triangulation of the interior of a polygon." />
|
||||
<figcaption>Triangulation of the interior of a polygon.</figcaption></figure>
|
||||
|
||||
<h2 id="605">Tetrahedralization of closed surfaces</h2>
|
||||
<h2 id="tetrahedralizationofclosedsurfaces">Tetrahedralization of closed surfaces</h2>
|
||||
|
||||
<p>Similarly, the interior of a closed manifold surface can be tetrahedralized
|
||||
using the function <code>igl::tetrahedralize</code> which wraps the Tetgen library (<a href="605_Tetgen/main.c">Example
|
||||
@@ -2378,7 +2378,7 @@ using the function <code>igl::tetrahedralize</code> which wraps the Tetgen libra
|
||||
<img src="images/605_Tetgen.png" alt="Tetrahedralization of the interior of a surface mesh." />
|
||||
<figcaption>Tetrahedralization of the interior of a surface mesh.</figcaption></figure>
|
||||
|
||||
<h2 id="606">Baking ambient occlusion</h2>
|
||||
<h2 id="bakingambientocclusion">Baking ambient occlusion</h2>
|
||||
|
||||
<p><a href="http://en.wikipedia.org/wiki/Ambient_occlusion">Ambient occlusion</a> is a
|
||||
rendering technique used to calculate the exposure of each point in a surface
|
||||
@@ -2414,7 +2414,7 @@ occlusion." />
|
||||
<figcaption>A mesh rendered without (left) and with (right) ambient
|
||||
occlusion.</figcaption></figure>
|
||||
|
||||
<h2 id="607">Picking</h2>
|
||||
<h2 id="pickingverticesandfaces">Picking</h2>
|
||||
|
||||
<p>Picking vertices and faces using the mouse is very common in geometry
|
||||
processing applications. While this might seem a simple operation, its
|
||||
@@ -2448,7 +2448,7 @@ vertices are colored in red." />
|
||||
<figcaption>(<a href="607_Picking/main.cpp">Example 607</a>) Picking via ray casting. The selected
|
||||
vertices are colored in red.</figcaption></figure>
|
||||
|
||||
<h2 id="608">Locally Injective Maps</h2>
|
||||
<h2 id="locallyinjectivemaps">Locally Injective Maps</h2>
|
||||
|
||||
<p>Extreme deformations or parametrizations with high-distortion might flip
|
||||
elements. This is undesirable in many applications, and it is possible to
|
||||
@@ -2465,7 +2465,7 @@ editing plus the anti-flipping constraints (right)." />
|
||||
<figcaption>A mesh (left) deformed using Laplacian editing (middle) and with Laplacian
|
||||
editing plus the anti-flipping constraints (right).</figcaption></figure>
|
||||
|
||||
<h2 id="609">Boolean operations on meshes</h2>
|
||||
<h2 id="booleanoperationsonmeshes">Boolean operations on meshes</h2>
|
||||
|
||||
<p>Constructive solid geometry (CSG) is a technique to define a complex surface as
|
||||
the result of a number of set operations on solid regions of space: union,
|
||||
@@ -2552,14 +2552,14 @@ together coincident vertices, maintaining original triangle orientations.</p>
|
||||
<a href="https://github.com/gilbo/cork">cork</a>, which is typically faster, but is not
|
||||
always robust.</p>
|
||||
|
||||
<h1 id="700">Miscellaneous</h1>
|
||||
<h1 id="chapter7:miscellaneous">Miscellaneous</h1>
|
||||
|
||||
<p>Libigl contains a <em>wide</em> variety of geometry processing tools and functions for
|
||||
dealing with meshes and the linear algebra related to them: far too many to
|
||||
discuss in this introductory tutorial. We’ve pulled out a couple of the
|
||||
interesting functions in this chapter to highlight.</p>
|
||||
|
||||
<h2 id="701">Mesh Statistics</h2>
|
||||
<h2 id="meshstatistics">Mesh Statistics</h2>
|
||||
|
||||
<p>Libigl contains various mesh statistics, including face angles, face areas and
|
||||
the detection of singular vertices, which are vertices with more or less than 6
|
||||
@@ -2594,10 +2594,10 @@ the angles are to 60 degrees the more stable will the optimization be. In this
|
||||
case, it is clear that the mesh is of bad quality and it will probably result
|
||||
in artifacts if used for solving PDEs.</p>
|
||||
|
||||
<h2 id="702">Generalized Winding Number</h2>
|
||||
<h2 id="generalizedwindingnumber">Generalized Winding Number</h2>
|
||||
|
||||
<p>The problem of tetrahedralizing the interior of closed watertight surface mesh
|
||||
is a difficult, but well-posed problem (see our <a href="#605">Tetgen wrappers</a>). But
|
||||
is a difficult, but well-posed problem (see our <a href="#tetrahedralizationofclosedsurfaces">Tetgen wrappers</a>). But
|
||||
black-box tet-meshers like TetGen will <em>refuse</em> input triangle meshes with
|
||||
self-intersections, open boundaries, non-manifold edges from multiple connected
|
||||
components.
|
||||
@@ -2635,20 +2635,20 @@ oriented), then <span class="math">\(w(\mathbf{p})\)</span> tends smoothly towar
|
||||
<em>more</em> inside <code>(V,F)</code>, and toward 0 as <span class="math">\(\mathbf{p}\)</span> is more outside.</p>
|
||||
|
||||
<figure>
|
||||
<img src="images/big-sigcat-winding-number.gif" alt="Example 702_WindingNumber computes the
|
||||
<img src="images/big-sigcat-winding-number.gif" alt="Example generalizedwindingnumber_WindingNumber computes the
|
||||
generalized winding number function for a tetrahedral mesh inside a cat with
|
||||
holes and self intersections (gold). The silver mesh is surface of the
|
||||
extracted interior tets, and slices show the winding number function on all
|
||||
tets in the convex hull: blue (~0), green (~1), yellow
|
||||
(~2)." />
|
||||
<figcaption>Example <a href="702_WindingNumber/main.cpp">702_WindingNumber</a> computes the
|
||||
<figcaption>Example <a href="702_WindingNumber/main.cpp">generalizedwindingnumber_WindingNumber</a> computes the
|
||||
generalized winding number function for a tetrahedral mesh inside a cat with
|
||||
holes and self intersections (gold). The silver mesh is surface of the
|
||||
extracted interior tets, and slices show the winding number function on all
|
||||
tets in the convex hull: blue (~0), green (~1), yellow
|
||||
(~2).</figcaption></figure>
|
||||
|
||||
<h2 id="703">Mesh Decimation</h2>
|
||||
<h2 id="meshdecimation">Mesh Decimation</h2>
|
||||
|
||||
<p>The study of mesh simplification or <em>decimation</em> is nearly as old as meshes
|
||||
themselves. Given a high resolution mesh with too many triangles, find a “well
|
||||
|
||||
Reference in New Issue
Block a user