mirror of https://github.com/CGAL/cgal
wip user manual
This commit is contained in:
parent
fe270e4509
commit
27c67b70db
|
|
@ -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`.
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
Loading…
Reference in New Issue