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
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
boost::equality_comparable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT > > > Base
bool isValid() const
Check if the circulator is valid.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
Mesh::FaceIndex FaceIndex
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Mesh::HalfEdgeIndex HalfEdgeIndex
Mesh::HalfEdgeIndex HalfEdgeIndex
FaceAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Mesh::VertexIndex VertexIndex
boost::equality_comparable< pcl::geometry::FaceAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundFaceCirculator< MeshT > > > Base
Mesh::HalfEdgeIndex HalfEdgeIndex
HalfEdgeIndex idx_incoming_half_edge_
The incoming half-edge of the vertex around which we want to circulate.
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.
Circulates clockwise around a face and returns an index to the face of the outer half-edge (the targe...
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Circulates counter-clockwise around a vertex and returns an index to the incoming half-edge (the targ...
OutgoingHalfEdgeAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
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.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
Mesh::FaceIndex FaceIndex
VertexIndex getTargetIndex() const
Get the index to the target vertex.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Mesh * mesh_
The mesh to which this circulator belongs to.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
FaceIndex getTargetIndex() const
Get the index to the target face.
Mesh * mesh_
The mesh to which this circulator belongs to.
IncomingHalfEdgeAroundVertexCirculator(const HalfEdgeIndex &idx_incoming_half_edge, Mesh *const mesh)
Construct directly from the incoming half-edge.
pcl::geometry::VertexAroundFaceCirculator< MeshT > Self
Mesh::FaceIndex FaceIndex
Mesh::HalfEdgeIndex HalfEdgeIndex
bool isValid() const
Check if the circulator is valid.
VertexAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
Mesh * mesh_
The mesh to which this circulator belongs to.
VertexAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
OutgoingHalfEdgeAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
OuterHalfEdgeAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
Mesh * mesh_
The mesh to which this circulator belongs to.
InnerHalfEdgeAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
Mesh::VertexIndex VertexIndex
FaceAroundFaceCirculator()
Constructor resulting in an invalid circulator.
Circulates counter-clockwise around a vertex and returns an index to the terminating vertex of the ou...
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Mesh::HalfEdgeIndex HalfEdgeIndex
Mesh::FaceIndex FaceIndex
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Mesh * mesh_
The mesh to which this circulator belongs to.
VertexIndex getTargetIndex() const
Get the index to the target vertex.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Index used to access elements in the half-edge mesh.
boost::equality_comparable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > > > Base
Mesh::VertexIndex VertexIndex
Index used to access elements in the half-edge mesh.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
Circulates clockwise around a face and returns an index to the terminating vertex of the inner half-e...
pcl::geometry::FaceAroundVertexCirculator< MeshT > Self
boost::equality_comparable< pcl::geometry::VertexAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundFaceCirculator< MeshT > > > Base
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
Mesh * mesh_
The mesh to which this circulator belongs to.
Index used to access elements in the half-edge mesh.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
pcl::geometry::FaceAroundFaceCirculator< MeshT > Self
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
boost::equality_comparable< pcl::geometry::FaceAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundVertexCirculator< MeshT > > > Base
Mesh::HalfEdgeIndex HalfEdgeIndex
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)
pcl::geometry::VertexAroundVertexCirculator< MeshT > Self
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool isValid() const
Check if the circulator is valid.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
boost::equality_comparable< pcl::geometry::VertexAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundVertexCirculator< MeshT > > > Base
pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT > Self
VertexAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
bool isValid() const
Check if the circulator is valid.
Mesh::FaceIndex FaceIndex
HalfEdgeIndex getTargetIndex() const
Get the index to the inner half-edge.
boost::equality_comparable< pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT > > > Base
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
OuterHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex getTargetIndex() const
Get the index to the outer half-edge.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
InnerHalfEdgeAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
Mesh::VertexIndex VertexIndex
VertexAroundVertexCirculator()
Constructor resulting in an invalid circulator.
pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > Self
InnerHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
FaceAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
Mesh * mesh_
The mesh to which this circulator belongs to.
Mesh::HalfEdgeIndex HalfEdgeIndex
bool isValid() const
Check if the circulator is valid.
pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT > Self
Mesh * mesh_
The mesh to which this circulator belongs to.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Circulates clockwise around a face and returns an index to the inner half-edge (the target)...
bool isValid() const
Check if the circulator is valid.
VertexAroundFaceCirculator()
Constructor resulting in an invalid circulator.
Mesh::VertexIndex VertexIndex
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
Circulates clockwise around a face and returns an index to the outer half-edge (the target)...
Circulates counter-clockwise around a vertex and returns an index to the face of the outgoing half-ed...
FaceAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
boost::equality_comparable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > > > Base
FaceAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
IncomingHalfEdgeAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
IncomingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
OuterHalfEdgeAroundFaceCirculator(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): == !=.
pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > Self
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
HalfEdgeIndex getTargetIndex() const
Get the index to the incoming half-edge.
OutgoingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex getTargetIndex() const
Get the index to the outgoing half-edge.
FaceAroundVertexCirculator()
Constructor resulting in an invalid circulator.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
VertexAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
bool isValid() const
Check if the circulator is valid.