OpenMesh
OpenMesh::Subdivider::Uniform::LoopT< MeshType, RealType > Class Template Reference

Uniform Loop subdivision algorithm. More...

#include <OpenMesh/Tools/Subdivider/Uniform/LoopT.hh>

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

Public Types

typedef RealType real_t
 
typedef MeshType mesh_t
 
typedef SubdividerT< mesh_t, real_t > parent_t
 
typedef std::pair< real_t, real_t > weight_t
 
typedef std::vector< std::pair< real_t, real_t > > weights_t
 
- Public Types inherited from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >
typedef MeshType mesh_t
 
typedef RealType real_t
 

Public Member Functions

 LoopT (mesh_t &_m)
 
const char * name () const override
 Return name of subdivision algorithm. More...
 
void init_weights (size_t _max_valence=50)
 Pre-compute weights.
 
- 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 Member Functions

bool prepare (mesh_t &_m) override
 Prepare mesh, e.g. More...
 
bool cleanup (mesh_t &_m) override
 Cleanup mesh after usage, e.g. remove added properties. More...
 
bool subdivide (mesh_t &_m, size_t _n, const bool _update_points=true) override
 Subdivide mesh _m _n times. More...
 
- Protected Member Functions inherited from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >

Detailed Description

template<typename MeshType, typename RealType = double>
class OpenMesh::Subdivider::Uniform::LoopT< MeshType, RealType >

Uniform Loop subdivision algorithm.

Implementation as described in

C. T. Loop, "Smooth Subdivision Surfaces Based on Triangles", M.S. Thesis, Department of Mathematics, University of Utah, August 1987.

Member Function Documentation

◆ cleanup()

template<typename MeshType , typename RealType = double>
bool OpenMesh::Subdivider::Uniform::LoopT< MeshType, RealType >::cleanup ( mesh_t &  _m)
inlineoverrideprotectedvirtual

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

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

◆ name()

template<typename MeshType , typename RealType = double>
const char * OpenMesh::Subdivider::Uniform::LoopT< MeshType, RealType >::name ( ) const
inlineoverridevirtual

Return name of subdivision algorithm.

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

◆ prepare()

template<typename MeshType , typename RealType = double>
bool OpenMesh::Subdivider::Uniform::LoopT< MeshType, RealType >::prepare ( mesh_t &  )
inlineoverrideprotectedvirtual

Prepare mesh, e.g.

add properties

You have to reimplement this function to setup your mesh. The default implementation will always return false and therefore block your algorithm.

Reimplemented from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >.

◆ subdivide()

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

Subdivide mesh _m _n times.

TODO:Implement fixed positions

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


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

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