OpenMesh
fill_props.hh
1#ifndef FILL_PROPS_HH
2#define FILL_PROPS_HH
3
4#include <OpenMesh/Core/Utils/Property.hh>
5#include "int2roman.hh"
6
7
8template <typename Mesh>
9bool
10fill_props( Mesh& _m, OpenMesh::VPropHandleT<float> _ph, bool _check=false)
11{
12 const static float a[9] = { 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f, 9.9f };
13
14 for(typename Mesh::VertexIter it=_m.vertices_begin();
15 it != _m.vertices_end(); ++it)
16 {
17 const float v = a[it->idx()%9];
18 if ( _check && !(_m.property( _ph, it ) == v) )
19 return false;
20 else
21 _m.property( _ph, it ) = v;
22 }
23 return true;
24}
25
26
27template <typename Mesh>
28bool
29fill_props( Mesh& _m, OpenMesh::EPropHandleT<bool> _ph, bool _check=false )
30{
31 for( typename Mesh::EdgeIter it=_m.edges_begin();
32 it != _m.edges_end(); ++it)
33 {
34 const size_t n = it->idx();
35 const bool v = ((n&(n-1))==0); // true for 0,1,2,4,8,..
36
37 if (_check && _m.property( _ph, it ) != v)
38 {
39 std::cout << " eprop_bool: " << n << " -> "
40 << _m.property(_ph, it ) << " != " << v << std::endl;
41 return false;
42 }
43 else
44 {
45 _m.property( _ph, it ) = v;
46 std::cout << " eprop_bool: " << n << " -> " << v << std::endl;
47 }
48 }
49 return true;
50}
51
52
53
54template <typename Mesh>
55bool
56fill_props(Mesh& _m, OpenMesh::FPropHandleT<std::string> _ph, bool _check=false)
57{
58 for( typename Mesh::FaceIter it=_m.faces_begin();
59 it != _m.faces_end(); ++it)
60 {
61 const int n = it->idx();
62 _m.property( _ph, it ) = int2roman(++n);
63 }
64 return true;
65}
66
67
68template <typename Mesh, typename T>
69bool
70fill_props( Mesh& _m, OpenMesh::HPropHandleT<T> _ph, bool _check=false)
71{
72 const static float a[9] = { 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f, 9.9f };
73 const static float b[9] = { 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f, 9.9f, 1.1f };
74 const static float c[9] = { 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f, 9.9f, 1.1f, 2.2f };
75 const static float d[9] = { 4.4f, 5.5f, 6.6f, 7.7f, 8.8f, 9.9f, 1.1f, 2.2f, 3.3f };
76// static double values[9] = { 0.1, 0.02, 0.003, 0.0004, 0.00005, 0.000006,
77// 0.0000007, 0.00000008, 0.000000009 };
78
79 for( typename Mesh::HalfedgeIter it=_m.halfedges_begin();
80 it != _m.halfedges_end(); ++it)
81 {
82 const int n = it->idx();
83
84// v = it->idx()+1; // ival
85// v = values[n%9]; // dval
86 T v = ((n&(n-1))==0); // bval
87 v.vec4fval[0] = a[n%9];
88 v.vec4fval[1] = b[n%9];
89 v.vec4fval[2] = c[n%9];
90 v.vec4fval[3] = d[n%9];
91
92 if ( _check && _m.property( _ph, it ) != v )
93 return false;
94 else
95 _m.property( _ph, it ) = v;
96 }
97 return true;
98}
99
100template <typename Mesh, typename T>
101bool
102fill_props( Mesh& _m, OpenMesh::MPropHandleT<T> _ph, bool _check=false)
103{
104 for( typename Mesh::FaceIter it=_m.faces_begin(); it != _m.faces_end(); ++it)
105 {
106 const size_t idx = it->idx();
107 if ( _check && _m.property( _ph )[int2roman(idx+1)] != idx )
108 return false;
109 else
110 _m.property( _ph )[int2roman(idx+1)] = idx;
111 }
112 return true;
113}
114
115
116#endif
Handle representing a halfedge property.
Definition: Property.hh:432
Handle representing an edge property.
Definition: Property.hh:447
Handle representing a face property.
Definition: Property.hh:462
Handle representing a mesh property.
Definition: Property.hh:477

Project OpenMesh, ©  Visual Computing Institute, RWTH Aachen. Documentation generated using doxygen .