From e2f92eb3417722c151c3f9da6594e4abfe865dde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Tue, 25 Mar 2025 11:57:19 +0100 Subject: [PATCH] User manual improvements --- Isosurfacing_3/doc/Isosurfacing_3/Doxyfile.in | 3 ++ .../doc/Isosurfacing_3/Isosurfacing_3.txt | 33 ++++++++++++------ .../doc/Isosurfacing_3/fig/MC_octree.png | Bin 0 -> 316728 bytes 3 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 Isosurfacing_3/doc/Isosurfacing_3/fig/MC_octree.png diff --git a/Isosurfacing_3/doc/Isosurfacing_3/Doxyfile.in b/Isosurfacing_3/doc/Isosurfacing_3/Doxyfile.in index edd2ed8a9ef..4f7982c68b0 100644 --- a/Isosurfacing_3/doc/Isosurfacing_3/Doxyfile.in +++ b/Isosurfacing_3/doc/Isosurfacing_3/Doxyfile.in @@ -7,5 +7,8 @@ HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/isosurfacing_teaser.pn ${CGAL_PACKAGE_DOC_DIR}/fig/MC_DC.png \ ${CGAL_PACKAGE_DOC_DIR}/fig/MC_DC_open.png \ ${CGAL_PACKAGE_DOC_DIR}/fig/DC.png \ + ${CGAL_PACKAGE_DOC_DIR}/fig/MC.png \ ${CGAL_PACKAGE_DOC_DIR}/fig/isosurfacing_inrimage.png \ + ${CGAL_PACKAGE_DOC_DIR}/fig/MC_TMC.png \ + ${CGAL_PACKAGE_DOC_DIR}/fig/MC_octree.png \ ${CGAL_PACKAGE_DOC_DIR}/fig/MC_DC_performance.png diff --git a/Isosurfacing_3/doc/Isosurfacing_3/Isosurfacing_3.txt b/Isosurfacing_3/doc/Isosurfacing_3/Isosurfacing_3.txt index c3aff4fbefd..13527faa32e 100644 --- a/Isosurfacing_3/doc/Isosurfacing_3/Isosurfacing_3.txt +++ b/Isosurfacing_3/doc/Isosurfacing_3/Isosurfacing_3.txt @@ -57,7 +57,7 @@ All cells of the grid are processed individually using values of the value field Each cell corner is assigned a sign (+/-) to indicate whether its value field value is above or below the user-defined isovalue. A vertex is created along each grid edge where a sign change occurs, i.e., where the edge intersects the isosurface. -More specifically, the vertex location is computed via linear interpolation of +More specifically, the vertex location is computed using linear interpolation of the value field values evaluated at the cell corners forming the edge. These vertices are connected to form triangles within the cell, depending on the configuration of signs at the cell corners. \cgalFigureRef{IsosurfacingMCCases} illustrates the configurations in 2D. @@ -84,7 +84,7 @@ that are not captured by the sampling of the value field. Compared to other meshing approaches such as Delaunay refinement, Marching Cubes is substantially faster, but often tends to generate more triangle facets for an equivalent desired sizing field. -In addition, the quality of the triangle facets is in general poor, with many needle/cap shaped triangles. +In addition, the quality of the triangle facets is in general poor, with many needle or cap-shaped triangles. Furthermore, Marching Cubes does not preserve the sharp features present in the isovalue of the input value field (see \cgalFigureRef{IsosurfacingMCDC}). @@ -131,8 +131,8 @@ Comparison between a mesh of a CSG shape generated by Marching Cubes (left) and In addition to the 3D value field, %Dual Contouring requires knowledge about the gradient of the value field. -The \cgal implementation uses a vertex positioning strategy based on *Quadric Error Metrics*: for -a cell, the vertex location is computed by minimizing the error to the sum of the quadrics +The \cgal implementation uses a vertex positioning strategy based on *Quadric Error Metrics* \cgalCite{gh-ssqem-97} : +for a cell, the vertex location is computed by minimizing the error to the sum of the quadrics defined at each edge-isosurface intersection. Using this approach, the vertex may be located outside the cell, which is a desirable property to improve the odds of recovering sharp features, but it might also create self-intersections. @@ -140,7 +140,7 @@ Users can choose to constrain the vertex location inside the cell. By default, %Dual Contouring generates quads, but using edge-isosurface intersections, one can "star" these quads to generate four triangles. Triangulating the quads is the default behavior in \cgal, -but this can be changed via named parameters. +but this can be changed using a named parameter. \subsection SubSecIsosurfacingComparison Comparisons @@ -149,7 +149,7 @@ over the input 3D domain, the facets of the output surface mesh, and the propert of the output surface mesh.
-| Algorithm | Facets | 2-Manifold | Watertight* | Topologically correct | Recovery of Sharp Features | +| Algorithm | Facets | 2-Manifold | Watertight* | Topologically Correct | Recovery of Sharp Features | | ---- | ---- | ---- | ---- | ---- | ---- | MC | Triangles | no | no | no | no | TMC | Triangles | yes | yes | yes | no | @@ -175,7 +175,7 @@ Output meshes can have boundaries when the isosurface intersects the domain boun \section SecInterface Interface -The following functions are the main entry points to the isosurfacing algorithms: +The following functions are the main entry points to the isosurfacing algorithms of this package: