43 #ifndef PCL_GEOMETRY_MESH_CIRCULATORS_H
44 #define PCL_GEOMETRY_MESH_CIRCULATORS_H
46 #include <pcl/geometry/boost.h>
47 #include <pcl/geometry/mesh_indices.h>
63 template <
class MeshT>
65 : boost::equality_comparable <pcl::geometry::VertexAroundVertexCirculator <MeshT>
66 , boost::unit_steppable <pcl::geometry::VertexAroundVertexCirculator <MeshT>
71 typedef boost::equality_comparable <pcl::geometry::VertexAroundVertexCirculator <MeshT>
72 , boost::unit_steppable <pcl::geometry::VertexAroundVertexCirculator <MeshT> > >
Base;
171 template <
class MeshT>
173 : boost::equality_comparable <pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator <MeshT>
174 , boost::unit_steppable <pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator <MeshT>
179 typedef boost::equality_comparable <pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator <MeshT>
180 , boost::unit_steppable <pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator <MeshT> > >
Base;
279 template <
class MeshT>
281 : boost::equality_comparable <pcl::geometry::IncomingHalfEdgeAroundVertexCirculator <MeshT>
282 , boost::unit_steppable <pcl::geometry::IncomingHalfEdgeAroundVertexCirculator <MeshT>
287 typedef boost::equality_comparable <pcl::geometry::IncomingHalfEdgeAroundVertexCirculator <MeshT>
288 , boost::unit_steppable <pcl::geometry::IncomingHalfEdgeAroundVertexCirculator <MeshT> > >
Base;
387 template <
class MeshT>
389 : boost::equality_comparable <pcl::geometry::FaceAroundVertexCirculator <MeshT>
390 , boost::unit_steppable <pcl::geometry::FaceAroundVertexCirculator <MeshT>
395 typedef boost::equality_comparable <pcl::geometry::FaceAroundVertexCirculator <MeshT>
396 , boost::unit_steppable <pcl::geometry::FaceAroundVertexCirculator <MeshT> > >
Base;
496 template <
class MeshT>
498 : boost::equality_comparable <pcl::geometry::VertexAroundFaceCirculator <MeshT>
499 , boost::unit_steppable <pcl::geometry::VertexAroundFaceCirculator <MeshT>
504 typedef boost::equality_comparable <pcl::geometry::VertexAroundFaceCirculator <MeshT>
505 , boost::unit_steppable <pcl::geometry::VertexAroundFaceCirculator <MeshT> > >
Base;
605 template <
class MeshT>
607 : boost::equality_comparable <pcl::geometry::InnerHalfEdgeAroundFaceCirculator <MeshT>
608 , boost::unit_steppable <pcl::geometry::InnerHalfEdgeAroundFaceCirculator <MeshT>
613 typedef boost::equality_comparable <pcl::geometry::InnerHalfEdgeAroundFaceCirculator <MeshT>
614 , boost::unit_steppable <pcl::geometry::InnerHalfEdgeAroundFaceCirculator <MeshT> > >
Base;
713 template <
class MeshT>
715 : boost::equality_comparable <pcl::geometry::OuterHalfEdgeAroundFaceCirculator <MeshT>
716 , boost::unit_steppable <pcl::geometry::OuterHalfEdgeAroundFaceCirculator <MeshT>
721 typedef boost::equality_comparable <pcl::geometry::OuterHalfEdgeAroundFaceCirculator <MeshT>
722 , boost::unit_steppable <pcl::geometry::OuterHalfEdgeAroundFaceCirculator <MeshT> > >
Base;
821 template <
class MeshT>
823 : boost::equality_comparable <pcl::geometry::FaceAroundFaceCirculator <MeshT>
824 , boost::unit_steppable <pcl::geometry::FaceAroundFaceCirculator <MeshT>
829 typedef boost::equality_comparable <pcl::geometry::FaceAroundFaceCirculator <MeshT>
830 , boost::unit_steppable <pcl::geometry::FaceAroundFaceCirculator <MeshT> > >
Base;
915 #endif // PCL_GEOMETRY_MESH_CIRCULATORS_H
HalfEdgeIndex getTargetIndex() const
Get the index to the inner half-edge.
Mesh::VertexIndex VertexIndex
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Mesh::HalfEdgeIndex HalfEdgeIndex
pcl::geometry::FaceAroundVertexCirculator< MeshT > Self
VertexAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
Mesh::HalfEdgeIndex HalfEdgeIndex
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
FaceIndex getTargetIndex() const
Get the index to the target face.
boost::equality_comparable< pcl::geometry::VertexAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundVertexCirculator< MeshT > > > Base
FaceAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
VertexAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
Index used to access elements in the half-edge mesh.
OutgoingHalfEdgeAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
Mesh::HalfEdgeIndex HalfEdgeIndex
bool isValid() const
Check if the circulator is valid.
Mesh::HalfEdgeIndex HalfEdgeIndex
InnerHalfEdgeAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Mesh * mesh_
The mesh to which this circulator belongs to.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
boost::equality_comparable< pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT > > > Base
FaceAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT > Self
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Mesh::FaceIndex FaceIndex
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
Mesh * mesh_
The mesh to which this circulator belongs to.
pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT > Self
Circulates counter-clockwise around a vertex and returns an index to the terminating vertex of the ou...
pcl::geometry::VertexAroundFaceCirculator< MeshT > Self
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
Mesh::VertexIndex VertexIndex
bool isValid() const
Check if the circulator is valid.
Circulates clockwise around a face and returns an index to the inner half-edge (the target)...
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
OutgoingHalfEdgeAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
VertexIndex getTargetIndex() const
Get the index to the target vertex.
Circulates counter-clockwise around a vertex and returns an index to the face of the outgoing half-ed...
Mesh::FaceIndex FaceIndex
pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > Self
Mesh::VertexIndex VertexIndex
bool isValid() const
Check if the circulator is valid.
Mesh::VertexIndex VertexIndex
bool isValid() const
Check if the circulator is valid.
VertexAroundFaceCirculator()
Constructor resulting in an invalid circulator.
InnerHalfEdgeAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
VertexAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
Mesh::HalfEdgeIndex HalfEdgeIndex
FaceAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
OuterHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid circulator.
Circulates counter-clockwise around a vertex and returns an index to the incoming half-edge (the targ...
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
HalfEdgeIndex getTargetIndex() const
Get the index to the incoming half-edge.
OutgoingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
Mesh::FaceIndex FaceIndex
VertexAroundVertexCirculator()
Constructor resulting in an invalid circulator.
Index used to access elements in the half-edge mesh.
Circulates counter-clockwise around a vertex and returns an index to the outgoing half-edge (the targ...
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
bool isValid() const
Check if the circulator is valid.
IncomingHalfEdgeAroundVertexCirculator(const HalfEdgeIndex &idx_incoming_half_edge, Mesh *const mesh)
Construct directly from the incoming half-edge.
Mesh * mesh_
The mesh to which this circulator belongs to.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
FaceAroundFaceCirculator()
Constructor resulting in an invalid circulator.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
VertexIndex getTargetIndex() const
Get the index to the target vertex.
Mesh::HalfEdgeIndex HalfEdgeIndex
OuterHalfEdgeAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > Self
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Mesh * mesh_
The mesh to which this circulator belongs to.
Circulates clockwise around a face and returns an index to the terminating vertex of the inner half-e...
FaceAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
boost::equality_comparable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > > > Base
InnerHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
HalfEdgeIndex idx_incoming_half_edge_
The incoming half-edge of the vertex around which we want to circulate.
Circulates clockwise around a face and returns an index to the face of the outer half-edge (the targe...
bool isValid() const
Check if the circulator is valid.
Index used to access elements in the half-edge mesh.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
bool isValid() const
Check if the circulator is valid.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
IncomingHalfEdgeAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
boost::equality_comparable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT > > > Base
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
FaceIndex getTargetIndex() const
Get the index to the target face.
HalfEdgeIndex getTargetIndex() const
Get the index to the outgoing half-edge.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Mesh::FaceIndex FaceIndex
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Mesh::HalfEdgeIndex HalfEdgeIndex
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
bool isValid() const
Check if the circulator is valid.
boost::equality_comparable< pcl::geometry::FaceAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundVertexCirculator< MeshT > > > Base
Circulates clockwise around a face and returns an index to the outer half-edge (the target)...
boost::equality_comparable< pcl::geometry::FaceAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundFaceCirculator< MeshT > > > Base
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
IncomingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
FaceAroundVertexCirculator()
Constructor resulting in an invalid circulator.
pcl::geometry::FaceAroundFaceCirculator< MeshT > Self
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
OuterHalfEdgeAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Mesh::HalfEdgeIndex HalfEdgeIndex
VertexAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
HalfEdgeIndex getTargetIndex() const
Get the index to the outer half-edge.
pcl::geometry::VertexAroundVertexCirculator< MeshT > Self
Mesh * mesh_
The mesh to which this circulator belongs to.
Mesh::FaceIndex FaceIndex
Mesh * mesh_
The mesh to which this circulator belongs to.
Mesh * mesh_
The mesh to which this circulator belongs to.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
boost::equality_comparable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > > > Base
boost::equality_comparable< pcl::geometry::VertexAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundFaceCirculator< MeshT > > > Base
Mesh::VertexIndex VertexIndex
Mesh * mesh_
The mesh to which this circulator belongs to.