Developer Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
OpenMesh::Subdivider::Uniform::CatmullClarkT< MeshType, RealType > Class Template Reference

#include <CatmullClarkT.hh>

Inheritance diagram for OpenMesh::Subdivider::Uniform::CatmullClarkT< MeshType, RealType >:
OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType > OpenMesh::Utils::Noncopyable

Public Types

typedef MeshType::FaceHandle FaceHandle
typedef MeshType::VertexHandle VertexHandle
typedef MeshType::EdgeHandle EdgeHandle
typedef MeshType::HalfedgeHandle HalfedgeHandle
typedef MeshType::Point Point
typedef MeshType::Normal Normal
typedef MeshType::FaceIter FaceIter
typedef MeshType::EdgeIter EdgeIter
typedef MeshType::VertexIter VertexIter
typedef MeshType::VertexEdgeIter VertexEdgeIter
typedef MeshType::VertexFaceIter VertexFaceIter
typedef MeshType::VOHIter VOHIter
typedef SubdividerT< MeshType,
RealType > 
- Public Types inherited from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >
typedef MeshType mesh_t
typedef RealType real_t

Public Member Functions

 CatmullClarkT ()
 CatmullClarkT (MeshType &_m)
const char * name () const
 Return name of subdivision algorithm.
- Public Member Functions inherited from OpenMesh::Subdivider::Uniform::SubdividerT< MeshType, RealType >
virtual ~SubdividerT ()
 Descructor (calls detach())
 SubdividerT (void)
 SubdividerT (MeshType &_m)
bool operator() (MeshType &_m, size_t _n, const bool _update_points=true)
bool attach (MeshType &_m)
bool operator() (size_t _n, const bool _update_points=true)
void detach (void)

Protected Member Functions

virtual bool prepare (MeshType &_m)
 Initialize properties and weights.
virtual bool cleanup (MeshType &_m)
 Remove properties and weights.
virtual bool subdivide (MeshType &_m, size_t _n, const bool _update_points=true)
 Execute n subdivision steps. More...
Overload theses methods

Private Member Functions

Topology helpers
void split_edge (MeshType &_m, const EdgeHandle &_eh)
void split_face (MeshType &_m, const FaceHandle &_fh)
void compute_midpoint (MeshType &_m, const EdgeHandle &_eh, const bool _update_points)
void update_vertex (MeshType &_m, const VertexHandle &_vh)

Private Attributes

OpenMesh::VPropHandleT< Point > vp_pos_
OpenMesh::EPropHandleT< Point > ep_pos_
OpenMesh::FPropHandleT< Point > fp_pos_
OpenMesh::EPropHandleT< double > creaseWeights_

Detailed Description

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

Based on code from Leon Kos, CAD lab, Mech.Eng., University of Ljubljana, Slovenia (

Needs a PolyMesh to work on!

Definition at line 92 of file CatmullClarkT.hh.

Member Function Documentation

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

Execute n subdivision steps.

_mMesh to work on
_nNumber of iterations
_update_pointsUnused here

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

Definition at line 103 of file

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