\( \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.11.2 - 3D Surface Subdivision Methods
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
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 Attributes inherited from CGAL::PQQ_stencil_3< PolygonMesh, VertexPointMap >
Mesh * pmesh
 
VertexPointMap vpmap
 

Constructor & Destructor Documentation

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

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