16 #ifndef __IPSDKGEOMETRY_MESH3DTRIANGLETRIANGLECONSTCIRCULATOR_H__ 17 #define __IPSDKGEOMETRY_MESH3DTRIANGLETRIANGLECONSTCIRCULATOR_H__ 21 #include <IPSDKGeometry/Entity/3d/Triangle/Triangle3d.h> 31 template <
typename MeshType>
81 Mesh3dTriangleTriangleConstCirculator(
const Iterator& iter) :
88 Mesh3dTriangleTriangleConstCirculator& operator= (
const Iterator& iter)
95 ~Mesh3dTriangleTriangleConstCirculator()
152 template <
typename MeshType>
156 return _startHalfEdgeIdx;
159 template <
typename MeshType>
163 return _curHalfEdgeIdx;
166 template <
typename MeshType>
170 const Mesh3dHalfEdge& startHalfEdge = _pMesh->getHalfEdgeColl()[_startHalfEdgeIdx];
180 template <
typename MeshType>
185 const Mesh3dHalfEdge& curHalfEdge = _pMesh->getHalfEdgeColl()[_curHalfEdgeIdx];
188 if (_curHalfEdgeIdx == _startHalfEdgeIdx)
195 template <
typename MeshType>
196 IPSDK_FORCEINLINE
bool 202 template <
typename MeshType>
203 IPSDK_FORCEINLINE
bool 209 template <
typename MeshType>
216 template <
typename MeshType>
223 template <
typename MeshType>
224 IPSDK_FORCEINLINE
void 227 const Mesh3dHalfEdge& curHalfEdge = _pMesh->getHalfEdgeColl()[_curHalfEdgeIdx];
235 _triangle.setCoords(v0, v1, v2);
238 template <
typename MeshType>
242 std::swap(_pMesh, iter.
_pMesh);
254 #endif // __IPSDKGEOMETRY_MESH3DTRIANGLETRIANGLECONSTCIRCULATOR_H__ void swap(Iterator &iter)
swap between iterators
Definition: Mesh3dTriangleTriangleConstCirculator.h:240
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
ipUInt32 _curHalfEdgeIdx
Definition: Mesh3dTriangleTriangleConstCirculator.h:143
bool operator==(const Iterator &iter) const
iterator comparison
Definition: Mesh3dTriangleTriangleConstCirculator.h:197
TriangleType getStartTriangle() const
retrieve starting triangle associated to circulator
Definition: Mesh3dTriangleTriangleConstCirculator.h:168
const TriangleType * operator->() const
retrieve current triangle associated to iterator position
Definition: Mesh3dTriangleTriangleConstCirculator.h:211
TriangleType value_type
value type associated to iterator
Definition: Mesh3dTriangleTriangleConstCirculator.h:52
bool operator!=(const Iterator &iter) const
iterator comparison
Definition: Mesh3dTriangleTriangleConstCirculator.h:204
Mesh3dTriangleTriangleConstCirculator< MeshType > Iterator
iterator type
Definition: Mesh3dTriangleTriangleConstCirculator.h:46
MeshType::DataType T
underlying mesh 3d data type
Definition: Mesh3dTriangleTriangleConstCirculator.h:37
Definition: Mesh3dTypes.h:52
Definition: NumericLimits.h:27
const MeshType * _pMesh
reference to mesh 3d associated to iterator
Definition: Mesh3dTriangleTriangleConstCirculator.h:136
const ipUInt32 getStartHalfEdgeIdx() const
retrieve starting half edge index associated to circulator
Definition: Mesh3dTriangleTriangleConstCirculator.h:154
Triangle3d< T > TriangleType
underlying triangle 3d type
Definition: Mesh3dTriangleTriangleConstCirculator.h:43
IPSDK_FORCEINLINE PackT max(const PackT &in1, const PackT &in2)
returns the maximum of 2 packs
Definition: max.h:40
const ipUInt32 getCurHalfEdgeIdx() const
retrieve current half edge index associated to circulator
Definition: Mesh3dTriangleTriangleConstCirculator.h:161
MeshType::VertexType VertexType
underlying mesh 3d vertex type
Definition: Mesh3dTriangleTriangleConstCirculator.h:40
Predefined types for mesh 3d management.
Definition of import/export macro for library.
Iterator class allowing to circulate over triangles immediatly neighbors of a given triangle...
Definition: Mesh3dTriangleTriangleConstCirculator.h:32
TriangleType _triangle
triangle data associated to current iterator position
Definition: Mesh3dTriangleTriangleConstCirculator.h:146
const TriangleType * pointer
pointer type for iterator
Definition: Mesh3dTriangleTriangleConstCirculator.h:58
3d triangle associated to cartesian 3d coordinates
Definition: Triangle3d.h:37
ipUInt64 _oppositeHalfEdgeIdx
Definition: Mesh3dTypes.h:62
Vector DataType
data type used for estimation
Definition: EstimationTypes.h:58
ipUInt64 _startVertexIdx
index of start vertex for half edge
Definition: Mesh3dTypes.h:55
std::input_iterator_tag iterator_category
iterator category
Definition: Mesh3dTriangleTriangleConstCirculator.h:49
ipUInt32 _startHalfEdgeIdx
starting half edge index
Definition: Mesh3dTriangleTriangleConstCirculator.h:139
void updateData()
method allowing to update iterator internal data
Definition: Mesh3dTriangleTriangleConstCirculator.h:225
ipUInt64 _nextHalfEdgeIdx
index of next half edge inside left triangle
Definition: Mesh3dTypes.h:65
const TriangleType & operator*() const
retrieve current triangle associated to iterator position
Definition: Mesh3dTriangleTriangleConstCirculator.h:218
Iterator & operator++()
increment of iterator
Definition: Mesh3dTriangleTriangleConstCirculator.h:182
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53