46 #include <pcl/geometry/boost.h>
47 #include <pcl/geometry/mesh_indices.h>
65 template <
class MeshT>
67 : boost::equality_comparable<
68 pcl::geometry::VertexAroundVertexCirculator<MeshT>,
69 boost::unit_steppable<pcl::geometry::VertexAroundVertexCirculator<MeshT>>> {
71 using Base = boost::equality_comparable<
73 boost::unit_steppable<pcl::geometry::VertexAroundVertexCirculator<MeshT>>>;
168 template <
class MeshT>
170 : boost::equality_comparable<
171 pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator<MeshT>,
172 boost::unit_steppable<
173 pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator<MeshT>>> {
175 using Base = boost::equality_comparable<
177 boost::unit_steppable<
275 template <
class MeshT>
277 : boost::equality_comparable<
278 pcl::geometry::IncomingHalfEdgeAroundVertexCirculator<MeshT>,
279 boost::unit_steppable<
280 pcl::geometry::IncomingHalfEdgeAroundVertexCirculator<MeshT>>> {
282 using Base = boost::equality_comparable<
284 boost::unit_steppable<
382 template <
class MeshT>
384 : boost::equality_comparable<
385 pcl::geometry::FaceAroundVertexCirculator<MeshT>,
386 boost::unit_steppable<pcl::geometry::FaceAroundVertexCirculator<MeshT>>> {
388 using Base = boost::equality_comparable<
390 boost::unit_steppable<pcl::geometry::FaceAroundVertexCirculator<MeshT>>>;
486 template <
class MeshT>
488 : boost::equality_comparable<
489 pcl::geometry::VertexAroundFaceCirculator<MeshT>,
490 boost::unit_steppable<pcl::geometry::VertexAroundFaceCirculator<MeshT>>> {
492 using Base = boost::equality_comparable<
494 boost::unit_steppable<pcl::geometry::VertexAroundFaceCirculator<MeshT>>>;
587 template <
class MeshT>
589 : boost::equality_comparable<
590 pcl::geometry::InnerHalfEdgeAroundFaceCirculator<MeshT>,
591 boost::unit_steppable<pcl::geometry::InnerHalfEdgeAroundFaceCirculator<MeshT>>> {
593 using Base = boost::equality_comparable<
595 boost::unit_steppable<pcl::geometry::InnerHalfEdgeAroundFaceCirculator<MeshT>>>;
688 template <
class MeshT>
690 : boost::equality_comparable<
691 pcl::geometry::OuterHalfEdgeAroundFaceCirculator<MeshT>,
692 boost::unit_steppable<pcl::geometry::OuterHalfEdgeAroundFaceCirculator<MeshT>>> {
694 using Base = boost::equality_comparable<
696 boost::unit_steppable<pcl::geometry::OuterHalfEdgeAroundFaceCirculator<MeshT>>>;
789 template <
class MeshT>
791 : boost::equality_comparable<
792 pcl::geometry::FaceAroundFaceCirculator<MeshT>,
793 boost::unit_steppable<pcl::geometry::FaceAroundFaceCirculator<MeshT>>> {
795 using Base = boost::equality_comparable<
797 boost::unit_steppable<pcl::geometry::FaceAroundFaceCirculator<MeshT>>>;
Circulates clockwise around a face and returns an index to the face of the outer half-edge (the targe...
FaceAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
pcl::geometry::FaceAroundFaceCirculator< MeshT > Self
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
Mesh * mesh_
The mesh to which this circulator belongs to.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
typename Mesh::FaceIndex FaceIndex
typename 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.
FaceIndex getTargetIndex() const
Get the index to the target face.
boost::equality_comparable< pcl::geometry::FaceAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundFaceCirculator< MeshT > >> Base
FaceAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
FaceAroundFaceCirculator()
Constructor resulting in an invalid circulator.
Circulates counter-clockwise around a vertex and returns an index to the face of the outgoing half-ed...
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
FaceAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
FaceIndex getTargetIndex() const
Get the index to the target face.
FaceAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
typename Mesh::VertexIndex VertexIndex
typename Mesh::FaceIndex FaceIndex
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
boost::equality_comparable< pcl::geometry::FaceAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundVertexCirculator< MeshT > >> Base
pcl::geometry::FaceAroundVertexCirculator< MeshT > Self
bool isValid() const
Check if the circulator is valid.
typename Mesh::HalfEdgeIndex HalfEdgeIndex
FaceAroundVertexCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
Mesh * mesh_
The mesh to which this circulator belongs to.
Circulates counter-clockwise around a vertex and returns an index to the incoming half-edge (the targ...
typename Mesh::HalfEdgeIndex HalfEdgeIndex
IncomingHalfEdgeAroundVertexCirculator(const HalfEdgeIndex &idx_incoming_half_edge, Mesh *const mesh)
Construct directly from the incoming half-edge.
HalfEdgeIndex idx_incoming_half_edge_
The incoming half-edge of the vertex around which we want to circulate.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
HalfEdgeIndex getTargetIndex() const
Get the index to the incoming half-edge.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > Self
boost::equality_comparable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > >> Base
IncomingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
typename Mesh::VertexIndex VertexIndex
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
IncomingHalfEdgeAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
Mesh * mesh_
The mesh to which this circulator belongs to.
bool isValid() const
Check if the circulator is valid.
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).
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
typename Mesh::HalfEdgeIndex HalfEdgeIndex
InnerHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face 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 * mesh_
The mesh to which this circulator belongs to.
HalfEdgeIndex getTargetIndex() const
Get the index to the inner half-edge.
bool isValid() const
Check if the circulator is valid.
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.
typename Mesh::FaceIndex FaceIndex
InnerHalfEdgeAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT > Self
InnerHalfEdgeAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
Circulates clockwise around a face and returns an index to the outer half-edge (the target).
pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > Self
typename Mesh::FaceIndex FaceIndex
HalfEdgeIndex getTargetIndex() const
Get the index to the outer half-edge.
OuterHalfEdgeAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
typename Mesh::HalfEdgeIndex HalfEdgeIndex
boost::equality_comparable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > >> Base
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
Mesh * mesh_
The mesh to which this circulator belongs to.
OuterHalfEdgeAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from 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.
OuterHalfEdgeAroundFaceCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
bool isValid() const
Check if the circulator is valid.
Circulates counter-clockwise around a vertex and returns an index to the outgoing half-edge (the targ...
HalfEdgeIndex getTargetIndex() const
Get the index to the outgoing half-edge.
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
typename Mesh::VertexIndex VertexIndex
Mesh * mesh_
The mesh to which this circulator belongs to.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
OutgoingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT > Self
bool isValid() const
Check if the circulator is valid.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
boost::equality_comparable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT > >> Base
OutgoingHalfEdgeAroundVertexCirculator(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): == !=.
OutgoingHalfEdgeAroundVertexCirculator(const HalfEdgeIndex &idx_outgoing_half_edge, Mesh *const mesh)
Construct directly from the outgoing half-edge.
typename Mesh::HalfEdgeIndex HalfEdgeIndex
Circulates clockwise around a face and returns an index to the terminating vertex of the inner half-e...
Mesh * mesh_
The mesh to which this circulator belongs to.
boost::equality_comparable< pcl::geometry::VertexAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundFaceCirculator< MeshT > >> Base
pcl::geometry::VertexAroundFaceCirculator< MeshT > Self
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
VertexAroundFaceCirculator(const HalfEdgeIndex &idx_inner_half_edge, Mesh *const mesh)
Construct directly from the inner half-edge.
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
VertexIndex getTargetIndex() const
Get the index to the target vertex.
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.
bool isValid() const
Check if the circulator is valid.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
typename Mesh::HalfEdgeIndex HalfEdgeIndex
VertexAroundFaceCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
typename Mesh::VertexIndex VertexIndex
typename Mesh::FaceIndex FaceIndex
Circulates counter-clockwise around a vertex and returns an index to the terminating vertex of the ou...
Mesh * mesh_
The mesh to which this circulator belongs to.
VertexAroundVertexCirculator(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)
typename Mesh::HalfEdgeIndex HalfEdgeIndex
bool isValid() const
Check if the circulator is valid.
VertexIndex getTargetIndex() const
Get the index to the target vertex.
VertexAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
VertexAroundVertexCirculator()
Constructor resulting in an invalid circulator.
typename Mesh::VertexIndex VertexIndex
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
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.
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
boost::equality_comparable< pcl::geometry::VertexAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundVertexCirculator< MeshT > >> Base
pcl::geometry::VertexAroundVertexCirculator< MeshT > Self
pcl::detail::MeshIndex< struct FaceIndexTag > FaceIndex
Index used to access elements in the half-edge mesh.
pcl::detail::MeshIndex< struct HalfEdgeIndexTag > HalfEdgeIndex
Index used to access elements in the half-edge mesh.
pcl::detail::MeshIndex< struct VertexIndexTag > VertexIndex
Index used to access elements in the half-edge mesh.