This class provides the composite subdivision rules for the uniform case. More...
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 Member Functions | |
CompositeT (MeshType &_mesh) | |
virtual const char * | name (void) const =0 |
Return name of subdivision algorithm. | |
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) |
Prepare mesh, e.g. add properties. | |
bool | subdivide (MeshType &_m, size_t _n) |
Subdivide mesh _m _n times. | |
bool | cleanup (MeshType &_m) |
Cleanup mesh after usage, e.g. remove added properties. | |
virtual void | apply_rules (void)=0 |
Assemble here the rule sequence, by calling the constructor of the wanted rules. | |
void | commit (MeshType &_m) |
Move vertices to new positions after the rules have been applied to the mesh (called by subdivide()). | |
void | corner_cutting (HalfedgeHandle _heh) |
Corner Cutting. | |
VertexHandle | split_edge (HalfedgeHandle _heh) |
Split Edge. | |
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. |
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
virtual void OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::apply_rules | ( | void | ) | [protected, pure 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 >.
void OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::commit | ( | MeshType & | _m | ) | [inline, protected] |
Move vertices to new positions after the rules have been applied to the mesh (called by subdivide()).
void OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::VdEg | ( | Coeff & | _coeff | ) | [protected] |
Weigthed vertex to edge averaging, using diamond of edges for irregular vertices.
void OpenMesh::Subdivider::Uniform::CompositeT< MeshType, RealType >::VdEg | ( | scalar_t | _gamma | ) | [protected] |
Weigthed vertex to edge averaging, using diamond of edges for irregular vertices.