\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.14 - 3D Surface Subdivision Methods
CGAL::Sqrt3_mask_3< PolygonMesh, VertexPointMap > Class Template 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
PolygonMeshmust be a model of the concept MutableFaceGraph. Additionally all faces must be triangles.
VertexPointMapmust 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. More...
 
 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. More...
 

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).