20 : N( topology ), edge_( edge ), first_(
first )
26 edge_ = N::next( edge_ );
30 bool first()
const {
return first_; }
45class NextEdgeSameOrigin
47 const MeshTopology * topology_ =
nullptr;
51 EdgeId next( EdgeId e )
const {
return topology_->next( e ); }
54using OrgRingIterator = RingIterator<NextEdgeSameOrigin>;
58 const MeshTopology * topology_ =
nullptr;
61 NextEdgeSameLeft(
const MeshTopology & topology ) : topology_( &topology ) { }
62 EdgeId next( EdgeId e )
const {
return topology_->prev( e.sym() ); }
65using LeftRingIterator = RingIterator<NextEdgeSameLeft>;
71 {
return { OrgRingIterator( topology, edge, edge.
valid() ), OrgRingIterator( topology, edge,
false ) }; }
73 {
return orgRing( topology, topology.edgeWithOrg( v ) ); }
78 {
return { ++OrgRingIterator( topology, edge,
true ), OrgRingIterator( topology, edge,
false ) }; }
84 {
return { LeftRingIterator( topology, edge, edge.
valid() ), LeftRingIterator( topology, edge,
false ) }; }
86 {
return leftRing( topology, topology.edgeWithLeft( f ) ); }
91 {
return { ++LeftRingIterator( topology, edge,
true ), LeftRingIterator( topology, edge,
false ) }; }
Definition MRMesh/MRMeshTopology.h:19
unsafe NextEdgeSameLeft(MR.Const_NextEdgeSameLeft _other)
unsafe NextEdgeSameOrigin(MR.Const_NextEdgeSameOrigin _other)
Definition MRRingIterator.h:13
RingIterator & operator++()
Definition MRRingIterator.h:23
std::forward_iterator_tag iterator_category
Definition MRRingIterator.h:15
EdgeId operator*() const
Definition MRRingIterator.h:29
std::ptrdiff_t difference_type
Definition MRRingIterator.h:17
bool first() const
Definition MRRingIterator.h:30
RingIterator(const MeshTopology &topology, EdgeId edge, bool first)
Definition MRRingIterator.h:19
MRMESH_API bool operator==(const BitSet &a, const BitSet &b)
compare that two bit sets have the same set bits (they can be equal even if sizes are distinct but la...
Definition MRCameraOrientationPlugin.h:8
bool operator!=(const Color &a, const Color &b)
Definition MRMesh/MRColor.h:101
IteratorRange< LeftRingIterator > leftRing0(const MeshTopology &topology, EdgeId edge)
Definition MRRingIterator.h:90
IteratorRange< LeftRingIterator > leftRing(const MeshTopology &topology, EdgeId edge)
Definition MRRingIterator.h:83
IteratorRange< OrgRingIterator > orgRing(const MeshTopology &topology, EdgeId edge)
Definition MRRingIterator.h:70
IteratorRange< OrgRingIterator > orgRing0(const MeshTopology &topology, EdgeId edge)
Definition MRRingIterator.h:77
readonly unsafe bool valid()
Definition MRMeshFwd.h:505