mirror of https://github.com/CGAL/cgal
many changes
This commit is contained in:
parent
3effa6eae8
commit
2bcbae97ba
|
|
@ -27,7 +27,8 @@
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
/// The class Barycentric_mapping_parameterizer_3 implements Tutte Barycentric Mapping algorithm [Tut63].
|
/// The class Barycentric_mapping_parameterizer_3 implements Tutte Barycentric Mapping algorithm [Tut63].
|
||||||
/// This algorithm is also called "Tutte Uniform Weights" by other authors.
|
/// This algorithm is also called "Tutte Uniform Weights" by other authors.
|
||||||
///
|
///
|
||||||
|
|
@ -44,16 +45,25 @@ namespace CGAL {
|
||||||
/// \models ParameterizerTraits_3
|
/// \models ParameterizerTraits_3
|
||||||
///
|
///
|
||||||
/// ## Design Pattern ##
|
/// ## Design Pattern ##
|
||||||
/// Barycentric_mapping_parameterizer_3 class is a
|
/// `Barycentric_mapping_parameterizer_3` class is a
|
||||||
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
/// Strategy \cite cgal:ghjv-dpero-95 : it implements a strategy of surface parameterization
|
||||||
/// for models of ParameterizationMesh_3.
|
/// for models of `ParameterizationMesh_3`.
|
||||||
///
|
///
|
||||||
/// @param ParameterizationMesh_3 3D surface mesh.
|
/// \tparam ParameterizationMesh_3 3D surface mesh.
|
||||||
/// @param BorderParameterizer_3 Strategy to parameterize the surface border.
|
/// \tparam BorderParameterizer_3 Strategy to parameterize the surface border.
|
||||||
/// @param SparseLinearAlgebraTraits_d Traits class to solve a sparse linear system.
|
/// \tparam SparseLinearAlgebraTraits_d Traits class to solve a sparse linear system.
|
||||||
/// Note: the system is *not* symmetric because Fixed_border_parameterizer_3
|
/// Note: the system is *not* symmetric because Fixed_border_parameterizer_3
|
||||||
/// does not remove (yet) border vertices from the system.
|
/// does not remove (yet) border vertices from the system.
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\sa `CGAL::Parameterizer_traits_3<ParameterizationMesh_3>`
|
||||||
|
\sa `CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
\sa `CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
\sa `CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
\sa `CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
\sa `CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
*/
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
class ParameterizationMesh_3,
|
class ParameterizationMesh_3,
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,8 @@ namespace CGAL {
|
||||||
// Class Circular_border_parameterizer_3
|
// Class Circular_border_parameterizer_3
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationBorder
|
||||||
|
///
|
||||||
/// This is the base class of strategies that parameterize the border
|
/// This is the base class of strategies that parameterize the border
|
||||||
/// of a 3D surface onto a circle.
|
/// of a 3D surface onto a circle.
|
||||||
/// Circular_border_parameterizer_3 is a pure virtual class, thus
|
/// Circular_border_parameterizer_3 is a pure virtual class, thus
|
||||||
|
|
@ -49,6 +51,9 @@ namespace CGAL {
|
||||||
/// ## Design Pattern ##
|
/// ## Design Pattern ##
|
||||||
/// BorderParameterizer_3 models are Strategies [GHJV95]: they implement
|
/// BorderParameterizer_3 models are Strategies [GHJV95]: they implement
|
||||||
/// a strategy of border parameterization for models of ParameterizationMesh_3.
|
/// a strategy of border parameterization for models of ParameterizationMesh_3.
|
||||||
|
///
|
||||||
|
/// \sa CGAL::Circular_border_arc_length_parameterizer_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa CGAL::Circular_border_uniform_parameterizer_3<ParameterizationMesh_3>}`
|
||||||
|
|
||||||
template<class ParameterizationMesh_3> //< 3D surface
|
template<class ParameterizationMesh_3> //< 3D surface
|
||||||
class Circular_border_parameterizer_3
|
class Circular_border_parameterizer_3
|
||||||
|
|
@ -204,6 +209,8 @@ Circular_border_parameterizer_3<Adaptor>::parameterize_border(Adaptor& mesh)
|
||||||
// Class Circular_border_uniform_parameterizer_3
|
// Class Circular_border_uniform_parameterizer_3
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationBorder
|
||||||
|
///
|
||||||
/// This class parameterizes the border of a 3D surface onto a circle
|
/// This class parameterizes the border of a 3D surface onto a circle
|
||||||
/// in a uniform manner: points are equally spaced.
|
/// in a uniform manner: points are equally spaced.
|
||||||
/// Circular_border_parameterizer_3 implements most of the border parameterization
|
/// Circular_border_parameterizer_3 implements most of the border parameterization
|
||||||
|
|
@ -215,6 +222,9 @@ Circular_border_parameterizer_3<Adaptor>::parameterize_border(Adaptor& mesh)
|
||||||
/// ## Design Pattern ##
|
/// ## Design Pattern ##
|
||||||
/// BorderParameterizer_3 models are Strategies [GHJV95]: they implement
|
/// BorderParameterizer_3 models are Strategies [GHJV95]: they implement
|
||||||
/// a strategy of border parameterization for models of ParameterizationMesh_3
|
/// a strategy of border parameterization for models of ParameterizationMesh_3
|
||||||
|
///
|
||||||
|
/// \sa CGAL::Circular_border_arc_length_parameterizer_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa CGAL::Circular_border_parameterizer_3<ParameterizationMesh_3>}`
|
||||||
|
|
||||||
template<class ParameterizationMesh_3> //< 3D surface
|
template<class ParameterizationMesh_3> //< 3D surface
|
||||||
class Circular_border_uniform_parameterizer_3
|
class Circular_border_uniform_parameterizer_3
|
||||||
|
|
@ -283,6 +293,8 @@ protected:
|
||||||
// Class Circular_border_arc_length_parameterizer_3
|
// Class Circular_border_arc_length_parameterizer_3
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationBorder
|
||||||
|
///
|
||||||
/// This class parameterizes the border of a 3D surface onto a circle,
|
/// This class parameterizes the border of a 3D surface onto a circle,
|
||||||
/// with an arc-length parameterization: (u,v) values are
|
/// with an arc-length parameterization: (u,v) values are
|
||||||
/// proportional to the length of border edges.
|
/// proportional to the length of border edges.
|
||||||
|
|
@ -295,6 +307,9 @@ protected:
|
||||||
/// ## Design Pattern ##
|
/// ## Design Pattern ##
|
||||||
/// BorderParameterizer_3 models are Strategies [GHJV95]: they implement
|
/// BorderParameterizer_3 models are Strategies [GHJV95]: they implement
|
||||||
/// a strategy of border parameterization for models of ParameterizationMesh_3
|
/// a strategy of border parameterization for models of ParameterizationMesh_3
|
||||||
|
///
|
||||||
|
/// \sa CGAL::Circular_border_parameterizer_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa CGAL::Circular_border_uniform_parameterizer_3<ParameterizationMesh_3>}`
|
||||||
|
|
||||||
template<class ParameterizationMesh_3> //< 3D surface
|
template<class ParameterizationMesh_3> //< 3D surface
|
||||||
class Circular_border_arc_length_parameterizer_3
|
class Circular_border_arc_length_parameterizer_3
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
/// The class Discrete_authalic_parameterizer_3
|
/// The class Discrete_authalic_parameterizer_3
|
||||||
/// implements the Discrete Authalic Parameterization algorithm [DMA02].
|
/// implements the Discrete Authalic Parameterization algorithm [DMA02].
|
||||||
/// This method is sometimes called "DAP" or just "Authalic parameterization".
|
/// This method is sometimes called "DAP" or just "Authalic parameterization".
|
||||||
|
|
@ -51,6 +53,13 @@ namespace CGAL {
|
||||||
/// Discrete_authalic_parameterizer_3 class is a
|
/// Discrete_authalic_parameterizer_3 class is a
|
||||||
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
||||||
/// for models of ParameterizationMesh_3.
|
/// for models of ParameterizationMesh_3.
|
||||||
|
///
|
||||||
|
/// \sa `CGAL::Parameterizer_traits_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa `CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
/// The class Discrete_conformal_map_parameterizer_3
|
/// The class Discrete_conformal_map_parameterizer_3
|
||||||
/// implements the Discrete Conformal Map (DCM) parameterization [EDD+95].
|
/// implements the Discrete Conformal Map (DCM) parameterization [EDD+95].
|
||||||
/// This algorithm is also called "Discrete Conformal Parameterization (DCP)",
|
/// This algorithm is also called "Discrete Conformal Parameterization (DCP)",
|
||||||
|
|
@ -51,11 +53,18 @@ namespace CGAL {
|
||||||
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
||||||
/// for models of ParameterizationMesh_3.
|
/// for models of ParameterizationMesh_3.
|
||||||
///
|
///
|
||||||
/// @param ParameterizationMesh_3 3D surface mesh.
|
/// \param ParameterizationMesh_3 3D surface mesh.
|
||||||
/// @param BorderParameterizer_3 Strategy to parameterize the surface border.
|
/// \param BorderParameterizer_3 Strategy to parameterize the surface border.
|
||||||
/// @param SparseLinearAlgebraTraits_d Traits class to solve a sparse linear system.
|
/// \param SparseLinearAlgebraTraits_d Traits class to solve a sparse linear system.
|
||||||
/// Note: the system is *not* symmetric because Fixed_border_parameterizer_3
|
/// Note: the system is *not* symmetric because Fixed_border_parameterizer_3
|
||||||
/// does not remove (yet) border vertices from the system.
|
/// does not remove (yet) border vertices from the system.
|
||||||
|
///
|
||||||
|
/// \sa `CGAL::Parameterizer_traits_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa `CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,9 @@ namespace CGAL {
|
||||||
// Declaration
|
// Declaration
|
||||||
// ------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
/// The class Fixed_border_parameterizer_3
|
/// The class Fixed_border_parameterizer_3
|
||||||
/// is the base class of fixed border parameterization methods (Tutte, Floater, ...).
|
/// is the base class of fixed border parameterization methods (Tutte, Floater, ...).
|
||||||
///
|
///
|
||||||
|
|
@ -64,6 +67,13 @@ namespace CGAL {
|
||||||
/// Fixed_border_parameterizer_3 class is a
|
/// Fixed_border_parameterizer_3 class is a
|
||||||
/// Strategy [GHJV95]: it implements (part of) a strategy of surface parameterization
|
/// Strategy [GHJV95]: it implements (part of) a strategy of surface parameterization
|
||||||
/// for models of ParameterizationMesh_3.
|
/// for models of ParameterizationMesh_3.
|
||||||
|
///
|
||||||
|
/// \sa `CGAL::Parameterizer_traits_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa `CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
|
|
@ -151,21 +161,21 @@ public:
|
||||||
|
|
||||||
// Default copy constructor and operator =() are fine
|
// Default copy constructor and operator =() are fine
|
||||||
|
|
||||||
/// Compute a one-to-one mapping from a triangular 3D surface 'mesh'
|
/// Compute a one-to-one mapping from a triangular 3D surface mesh
|
||||||
/// to a piece of the 2D space.
|
/// to a piece of the 2D space.
|
||||||
/// The mapping is linear by pieces (linear in each triangle).
|
/// The mapping is linear by pieces (linear in each triangle).
|
||||||
/// The result is the (u,v) pair image of each vertex of the 3D surface.
|
/// The result is the (u,v) pair image of each vertex of the 3D surface.
|
||||||
///
|
///
|
||||||
/// \pre 'mesh' must be a surface with one connected component.
|
/// \pre `mesh` must be a surface with one connected component.
|
||||||
/// \pre 'mesh' must be a triangular mesh.
|
/// \pre `mesh` must be a triangular mesh.
|
||||||
/// \pre The mesh border must be mapped onto a convex polygon.
|
/// \pre The mesh border must be mapped onto a convex polygon.
|
||||||
virtual Error_code parameterize(Adaptor& mesh);
|
virtual Error_code parameterize(Adaptor& mesh);
|
||||||
|
|
||||||
// Protected operations
|
// Protected operations
|
||||||
protected:
|
protected:
|
||||||
/// Check parameterize() preconditions:
|
/// Check parameterize() preconditions:
|
||||||
/// - 'mesh' must be a surface with one connected component.
|
/// - `mesh` must be a surface with one connected component.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - `mesh` must be a triangular mesh.
|
||||||
/// - The mesh border must be mapped onto a convex polygon.
|
/// - The mesh border must be mapped onto a convex polygon.
|
||||||
virtual Error_code check_parameterize_preconditions(Adaptor& mesh);
|
virtual Error_code check_parameterize_preconditions(Adaptor& mesh);
|
||||||
|
|
||||||
|
|
@ -239,14 +249,14 @@ private:
|
||||||
// Implementation
|
// Implementation
|
||||||
// ------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Compute a one-to-one mapping from a triangular 3D surface 'mesh'
|
// Compute a one-to-one mapping from a triangular 3D surface mesh
|
||||||
// to a piece of the 2D space.
|
// to a piece of the 2D space.
|
||||||
// The mapping is linear by pieces (linear in each triangle).
|
// The mapping is linear by pieces (linear in each triangle).
|
||||||
// The result is the (u,v) pair image of each vertex of the 3D surface.
|
// The result is the (u,v) pair image of each vertex of the 3D surface.
|
||||||
//
|
//
|
||||||
// Preconditions:
|
// Preconditions:
|
||||||
// - 'mesh' must be a surface with one connected component.
|
// - `mesh` must be a surface with one connected component.
|
||||||
// - 'mesh' must be a triangular mesh.
|
// - `mesh` must be a triangular mesh.
|
||||||
// - The mesh border must be mapped onto a convex polygon.
|
// - The mesh border must be mapped onto a convex polygon.
|
||||||
template<class Adaptor, class Border_param, class Sparse_LA>
|
template<class Adaptor, class Border_param, class Sparse_LA>
|
||||||
inline
|
inline
|
||||||
|
|
@ -374,8 +384,8 @@ parameterize(Adaptor& mesh)
|
||||||
|
|
||||||
|
|
||||||
// Check parameterize() preconditions:
|
// Check parameterize() preconditions:
|
||||||
// - 'mesh' must be a surface with one connected component.
|
// - `mesh` must be a surface with one connected component.
|
||||||
// - 'mesh' must be a triangular mesh.
|
// - `mesh` must be a triangular mesh.
|
||||||
// - The mesh border must be mapped onto a convex polygon.
|
// - The mesh border must be mapped onto a convex polygon.
|
||||||
template<class Adaptor, class Border_param, class Sparse_LA>
|
template<class Adaptor, class Border_param, class Sparse_LA>
|
||||||
inline
|
inline
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@ namespace CGAL {
|
||||||
// Declaration
|
// Declaration
|
||||||
// ------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
/// The class LSCM_parameterizer_3 implements the
|
/// The class LSCM_parameterizer_3 implements the
|
||||||
/// Least Squares Conformal Maps (LSCM) parameterization [LPRM02].
|
/// Least Squares Conformal Maps (LSCM) parameterization [LPRM02].
|
||||||
///
|
///
|
||||||
|
|
@ -54,6 +56,13 @@ namespace CGAL {
|
||||||
/// LSCM_parameterizer_3 class is a
|
/// LSCM_parameterizer_3 class is a
|
||||||
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
||||||
/// for models of ParameterizationMesh_3.
|
/// for models of ParameterizationMesh_3.
|
||||||
|
///
|
||||||
|
/// \sa `CGAL::Parameterizer_traits_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa `CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
|
|
@ -144,20 +153,20 @@ public:
|
||||||
|
|
||||||
// Default copy constructor and operator =() are fine
|
// Default copy constructor and operator =() are fine
|
||||||
|
|
||||||
/// Compute a one-to-one mapping from a triangular 3D surface 'mesh'
|
/// Compute a one-to-one mapping from a triangular 3D surface mesh
|
||||||
/// to a piece of the 2D space.
|
/// to a piece of the 2D space.
|
||||||
/// The mapping is linear by pieces (linear in each triangle).
|
/// The mapping is linear by pieces (linear in each triangle).
|
||||||
/// The result is the (u,v) pair image of each vertex of the 3D surface.
|
/// The result is the (u,v) pair image of each vertex of the 3D surface.
|
||||||
///
|
///
|
||||||
/// \pre 'mesh' must be a surface with one connected component.
|
/// \pre `mesh` must be a surface with one connected component.
|
||||||
/// \pre 'mesh' must be a triangular mesh.
|
/// \pre `mesh` must be a triangular mesh.
|
||||||
virtual Error_code parameterize(Adaptor& mesh);
|
virtual Error_code parameterize(Adaptor& mesh);
|
||||||
|
|
||||||
// Private operations
|
// Private operations
|
||||||
private:
|
private:
|
||||||
/// Check parameterize() preconditions:
|
/// Check parameterize() preconditions:
|
||||||
/// - 'mesh' must be a surface with one connected component.
|
/// - `mesh` must be a surface with one connected component.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - `mesh` must be a triangular mesh.
|
||||||
virtual Error_code check_parameterize_preconditions(Adaptor& mesh);
|
virtual Error_code check_parameterize_preconditions(Adaptor& mesh);
|
||||||
|
|
||||||
/// Initialize "A*X = B" linear system after
|
/// Initialize "A*X = B" linear system after
|
||||||
|
|
@ -217,14 +226,14 @@ private:
|
||||||
// Implementation
|
// Implementation
|
||||||
// ------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Compute a one-to-one mapping from a triangular 3D surface 'mesh'
|
// Compute a one-to-one mapping from a triangular 3D surface mesh
|
||||||
// to a piece of the 2D space.
|
// to a piece of the 2D space.
|
||||||
// The mapping is linear by pieces (linear in each triangle).
|
// The mapping is linear by pieces (linear in each triangle).
|
||||||
// The result is the (u,v) pair image of each vertex of the 3D surface.
|
// The result is the (u,v) pair image of each vertex of the 3D surface.
|
||||||
//
|
//
|
||||||
// Preconditions:
|
// Preconditions:
|
||||||
// - 'mesh' must be a surface with one connected component.
|
// - `mesh` must be a surface with one connected component.
|
||||||
// - 'mesh' must be a triangular mesh.
|
// - `mesh` must be a triangular mesh.
|
||||||
//
|
//
|
||||||
// Implementation note: Outline of the algorithm:
|
// Implementation note: Outline of the algorithm:
|
||||||
// 1) Find an initial solution by projecting on a plane.
|
// 1) Find an initial solution by projecting on a plane.
|
||||||
|
|
@ -338,8 +347,8 @@ parameterize(Adaptor& mesh)
|
||||||
|
|
||||||
|
|
||||||
// Check parameterize() preconditions:
|
// Check parameterize() preconditions:
|
||||||
// - 'mesh' must be a surface with one connected component
|
// - `mesh` must be a surface with one connected component
|
||||||
// - 'mesh' must be a triangular mesh
|
// - `mesh` must be a triangular mesh
|
||||||
template<class Adaptor, class Border_param, class Sparse_LA>
|
template<class Adaptor, class Border_param, class Sparse_LA>
|
||||||
inline
|
inline
|
||||||
typename LSCM_parameterizer_3<Adaptor, Border_param, Sparse_LA>::Error_code
|
typename LSCM_parameterizer_3<Adaptor, Border_param, Sparse_LA>::Error_code
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
/// The class Mean_value_coordinates_parameterizer_3
|
/// The class Mean_value_coordinates_parameterizer_3
|
||||||
/// implements Floater Mean Value Coordinates parameterization [Flo03].
|
/// implements Floater Mean Value Coordinates parameterization [Flo03].
|
||||||
/// This method is sometimes called simply "Floater parameterization".
|
/// This method is sometimes called simply "Floater parameterization".
|
||||||
|
|
@ -50,6 +52,13 @@ namespace CGAL {
|
||||||
/// Mean_value_coordinates_parameterizer_3 class is a
|
/// Mean_value_coordinates_parameterizer_3 class is a
|
||||||
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
|
||||||
/// for models of ParameterizationMesh_3.
|
/// for models of ParameterizationMesh_3.
|
||||||
|
///
|
||||||
|
/// \sa `CGAL::Parameterizer_traits_3<ParameterizationMesh_3>`
|
||||||
|
/// \sa `CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>}
|
||||||
|
|
||||||
template
|
template
|
||||||
<
|
<
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationHelper
|
||||||
|
///
|
||||||
/// The class Parameterization_mesh_feature_extractor
|
/// The class Parameterization_mesh_feature_extractor
|
||||||
/// computes features (genus, borders, ...) of a 3D surface,
|
/// computes features (genus, borders, ...) of a 3D surface,
|
||||||
/// model of the ParameterizationMesh_3 concept.
|
/// model of the ParameterizationMesh_3 concept.
|
||||||
|
|
@ -86,8 +88,8 @@ public:
|
||||||
|
|
||||||
/// Constructor.
|
/// Constructor.
|
||||||
///
|
///
|
||||||
/// CAUTION: This class caches the result of feature extractions
|
/// \attention This class caches the result of feature extractions
|
||||||
/// => The caller must *not* modify 'mesh' during the
|
/// => The caller must *not* modify `mesh` during the
|
||||||
/// Parameterization_mesh_feature_extractor life cycle.
|
/// Parameterization_mesh_feature_extractor life cycle.
|
||||||
Parameterization_mesh_feature_extractor(Adaptor& mesh)
|
Parameterization_mesh_feature_extractor(Adaptor& mesh)
|
||||||
// Store reference to adapted mesh
|
// Store reference to adapted mesh
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMesh
|
||||||
|
///
|
||||||
/// Parameterization_mesh_patch_3 is a Decorator class to "virtually" cut a patch
|
/// Parameterization_mesh_patch_3 is a Decorator class to "virtually" cut a patch
|
||||||
/// in a ParameterizationPatchableMesh_3 3D surface. Only the patch is exported,
|
/// in a ParameterizationPatchableMesh_3 3D surface. Only the patch is exported,
|
||||||
/// making the 3D surface look like a topological disk.
|
/// making the 3D surface look like a topological disk.
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMesh
|
||||||
|
///
|
||||||
/// Parameterization_polyhedron_adaptor_3 is an adaptor class to access to a Polyhedron
|
/// Parameterization_polyhedron_adaptor_3 is an adaptor class to access to a Polyhedron
|
||||||
/// 3D mesh using the ParameterizationPatchableMesh_3 interface.
|
/// 3D mesh using the ParameterizationPatchableMesh_3 interface.
|
||||||
/// Among other things, this concept defines the accessor to the (u,v) values
|
/// Among other things, this concept defines the accessor to the (u,v) values
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
/// The class Parameterizer_traits_3
|
/// The class Parameterizer_traits_3
|
||||||
/// is the base class of all parameterization methods.
|
/// is the base class of all parameterization methods.
|
||||||
/// This class is a pure virtual class, thus cannot be instantiated.
|
/// This class is a pure virtual class, thus cannot be instantiated.
|
||||||
|
|
@ -42,6 +44,14 @@ namespace CGAL {
|
||||||
/// ## Design Pattern ##
|
/// ## Design Pattern ##
|
||||||
/// ParameterizerTraits_3 models are Strategies [GHJV95]: they implement
|
/// ParameterizerTraits_3 models are Strategies [GHJV95]: they implement
|
||||||
/// a strategy of surface parameterization for models of ParameterizationMesh_3.
|
/// a strategy of surface parameterization for models of ParameterizationMesh_3.
|
||||||
|
///
|
||||||
|
|
||||||
|
/// \sa `CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
/// \sa `CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>`
|
||||||
|
|
||||||
template<class ParameterizationMesh_3> //< 3D surface
|
template<class ParameterizationMesh_3> //< 3D surface
|
||||||
class Parameterizer_traits_3
|
class Parameterizer_traits_3
|
||||||
|
|
@ -107,13 +117,13 @@ public:
|
||||||
|
|
||||||
// Default constructor, copy constructor and operator =() are fine
|
// Default constructor, copy constructor and operator =() are fine
|
||||||
|
|
||||||
/// Compute a one-to-one mapping from a 3D surface 'mesh'
|
/// Compute a one-to-one mapping from a 3D surface mesh
|
||||||
/// to a piece of the 2D space.
|
/// to a piece of the 2D space.
|
||||||
/// The mapping is linear by pieces (linear in each triangle).
|
/// The mapping is linear by pieces (linear in each triangle).
|
||||||
/// The result is the (u,v) pair image of each vertex of the 3D surface.
|
/// The result is the (u,v) pair image of each vertex of the 3D surface.
|
||||||
///
|
///
|
||||||
/// \pre 'mesh' must be a surface with one connected component.
|
/// \pre `mesh` must be a surface with one connected component.
|
||||||
/// \pre 'mesh' must be a triangular mesh.
|
/// \pre `mesh` must be a triangular mesh.
|
||||||
virtual Error_code parameterize (Adaptor& mesh) = 0;
|
virtual Error_code parameterize (Adaptor& mesh) = 0;
|
||||||
|
|
||||||
/// Get message (in English) corresponding to an error code
|
/// Get message (in English) corresponding to an error code
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ namespace CGAL {
|
||||||
// Class Square_border_parameterizer_3
|
// Class Square_border_parameterizer_3
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationBorder
|
||||||
|
///
|
||||||
/// This is the base class of strategies that parameterize the border
|
/// This is the base class of strategies that parameterize the border
|
||||||
/// of a 3D surface onto a square.
|
/// of a 3D surface onto a square.
|
||||||
/// Square_border_parameterizer_3 is a pure virtual class, thus
|
/// Square_border_parameterizer_3 is a pure virtual class, thus
|
||||||
|
|
@ -281,6 +283,9 @@ Square_border_parameterizer_3<Adaptor>::closest_iterator(Adaptor& mesh,
|
||||||
// Class Square_border_uniform_parameterizer_3
|
// Class Square_border_uniform_parameterizer_3
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationBorder
|
||||||
|
///
|
||||||
/// This class parameterizes the border of a 3D surface onto a square
|
/// This class parameterizes the border of a 3D surface onto a square
|
||||||
/// in a uniform manner: points are equally spaced.
|
/// in a uniform manner: points are equally spaced.
|
||||||
///
|
///
|
||||||
|
|
@ -361,6 +366,8 @@ protected:
|
||||||
// Class Square_border_arc_length_parameterizer_3
|
// Class Square_border_arc_length_parameterizer_3
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationBorder
|
||||||
|
///
|
||||||
/// This class parameterizes the border of a 3D surface onto a square,
|
/// This class parameterizes the border of a 3D surface onto a square,
|
||||||
/// with an arc-length parameterization: (u,v) values are
|
/// with an arc-length parameterization: (u,v) values are
|
||||||
/// proportional to the length of border edges.
|
/// proportional to the length of border edges.
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationAlgebra
|
||||||
|
///
|
||||||
/// The class Taucs_symmetric_solver_traits
|
/// The class Taucs_symmetric_solver_traits
|
||||||
/// is a traits class for solving symmetric positive definite sparse linear systems
|
/// is a traits class for solving symmetric positive definite sparse linear systems
|
||||||
/// using TAUCS solvers family.
|
/// using TAUCS solvers family.
|
||||||
|
|
@ -186,6 +188,8 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationAlgebra
|
||||||
|
///
|
||||||
/// The class Taucs_solver_traits
|
/// The class Taucs_solver_traits
|
||||||
/// is a traits class for solving GENERAL (aka unsymmetric) sparse linear systems
|
/// is a traits class for solving GENERAL (aka unsymmetric) sparse linear systems
|
||||||
/// using TAUCS out-of-core LU factorization.
|
/// using TAUCS out-of-core LU factorization.
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,9 @@ namespace CGAL {
|
||||||
// Declaration
|
// Declaration
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/// \ingroup PkgSurfaceParameterizationBorder
|
||||||
|
///
|
||||||
/// The class Two_vertices_parameterizer_3
|
/// The class Two_vertices_parameterizer_3
|
||||||
/// parameterizes two extreme vertices of a 3D surface.
|
/// parameterizes two extreme vertices of a 3D surface.
|
||||||
/// This kind of border parameterization is used by free border parameterizations.
|
/// This kind of border parameterization is used by free border parameterizations.
|
||||||
|
|
|
||||||
|
|
@ -26,15 +26,17 @@
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
||||||
/// Compute a one-to-one mapping from a 3D triangle surface 'mesh' to a
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
|
/// Compute a one-to-one mapping from a 3D triangle surface `mesh` to a
|
||||||
/// 2D circle, using Floater Mean Value Coordinates algorithm.
|
/// 2D circle, using Floater Mean Value Coordinates algorithm.
|
||||||
/// A one-to-one mapping is guaranteed.
|
/// A one-to-one mapping is guaranteed.
|
||||||
///
|
///
|
||||||
/// The mapping is piecewise linear on the input mesh triangles.
|
/// The mapping is piecewise linear on the input mesh triangles.
|
||||||
/// The result is a (u,v) pair of parameter coordinates for each vertex of the input mesh.
|
/// The result is a (u,v) pair of parameter coordinates for each vertex of the input mesh.
|
||||||
///
|
///
|
||||||
/// \pre 'mesh' must be a surface with one connected component.
|
/// \pre `mesh` must be a surface with one connected component.
|
||||||
/// \pre 'mesh' must be a triangular mesh.
|
/// \pre `mesh` must be a triangular mesh.
|
||||||
///
|
///
|
||||||
template <class ParameterizationMesh_3>
|
template <class ParameterizationMesh_3>
|
||||||
typename Parameterizer_traits_3<ParameterizationMesh_3>::Error_code
|
typename Parameterizer_traits_3<ParameterizationMesh_3>::Error_code
|
||||||
|
|
@ -45,7 +47,9 @@ parameterize(ParameterizationMesh_3& mesh) ///< 3D mesh, model of Parameterizat
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Compute a one-to-one mapping from a 3D triangle surface 'mesh' to a
|
/// \ingroup PkgSurfaceParameterizationMethods
|
||||||
|
///
|
||||||
|
/// Compute a one-to-one mapping from a 3D triangle surface `mesh` to a
|
||||||
/// simple 2D domain.
|
/// simple 2D domain.
|
||||||
/// The mapping is piecewise linear on the triangle mesh.
|
/// The mapping is piecewise linear on the triangle mesh.
|
||||||
/// The result is a pair (u,v) of parameter coordinates for each vertex of the input mesh.
|
/// The result is a pair (u,v) of parameter coordinates for each vertex of the input mesh.
|
||||||
|
|
@ -53,15 +57,15 @@ parameterize(ParameterizationMesh_3& mesh) ///< 3D mesh, model of Parameterizat
|
||||||
/// One-to-one mapping may be guaranteed or
|
/// One-to-one mapping may be guaranteed or
|
||||||
/// not, depending on the chosen ParametizerTraits_3 algorithm.
|
/// not, depending on the chosen ParametizerTraits_3 algorithm.
|
||||||
///
|
///
|
||||||
/// \pre 'mesh' must be a surface with one connected component.
|
/// \pre `mesh` must be a surface with one connected component.
|
||||||
/// \pre 'mesh' must be a triangular mesh.
|
/// \pre `mesh` must be a triangular mesh.
|
||||||
/// \pre The mesh border must be mapped onto a convex polygon
|
/// \pre The mesh border must be mapped onto a convex polygon
|
||||||
/// (for fixed border parameterizations).
|
/// (for fixed border parameterizations).
|
||||||
///
|
///
|
||||||
template <class ParameterizationMesh_3, class ParameterizerTraits_3>
|
template <class ParameterizationMesh_3, class ParameterizerTraits_3>
|
||||||
typename Parameterizer_traits_3<ParameterizationMesh_3>::Error_code
|
typename Parameterizer_traits_3<ParameterizationMesh_3>::Error_code
|
||||||
parameterize(ParameterizationMesh_3& mesh, ///< 3D mesh, model of ParameterizationMesh_3
|
parameterize(ParameterizationMesh_3& mesh, ///< 3D mesh, model of ParameterizationMesh_3
|
||||||
ParameterizerTraits_3 parameterizer) ///< Parameterization method for 'mesh'
|
ParameterizerTraits_3 parameterizer) ///< Parameterization method for `mesh`
|
||||||
{
|
{
|
||||||
return parameterizer.parameterize(mesh);
|
return parameterizer.parameterize(mesh);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue