60#ifndef OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
61#define OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
66#include <OpenMesh/Core/System/config.hh>
67#include <OpenMesh/Tools/Subdivider/Adaptive/Composite/RuleInterfaceT.hh>
72#if defined(OM_CC_MIPS)
73# define MIPS_WARN_WA( Item ) \
74 void raise(typename M:: ## Item ## Handle &_h, state_t _target_state ) \
75 { Inherited::raise(_h, _target_state); }
77# define MIPS_WARN_WA( Item )
107 Tvv3(M& _mesh) :
Inherited(_mesh) { Base::set_subdiv_type(3); };
109 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
110 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
127 typedef typename M::HalfedgeHandle HEH;
128 typedef typename M::VertexHandle VH;
132 Tvv4(M& _mesh) :
Inherited(_mesh) { Base::set_subdiv_type(4); };
134 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
135 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
136 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
140 void split_edge(HEH& _hh, VH& _vh,
state_t _target_state);
141 void check_edge(
const typename M::HalfedgeHandle& _hh,
153 COMPOSITE_RULE(
VF, M );
175 COMPOSITE_RULE(
FF, M );
219 COMPOSITE_RULE(
FV, M );
254 static void init_coeffs(
size_t _max_valence);
255 static const std::vector<double>& coeffs() {
return coeffs_; }
257 double coeff(
size_t _valence )
259 assert(_valence < coeffs_.size());
260 return coeffs_[_valence];
265 static std::vector<double> coeffs_;
277 COMPOSITE_RULE(
VV, M );
322 COMPOSITE_RULE(
VE, M );
388 COMPOSITE_RULE(
EV, M );
424 static void init_coeffs(
size_t _max_valence);
425 static const std::vector<double>& coeffs() {
return coeffs_; }
427 double coeff(
size_t _valence )
429 assert(_valence < coeffs_.size());
430 return coeffs_[_valence];
435 static std::vector<double> coeffs_;
447 COMPOSITE_RULE(
EF, M );
469 COMPOSITE_RULE(
FE, M );
536#if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_CC)
537# define OPENMESH_SUBDIVIDER_TEMPLATES
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:64
CompositeTraits::state_t state_t
Adaptive Composite Subdivision framework.
Definition: CompositeTraits.hh:255
Base class for adaptive composite subdivision rules.
Definition: RuleInterfaceT.hh:114
scalar_t coeff() const
Get coefficient - ignored by non-parameterized rules.
Definition: RuleInterfaceT.hh:356
Adaptive Composite Subdivision framework.
Definition: RulesT.hh:98
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Definition: RulesT.cc:104
Topological composite rule Tvv,4 doing a 1-4 split of a face.
Definition: RulesT.hh:121
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Definition: RulesT.cc:343
Composite rule VF.
Definition: RulesT.hh:152
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Composite rule FF.
Definition: RulesT.hh:174
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Composite rule FFc.
Definition: RulesT.hh:196
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Composite rule FV.
Definition: RulesT.hh:218
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
Composite rule FVc.
Definition: RulesT.hh:240
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
Composite rule VV.
Definition: RulesT.hh:276
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
Composite rule VVc.
Definition: RulesT.hh:299
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
Composite rule VE.
Definition: RulesT.hh:321
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
Composite rule VdE.
Definition: RulesT.hh:343
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
Composite rule VdEc.
Definition: RulesT.hh:365
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
Composite rule EV.
Definition: RulesT.hh:387
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
Composite rule EVc.
Definition: RulesT.hh:409
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
Composite rule EF.
Definition: RulesT.hh:446
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Composite rule FE.
Definition: RulesT.hh:468
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
Composite rule EdE.
Definition: RulesT.hh:490
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
Composite rule EdEc.
Definition: RulesT.hh:512
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.