53 #ifndef OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
54 #define OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
59 #include <OpenMesh/Core/System/config.hh>
60 #include <OpenMesh/Tools/Subdivider/Adaptive/Composite/RuleInterfaceT.hh>
65 #if defined(OM_CC_MIPS) // avoid warnings
66 # define MIPS_WARN_WA( Item ) \
67 void raise(typename M:: ## Item ## Handle &_h, state_t _target_state ) \
68 { Inherited::raise(_h, _target_state); }
70 # define MIPS_WARN_WA( Item )
76 namespace Subdivider {
100 Tvv3(M& _mesh) : Inherited(_mesh) { Base::set_subdiv_type(3); };
102 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
103 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
120 typedef typename M::HalfedgeHandle HEH;
121 typedef typename M::VertexHandle VH;
125 Tvv4(M& _mesh) : Inherited(_mesh) { Base::set_subdiv_type(4); };
127 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
128 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
129 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
133 void split_edge(HEH& _hh, VH& _vh,
state_t _target_state);
134 void check_edge(
const typename M::HalfedgeHandle& _hh,
146 COMPOSITE_RULE(
VF, M );
153 VF(M& _mesh) : Inherited(_mesh) {}
155 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
168 COMPOSITE_RULE(
FF, M );
175 FF(M& _mesh) : Inherited(_mesh) {}
177 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
197 FFc(M& _mesh) : Inherited(_mesh) {}
199 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
212 COMPOSITE_RULE(
FV, M );
219 FV(M& _mesh) : Inherited(_mesh) {}
221 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
241 FVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
243 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
247 static
void init_coeffs(
size_t _max_valence);
248 static const
std::vector<
double>& coeffs() {
return coeffs_; }
250 double coeff(
size_t _valence )
252 assert(_valence < coeffs_.size());
253 return coeffs_[_valence];
258 static std::vector<double> coeffs_;
270 COMPOSITE_RULE(
VV, M );
278 VV(M& _mesh) : Inherited(_mesh) {}
280 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
300 VVc(M& _mesh) : Inherited(_mesh) {}
302 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
315 COMPOSITE_RULE(
VE, M );
322 VE(M& _mesh) : Inherited(_mesh) {}
324 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
344 VdE(M& _mesh) : Inherited(_mesh) {}
346 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
366 VdEc(M& _mesh) : Inherited(_mesh) {}
368 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
381 COMPOSITE_RULE(
EV, M );
388 EV(M& _mesh) : Inherited(_mesh) {}
390 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
411 EVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
413 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
417 static
void init_coeffs(
size_t _max_valence);
418 static const
std::vector<
double>& coeffs() {
return coeffs_; }
420 double coeff(
size_t _valence )
422 assert(_valence < coeffs_.size());
423 return coeffs_[_valence];
428 static std::vector<double> coeffs_;
440 COMPOSITE_RULE(
EF, M );
447 EF(M& _mesh) : Inherited(_mesh) {}
449 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
462 COMPOSITE_RULE(
FE, M );
469 FE(M& _mesh) : Inherited(_mesh) {}
471 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
491 EdE(M& _mesh) : Inherited(_mesh) {}
493 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
513 EdEc(M& _mesh) : Inherited(_mesh) {}
515 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
529 #if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_CC)
530 # define OPENMESH_SUBDIVIDER_TEMPLATES
534 #endif // OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH defined
Composite rule EdE.
Definition: RulesT.hh:482
Composite rule VVc.
Definition: RulesT.hh:291
Base class for adaptive composite subdivision rules.
Definition: CompositeT.hh:77
Composite rule FFc.
Definition: RulesT.hh:188
Adaptive Composite Subdivision framework.
Definition: RulesT.hh:90
Composite rule EV.
Definition: RulesT.hh:379
Composite rule FV.
Definition: RulesT.hh:210
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:56
Composite rule VdEc.
Definition: RulesT.hh:357
CompositeTraits::state_t state_t
Adaptive Composite Subdivision framework.
Definition: CompositeTraits.hh:248
Composite rule VV.
Definition: RulesT.hh:268
Composite rule VF.
Definition: RulesT.hh:144
Composite rule FF.
Definition: RulesT.hh:166
Composite rule VdE.
Definition: RulesT.hh:335
Composite rule EdEc.
Definition: RulesT.hh:504
Composite rule VE.
Definition: RulesT.hh:313
Composite rule FE.
Definition: RulesT.hh:460
Composite rule EF.
Definition: RulesT.hh:438
Topological composite rule Tvv,4 doing a 1-4 split of a face.
Definition: RulesT.hh:113
Composite rule FVc.
Definition: RulesT.hh:232
scalar_t coeff() const
Get coefficient - ignored by non-parameterized rules.
Definition: RuleInterfaceT.hh:349
Composite rule EVc.
Definition: RulesT.hh:401