55#ifndef OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
56#define OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
61#include <OpenMesh/Core/System/config.hh>
62#include <OpenMesh/Tools/Subdivider/Adaptive/Composite/RuleInterfaceT.hh>
86 COMPOSITE_RULE( Tvv3, M );
96 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
97 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
108 COMPOSITE_RULE( Tvv4, M );
113 typedef typename M::HalfedgeHandle HEH;
114 typedef typename M::VertexHandle VH;
120 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
121 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
122 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
126 void split_edge(HEH& _hh, VH& _vh,
state_t _target_state);
127 void check_edge(
const typename M::HalfedgeHandle& _hh,
139 COMPOSITE_RULE( VF, M );
146 explicit VF(M& _mesh) : Inherited(_mesh) {}
148 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
159 COMPOSITE_RULE( FF, M );
166 explicit FF(M& _mesh) : Inherited(_mesh) {}
168 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
179 COMPOSITE_RULE( FFc, M );
186 explicit FFc(M& _mesh) : Inherited(_mesh) {}
188 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
199 COMPOSITE_RULE( FV, M );
206 explicit FV(M& _mesh) : Inherited(_mesh) {}
208 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
219 COMPOSITE_RULE( FVc, M );
226 explicit FVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
228 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
230 static void init_coeffs(
size_t _max_valence);
231 static const std::vector<double>& coeffs() {
return coeffs_; }
233 double coeff(
size_t _valence )
235 assert(_valence < coeffs_.size());
236 return coeffs_[_valence];
241 static std::vector<double> coeffs_;
253 COMPOSITE_RULE( VV, M );
261 explicit VV(M& _mesh) : Inherited(_mesh) {}
263 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
274 COMPOSITE_RULE( VVc, M );
281 explicit VVc(M& _mesh) : Inherited(_mesh) {}
283 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
294 COMPOSITE_RULE( VE, M );
301 explicit VE(M& _mesh) : Inherited(_mesh) {}
303 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
314 COMPOSITE_RULE( VdE, M );
321 explicit VdE(M& _mesh) : Inherited(_mesh) {}
323 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
334 COMPOSITE_RULE( VdEc, M );
341 explicit VdEc(M& _mesh) : Inherited(_mesh) {}
343 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
354 COMPOSITE_RULE( EV, M );
361 explicit EV(M& _mesh) : Inherited(_mesh) {}
363 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
374 COMPOSITE_RULE( EVc, M );
382 explicit EVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
384 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
386 static void init_coeffs(
size_t _max_valence);
387 static const std::vector<double>& coeffs() {
return coeffs_; }
389 double coeff(
size_t _valence )
391 assert(_valence < coeffs_.size());
392 return coeffs_[_valence];
397 static std::vector<double> coeffs_;
409 COMPOSITE_RULE( EF, M );
416 explicit EF(M& _mesh) : Inherited(_mesh) {}
418 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
429 COMPOSITE_RULE( FE, M );
436 explicit FE(M& _mesh) : Inherited(_mesh) {}
438 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
449 COMPOSITE_RULE( EdE, M );
456 explicit EdE(M& _mesh) : Inherited(_mesh) {}
458 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
469 COMPOSITE_RULE( EdEc, M );
476 explicit EdEc(M& _mesh) : Inherited(_mesh) {}
478 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
489#if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_CC)
490# define OPENMESH_SUBDIVIDER_TEMPLATES
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition MeshItems.hh:59
Software related to adaptive subdivision of meshes.
CompositeTraits::state_t state_t
Adaptive Composite Subdivision framework.
Definition CompositeTraits.hh:250
void set_subdiv_type(int _n)
Set coefficient - ignored by non-parameterized rules.
Definition RuleInterfaceT.hh:368
scalar_t coeff() const
Get coefficient - ignored by non-parameterized rules.
Definition RuleInterfaceT.hh:351
RuleInterfaceT(Mesh &_mesh)
Default constructor.
Definition RuleInterfaceT.hh:121
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Definition RulesT_impl.hh:99
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Definition RulesT_impl.hh:338
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.