21 #ifndef __TRIANGULARMESH_HH
22 #define __TRIANGULARMESH_HH 1
36 # ifdef miamesh_EXPORTS
37 # define EXPORT_MESH __declspec(dllexport)
39 # define EXPORT_MESH __declspec(dllimport)
43 # define EXPORT_MESH __attribute__((visibility("default")))
71 typedef std::shared_ptr<CTriangleMesh>
Pointer;
81 typedef std::vector<T3DVector<unsigned int> > CTrianglefield;
82 typedef std::vector<C3DFVector> CVertexfield;
83 typedef std::vector<C3DFVector> CNormalfield;
84 typedef std::vector<C3DFVector> CColorfield;
85 typedef std::vector<float> CScalefield;
87 typedef std::shared_ptr<CTrianglefield > PTrianglefield;
88 typedef std::shared_ptr<CVertexfield > PVertexfield;
89 typedef std::shared_ptr<CNormalfield > PNormalfield;
90 typedef std::shared_ptr<CColorfield > PColorfield;
91 typedef std::shared_ptr<CScalefield > PScalefield;
93 typedef CTrianglefield::value_type triangle_type;
94 typedef CVertexfield::value_type vertex_type;
95 typedef CNormalfield::value_type normal_type;
96 typedef CColorfield::value_type color_type;
97 typedef CScalefield::value_type scale_type;
99 typedef CVertexfield::const_iterator const_vertex_iterator;
100 typedef CVertexfield::iterator vertex_iterator;
102 typedef CTrianglefield::const_iterator const_triangle_iterator;
103 typedef CTrianglefield::iterator triangle_iterator;
105 typedef CNormalfield::const_iterator const_normal_iterator;
106 typedef CNormalfield::iterator normal_iterator;
108 typedef CScalefield::const_iterator const_scale_iterator;
109 typedef CScalefield::iterator scale_iterator;
111 typedef CColorfield::const_iterator const_color_iterator;
112 typedef CColorfield::iterator color_iterator;
139 PVertexfield vertices,
140 PNormalfield normals,
148 CTriangleMesh(PTrianglefield triangles, PVertexfield vertices);
152 CTriangleMesh *clone() const __attribute__((warn_unused_result));
164 static const std::
string get_type_description();
169 int get_available_data() const;
174 const
void *get_vertex_pointer()const;
179 const
void *get_normal_pointer()const;
185 const
void *get_triangle_pointer()const;
190 const
void *get_color_pointer()const;
196 unsigned int triangle_size()const;
201 unsigned int vertices_size()const;
206 const triangle_type& triangle_at(
unsigned int i)const;
211 const vertex_type& vertex_at(
unsigned int i)const;
216 const normal_type& normal_at(
unsigned int i)const;
221 const scale_type& scale_at(
unsigned int i)const;
227 const color_type& color_at(
unsigned int i)const;
230 const_triangle_iterator triangles_begin() const;
231 triangle_iterator triangles_begin();
232 const_triangle_iterator triangles_end() const;
233 triangle_iterator triangles_end();
235 const_vertex_iterator vertices_begin()const;
236 const_vertex_iterator vertices_end()const;
237 vertex_iterator vertices_begin();
238 vertex_iterator vertices_end();
240 const_normal_iterator normals_begin()const;
241 const_normal_iterator normals_end()const;
242 normal_iterator normals_begin();
243 normal_iterator normals_end();
245 const_scale_iterator scale_begin()const;
246 const_scale_iterator scale_end()const;
247 scale_iterator scale_begin();
248 scale_iterator scale_end();
250 const_color_iterator color_begin()const;
251 const_color_iterator color_end()const;
252 color_iterator color_begin();
253 color_iterator color_end();
257 const std::
string& get_sourceformat()
const {
258 return m_sourceformat;
263 m_sourceformat = fmt;
271 void evaluate_normals();
274 std::string m_sourceformat;
275 struct CTriangleMeshData * data;
288 template <
class Deformation>
299 CTriangleMesh::scale_iterator sb = mesh->scale_begin();
300 CTriangleMesh::scale_iterator se = mesh->scale_end();
302 CTriangleMesh::const_vertex_iterator vb = cmesh.vertices_begin();
303 CTriangleMesh::const_normal_iterator nb = cmesh.normals_begin();
306 *sb++ =
dot(*nb++, deform.apply(*vb++));
319 template <
class Deformation>
344 #endif // __TRIANGULARMESH_HH