Rev 493 | Blame | Last modification | View Log | RSS feed
#include "VertexCirculator.h"
#include <cassert>
#include "VertexHandle.h"
#include "FaceHandle.h"
namespace HMesh
{
/************************************
* VertexCirculator functions
*************************************/
VertexCirculator::VertexCirculator(VertexHandle v)
: last(v.out()),
he(last),
steps(0)
{}
VertexCirculator::VertexCirculator(HalfEdgeHandle h)
: he(h),
last(h),
steps(0)
{}
HalfEdgeHandle VertexCirculator::halfedge()
{
return he;
}
HalfEdgeHandle VertexCirculator::opp_halfedge()
{
return he.opp();
}
VertexHandle VertexCirculator::vertex()
{
return he.vert();
}
FaceHandle VertexCirculator::face()
{
return he.face();
}
void VertexCirculator::operator++()
{
he = he.opp().next();
++steps;
}
void VertexCirculator::operator++(int)
{
++(*this);
}
bool VertexCirculator::end()
{
return (he == last && steps > 0);
}
IndexType VertexCirculator::no_steps()
{
return steps;
}
/************************************
* VertexCirculator functions
*************************************/
ConstVertexCirculator::ConstVertexCirculator(ConstVertexHandle v)
: last(v.out()), he(last), steps(0)
{}
ConstVertexCirculator::ConstVertexCirculator(ConstHalfEdgeHandle h)
: he(h), last(h), steps(0)
{}
ConstHalfEdgeHandle ConstVertexCirculator::halfedge() const
{
return he;
}
ConstHalfEdgeHandle ConstVertexCirculator::opp_halfedge() const
{
return he.opp();
}
ConstVertexHandle ConstVertexCirculator::vertex() const
{
return he.vert();
}
ConstFaceHandle ConstVertexCirculator::face() const
{
return he.face();
}
void ConstVertexCirculator::operator++()
{
he = he.opp().next();
++steps;
}
void ConstVertexCirculator::operator++(int)
{
++(*this);
}
bool ConstVertexCirculator::end()
{
return (he == last && steps > 0);
}
IndexType ConstVertexCirculator::no_steps()
{
return steps;
}
}