![]() |
Parameterization_polyhedron_adaptor_3 is an adaptor class to access to a Polyhedron 3D mesh using the ParameterizationPatchableMesh_3 interface. Among other things, this concept defines the accessor to the (u, v) values computed by parameterizations methods.
Note that these interfaces are decorators that add on the fly the necessary fields to unmodified Cgal data structures (using STL maps). For performance reasons, it is recommended to use Cgal data structures enriched with the proper fields.
A ParameterizationMesh_3 surface consists of vertices, facets and an incidence relation on them. No notion of edge is requested.
ParameterizationMesh_3 meshes can have any genus, arity or number of components.
It can have have any number of borders. Its main border will be the mesh's longest border (if there is at least one border).
It has also the ability to support patches and virtual seams. Patches are a subset of a 3D mesh. Virtual seams are the ability to behave exactly as if the surface was cut following a certain path.
#include <CGAL/Parameterization_polyhedron_adaptor_3.h>
Model of ParameterizationPatchableMesh_3 concept, whose purpose is to allow the Surface_mesh_parameterization package to access meshes in a uniform manner.
Parameterization_polyhedron_adaptor_3 is an Adaptor [GHJV95]: it changes the Polyhedron interface to match the ParameterizationPatchableMesh_3 concept.
The full template declaration is:
template<class Polyhedron_3_>
class Parameterization_polyhedron_adaptor_3;
Polyhedron_3_ must be of type CGAL::Polyhedron<Traits> and Traits must be a model of the concept PolyhedronTraitsWithKernel_3.
The following mutable handles, iterators, and circulators have appropriate non-mutable counterparts, i.e. const_handle, const_iterator, and const_circulator. The mutable types are assignable to their non-mutable counterparts. Both circulators are assignable to the Vertex_iterator. The iterators are assignable to the respective handle types. Wherever the handles appear in function parameter lists, the corresponding iterators can be used as well.
Parameterization_polyhedron_adaptor_3<Polyhedron_3_> mesh ( Polyhedron& mesh); | |
Create an adaptator for an existing Polyhedron_3 mesh. The input mesh can be of any genus. It can have have any number of borders. Its main border will be the mesh's longest border (if there is at least one border).
|
The following methods returning a mutable handle, iterator, or circulator have appropriate non-mutable counterpart methods, i.e. const, returning a const_handle, const_iterator, or const_circulator.
Polyhedron& | mesh.get_adapted_mesh () | Get the adapted mesh. | ||
Polyhedron | mesh.get_adapted_mesh () const | |||
Polyhedron::Halfedge_const_handle | mesh.get_halfedge ( Vertex_const_handle source, Vertex_const_handle target) const | |||
Get halfedge from source and target vertices. Will assert if such a halfedge doesn't exist. | ||||
Polyhedron::Halfedge_handle | mesh.get_halfedge ( Vertex_handle source, Vertex_handle target) | |||
const Halfedge_info* | mesh.info ( Halfedge_const_handle halfedge) const | |||
Access to additional info attached to halfedges. | ||||
Halfedge_info* | mesh.info ( Halfedge_const_handle halfedge) | |||
const Vertex_info* | mesh.info ( Vertex_const_handle vertex) const | |||
Access to additional info attached to vertices. | ||||
Vertex_info* | mesh.info ( Vertex_const_handle vertex) | |||
bool | mesh.is_valid () const | Indicate if the mesh matches the ParameterizationMesh_3 concept. | ||
Vertex_iterator | mesh.mesh_vertices_begin () | Get iterator over first vertex of mesh. | ||
Vertex_const_iterator | mesh.mesh_vertices_begin () const | |||
Vertex_iterator | mesh.mesh_vertices_end () | Get iterator over past-the-end vertex of mesh. | ||
Vertex_const_iterator | mesh.mesh_vertices_end () const | |||
int | mesh.count_mesh_vertices () const | Count the number of vertices of the mesh. | ||
void | mesh.index_mesh_vertices () | |||
Border_vertex_iterator | mesh.mesh_main_border_vertices_begin () | |||
Get iterator over first vertex of mesh's main border. | ||||
Border_vertex_const_iterator | mesh.mesh_main_border_vertices_begin () const | |||
Border_vertex_iterator | mesh.mesh_main_border_vertices_end () | |||
Get iterator over past-the-end vertex of mesh's main border. | ||||
Border_vertex_const_iterator | mesh.mesh_main_border_vertices_end () const | |||
std::list<Vertex_handle> | mesh.get_border ( Vertex_handle seed_vertex) | |||
Return the border containing seed_vertex. Return an empty list if not found. | ||||
Facet_iterator | mesh.mesh_facets_begin () | Get iterator over first facet of mesh. | ||
Facet_const_iterator | mesh.mesh_facets_begin () const | |||
Facet_iterator | mesh.mesh_facets_end () | Get iterator over past-the-end facet of mesh. | ||
Facet_const_iterator | mesh.mesh_facets_end () const | |||
int | mesh.count_mesh_facets () const | Count the number of facets of the mesh. | ||
bool | mesh.is_mesh_triangular () const | Return true of all mesh's facets are triangles. | ||
int | mesh.count_mesh_halfedges () const | |||
Count the number of halfedges of the mesh. | ||||
Vertex_around_facet_circulator | mesh.facet_vertices_begin ( Facet_handle facet) | |||
Get circulator over facet's vertices. | ||||
Vertex_around_facet_const_circulator | ||||
mesh.facet_vertices_begin ( Facet_const_handle facet) const | ||||
int | mesh.count_facet_vertices ( Facet_const_handle facet) const | |||
Count the number of vertices of a facet. | ||||
Point_3 | mesh.get_vertex_position ( Vertex_const_handle vertex) const | |||
Get the 3D position of a vertex. | ||||
Point_2 | mesh.get_vertex_uv ( Vertex_const_handle vertex) const | |||
Get/set the 2D position (u/v pair) of a vertex. Default value is undefined. (stored in halfedges sharing the same vertex). | ||||
void | mesh.set_vertex_uv ( Vertex_handle vertex, Point_2 uv) | |||
bool | mesh.is_vertex_parameterized ( Vertex_const_handle vertex) const | |||
Get/set is parameterized field of vertex. Default value is undefined. (stored in halfedges sharing the same vertex). | ||||
void | mesh.set_vertex_parameterized ( Vertex_handle vertex, bool parameterized) | |||
int | mesh.get_vertex_index ( Vertex_const_handle vertex) const | |||
Get/set vertex index. Default value is undefined. (stored in Polyhedron vertex for debugging purpose). | ||||
void | mesh.set_vertex_index ( Vertex_handle vertex, int index) | |||
int | mesh.get_vertex_tag ( Vertex_const_handle vertex) const | |||
Get/set vertex' all purpose tag. Default value is undefined. (stored in halfedges sharing the same vertex). | ||||
void | mesh.set_vertex_tag ( Vertex_handle vertex, int tag) | |||
bool | mesh.is_vertex_on_border ( Vertex_const_handle vertex) const | |||
Return true if a vertex belongs to ANY mesh's border. | ||||
bool | mesh.is_vertex_on_main_border ( Vertex_const_handle vertex) const | |||
Return true if a vertex belongs to the UNIQUE mesh's main border, i.e. the mesh's LONGEST border. | ||||
Vertex_around_vertex_circulator |
| |||
Get circulator over the vertices incident to vertex. start_position defines the optional initial position of the circulator. | ||||
Vertex_around_vertex_const_circulator | ||||
| ||||
int | mesh.get_vertex_seaming ( Vertex_const_handle vertex) const | |||
Get/set vertex seaming flag. Default value is undefined. | ||||
void | mesh.set_vertex_seaming ( Vertex_handle vertex, int seaming) | |||
int | mesh.get_halfedge_seaming ( Vertex_const_handle source, Vertex_const_handle target) const | |||
Get/set oriented edge's seaming flag, i.e. position of the oriented edge w.r.t. to the UNIQUE main border. | ||||
void | mesh.set_halfedge_seaming ( Vertex_handle source, Vertex_handle target, int seaming) | |||
Point_2 |
| |||
Get/set the 2D position (= (u, v) pair) of corners at the right of the prev_vertex -> vertex -> next_vertex line. Default value is undefined. (stored in incident halfedges). | ||||
void |
| |||
bool |
| |||
Get/set is parameterized field of corners at the right of the prev_vertex -> vertex -> next_vertex line. Default value is undefined. (stored in incident halfedges). | ||||
void |
| |||
int |
| |||
Get/set index of corners at the right of the prev_vertex -> vertex -> next_vertex line. Default value is undefined. (stored in incident halfedges). | ||||
void |
| |||
int |
| |||
Get/set all purpose tag of corners at the right of the prev_vertex -> vertex -> next_vertex line. Default value is undefined. (stored in incident halfedges). | ||||
void |
|
CGAL::Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3>
See Simple_parameterization.cpp example.