From 4f76f267d5b3e9dd08529baf06fefdffba256b4f Mon Sep 17 00:00:00 2001
From: hoskillua <47090776+hoskillua@users.noreply.github.com>
Date: Wed, 5 Oct 2022 00:38:23 +0200
Subject: [PATCH] mostly docs and examples, moved utils to internal
---
.../PackageDescription.txt | 8 -
.../Polygon_mesh_processing.txt | 54 ++++
.../doc/Polygon_mesh_processing/examples.txt | 3 +-
.../Polygon_mesh_processing/CMakeLists.txt | 6 +-
...rpolated_corrected_curvatures_example.cpp} | 59 ++--
...orrected_curvatures_polyhedron_example.cpp | 74 +++++
...nterpolated_corrected_curvature_measures.h | 290 +-----------------
7 files changed, 184 insertions(+), 310 deletions(-)
rename Polygon_mesh_processing/examples/Polygon_mesh_processing/{interpolated_corrected_curvatures.cpp => interpolated_corrected_curvatures_example.cpp} (52%)
create mode 100644 Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures_polyhedron_example.cpp
diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt b/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt
index 5c9e39811d4..eae47c61001 100644
--- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt
+++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt
@@ -201,14 +201,6 @@ The page \ref bgl_namedparameters "Named Parameters" describes their usage.
- \link PMP_locate_grp Random Location Generation \endlink
\cgalCRPSection{Corrected Curvature Functions}
-- `CGAL::Polygon_mesh_processing::interpolated_corrected_measure_mesh()`
-- `CGAL::Polygon_mesh_processing::interpolated_corrected_anisotropic_measure_mesh()`
-- `CGAL::Polygon_mesh_processing::interpolated_corrected_area_measure_face()`
-- `CGAL::Polygon_mesh_processing::interpolated_corrected_mean_curvature_measure_face()`
-- `CGAL::Polygon_mesh_processing::interpolated_corrected_gaussian_curvature_measure_face()`
-- `CGAL::Polygon_mesh_processing::interpolated_corrected_anisotropic_measure_face()`
-- `CGAL::Polygon_mesh_processing::expand_interpolated_corrected_measure_vertex()`
-- `CGAL::Polygon_mesh_processing::expand_interpolated_corrected_anisotropic_measure_vertex()`
- `CGAL::Polygon_mesh_processing::interpolated_corrected_mean_curvature()`
- `CGAL::Polygon_mesh_processing::interpolated_corrected_gaussian_curvature()`
- `CGAL::Polygon_mesh_processing::interpolated_corrected_principal_curvatures()`
diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
index 743d6bc3507..6c684c4419b 100644
--- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
+++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt
@@ -876,6 +876,60 @@ not provide storage for the normals.
\cgalExample{Polygon_mesh_processing/compute_normals_example_Polyhedron.cpp}
+****************************************
+\section PMPICC Computing Curvatures
+
+This package provides methods to compute curvatures on polygonal meshes based on #PAPER#.
+This includes mean curvature, gaussian curvature, principal curvatures and directions.
+These can be computed on triangle meshes, quad meshes, and meshes with n-gon faces.
+The algorithms used prove to work well in general. Also, on meshes with noise
+on vertex positions, they give accurate results, on the condition that the
+correct vertex normals are provided.
+
+The implementation is generic in terms of mesh data structure. It can be used on Surface_mesh,
+Polyhedron_3 and other polygonal mesh structures based on the Face Graph Model.
+
+These computations are performed using :
+- `CGAL::Polygon_mesh_processing::interpolated_corrected_mean_curvature()`
+- `CGAL::Polygon_mesh_processing::interpolated_corrected_gaussian_curvature()`
+- `CGAL::Polygon_mesh_processing::interpolated_corrected_principal_curvatures()`
+
+\cgalFigureRef{icc_diff_radius} shows how the mean curvature changes depending on
+the ball_radius named parameter which can be set to a value > 0 to get a smoother
+distribution of valuesa and "diffuse" the extreme values of curvatures across the mesh.
+
+\cgalFigureAnchor{icc_diff_radius}
+
+
+
+\cgalFigureCaptionBegin{icc_diff_radius}
+The mean curvature distrubution on a bear mesh with different values for the expanding ball radius
+\cgalFigureCaptionEnd
+
+Property maps are used to record the computed curvatures as shown in examples.
+
+\subsection ICCExample Interpolated Corrected Curvature Examples
+
+Property maps are an API introduced in the boost library that allows to
+associate values to keys. In the following examples, for each proberty map, we associate
+a curvature value to each vertex.
+
+\subsubsection ICCExample Interpolated Corrected Curvature on a Surface Mesh.
+
+The following example illustrates how to
+compute the curvatures on vertices
+and store them in property maps provided by the class `Surface_mesh`.
+
+\cgalExample{Polygon_mesh_processing/interpolated_corrected_curvatures_example.cpp}
+
+\subsubsection NormalsExampleNP Interpolated Corrected Curvature on a Polyhedron
+
+The following example illustrates how to
+compute the curvatures on vertices
+and store them in unordered (or ordered) maps as the class `Polyhedron_3` does
+not provide storage for the curvatures.
+
+\cgalExample{Polygon_mesh_processing/interpolated_corrected_curvatures_polyhedron_example.cpp}
****************************************
\section PMPSlicer Slicer
diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/examples.txt b/Polygon_mesh_processing/doc/Polygon_mesh_processing/examples.txt
index 0317812aa44..0588d1c76e1 100644
--- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/examples.txt
+++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/examples.txt
@@ -19,7 +19,8 @@
\example Polygon_mesh_processing/refine_fair_example.cpp
\example Polygon_mesh_processing/mesh_slicer_example.cpp
\example Polygon_mesh_processing/isotropic_remeshing_example.cpp
-\example Polygon_mesh_processing/interpolated_corrected_curvatures.cpp
+\example Polygon_mesh_processing/interpolated_corrected_curvatures_example.cpp
+\example Polygon_mesh_processing/interpolated_corrected_curvatures_polyhedron_example.cpp
\example Polygon_mesh_processing/delaunay_remeshing_example.cpp
\example Polygon_mesh_processing/compute_normals_example_Polyhedron.cpp
\example Polygon_mesh_processing/hausdorff_distance_remeshing_example.cpp
diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt
index 4783d957589..ab084384835 100644
--- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt
+++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt
@@ -105,8 +105,10 @@ create_single_source_cgal_program("cc_compatible_orientations.cpp")
if(TARGET CGAL::Eigen3_support)
- create_single_source_cgal_program("interpolated_corrected_curvatures.cpp")
- target_link_libraries(interpolated_corrected_curvatures PUBLIC CGAL::Eigen3_support)
+ create_single_source_cgal_program("interpolated_corrected_curvatures_example.cpp")
+ target_link_libraries(interpolated_corrected_curvatures_example PUBLIC CGAL::Eigen3_support)
+ create_single_source_cgal_program("interpolated_corrected_curvatures_polyhedron_example.cpp")
+ target_link_libraries(interpolated_corrected_curvatures_polyhedron_example PUBLIC CGAL::Eigen3_support)
endif()
diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures_example.cpp
similarity index 52%
rename from Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures.cpp
rename to Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures_example.cpp
index c011d57db41..caaa52eb3af 100644
--- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures.cpp
+++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures_example.cpp
@@ -7,18 +7,17 @@
#include
#include
-#include
namespace PMP = CGAL::Polygon_mesh_processing;
-typedef CGAL::Exact_predicates_inexact_constructions_kernel EpicKernel;
-typedef CGAL::Surface_mesh Mesh;
-typedef boost::graph_traits::face_descriptor face_descriptor;
-typedef boost::graph_traits::vertex_descriptor vertex_descriptor;
+typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic_Kernel;
+typedef CGAL::Surface_mesh Surface_Mesh;
+typedef boost::graph_traits::face_descriptor face_descriptor;
+typedef boost::graph_traits::vertex_descriptor vertex_descriptor;
int main(int argc, char* argv[])
{
- Mesh g1;
+ Surface_Mesh g1;
const std::string filename = (argc>1) ?
argv[1] :
CGAL::data_file_path("meshes/small_bunny.obj");
@@ -29,36 +28,54 @@ int main(int argc, char* argv[])
return EXIT_FAILURE;
}
+ // creating and tying surface mesh property maps for curvatures (with defaults = 0)
bool created = false;
-
- Mesh::Property_map mean_curvature_map, gaussian_curvature_map;
- boost::tie(mean_curvature_map, created) = g1.add_property_map("v:mean_curvature_map", 0);
+ Surface_Mesh::Property_map mean_curvature_map, gaussian_curvature_map;
+ boost::tie(mean_curvature_map, created) = g1.add_property_map("v:mean_curvature_map", 0);
assert(created);
- boost::tie(gaussian_curvature_map, created) = g1.add_property_map("v:gaussian_curvature_map", 0);
+ boost::tie(gaussian_curvature_map, created) = g1.add_property_map("v:gaussian_curvature_map", 0);
assert(created);
- Mesh::Property_map> principle_curvature_map;
boost::tie(principle_curvature_map, created) = g1.add_property_map>("v:principle_curvature_map", { 0, 0,
- EpicKernel::Vector_3 (0,0,0),
- EpicKernel::Vector_3 (0,0,0)});
+ Epic_Kernel::Vector_3 (0,0,0),
+ Epic_Kernel::Vector_3 (0,0,0)});
assert(created);
PMP::interpolated_corrected_mean_curvature(
g1,
mean_curvature_map
);
+
+ // uncomment this to compute a curvature while specifying named parameters
+ // Example: an expansion ball radius of 0.5 and a vertex normals map (does not have to depend on positions)
+
+ /*Surface_Mesh::Property_map vnm;
+ boost::tie(vnm, created) = g1.add_property_map(
+ "v:vnm", Epic_Kernel::Vector_3(0, 0, 0)
+ );
+
+ assert(created);
+
+ PMP::interpolated_corrected_mean_curvature(
+ g1,
+ mean_curvature_map,
+ CGAL::parameters::ball_radius(0.5).vertex_normal_map(vnm)
+ );*/
+
PMP::interpolated_corrected_gaussian_curvature(
g1,
gaussian_curvature_map
diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures_polyhedron_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures_polyhedron_example.cpp
new file mode 100644
index 00000000000..3e56905068f
--- /dev/null
+++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/interpolated_corrected_curvatures_polyhedron_example.cpp
@@ -0,0 +1,74 @@
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+#include
+#include
+
+namespace PMP = CGAL::Polygon_mesh_processing;
+
+typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic_Kernel;
+typedef CGAL::Polyhedron_3 Polyhedron;
+typedef boost::graph_traits::face_descriptor face_descriptor;
+typedef boost::graph_traits::vertex_descriptor vertex_descriptor;
+
+int main(int argc, char* argv[])
+{
+ Polyhedron g1;
+ const std::string filename = (argc>1) ?
+ argv[1] :
+ CGAL::data_file_path("meshes/small_bunny.obj");
+
+ if(!CGAL::IO::read_polygon_mesh(filename, g1))
+ {
+ std::cerr << "Invalid input file." << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ std::unordered_map mean_curvature_map, gaussian_curvature_map;
+ std::unordered_map> principle_curvature_map;
+
+ PMP::interpolated_corrected_mean_curvature(
+ g1,
+ boost::make_assoc_property_map(mean_curvature_map)
+ );
+
+ // uncomment this to compute a curvature while specifying named parameters
+ // Example: an expansion ball radius of 0.5 and a vertex normals map (does not have to depend on positions)
+
+ /*std::unordered_map vnm;
+
+ PMP::interpolated_corrected_mean_curvature(
+ g1,
+ boost::make_assoc_property_map(mean_curvature_map),
+ CGAL::parameters::ball_radius(0.5).vertex_normal_map(boost::make_assoc_property_map(vnm))
+ );*/
+
+ PMP::interpolated_corrected_gaussian_curvature(
+ g1,
+ boost::make_assoc_property_map(gaussian_curvature_map)
+ );
+ PMP::interpolated_corrected_principal_curvatures(
+ g1,
+ boost::make_assoc_property_map(principle_curvature_map)
+ );
+
+ int i = 0;
+ for (vertex_descriptor v : vertices(g1))
+ {
+ auto PC = principle_curvature_map[v];
+ std::cout << i << ": HC = " << mean_curvature_map[v]
+ << ", GC = " << gaussian_curvature_map[v] << "\n"
+ << ", PC = [ " << std::get<0>(PC) << " , " << std::get<1>(PC) << " ]\n";
+ i++;
+ }
+}
diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/Curvatures/interpolated_corrected_curvature_measures.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/Curvatures/interpolated_corrected_curvature_measures.h
index e2e1292aedb..8f5e1d338ed 100644
--- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/Curvatures/interpolated_corrected_curvature_measures.h
+++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/Curvatures/interpolated_corrected_curvature_measures.h
@@ -44,7 +44,7 @@ typename GT::FT average_edge_length(const PolygonMesh& pmesh)
if (n == 0)
return 0;
- GT::FT avg_edge_length = 0;
+ typename GT::FT avg_edge_length = 0;
for (auto e : edges(pmesh))
avg_edge_length += edge_length(e, pmesh);
@@ -52,35 +52,12 @@ typename GT::FT average_edge_length(const PolygonMesh& pmesh)
return avg_edge_length;
}
-}
-
-/*!
- * \ingroup PMP_corrected_curvatures_grp
- * Enumeration type used to specify which measure of a given face
- * is computed for the interpolated corrected curvature functions.
- */
-// enum
enum Curvature_measure_index {
MU0_AREA_MEASURE, ///< corrected area density
MU1_MEAN_CURVATURE_MEASURE, ///< corrected mean curvature density
MU2_GAUSSIAN_CURVATURE_MEASURE ///< corrected gaussian curvature density
};
-/**
-* \ingroup PMP_corrected_curvatures_grp
-*
-* Computes the interpolated corrected area measure \f$ \mu_0 \f$ of a specific face.
-*
-* @tparam GT geometric traits class model of `Kernel`.
-*
-* @param x is a vector of the vertex positions of the face.
-* @param u is a vector of the vertex normals of the face.
-*
-*
-* @see `interpolated_corrected_mean_curvature_measure_face()`
-* @see `interpolated_corrected_gaussian_curvature_measure_face()`
-* @see `interpolated_corrected_measure_mesh()`
-*/
template
typename GT::FT interpolated_corrected_area_measure_face(const std::vector& u,
const std::vector& x = {})
@@ -136,20 +113,6 @@ typename GT::FT interpolated_corrected_area_measure_face(const std::vector
typename GT::FT interpolated_corrected_mean_curvature_measure_face(const std::vector& u,
const std::vector& x = {})
@@ -216,20 +179,6 @@ typename GT::FT interpolated_corrected_mean_curvature_measure_face(const std::ve
}
}
-/**
-* \ingroup PMP_corrected_curvatures_grp
-*
-* Computes the interpolated corrected gaussian curvature measure \f$ \mu_2 \f$ of a specific face.
-*
-* @tparam GT geometric traits class model of `Kernel`.
-*
-* @param x is a vector of the vertex positions of the face.
-* @param u is a vector of the vertex nomrals of the face.
-*
-* @see `interpolated_corrected_mean_curvature_measure_face()`
-* @see `interpolated_corrected_area_measure_face()`
-* @see `interpolated_corrected_measure_mesh()`
-*/
template
typename GT::FT interpolated_corrected_gaussian_curvature_measure_face(const std::vector& u,
const std::vector& x = {})
@@ -277,21 +226,6 @@ typename GT::FT interpolated_corrected_gaussian_curvature_measure_face(const std
}
}
-/**
-* \ingroup PMP_corrected_curvatures_grp
-*
-* Computes the interpolated corrected anisotropic measure \f$ \mu_{XY} \f$ of a specific face.
-*
-* @tparam GT geometric traits class model of `Kernel`.
-*
-* @param u is a vector of the vertex nomrals of the face.
-* @param x is a vector of the vertex positions of the face.
-*
-* @return an array of scalar values for each combination of the standard basis (3x3)
-* These are the values of the interpolated corrected anisotropic measure of the given face.
-*
-* @see `interpolated_corrected_anisotropic_measure_mesh()`
-*/
template
std::array interpolated_corrected_anisotropic_measure_face(const std::vector& u,
const std::vector& x)
@@ -403,51 +337,6 @@ std::array interpolated_corrected_anisotropic_measure_fa
return muXY;
}
-
-/**
-* \ingroup PMP_corrected_curvatures_grp
-*
-* Computes the interpolated corrected curvature measure on each face of the mesh.
-*
-* @tparam PolygonMesh a model of `FaceListGraph`.
-* @tparam FaceMeasureMap a model of `WritablePropertyMap` with
-* `boost::graph_traits::%face_descriptor` as key type and `GT::FT` as value type.
-* @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters".
-*
-* @param pmesh the polygon mesh.
-* @param fmm (face measure map) the property map used for storing the computed interpolated corrected measure.
-* @param mu_i an enum for choosing between computing
-* the area measure, the mean curvature measure or the gaussian curvature measure.
-* @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 `pmesh`}
-* \cgalParamType{a class model of `ReadablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor`
-* as key type and `%Point_3` as value type}
-* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
-* \cgalParamExtra{If this parameter is omitted, an internal property map for
-* `CGAL::vertex_point_t` must be available in `PolygonMesh`.}
-* \cgalParamNEnd
-*
-* \cgalParamNBegin{vertex_normal_map}
-* \cgalParamDescription{a property map associating normal vectors to the vertices of `pmesh`}
-* \cgalParamType{a class model of `ReadablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor`
-* as key type and `%Vector_3` as value type}
-* \cgalParamDefault{`get(dynamic_vertex_property_t(), pmesh)`}
-* \cgalParamExtra{If this parameter is omitted, vertex normals will be
-* computed using compute_vertex_normals()}
-* \cgalParamNEnd
-*
-* \cgalNamedParamsEnd
-*
-* @see `interpolated_corrected_area_measure_face()`
-* @see `interpolated_corrected_mean_curvature_measure_face()`
-* @see `interpolated_corrected_gaussian_curvature_measure_face()`
-*/
template
void
@@ -518,48 +407,6 @@ template::%face_descriptor` as key type and `std::array` as value type.
-* @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters".
-*
-* @param pmesh the polygon mesh.
-* @param fmm (face measure map) the property map used for storing the computed interpolated corrected measure.
-* @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 `pmesh`}
-* \cgalParamType{a class model of `ReadablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor`
-* as key type and `%Point_3` as value type}
-* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
-* \cgalParamExtra{If this parameter is omitted, an internal property map for
-* `CGAL::vertex_point_t` must be available in `PolygonMesh`.}
-* \cgalParamNEnd
-*
-* \cgalParamNBegin{vertex_normal_map}
-* \cgalParamDescription{a property map associating normal vectors to the vertices of `pmesh`}
-* \cgalParamType{a class model of `ReadablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor`
-* as key type and `%Vector_3` as value type}
-* \cgalParamDefault{`get(dynamic_vertex_property_t(), pmesh)`}
-* \cgalParamExtra{If this parameter is omitted, vertex normals will be
-* computed using compute_vertex_normals()}
-* \cgalParamNEnd
-*
-* \cgalNamedParamsEnd
-*
-* @see `interpolated_corrected_anisotropic_measure_face()`
-* @see `interpolated_corrected_measure_mesh()`
-*/
template
void
@@ -636,21 +483,6 @@ template
typename GT::FT face_in_ball_ratio(const std::vector& x,
const typename GT::FT r,
@@ -682,52 +514,6 @@ typename GT::FT face_in_ball_ratio(const std::vector& x,
return (r - d_min) / (d_max - d_min);
}
-/**
-* \ingroup PMP_corrected_curvatures_grp
-*
-* Expands given face area and curvature (mean or gaussian) measures around a vertex `v`.
-* Expansion is based on the inclusion ratio of each face in a ball of radius `r` around the vertex `v`.
-*
-* @tparam PolygonMesh a model of `FaceListGraph`.
-* @tparam FaceMeasureMap a model of `WritablePropertyMap` with
-* `boost::graph_traits::%face_descriptor` as key type and `GT::FT` as value type.
-* @tparam VertexMeasureMap a model of `WritablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor` as key type and `GT::FT` as value type.
-* @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters".
-*
-* @param pmesh the polygon mesh.
-* @param area_fmm (area face measure map) the property map storing the already computed area measure on each face.
-* @param curvature_fmm (curvature face measure map) the property map storing the already computed curvature measure on each face.
-* This curvature measure can be either the Mean Curvature or the Gaussian Curvature.
-* @param area_vmm (area vertex measure map) the property map provided to store the expanded area measure on each vertex.
-* @param curvature_vmm (curvature vertex measure map) the property map provided to store the expanded curvature measure on each vertex.
-* This curvature measure can be either the Mean Curvature or the Gaussian Curvature.
-* @param v (vertex) the vertex to expand the area and curvature measure around.
-* @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below
-*
-* \cgalNamedParamsBegin
-*
-* \cgalParamNBegin{ball_radius}
-* \cgalParamDescription{the radius of the ball around the vertex `v` to expand the area and curvature measure}
-* \cgalParamType{`GT::FT`}
-* \cgalParamDefault{`0.01`}
-* \cgalParamNEnd
-*
-* \cgalParamNBegin{vertex_point_map}
-* \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
-* \cgalParamType{a class model of `ReadablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor`
-* as key type and `%Point_3` as value type}
-* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
-* \cgalParamExtra{If this parameter is omitted, an internal property map for
-* `CGAL::vertex_point_t` must be available in `PolygonMesh`.}
-* \cgalParamNEnd
-*
-* \cgalNamedParamsEnd
-*
-* @see `expand_interpolated_corrected_anisotropic_measure_vertex()`
-* @see `face_in_ball_ratio()`
-*/
template
void expand_interpolated_corrected_measure_vertex(const PolygonMesh& pmesh,
@@ -802,54 +588,6 @@ template::%face_descriptor` as key type and `GT::FT` as value type.
-* @tparam AnisotropicFaceMeasureMap a model of `WritablePropertyMap` with
-* `boost::graph_traits::%face_descriptor` as key type and `std::array` as value type.
-* @tparam AreaVertexMeasureMap a model of `WritablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor` as key type and `GT::FT` as value type.
-* @tparam AnisotropicVertexMeasureMap a model of `WritablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor` as key type and `std::array` as value type.
-* @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters".
-*
-* @param pmesh the polygon mesh.
-* @param area_fmm (area face measure map) the property map storing the already computed area measure on each face.
-* @param aniso_fmm (anisotropic face measure map) the property map storing the already computed anisotropic measure on each face.
-* @param area_vmm (area vertex measure map) the property map provided to store the expanded area measure on each vertex.
-* @param aniso_vmm (anisotropic vertex measure map) the property map provided to store the expanded anisotropic measure on each vertex.
-* @param v (vertex) the vertex to expand the area and anisotropic measure around.
-* @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below
-*
-* \cgalNamedParamsBegin
-*
-* \cgalParamNBegin{ball_radius}
-* \cgalParamDescription{the radius of the ball around the vertex `v` to expand the area and curvature measure}
-* \cgalParamType{`GT::FT`}
-* \cgalParamDefault{`0.01`}
-* \cgalParamNEnd
-*
-* \cgalParamNBegin{vertex_point_map}
-* \cgalParamDescription{a property map associating points to the vertices of `pmesh`}
-* \cgalParamType{a class model of `ReadablePropertyMap` with
-* `boost::graph_traits::%vertex_descriptor`
-* as key type and `%Point_3` as value type}
-* \cgalParamDefault{`boost::get(CGAL::vertex_point, pmesh)`}
-* \cgalParamExtra{If this parameter is omitted, an internal property map for
-* `CGAL::vertex_point_t` must be available in `PolygonMesh`.}
-* \cgalParamNEnd
-*
-* \cgalNamedParamsEnd
-*
-* @see `expand_interpolated_corrected_measure_vertex()`
-* @see `face_in_ball_ratio()`
-*/
template
@@ -931,6 +669,8 @@ template
mu0_expand_map(mu0_expand_init), mu1_expand_map(mu1_expand_init);
- interpolated_corrected_measure_mesh(pmesh, mu0_map, MU0_AREA_MEASURE, np);
- interpolated_corrected_measure_mesh(pmesh, mu1_map, MU1_MEAN_CURVATURE_MEASURE, np);
+ internal::interpolated_corrected_measure_mesh(pmesh, mu0_map, internal::MU0_AREA_MEASURE, np);
+ internal::interpolated_corrected_measure_mesh(pmesh, mu1_map, internal::MU1_MEAN_CURVATURE_MEASURE, np);
for (vertex_descriptor v : vertices(pmesh))
{
- expand_interpolated_corrected_measure_vertex(pmesh, mu0_map, mu1_map, mu0_expand_map, mu1_expand_map, v, np.ball_radius(r));
+ internal::expand_interpolated_corrected_measure_vertex(pmesh, mu0_map, mu1_map, mu0_expand_map, mu1_expand_map, v, np.ball_radius(r));
typename GT::FT v_mu0 = get(mu0_expand_map, v);
if (v_mu0 != 0.0)
@@ -1015,8 +753,6 @@ template
@@ -1049,12 +785,12 @@ template
mu0_expand_map(mu0_expand_init), mu2_expand_map(mu2_expand_init);
- interpolated_corrected_measure_mesh(pmesh, mu0_map, MU0_AREA_MEASURE, np);
- interpolated_corrected_measure_mesh(pmesh, mu2_map, MU2_GAUSSIAN_CURVATURE_MEASURE, np);
+ internal::interpolated_corrected_measure_mesh(pmesh, mu0_map, internal::MU0_AREA_MEASURE, np);
+ internal::interpolated_corrected_measure_mesh(pmesh, mu2_map, internal::MU2_GAUSSIAN_CURVATURE_MEASURE, np);
for (vertex_descriptor v : vertices(pmesh))
{
- expand_interpolated_corrected_measure_vertex(pmesh, mu0_map, mu2_map, mu0_expand_map, mu2_expand_map, v, np.ball_radius(r));
+ internal::expand_interpolated_corrected_measure_vertex(pmesh, mu0_map, mu2_map, mu0_expand_map, mu2_expand_map, v, np.ball_radius(r));
typename GT::FT v_mu0 = get(mu0_expand_map, v);
if(v_mu0 != 0.0)
@@ -1106,8 +842,6 @@ template
@@ -1172,12 +906,12 @@ template
muXY_expand_map(muXY_expand_init);
- interpolated_corrected_measure_mesh(pmesh, mu0_map, MU0_AREA_MEASURE, np);
- interpolated_corrected_anisotropic_measure_mesh(pmesh, muXY_map, np);
+ internal::interpolated_corrected_measure_mesh(pmesh, mu0_map, internal::MU0_AREA_MEASURE, np);
+ internal::interpolated_corrected_anisotropic_measure_mesh(pmesh, muXY_map, np);
for (vertex_descriptor v : vertices(pmesh))
{
- expand_interpolated_corrected_anisotropic_measure_vertex(pmesh, mu0_map, muXY_map, mu0_expand_map, muXY_expand_map, v, np.ball_radius(r));
+ internal::expand_interpolated_corrected_anisotropic_measure_vertex(pmesh, mu0_map, muXY_map, mu0_expand_map, muXY_expand_map, v, np.ball_radius(r));
typename GT::FT v_mu0 = get(mu0_expand_map, v);
Eigen::Matrix v_muXY = get(muXY_expand_map, v);