CGAL 5.6.3 - 3D Surface Subdivision Methods

Loading...
Searching...
No Matches
List of all members | Public Types
CGAL::Sqrt3_mask_3< PolygonMesh, VertexPointMap > Class Template Reference
3D Surface Subdivision Methods Reference

`#include <CGAL/Subdivision_method_3/subdivision_masks_3.h>`

## Inherits from

CGAL::Linear_mask_3< PolygonMesh, VertexPointMap >.

## Definition

template<class PolygonMesh, class VertexPointMap = typename boost::property_map<PolygonMesh, vertex_point_t>::type>
class CGAL::Sqrt3_mask_3< PolygonMesh, VertexPointMap >

The geometry mask of Sqrt(3) subdivision.

A stencil determines a source neighborhood whose points contribute to the position of a refined point. The geometry mask of a stencil specifies the computation on the nodes of the stencil. `Sqrt3_mask_3` implements the geometry masks of \( \sqrt{3}\) subdivision on a triangulated model of `MutableFaceGraph`, such as `Polyhedron_3` and `Surface_mesh`.

Template Parameters

  PolygonMesh | must be a model of the concept `MutableFaceGraph`. Additionally all faces must be triangles.
  VertexPointMap | must be a model of `WritablePropertyMap` with value type `Point_3`

Is Model Of:
  `Sqrt3Mask_3`

See also
  `CGAL::Subdivision_method_3`

## Public Types
typedef PolygonMesh | Mesh
Public Types inherited from CGAL::Linear_mask_3< PolygonMesh, VertexPointMap >
typedef PolygonMesh | Mesh
Public Types inherited from CGAL::PQQ_stencil_3< PolygonMesh, VertexPointMap >
typedef PolygonMesh | Mesh
typedef boost::property_map< Mesh, vertex_point_t >::type | Vertex_pmap
typedef boost::graph_traits< Mesh >::vertex_descriptor | vertex_descriptor
typedef boost::graph_traits< Mesh >::halfedge_descriptor | halfedge_descriptor
typedef boost::graph_traits< Mesh >::face_descriptor | face_descriptor
typedef boost::property_traits< Vertex_pmap >::value_type | Point
typedef Kernel_traits< Point >::Kernel | Kernel
typedef Kernel::FT | FT
typedef Kernel::Vector_3 | Vector

## Creation
| Sqrt3_mask_3 (Mesh *pmesh)
| Constructor.
| Sqrt3_mask_3 (Mesh *pmesh, VertexPointMap vpmap)
| Constructor with a custom vertex point property map.

## Stencil functions
void | vertex_node (vertex_descriptor vertex, Point &pt)
| computes the \( \sqrt{3}\) vertex-point `pt` of the vertex `vd`.
void | border_node (halfedge_descriptor hd, Point &ept1, Point &ept2, Point &vpt)
| computes the \( \sqrt{3}\) edge-points `ept1` and `ept2` of the halfedge `hd`.

## Additional Inherited Members
Public Member Functions inherited from CGAL::Linear_mask_3< PolygonMesh, VertexPointMap >
| Linear_mask_3 (Mesh *pmesh)
| Linear_mask_3 (Mesh *pmesh, VertexPointMap vpmap)
void | face_node (face_descriptor facet, Point &pt)
void | edge_node (halfedge_descriptor edge, Point &pt)
void | vertex_node (vertex_descriptor vertex, Point &pt)
void | border_node (halfedge_descriptor edge, Point &ept, Point &)
Public Member Functions inherited from CGAL::PQQ_stencil_3< PolygonMesh, VertexPointMap >
| PQQ_stencil_3 (Mesh *pmesh)
| PQQ_stencil_3 (Mesh *pmesh, VertexPointMap vpmap)
void | face_node (face_descriptor, Point &)
void | edge_node (halfedge_descriptor, Point &)
void | vertex_node (vertex_descriptor, Point &)
void | border_node (halfedge_descriptor, Point &, Point &)
Public Attributes inherited from CGAL::PQQ_stencil_3< PolygonMesh, VertexPointMap >
Mesh * | pmesh
VertexPointMap | vpmap

## Constructor & Destructor Documentation

## ◆ Sqrt3_mask_3()

template<class PolygonMesh , class VertexPointMap = typename boost::property_map<PolygonMesh, vertex_point_t>::type>

CGAL::Sqrt3_mask_3< PolygonMesh, VertexPointMap >::Sqrt3_mask_3 | ( | Mesh * | pmesh | ) |

Constructor.

The default vertex point property map, `get(vertex_point, pmesh)`, is used.

## Member Function Documentation

## ◆ border_node()

template<class PolygonMesh , class VertexPointMap = typename boost::property_map<PolygonMesh, vertex_point_t>::type>

void CGAL::Sqrt3_mask_3< PolygonMesh, VertexPointMap >::border_node | ( | halfedge_descriptor | hd,
|  | Point & | ept1,
|  | Point & | ept2,
|  | Point & | vpt
| ) |  |

computes the \( \sqrt{3}\) edge-points `ept1` and `ept2` of the halfedge `hd`.

The updated point coordinates for the target vertex of `hd` is also computed and put in `vpt`.

Attention
  Border subdivision only happens every second step of a single successive \( \sqrt{3}\) subdivision (thus requiring a depth larger than 1).