IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Mesh3dIterators.h
Go to the documentation of this file.
1 // Mesh3dIterators.h:
3 // ------------------
4 //
15 
16 #ifndef __IPSDKGEOMETRY_MESH3DITERATORS_H__
17 #define __IPSDKGEOMETRY_MESH3DITERATORS_H__
18 
20 #include <IPSDKGeometry/Entity/3d/Mesh/Iterators/Mesh3dTriangleConstIterator.h>
21 #include <IPSDKGeometry/Entity/3d/Mesh/Iterators/Mesh3dVertexVertexConstCirculator.h>
22 #include <IPSDKGeometry/Entity/3d/Mesh/Iterators/Mesh3dVertexEdgeConstCirculator.h>
23 #include <IPSDKGeometry/Entity/3d/Mesh/Iterators/Mesh3dVertexTriangleConstCirculator.h>
24 #include <IPSDKGeometry/Entity/3d/Mesh/Iterators/Mesh3dTriangleTriangleConstCirculator.h>
26 
27 namespace ipsdk {
28 namespace geom {
29 
32 
34 template <typename T>
35 IPSDK_FORCEINLINE Mesh3dTriangleConstIterator<Mesh3d<T> >
37 {
38  return Mesh3dTriangleConstIterator<Mesh3d<T> >(&mesh, mesh.getTriangleToHalfEdgeColl().begin());
39 }
40 
42 template <typename T>
43 IPSDK_FORCEINLINE Mesh3dTriangleConstIterator<Mesh3d<T> >
44 endTriangle(const Mesh3d<T>& mesh)
45 {
46  return Mesh3dTriangleConstIterator<Mesh3d<T> >(&mesh, mesh.getTriangleToHalfEdgeColl().end());
47 }
48 
51 
52 template <typename T>
53 IPSDK_FORCEINLINE Mesh3dVertexVertexConstCirculator<Mesh3d<T> >
54 beginVertexVertex(const Mesh3d<T>& mesh, const ipUInt32 startVertexIdx)
55 {
56  return Mesh3dVertexVertexConstCirculator<Mesh3d<T> >(&mesh, startVertexIdx);
57 }
58 
59 template <typename T>
60 IPSDK_FORCEINLINE Mesh3dVertexVertexConstCirculator<Mesh3d<T> >
61 endVertexVertex()
62 {
63  return Mesh3dVertexVertexConstCirculator<Mesh3d<T> >();
64 }
65 
68 
69 template <typename T>
70 IPSDK_FORCEINLINE Mesh3dVertexEdgeConstCirculator<Mesh3d<T> >
71 beginVertexEdge(const Mesh3d<T>& mesh, const ipUInt32 startVertexIdx)
72 {
73  return Mesh3dVertexEdgeConstCirculator<Mesh3d<T> >(&mesh, startVertexIdx);
74 }
75 
76 template <typename T>
77 IPSDK_FORCEINLINE Mesh3dVertexEdgeConstCirculator<Mesh3d<T> >
78 endVertexEdge()
79 {
80  return Mesh3dVertexEdgeConstCirculator<Mesh3d<T> >();
81 }
82 
85 
86 template <typename T>
87 IPSDK_FORCEINLINE Mesh3dVertexTriangleConstCirculator<Mesh3d<T> >
88 beginVertexTriangle(const Mesh3d<T>& mesh, ipUInt32 startVertexIdx)
89 {
90  return Mesh3dVertexTriangleConstCirculator<Mesh3d<T> >(&mesh, startVertexIdx);
91 }
92 
93 template <typename T>
94 IPSDK_FORCEINLINE Mesh3dVertexTriangleConstCirculator<Mesh3d<T> >
95 endVertexTriangle()
96 {
97  return Mesh3dVertexTriangleConstCirculator<Mesh3d<T> >();
98 }
99 
102 
103 template <typename T>
104 IPSDK_FORCEINLINE Mesh3dTriangleTriangleConstCirculator<Mesh3d<T> >
105 beginTriangleTriangle(const Mesh3d<T>& mesh, ipUInt32 startTriangleIdx)
106 {
107  return Mesh3dTriangleTriangleConstCirculator<Mesh3d<T> >(&mesh, startTriangleIdx);
108 }
109 
110 template <typename T>
111 IPSDK_FORCEINLINE Mesh3dTriangleTriangleConstCirculator<Mesh3d<T> >
112 endTriangleTriangle()
113 {
114  return Mesh3dTriangleTriangleConstCirculator<Mesh3d<T> >();
115 }
116 
119 
120 } // end of namespace geom
121 } // end of namespace ipsdk
122 
123 #endif // __IPSDKGEOMETRY_MESH3DITERATORS_H__
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition of import/export macro for library.
IPSDK_FORCEINLINE Mesh3dTriangleConstIterator< Mesh3d< T > > beginTriangle(const Mesh3d< T > &mesh)
begining for triangle iterators
Definition: Mesh3dIterators.h:36
Iterator class allowing to parse triangles associated to a mesh 3d.
Definition: Mesh3dTriangleConstIterator.h:35
Closed mesh associated to a triangulated boundary.
Definition: Mesh3d.h:43
IPSDK_FORCEINLINE Mesh3dTriangleConstIterator< Mesh3d< T > > endTriangle(const Mesh3d< T > &mesh)
end for triangle iterators
Definition: Mesh3dIterators.h:44
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53