46 #include <pcl/geometry/mesh_indices.h>
48 #include <boost/operators.hpp>
66 template <
class MeshT>
68 : boost::equality_comparable<
69 pcl::geometry::VertexAroundVertexCirculator<MeshT>,
70 boost::unit_steppable<pcl::geometry::VertexAroundVertexCirculator<MeshT>>> {
72 using Base = boost::equality_comparable<
74 boost::unit_steppable<pcl::geometry::VertexAroundVertexCirculator<MeshT>>>;
75 using Self = pcl::geometry::VertexAroundVertexCirculator<MeshT>;
169 template <
class MeshT>
171 : boost::equality_comparable<
172 pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator<MeshT>,
173 boost::unit_steppable<
174 pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator<MeshT>>> {
176 using Base = boost::equality_comparable<
178 boost::unit_steppable<
179 pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator<MeshT>>>;
180 using Self = pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator<MeshT>;
276 template <
class MeshT>
278 : boost::equality_comparable<
279 pcl::geometry::IncomingHalfEdgeAroundVertexCirculator<MeshT>,
280 boost::unit_steppable<
281 pcl::geometry::IncomingHalfEdgeAroundVertexCirculator<MeshT>>> {
283 using Base = boost::equality_comparable<
285 boost::unit_steppable<
286 pcl::geometry::IncomingHalfEdgeAroundVertexCirculator<MeshT>>>;
287 using Self = pcl::geometry::IncomingHalfEdgeAroundVertexCirculator<MeshT>;
383 template <
class MeshT>
385 : boost::equality_comparable<
386 pcl::geometry::FaceAroundVertexCirculator<MeshT>,
387 boost::unit_steppable<pcl::geometry::FaceAroundVertexCirculator<MeshT>>> {
389 using Base = boost::equality_comparable<
391 boost::unit_steppable<pcl::geometry::FaceAroundVertexCirculator<MeshT>>>;
392 using Self = pcl::geometry::FaceAroundVertexCirculator<MeshT>;
487 template <
class MeshT>
489 : boost::equality_comparable<
490 pcl::geometry::VertexAroundFaceCirculator<MeshT>,
491 boost::unit_steppable<pcl::geometry::VertexAroundFaceCirculator<MeshT>>> {
493 using Base = boost::equality_comparable<
495 boost::unit_steppable<pcl::geometry::VertexAroundFaceCirculator<MeshT>>>;
496 using Self = pcl::geometry::VertexAroundFaceCirculator<MeshT>;
588 template <
class MeshT>
590 : boost::equality_comparable<
591 pcl::geometry::InnerHalfEdgeAroundFaceCirculator<MeshT>,
592 boost::unit_steppable<pcl::geometry::InnerHalfEdgeAroundFaceCirculator<MeshT>>> {
594 using Base = boost::equality_comparable<
596 boost::unit_steppable<pcl::geometry::InnerHalfEdgeAroundFaceCirculator<MeshT>>>;
597 using Self = pcl::geometry::InnerHalfEdgeAroundFaceCirculator<MeshT>;
689 template <
class MeshT>
691 : boost::equality_comparable<
692 pcl::geometry::OuterHalfEdgeAroundFaceCirculator<MeshT>,
693 boost::unit_steppable<pcl::geometry::OuterHalfEdgeAroundFaceCirculator<MeshT>>> {
695 using Base = boost::equality_comparable<
697 boost::unit_steppable<pcl::geometry::OuterHalfEdgeAroundFaceCirculator<MeshT>>>;
698 using Self = pcl::geometry::OuterHalfEdgeAroundFaceCirculator<MeshT>;
790 template <
class MeshT>
792 : boost::equality_comparable<
793 pcl::geometry::FaceAroundFaceCirculator<MeshT>,
794 boost::unit_steppable<pcl::geometry::FaceAroundFaceCirculator<MeshT>>> {
796 using Base = boost::equality_comparable<
798 boost::unit_steppable<pcl::geometry::FaceAroundFaceCirculator<MeshT>>>;
799 using Self = pcl::geometry::FaceAroundFaceCirculator<MeshT>;
bool operator==(const Self &other) const
Comparison operators (with boost::operators): == !=.
bool isValid() const
Check if the circulator is valid.
boost::equality_comparable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT >>> Base
pcl::geometry::InnerHalfEdgeAroundFaceCirculator< MeshT > Self
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
typename Mesh::HalfEdgeIndex HalfEdgeIndex
typename Mesh::FaceIndex FaceIndex
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)
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
pcl::detail::MeshIndex< struct FaceIndexTag > FaceIndex
Index used to access elements in the half-edge mesh.
boost::equality_comparable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT >>> Base
pcl::geometry::OuterHalfEdgeAroundFaceCirculator< MeshT > Self
typename Mesh::VertexIndex VertexIndex
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): == !=.
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)
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)
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.
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.
pcl::geometry::IncomingHalfEdgeAroundVertexCirculator< MeshT > Self
VertexAroundVertexCirculator(const VertexIndex &idx_vertex, Mesh *const mesh)
Construct from the vertex around which we want to circulate.
boost::equality_comparable< pcl::geometry::FaceAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundFaceCirculator< MeshT >>> Base
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.
boost::equality_comparable< pcl::geometry::VertexAroundFaceCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundFaceCirculator< MeshT >>> Base
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of 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 terminating vertex of the ou...
HalfEdgeIndex getCurrentHalfEdgeIndex() const
Get the half-edge that is currently stored in the circulator.
typename Mesh::FaceIndex FaceIndex
typename Mesh::HalfEdgeIndex HalfEdgeIndex
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)
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...
typename Mesh::VertexIndex VertexIndex
typename Mesh::HalfEdgeIndex HalfEdgeIndex
pcl::detail::MeshIndex< struct HalfEdgeIndexTag > HalfEdgeIndex
Index used to access elements in the half-edge mesh.
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.
HalfEdgeIndex idx_inner_half_edge_
The inner half-edge of the face around which we want to circulate.
typename Mesh::HalfEdgeIndex HalfEdgeIndex
Self & operator++()
Increment operators (with boost::operators): ++ (pre and post)
typename 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)
boost::equality_comparable< pcl::geometry::VertexAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::VertexAroundVertexCirculator< MeshT >>> Base
typename Mesh::VertexIndex VertexIndex
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::FaceAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::FaceAroundVertexCirculator< MeshT >>> Base
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.
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.
pcl::geometry::VertexAroundFaceCirculator< MeshT > Self
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.
VertexAroundVertexCirculator()
Constructor resulting in an invalid circulator.
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.
boost::equality_comparable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT >, boost::unit_steppable< pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT >>> Base
bool isValid() const
Check if the circulator is valid.
pcl::geometry::FaceAroundFaceCirculator< MeshT > Self
Mesh * mesh_
The mesh to which this circulator belongs to.
Self & operator--()
Decrement operators (with boost::operators): – (pre and post)
typename Mesh::FaceIndex FaceIndex
typename Mesh::HalfEdgeIndex HalfEdgeIndex
Circulates clockwise around a face and returns an index to the inner half-edge (the target)...
pcl::geometry::FaceAroundVertexCirculator< MeshT > Self
bool isValid() const
Check if the circulator is valid.
VertexAroundFaceCirculator()
Constructor resulting in an invalid circulator.
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
pcl::geometry::OutgoingHalfEdgeAroundVertexCirculator< MeshT > Self
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...
typename Mesh::VertexIndex VertexIndex
FaceAroundFaceCirculator(const FaceIndex &idx_face, Mesh *const mesh)
Construct from the face around which we want to circulate.
typename Mesh::FaceIndex FaceIndex
typename Mesh::FaceIndex FaceIndex
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): == !=.
HalfEdgeIndex idx_outgoing_half_edge_
The outgoing half-edge of the vertex around which we want to circulate.
typename Mesh::VertexIndex VertexIndex
HalfEdgeIndex getTargetIndex() const
Get the index to the incoming half-edge.
OutgoingHalfEdgeAroundVertexCirculator()
Constructor resulting in an invalid circulator.
pcl::detail::MeshIndex< struct VertexIndexTag > VertexIndex
Index used to access elements in the half-edge mesh.
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.
typename Mesh::HalfEdgeIndex HalfEdgeIndex
pcl::geometry::VertexAroundVertexCirculator< MeshT > Self
typename Mesh::HalfEdgeIndex HalfEdgeIndex