Subversion Repositories gelsvn

Rev

Rev 489 | Blame | Last modification | View Log | RSS feed

#include "VertexCirculator.h"

#include <cassert>

#include "VertexHandle.h"
#include "FaceHandle.h"

namespace HMesh
{
    VertexCirculator::VertexCirculator(const VertexHandle& v)
        :   last(v.out()),
            he(last),
            steps(0)
    {}

    VertexCirculator::VertexCirculator(const HalfEdgeHandle& h)
        :   he(h),
            last(h),
            steps(0)
    {}

    HalfEdgeHandle VertexCirculator::halfedge() const
    {
        return he;
    }

    HalfEdgeHandle VertexCirculator::opp_halfedge() const
    {
        return he.opp();
    }

    VertexHandle VertexCirculator::vertex() const
    {
        return he.vert();
    }

    FaceHandle VertexCirculator::face() const
    {
        return he.face();
    }

    void VertexCirculator::operator++()
    {
        he = he.opp().next();
        ++steps;
    }

    void VertexCirculator::operator++(int)
    {
        ++(*this);
    }

    bool VertexCirculator::end()
    {
        return (he == last && steps > 0);
    }

    size_t VertexCirculator::no_steps()
    {
        return steps;
    }
}