18 #ifndef itkVoronoiDiagram2DGenerator_h
19 #define itkVoronoiDiagram2DGenerator_h
45 template<
typename TCoordType >
47 public MeshSource< VoronoiDiagram2D< TCoordType > >
74 itkGetConstMacro(NumberOfSeeds,
unsigned int);
115 virtual void PrintSelf(std::ostream & os,
Indent indent)
const ITK_OVERRIDE;
122 void operator=(const Self &);
145 friend class FortuneSite;
146 friend class FortuneEdge;
147 friend class FortuneHalfEdge;
297 #ifndef ITK_MANUAL_INSTANTIATION
298 #include "itkVoronoiDiagram2DGenerator.hxx"
std::vector< FortuneHalfEdge * > m_ELHash
bool right_of(FortuneHalfEdge *el, PointType *p)
unsigned int m_ELhashsize
void makeEndPoint(FortuneEdge *task, bool lr, FortuneSite *ends)
FortuneHalfEdge * getPQmin()
unsigned int m_NumberOfSeeds
Light weight base class for most itk classes.
void createHalfEdge(FortuneHalfEdge *task, FortuneEdge *e, bool pm)
void SetSeeds(int num, SeedsIterator begin)
void clip_line(FortuneEdge *task)
void bisect(FortuneEdge *, FortuneSite *s1, FortuneSite *s2)
VoronoiDiagram2DGenerator Self
bool differentPoint(PointType p1, PointType p2)
VDMesh::EdgeInfoDQ EdgeInfoDQ
VDMesh::SeedsType SeedsType
void AddOneSeed(PointType)
VDMesh::CoordRepType CoordRepType
static bool comp(PointType arg1, PointType arg2)
SeedsType::iterator SeedsIterator
unsigned char Pointonbnd(int VertID)
Implements the 2-Dimensional Voronoi Diagram.
std::vector< FortuneHalfEdge > m_PQHash
static const double e
The base of the natural logarithm or Euler's number
MeshTraits::CoordRepType CoordRepType
void insertEdgeList(FortuneHalfEdge *lbase, FortuneHalfEdge *lnew)
VoronoiDiagram2DGenerator()
~VoronoiDiagram2DGenerator()
void Fill(const ValueType &)
SmartPointer< Self > Pointer
std::vector< FortuneSite > m_SeedSites
FortuneHalfEdge m_ELrightend
Base class for all process objects that output mesh data.
double dist(FortuneSite *s1, FortuneSite *s2)
FortuneHalfEdge(const FortuneHalfEdge &edge)
VoronoidDiagramType VDMesh
VDMesh::VoronoiEdge VoronoiEdge
MeshSource< VoronoiDiagram2D< TCoordType > > Superclass
unsigned int m_PQhashsize
void GenerateData(void) override
FortuneHalfEdge * ELgethash(int b)
void insertPQ(FortuneHalfEdge *he, FortuneSite *v, double offset)
virtual void PrintSelf(std::ostream &os, Indent indent) const override
void intersect(FortuneSite *task, FortuneHalfEdge *el1, FortuneHalfEdge *el2)
void SetRandomSeeds(int num)
void PQshowMin(PointType *task)
Small data structures for Fortune's Method and some public variables/methods not for external access...
FortuneSite * m_BottomSite
FortuneSite * getLeftReg(FortuneHalfEdge *he)
void deleteEdgeList(FortuneHalfEdge *task)
FortuneHalfEdge * findLeftHE(PointType *p)
SmartPointer< const Self > ConstPointer
Implement the Sweep Line Algorithm for the construction of the 2D Voronoi Diagram.
VDMesh::EdgeInfo EdgeInfo
Control indentation during Print() invocation.
void SetBoundary(PointType vorsize)
FortuneHalfEdge m_ELleftend
int PQbucket(FortuneHalfEdge *task)
FortuneSite * getRightReg(FortuneHalfEdge *he)
virtual void GenerateOutputInformation() override
void SetOrigin(PointType vorsize)
Define additional traits for native types such as int or float.
std::vector< PointType > SeedsType
PointType GetSeed(int SeedID)
void deletePQ(FortuneHalfEdge *task)
VDMesh::Pointer OutputType
void AddSeeds(int num, SeedsIterator begin)
A templated class holding a geometric point in n-Dimensional space.
VDMesh::SeedsIterator SeedsIterator
std::deque< EdgeInfo > EdgeInfoDQ
VoronoiDiagram2D< TCoordType > VoronoidDiagramType
FortuneHalfEdge * m_Right
VDMesh::PointType PointType
bool almostsame(CoordRepType p1, CoordRepType p2)