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>
67#if defined(OM_CC_MIPS)
68# define MIPS_WARN_WA( Item ) \
69 void raise(typename M:: ## Item ## Handle &_h, state_t _target_state ) \
70 { Inherited::raise(_h, _target_state); }
72# define MIPS_WARN_WA( Item )
102 explicit Tvv3(M& _mesh) :
Inherited(_mesh) { Base::set_subdiv_type(3); };
104 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
105 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
122 typedef typename M::HalfedgeHandle HEH;
123 typedef typename M::VertexHandle VH;
127 explicit Tvv4(M& _mesh) :
Inherited(_mesh) { Base::set_subdiv_type(4); };
129 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
130 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
131 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
135 void split_edge(HEH& _hh, VH& _vh,
state_t _target_state);
136 void check_edge(
const typename M::HalfedgeHandle& _hh,
148 COMPOSITE_RULE(
VF, M );
157 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
170 COMPOSITE_RULE(
FF, M );
179 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
201 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
214 COMPOSITE_RULE(
FV, M );
223 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
243 explicit FVc(M& _mesh) :
Inherited(_mesh) { init_coeffs(50); }
245 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
249 static void init_coeffs(
size_t _max_valence);
250 static const std::vector<double>& coeffs() {
return coeffs_; }
252 double coeff(
size_t _valence )
254 assert(_valence < coeffs_.size());
255 return coeffs_[_valence];
260 static std::vector<double> coeffs_;
272 COMPOSITE_RULE(
VV, M );
282 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
304 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
317 COMPOSITE_RULE(
VE, M );
326 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
348 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
370 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
383 COMPOSITE_RULE(
EV, M );
392 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
413 explicit EVc(M& _mesh) :
Inherited(_mesh) { init_coeffs(50); }
415 void raise(
typename M::VertexHandle& _vh,
state_t _target_state)
override;
419 static void init_coeffs(
size_t _max_valence);
420 static const std::vector<double>& coeffs() {
return coeffs_; }
422 double coeff(
size_t _valence )
424 assert(_valence < coeffs_.size());
425 return coeffs_[_valence];
430 static std::vector<double> coeffs_;
442 COMPOSITE_RULE(
EF, M );
451 void raise(
typename M::FaceHandle& _fh,
state_t _target_state)
override;
464 COMPOSITE_RULE(
FE, M );
473 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
495 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
517 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state)
override;
531#if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_CC)
532# define OPENMESH_SUBDIVIDER_TEMPLATES
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
CompositeTraits::state_t state_t
Adaptive Composite Subdivision framework.
Definition: CompositeTraits.hh:250
Base class for adaptive composite subdivision rules.
Definition: RuleInterfaceT.hh:109
scalar_t coeff() const
Get coefficient - ignored by non-parameterized rules.
Definition: RuleInterfaceT.hh:351
Adaptive Composite Subdivision framework.
Definition: RulesT.hh:93
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Definition: RulesT_impl.hh:99
Topological composite rule Tvv,4 doing a 1-4 split of a face.
Definition: RulesT.hh:116
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Definition: RulesT_impl.hh:338
Composite rule VF.
Definition: RulesT.hh:147
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule FF.
Definition: RulesT.hh:169
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule FFc.
Definition: RulesT.hh:191
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule FV.
Definition: RulesT.hh:213
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule FVc.
Definition: RulesT.hh:235
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule VV.
Definition: RulesT.hh:271
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule VVc.
Definition: RulesT.hh:294
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule VE.
Definition: RulesT.hh:316
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule VdE.
Definition: RulesT.hh:338
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule VdEc.
Definition: RulesT.hh:360
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule EV.
Definition: RulesT.hh:382
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule EVc.
Definition: RulesT.hh:404
void raise(typename M::VertexHandle &_vh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule EF.
Definition: RulesT.hh:441
void raise(typename M::FaceHandle &_fh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule FE.
Definition: RulesT.hh:463
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule EdE.
Definition: RulesT.hh:485
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.
Composite rule EdEc.
Definition: RulesT.hh:507
void raise(typename M::EdgeHandle &_eh, state_t _target_state) override
Raise item to target state _target_state.