user manual

description
This commit is contained in:
Pierre Alliez 2023-12-25 14:05:12 +01:00
parent 829120a1f6
commit 5d9e631357
2 changed files with 9 additions and 10 deletions

View File

@ -70,7 +70,6 @@ For example, a tunnel of the isosurface within a single cell is topologically re
Furthermore, the mesh is guaranteed to be 2-manifold and watertight, as long as the isosurface does not intersect the domain boundaries.
% PA: add a figure comparing without and with the option activated
% PA: add following to CGAL list of references: Roberto Grosso: Construction of Topologically Correct and Manifold Isosurfaces. Computer Graphics Forum 35(5):187-196 - 2016.
\subsection subsecdc Dual Contouring (DC)
The DC algorithm generates one vertex for each cell that is intersected by the isosurface. Next, a face is created for each edge that intersects the isosurface, by connecting the vertices of the incident cells. For a uniform hexahedral grid, this results into a quadrilateral surface mesh.
@ -90,14 +89,15 @@ Dual Contouring can deal with any domain but guarantees neither a 2-manifold nor
It generates fewer faces than Marching Cubes, in general.
Its advantage over MC is its ability to recover sharp creases and corners.
% PA: add a figure.
[what about tips, darts, cusps and corners? respectively adjacent to 0, 1, 2 and 3+ creases]
% PA: what about tips, darts, cusps and corners? respectively adjacent to 0, 1, 2 and 3+ creases
\cgalFigureAnchor{isosurfacing_iwp_dc}
<center>
<img src="iwp_dc.png" style="max-width:40%;"/>
</center>
\cgalFigureCaptionBegin{isosurfacing_iwp_dc}
Isosurface of the IWP scalar field generated by %Dual Contouring. [TODO: do not assume that the iwp scalar field is well known to the reader - explicit first what it means. in addition, the shape is too complex, adding confusion to the reader. try to pass only one message per figure and provide a caption to not let the reader guess. show mesh edges in black]
Isosurface of the IWP scalar field generated by %Dual Contouring.
% PA: do not assume that the iwp scalar field is well known to the reader - explicit first what it means. in addition, the shape is too complex, adding confusion to the reader. try to pass only one message per figure and provide a caption to not let the reader guess. show mesh edges in black
\cgalFigureCaptionEnd
\subsection subseccomparison Comparisons
@ -134,7 +134,7 @@ The input is provided in the form of a `domain` (see \ref secmydomains).
The `isovalue` scalar parameter denotes the value used for sampling the input scalar field for generating the isosurface.
The output surface mesh is provided in the form of a indexed face set, which is written to the two containers of `points` and `polygons`.
The output surface mesh is provided in the form of a indexed face set, which is stored into two containers of `points` and `polygons`.
The vertex positions are stored as `Point_3` in `points`. Each face in `polygons` is a list of indices pointing into the `points` container.
Depending on the algorithm, the indexed face set may store either a polygon soup (unorganized polygons with no relationship whatsoever, i.e. no connectivity between them) or a mesh with connectivity.
@ -145,12 +145,11 @@ When the parallel version is not available due to unsuccessful link with the TBB
\section secmydomains Domains
A domain is an object that provides functions to access the input data, its geometry, topology, and optionally its gradient.
[I fail to understand how you specify the topology - for me the domain is the support of the scalar field, whose
sampling/interpolation will yield the output mesh topology]
% I fail to understand how you specify the topology - for me the domain is the support of the scalar field, whose sampling/interpolation will yield the output mesh topology - not more.
For common representations, we offer a set of predefined domain classes that wrap the input data and provide a generalized interface for the algorithm.
Users can also define new domains by implementing the `IsosurfacingDomain_3` or `IsosurfacingDomainWithGradient_3` concepts.
\subsection mysubsecimplicitdomain Implicit Crtesian Grid Domain
\subsection mysubsecimplicitdomain Implicit Cartesian Grid Domain
The class `CGAL::Isosurfacing::Implicit_Cartesian_grid_domain_3` represents the input scalar field in an implicit form without storing any values.
It takes a function-object (functor) or lambda function that computes the value of the scalar field from the position of a vertex query.
Additionally, the bounding box and spacing between the grid points must be provided.
@ -197,8 +196,8 @@ The following example shows how to load data from an `Image_3`.
\subsection myExampleMeshOffset Offset Mesh
The following example shows how to compute a signed offset mesh.
The input mesh is stored into an `AABB_tree` data structure to allow fast distance queries. Via the `Side_of_triangle_mesh` functor, the sign of the distance field is made negative inside the mesh.
The following example illustrates how to generates a mesh approximating a signed offset to an input closed surface mesh.
The input mesh is stored into an `AABB_tree` data structure to provides fast distance queries. Via the `Side_of_triangle_mesh` functor, the sign of the distance field is made negative inside the mesh.
\cgalExample{Isosurfacing_3/dual_contouring_mesh_offset.cpp}

View File

@ -30,7 +30,7 @@
This package provides algorithms to extract isosurfaces from different inputs: Marching Cubes, topologically correct Marching Cubes and Dual Contouring.
The input is represented as a 3D scalar field defined as an implicit function, a Cartesian grid or an octree.
The output is a surface mesh represented as an indexed face set (point coordinate and face arrays).
The output is a surface mesh represented as an indexed face set (container of point coordinates and indexed faces).
The provided algorithms include Marching Cubes, topologically correct Marching Cubes and Dual Contouring.
\cgalClassifedRefPages