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 getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
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
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
bool isValid() const
Check if the circulator is valid.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool isValid() const
Check if the circulator is valid.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Mesh::HalfEdgeIndex HalfEdgeIndex
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Mesh::HalfEdgeIndex HalfEdgeIndex
bool isValid() const
Check if the circulator is valid.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
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)
Mesh::VertexIndex VertexIndex
boost::equality_comparable< pcl::geometry::FaceAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundFaceCirculator< MeshT > > > Base
This file defines compatibility wrappers for low level I/O functions.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
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.
Circulates clockwise around a face and returns an index to the face of the outer half-edge (the targe...
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
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
Mesh::FaceIndex FaceIndex
Mesh * mesh_
The mesh to which this circulator belongs to.
bool isValid() const
Check if the circulator is valid.
Mesh * mesh_
The mesh to which this circulator belongs to.
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.
pcl::geometry::VertexAroundFaceCirculator< MeshT > Self
Mesh::FaceIndex FaceIndex
Mesh::HalfEdgeIndex HalfEdgeIndex
HalfEdgeIndex getTargetIndex() const
Get the index to the outer half-edge.
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.
VertexIndex getTargetIndex() const
Get the index to the target vertex.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
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.
HalfEdgeIndex getTargetIndex() const
Get the index to the incoming half-edge.
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...
Mesh::HalfEdgeIndex HalfEdgeIndex
Mesh::FaceIndex FaceIndex
bool isValid() const
Check if the circulator is valid.
Mesh * mesh_
The mesh to which this circulator belongs to.
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.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
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
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
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)
HalfEdgeIndex getTargetIndex() const
Get the index to the outgoing half-edge.
pcl::geometry::VertexAroundVertexCirculator< MeshT > Self
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool isValid() const
Check if the circulator is valid.
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.
Mesh::FaceIndex FaceIndex
boost::equality_comparable< pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT > > > Base
OuterHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid circulator.
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.
HalfEdgeIndex getTargetIndex() const
Get the index to the inner half-edge.
pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > Self
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
InnerHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid 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.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Mesh::HalfEdgeIndex HalfEdgeIndex
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)
FaceIndex getTargetIndex() const
Get the index to the target face.
bool isValid() const
Check if the circulator is valid.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
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): == !=.
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.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
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.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
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.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
FaceIndex getTargetIndex() const
Get the index to the target face.
IncomingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
OuterHalfEdgeAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > Self
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
OutgoingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
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.
VertexIndex getTargetIndex() const
Get the index to the target vertex.