CGAL 6.1.2 - Planar Parameterization of Triangulated Surface Meshes: CGAL::Surface_mesh_parameterization::Circular_border_parameterizer_3< TriangleMesh_ > Class Template Reference

CGAL 6.1.2 - Planar Parameterization of Triangulated Surface Meshes

Loading...
Searching...
No Matches
List of all members | Public Types | Public Member Functions
CGAL::Surface_mesh_parameterization::Circular_border_parameterizer_3< TriangleMesh_ > Class Template Referenceabstract
Reference Manual » Border Parameterization Methods

`#include <CGAL/Surface_mesh_parameterization/Circular_border_parameterizer_3.h>`

Inherited by CGAL::Surface_mesh_parameterization::Circular_border_arc_length_parameterizer_3< TriangleMesh_ >, and CGAL::Surface_mesh_parameterization::Circular_border_uniform_parameterizer_3< TriangleMesh_ >.

## Definition

template<typename TriangleMesh_>
class CGAL::Surface_mesh_parameterization::Circular_border_parameterizer_3< TriangleMesh_ >

This is the base class of strategies that parameterize the border of a 3D surface onto a circle.

The class `Circular_border_parameterizer_3` is a pure virtual class, thus cannot be instantiated.

It implements most of the algorithm. Subclasses only have to implement the function `compute_edge_length()` to compute a segment's length.

Implementation note: To simplify the implementation, the border parameterizer knows only the `TriangleMesh` class and does not know the parameterization algorithm requirements or the kind of sparse linear system used.

Is model of
  `Parameterizer_3`

Template Parameters

  TriangleMesh_ | must be a model of `FaceGraph`.

See also
  `CGAL::Surface_mesh_parameterization::Circular_border_uniform_parameterizer_3<TriangleMesh>`
  `CGAL::Surface_mesh_parameterization::Circular_border_arc_length_parameterizer_3<TriangleMesh>`

## Public Types
typedef TriangleMesh_ | Triangle_mesh
| Triangle mesh type.
typedef boost::graph_traits< Triangle_mesh >::vertex_descriptor | vertex_descriptor
| Mesh vertex type.
typedef boost::graph_traits< Triangle_mesh >::halfedge_descriptor | halfedge_descriptor
| Mesh halfedge type.

## Public Member Functions
template<typename VertexUVmap , typename VertexIndexMap , typename VertexParameterizedMap >
Error_code | parameterize (const Triangle_mesh &mesh, halfedge_descriptor bhd, VertexUVmap uvmap, VertexIndexMap, VertexParameterizedMap vpmap)
| assigns to the mesh's border vertices a 2D position (i.e. a `(u,v)` pair) on the circle.
bool | is_border_convex () const
| indicates if border's shape is convex.

## Member Function Documentation

## ◆ parameterize()

template<typename TriangleMesh_ >
template<typename VertexUVmap , typename VertexIndexMap , typename VertexParameterizedMap >

Error_code CGAL::Surface_mesh_parameterization::Circular_border_parameterizer_3< TriangleMesh_ >::parameterize | ( | const Triangle_mesh & | mesh,
|  | halfedge_descriptor | bhd,
|  | VertexUVmap | uvmap,
|  | VertexIndexMap | ,
|  | VertexParameterizedMap | vpmap
| ) |  |

assigns to the mesh's border vertices a 2D position (i.e. a `(u,v)` pair) on the circle.

Mark them as parameterized.

The distribution of vertices over the circle depends on the function `compute_edge_length()`.

Template Parameters

  VertexUVmap | must be a model of `ReadWritePropertyMap` with `boost::graph_traits<Triangle_mesh>::vertex_descriptor` as key type and Point_2 (type deduced from `Triangle_mesh` using `Kernel_traits`) as value type.
  VertexIndexMap | must be a model of `ReadablePropertyMap` with `boost::graph_traits<Triangle_mesh>::vertex_descriptor` as key type and a unique integer as value type.
  VertexParameterizedMap | must be a model of `ReadWritePropertyMap` with `boost::graph_traits<Triangle_mesh>::vertex_descriptor` as key type and a Boolean as value type.

Parameters

  mesh | a triangulated surface.
  bhd | a halfedge descriptor on the boundary of `mesh`.
  uvmap | an instantiation of the class `VertexUVmap`.
  vpmap | an instantiation of the class `VertexParameterizedMap`.

Precondition
  `mesh` must be a triangular mesh.
  The vertices must be indexed (vimap must be initialized).