OpenMesh
OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType > Class Template Referenceabstract

This class provides the composite subdivision rules for the uniform case. More...

#include <OpenMesh/Tools/Subdivider/Uniform/Composite/CompositeT.hh>

Inheritance diagram for OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >:
Collaboration diagram for OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >:

Classes

struct  Coeff
 Abstract base class for coefficient functions. More...
 

Public Types

typedef RealType real_t
 
typedef MeshType mesh_t
 
typedef SubdividerT< mesh_t, real_t > parent_t
 
- Public Types inherited from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >
typedef MeshType mesh_t
 
typedef RealType real_t
 

Public Member Functions

 CompositeT (MeshType &_mesh)
 
virtual const char * name (void) const override=0
 Return name of subdivision algorithm. More...
 
- Public Member Functions inherited from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >
 SubdividerT (void)
 Constructor to be used with interface 2. More...
 
 SubdividerT (MeshType &_m)
 Constructor to be used with interface 1 (calls attach()) More...
 
virtual ~SubdividerT ()
 Destructor (calls detach())
 
bool operator() (MeshType &_m, size_t _n, const bool _update_points=true)
 Subdivide the mesh _m _n times. More...
 
bool attach (MeshType &_m)
 Attach mesh _m to self. More...
 
bool operator() (size_t _n, const bool _update_points=true)
 Subdivide the attached _n times. More...
 
void detach (void)
 Detach an eventually attached mesh. More...
 

Protected Types

typedef MeshType::Scalar scalar_t
 
typedef MeshType::VertexHandle VertexHandle
 
typedef MeshType::FaceHandle FaceHandle
 
typedef MeshType::EdgeHandle EdgeHandle
 
typedef MeshType::HalfedgeHandle HalfedgeHandle
 

Protected Member Functions

bool prepare (MeshType &_m) override
 Prepare mesh, e.g. add properties. More...
 
bool subdivide (MeshType &_m, size_t _n, const bool _update_points=true) override
 Subdivide mesh _m _n times. More...
 
bool cleanup (MeshType &_m) override
 Cleanup mesh after usage, e.g. remove added properties. More...
 
virtual void apply_rules (void)=0
 Assemble here the rule sequence, by calling the constructor of the wanted rules. More...
 
void commit (MeshType &_m)
 Move vertices to new positions after the rules have been applied to the mesh (called by subdivide()).
 
- Protected Member Functions inherited from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >

Uniform composite subdivision rules

void Tvv3 ()
 Split Face, using Vertex information (1-3 split)
 
void Tvv4 ()
 Split Face, using Vertex information (1-4 split)
 
void Tfv ()
 Split Face, using Face Information.
 
void FF ()
 Face to face averaging.
 
void FFc (Coeff &_coeff)
 Weighted face to face averaging.
 
void FFc (scalar_t _c)
 Weighted face to face averaging.
 
void FV ()
 Face to vertex averaging.
 
void FVc (Coeff &_coeff)
 Weighted face to vertex Averaging with flaps.
 
void FVc (scalar_t _c)
 Weighted face to vertex Averaging with flaps.
 
void FE ()
 Face to edge averaging.
 
void VF ()
 Vertex to Face Averaging.
 
void VFa (Coeff &_coeff)
 Vertex to Face Averaging, weighted.
 
void VFa (scalar_t _alpha)
 Vertex to Face Averaging, weighted.
 
void VV ()
 Vertex to vertex averaging.
 
void VVc (Coeff &_coeff)
 Vertex to vertex averaging, weighted.
 
void VVc (scalar_t _c)
 Vertex to vertex averaging, weighted.
 
void VE ()
 VE Step (Vertex to Edge Averaging)
 
void VdE ()
 Vertex to edge averaging, using diamond of edges.
 
void VdEc (scalar_t _c)
 Weighted vertex to edge averaging, using diamond of edges.
 
void VdEg (Coeff &_coeff)
 Weigthed vertex to edge averaging, using diamond of edges for irregular vertices.
 
void VdEg (scalar_t _gamma)
 Weigthed vertex to edge averaging, using diamond of edges for irregular vertices.
 
void EF ()
 Edge to face averaging.
 
void EV ()
 Edge to vertex averaging.
 
void EVc (Coeff &_coeff)
 Weighted edge to vertex averaging.
 
void EVc (scalar_t _c)
 Weighted edge to vertex averaging.
 
void EdE ()
 Edge to edge averaging w/ flap rule.
 
void EdEc (scalar_t _c)
 Weighted edge to edge averaging w/ flap rule.
 
void corner_cutting (HalfedgeHandle _heh)
 Corner Cutting.
 
VertexHandle split_edge (HalfedgeHandle _heh)
 Split Edge.
 

Detailed Description

template<typename MeshType, typename RealType = float>
class OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >

This class provides the composite subdivision rules for the uniform case.

To create a subdivider derive from this class and overload the functions name() and apply_rules(). In the latter one call the wanted rules.

For details on the composite scheme refer to

Note
Not all rules are implemented!
See also
class Adaptive::CompositeT

Member Function Documentation

◆ apply_rules()

template<typename MeshType , typename RealType = float>
virtual void OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::apply_rules ( void  )
protectedpure virtual

Assemble here the rule sequence, by calling the constructor of the wanted rules.

Implemented in OpenMesh::Subdivider::Uniform::CompositeLoopT< MeshType, RealType >, and OpenMesh::Subdivider::Uniform::CompositeSqrt3T< MeshType, RealType >.

◆ cleanup()

template<typename MeshType , typename RealType = float>
bool OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::cleanup ( MeshType &  _m)
inlineoverrideprotectedvirtual

Cleanup mesh after usage, e.g. remove added properties.

Implements OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >.

◆ name()

template<typename MeshType , typename RealType = float>
virtual const char * OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::name ( void  ) const
overridepure virtual

◆ prepare()

template<typename MeshType , typename RealType >
bool OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::prepare ( MeshType &  _m)
overrideprotectedvirtual

Prepare mesh, e.g. add properties.

Implements OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >.

◆ subdivide()

template<typename MeshType , typename RealType = float>
bool OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::subdivide ( MeshType &  _m,
size_t  _n,
const bool  _update_points = true 
)
inlineoverrideprotectedvirtual

The documentation for this class was generated from the following files:

Project OpenMesh, ©  Visual Computing Institute, RWTH Aachen. Documentation generated using doxygen .