wip user manual

This commit is contained in:
Jane Tournois 2019-12-20 17:13:13 +01:00
parent fe270e4509
commit 27c67b70db
5 changed files with 75 additions and 31 deletions

View File

@ -6,8 +6,8 @@
\cgalRefines TriangulationTraits_3
The concept `RemeshingTriangulationTraits_3` is the first template parameter
of the class Remeshing_triangulation_3. It defines the geometric objects (points, segments,
triangles and tetrahedra) forming the triangulation together with a few
of the class `Remeshing_triangulation_3`. It defines the geometric objects
(points, segments, triangles and tetrahedra) forming the triangulation together with a few
geometric predicates and constructions on these objects.
\cgalHasModel All models of `Kernel`.

View File

@ -7,20 +7,69 @@ namespace CGAL {
\authors Jane Tournois, Noura Faraj
\cgalAutoToc
This chapter describes the tetrahedral remeshing algorithm...
\section secTetRemeshing Multi-Material Tetrahedral Remeshing
\section secmydefinitions Definitions
This package implements an algorithm for quality tetrahedral remeshing,
introduced by N.Faraj et al in%\cgalCite{faraj2016mvr}.
This practical iterative remeshing algorithm is designed to remesh
multi-material tetrahedral meshes, by iteratively performing a sequence of simple
elementary operations such as edge collapses, edge splits, edge flips,
and vertex relocations following a Laplacian smoothing.
The algorithm results in high quality isotropic meshes, with the desired mesh density,
while preserving the input geometric polyline and surfacic features.
Section on definitions here ...
Specific remeshing rules have been designed to satisfy the following criteria.
First, the algorithm preserves the geometric complex topology, including
multi-material surface patches and polyline features. Polyline features
can be defined as intersections between more than two subdomains, or listed by
the user. Second, it has been made possible to remesh only a selection of cells,
instead of remeshing the whole domain, while preserving or remeshing the
interface surfaces between the preserved and the remeshed tetrahedra.
\section secmyexamples Examples
All the local atomic operations that are performed by the algorithm
preserve the input topology of the geometric complex.
\subsection myFirstExample First Example
The tetrahedral remeshing algorithm improves the quality of dihedral angles,
while targetting the user-defined uniform sizing field and preserving the
topology of the feature complex.
The following example shows ...
\section secTetRemeshingAPI API
The tetrahedral remeshing algorithm is implemented as a single free function that
takes only two parameters : the input triangulation, and the desired edge length,
which drives the remeshing process.
\ref BGLNamedParameters are used to deal with optional parameters.
The page \ref Remeshing_namedparameters describes their usage
and provides a list of the parameters that are used in this package for tuning
of the remeshing process and results.
\section secTetRemeshingExamples Examples
\subsection ssecEx1 Tetrahedral Remeshing Example
The following example shows the simplest use of the tetrahedral remeshing function.
The only needed parameter is a given target edge length that will drive the remeshing process
towards a high quality tetrahedral mesh with improved dihedral angles, and a more
uniform mesh, with edge lengths getting closer to the input parameter value.
\cgalExample{Tetrahedral_remeshing/tetrahedral_remeshing_example.cpp }
\subsection ssecEx2 Tetrahedral Remeshing of A Selection
Optional BGL named parameters can be used to get more precise
control on the remeshing process. In this example, a triangulation with two subdomains
(defined by indices stored in cells) is given as input, but only one of its subdomains
is remeshed.
\cgalExample{Tetrahedral_remeshing/tetrahedral_remeshing_of_one_subdomain.cpp }
\subsection ssecEx3 Tetrahedral Remeshing With Polyline Features
\cgalExample{Tetrahedral_remeshing/tetrahedral_remeshing_with_features.cpp }
*/

View File

@ -1,14 +1,13 @@
#define CGAL_TETRAHEDRAL_REMESHING_VERBOSE
//#define CGAL_TETRAHEDRAL_REMESHING_VERBOSE
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <iostream>
#include <fstream>
#include <string>
#include <CGAL/Tetrahedral_remeshing/Remeshing_triangulation_3.h>
#include <CGAL/tetrahedral_remeshing.h>
#include <iostream>
#include <fstream>
#include <string>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
@ -64,11 +63,5 @@ int main(int argc, char* argv[])
std::ofstream out(file_out.c_str(), std::ios_base::out | std::ios_base::binary);
save_binary_triangulation(out, t3);
//// ascii
//file_out = file_in.substr(0, file_in.find_first_of("."));
//file_out.append("_out.mesh");
//std::ofstream medit_out(file_out.c_str(), std::ios_base::out);
//c3t3.output_to_medit(medit_out);
return EXIT_SUCCESS;
}

View File

@ -69,9 +69,6 @@ namespace Tetrahedral_remeshing
\tparam Gt is the geometric traits class.
It has to be a model of the concept `RemeshingTriangulationTraits_3`.
\tparam Info is the information the user would like to add to a cell.
It has to be `DefaultConstructible` and `Assignable`.
\tparam Concurrency_tag enables sequential versus parallel implementation of the
triangulation data structure.
Possible values are `Sequential_tag` (the default) and `Parallel_tag`.
@ -91,9 +88,9 @@ namespace Tetrahedral_remeshing
typename Concurrency_tag = CGAL::Sequential_tag,
typename Cb = CGAL::Triangulation_cell_base_3<Gt>,
typename Vb = CGAL::Triangulation_vertex_base_3<Gt>
#ifndef DOXYGEN_RUNNING
/// \cond SKIP_IN_MANUAL
, typename Cell_visitor = Default_remeshing_visitor
#endif
/// \endcond
>
class Remeshing_triangulation_3
: public CGAL::Triangulation_3<Gt,
@ -109,16 +106,17 @@ namespace Tetrahedral_remeshing
public:
typedef CGAL::Triangulation_data_structure_3<RVb, RCb, Concurrency_tag> Tds;
typedef CGAL::Triangulation_3<Gt, Tds> Self;
typedef Self type;
private:
Cell_visitor m_visitor;
/// \cond SKIP_IN_MANUAL
public:
Cell_visitor& visitor()
{
return m_visitor;
}
/// \endcond
};
namespace internal

View File

@ -43,7 +43,7 @@ namespace CGAL
*
* This function takes as input a 3-dimensional triangulation
* and performs a sequence of atomic operations
* in order to generate as output a quality mesh with a prescribed edge length.
* in order to generate as output a high quality mesh with a prescribed density.
* These atomic operations are performed as follows :
* - edge splits, until all edges satisfy a prescribed length criterion,
* - edge collapses, ntil all edges satisfy a prescribed length criterion,
@ -51,8 +51,11 @@ namespace CGAL
* - global smoothing by vertex relocations,
* - re-projection of boundary vertices to the initial surface.
*
* This remeshing function can deal with multi-domains and preserves the geometry of
* subdomains throughout the remeshing process. Subdomains are defined by indices that
* This remeshing function can deal with multi-domains, multi-material boundaries and features.
* It preserves the geometry of
* subdomains throughout the remeshing process.
*
* Subdomains are defined by indices that
* are stored in the cells of the input triangulation, following the `RemeshingCellBase_3`
* concept.
* The surfacic interfaces between subdomains are formed by facets which two incident cells
@ -63,9 +66,10 @@ namespace CGAL
*
* @tparam Triangulation a 3-dimensional triangulation
* deriving from `Triangulation_3`,
* with cell base model of `RemeshingCellBase_3`
* with geometric traits model of `RemeshingTriangulationTraits_3`,
* cell base model of `RemeshingCellBase_3`
* and vertex base model of `RemeshingVertexBase_3`.
*
*
* @tparam NamedParameters a sequence of \ref Remeshing_namedparameters "Named Parameters"
*
* @param tr the triangulation to the remeshed
@ -85,7 +89,6 @@ namespace CGAL
* \cgalParamBegin{edge_is_constrained_map} a property map containing the
* constrained - or - not status of each edge of `tr`. A constrained edge can be split
* or collapsed, but not flipped.
todo//// * Its endpoints could be moved by smoothing
* \cgalParamEnd
* \cgalParamBegin{cell_is_selected_map} a property map containing the
* selected - or - not status for each cell of `tr` for remeshing.
@ -96,6 +99,7 @@ todo//// * Its endpoints could be moved by smoothing
* \cgalNamedParamsEnd
* @todo implement 1D smoothing for constrained edges
* @todo implement sizing field instead of uniform target edge length
*/
// * @tparam SizingField model of `CGAL::Sizing_field`