new documentation

This commit is contained in:
Laurent Rineau 2024-06-20 16:41:08 +02:00
parent 412674e027
commit 97763061f7
8 changed files with 116 additions and 18 deletions

View File

@ -4,7 +4,7 @@
The concept `ConstrainedDelaunayTriangulationCellBase_3` refines the concept
`TriangulationCellBase_3` and is the base cell class for
the `CGAL::Constrained_Delaunay_triangulation_3` class template.
the `CGAL::make_constrained_Delaunay_triangulation_3()` function template.
\cgalRefines{TriangulationCellBase_3}
@ -22,7 +22,7 @@ public:
/// The following functions return a reference to an object of type
/// `CGAL::Constrained_Delaunay_triangulation_cell_data_3`, that contains
/// the per-cell data required by the implementation of the
/// `CGAL::Constrained_Delaunay_triangulation_3` class template.
/// `CGAL::make_constrained_Delaunay_triangulation_3()` function template.
/// @{
CGAL::Constrained_Delaunay_triangulation_cell_data_3& cdt_3_data();
const CGAL::Constrained_Delaunay_triangulation_cell_data_3& cdt_3_data() const;

View File

@ -2,10 +2,10 @@
\ingroup PkgCT_3Concepts
\cgalConcept
The concept `ConstrainedDelaunayTriangulationTraits_3` describes the requirements
for the first template parameter `Traits` of the class template `CGAL::Constrained_Delaunay_triangulation_3`.
It defines the geometric objects (points, segments...) forming the triangulation together
with a few geometric predicates and constructions on these objects.
The concept `ConstrainedDelaunayTriangulationTraits_3` specifies the requirements
for the geometric traits class of the triangulation used as the first template
parameter `Triangulation_3` in the function template
`CGAL::make_constrained_Delaunay_triangulation_3()`.
\cgalRefines{DelaunayTriangulationTraits_3}
@ -14,7 +14,7 @@ with a few geometric predicates and constructions on these objects.
\cgalHasModelsBare{all %CGAL kernels}
\cgalHasModelsEnd
\todo add the requirements in the concept `ConstrainedDelaunayTriangulationTraits_3`
\todo Add the requirements in the concept `ConstrainedDelaunayTriangulationTraits_3`.
*/
class ConstrainedDelaunayTriangulationTraits_3 {

View File

@ -4,7 +4,7 @@
The concept `ConstrainedDelaunayTriangulationVertexBase_3` refines the concept
`TriangulationVertexBase_3` and is the base vertex class for
the `CGAL::Constrained_Delaunay_triangulation_3` class template.
the `CGAL::make_constrained_Delaunay_triangulation_3()` function template.
\cgalRefines{TriangulationVertexBase_3}
@ -25,7 +25,7 @@ public:
/// The following functions return a reference to an object of type
/// `CGAL::Constrained_Delaunay_triangulation_vertex_data_3`, that contains
/// the per-vertex data required by the implementation of the
/// `CGAL::Constrained_Delaunay_triangulation_3` class template.
/// `CGAL::make_constrained_Delaunay_triangulation_3()` function template.
/// @{
CGAL::Constrained_Delaunay_triangulation_vertex_data_3& cdt_3_data();
const CGAL::Constrained_Delaunay_triangulation_vertex_data_3& cdt_3_data() const;

View File

@ -4,13 +4,15 @@
\defgroup PkgCT_3Concepts Concepts
\ingroup PkgCT_3Ref
\defgroup PkgCT_3MainClasses Main Classes
\defgroup PkgCT_3Functions Function Templates
\ingroup PkgCT_3Ref
\defgroup PkgCT_3Classes Classes
\ingroup PkgCT_3Ref
\addtogroup PkgCT_3Ref
\cgalPkgDescriptionBegin{3D Constrained Triangulations,PkgCT_3}
\cgalPkgPicture{cdt3-small.png}
\todo Choose an image
\cgalPkgSummaryBegin
\cgalPkgAuthors{Laurent Rineau}
@ -39,12 +41,12 @@
- `ConstrainedDelaunayTriangulationVertexBase_3`
- `ConstrainedDelaunayTriangulationCellBase_3`
\cgalCRPSection{Classes}
\cgalCRPSection{Functions Templates}
\cgalCRPSubsection{Main Classes}
- `CGAL::Constrained_Delaunay_triangulation_3<Traits, Triangulation_3>`
- `CGAL::make_constrained_Delaunay_triangulation_3()`
\cgalCRPSubsection{Classes}
\cgalCRPSubsection{Secondary Classes}
- `CGAL::Constrained_Delaunay_triangulation_vertex_base_3`
- `CGAL::Constrained_Delaunay_triangulation_cell_base_3`
*/

View File

@ -72,7 +72,7 @@
# error "Compiler needs <format>"
#endif
#if DOXYGEN_RUNNING
#if 0
namespace CGAL {

View File

@ -26,10 +26,11 @@
namespace CGAL {
/**
* @ingroup PkgCT_3Classes
* @brief Cell base class for the 3D Constrained Delaunay Triangulation.
*
* This class is derived from the `Triangulation_cell_base_3` class and provides additional functionality
* required by `Constrained_Delaunay_triangulation_3`.
* required by `make_constrained_Delaunay_triangulation_3()`.
*
* @tparam Gt The geometric traits class, which must be a model of `ConstrainedDelaunayTriangulationTraits_3`.
* It should be the same as the geometric traits class of the triangulation.

View File

@ -29,11 +29,12 @@
namespace CGAL {
/**
* @ingroup PkgCT_3Classes
* @brief The Constrained_Delaunay_triangulation_vertex_base_3 class is a vertex base class for the
* Constrained Delaunay Triangulation in 3D.
*
* This class is derived from the `Triangulation_vertex_base_3` class and provides additional functionality
* required by `Constrained_Delaunay_triangulation_3`.
* required by `make_constrained_Delaunay_triangulation_3()`.
*
* @tparam Gt The geometric traits class, model of `DelaunayTriangulationTraits_3`.
* It must be the same as the geometric traits class of the triangulation.

View File

@ -0,0 +1,94 @@
// Copyright (c) 2024 GeometryFactory Sarl (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
// You can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
// Author(s) : Laurent Rineau
#ifndef CGAL_MAKE_CONSTRAINED_DELAUNAY_TRIANGULATION_3_H
#define CGAL_MAKE_CONSTRAINED_DELAUNAY_TRIANGULATION_3_H
#include <CGAL/license/Constrained_triangulation_3.h>
#include <CGAL/Constrained_Delaunay_triangulation_3.h>
#include <CGAL/Constrained_Delaunay_triangulation_cell_data_3.h>
#include <CGAL/Constrained_Delaunay_triangulation_vertex_base_3.h>
namespace CGAL {
/*!
* \ingroup PkgCT_3Functions
* \brief Create a 3D constrained Delaunay triangulation conforming to the faces of a polygon mesh.
*
* The polygon mesh represents the polygonal constraints that will be enforced during the triangulation process.
*
* By default, each face of the polygon mesh is considered as a polygonal constraint for the triangulation. The
* named parameter `face_patch_map` can be used to describe bigger polygonal constraints, possibly with holes. If
* used, the argument of that parameter must be a property map that maps each face of the polygon mesh to a patch
* identifier. Faces with the same patch identifier are considered as part of the same surface patch. Each of those
* surface patches (defined as the union of the mesh faces with a given patch id) is supposed to be a polygon or a
* polygon with holes, with coplanar vertices (or almost coplanar up to the precision of the number type used).
*
* The generated triangulation will be constrained to conform to the faces of the polygon mesh, or to the surface patches
* described by the `face_patch_map` property map if provided.
*
* \tparam Triangulation_3 An instance of the `Triangulation_3` class template.
* - Its `Geom_traits` type must be a model of `ConstrainedDelaunayTriangulationTraits_3`,
* - Its point type must be constructible from the point type of the polygon mesh,
* - its `Vertex` type must be a model of `ConstrainedDelaunayTriangulationVertexBase_3`, and
* - its `Cell` type must be a model of `ConstrainedDelaunayTriangulationCellBase_3`.
* \tparam PolygonMesh a model of `FaceListGraph`
* \tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters"
*
* \param mesh The polygon mesh representing the constraints.
* \param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below
*
* \cgalNamedParamsBegin
* \cgalParamNBegin{vertex_point_map}
* \cgalParamDescription{a property map associating points to the vertices of `mesh`}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%vertex_descriptor`
* as key type and `%Traits::Point_3` as value type}
* \cgalParamDefault{`boost::get(CGAL::vertex_point, mesh)`}
* \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t`
* must be available in `PolygonMesh`.}
* \cgalParamNEnd
* \cgalParamNBegin{geom_traits}
* \cgalParamDescription{an instance of a geometric traits class}
* \cgalParamType{`Traits`}
* \cgalParamDefault{the default constructed traits object `Traits{}`}
* \cgalParamNEnd
* \cgalParamNBegin{face_patch_map}
* \cgalParamDescription{a property map associating a patch identifier to each face of `mesh`}
* \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits<PolygonMesh>::%face_descriptor`
* as key type and with any value type that is a *regular* type}
* \cgalParamExtra{If this parameter is omitted, each face of the mesh is considered as a separate patch.}
* \cgalParamExtra{Faces with the same patch identifier are considered as part of the same surface patch.}
* \cgalParamNEnd
* \cgalNamedParamsEnd
*
* \todo Create a documentation page to describe the concept *regular*, and link it to https://en.cppreference.com/w/cpp/concepts/regular
*/
template <typename Triangulation_3, typename PolygonMesh, typename NamedParams = parameters::Default_named_parameters>
Triangulation_3
make_constrained_Delaunay_triangulation_3(const PolygonMesh& mesh, const NamedParams& np = parameters::default_values())
{
Constrained_Delaunay_triangulation_3<typename Triangulation_3::Geom_traits, Triangulation_3> cdt(mesh, np);
return std::move(cdt).triangulation();
}
} // end namespace CGAL
#endif // CGAL_MAKE_CONSTRAINED_DELAUNAY_TRIANGULATION_3_H