18#ifndef itkVoronoiDiagram2DGenerator_h
19#define itkVoronoiDiagram2DGenerator_h
47template <
typename TCoordinate>
74#ifndef ITK_FUTURE_LEGACY_REMOVE
75 using CoordRepType ITK_FUTURE_DEPRECATED(
76 "ITK 6 discourages using `CoordRepType`. Please use `CoordinateType` instead!") =
CoordinateType;
81 itkGetConstMacro(NumberOfSeeds,
unsigned int);
152 class FortuneHalfEdge;
157 friend class FortuneSite;
158 friend class FortuneEdge;
159 friend class FortuneHalfEdge;
179 float m_A{ 0.0 }, m_B{ 0.0 }, m_C{ 0.0 };
289 bisect(FortuneEdge *, FortuneSite * s1, FortuneSite * s2);
295 intersect(FortuneSite * newV, FortuneHalfEdge * el1, FortuneHalfEdge * el2);
310 insertPQ(FortuneHalfEdge * he, FortuneSite * v,
double offset);
313 dist(FortuneSite * s1, FortuneSite * s2);
323#ifndef ITK_MANUAL_INSTANTIATION
324# include "itkVoronoiDiagram2DGenerator.hxx"
Control indentation during Print() invocation.
Define additional traits for native types such as int or float.
static constexpr T max(const T &)
Implements transparent reference counting.
FortuneHalfEdge * m_Right
~FortuneHalfEdge()=default
FortuneHalfEdge(const FortuneHalfEdge &edge)
Small data structures for Fortune's Method and some public variables/methods not for external access.
void GenerateOutputInformation() override
typename VDMesh::EdgeInfoDQ EdgeInfoDQ
SmartPointer< const Self > ConstPointer
std::vector< FortuneSite > m_SeedSites
void PrintSelf(std::ostream &os, Indent indent) const override
FortuneHalfEdge * ELgethash(int b)
unsigned int m_ELhashsize
void SetOrigin(PointType vorsize)
void SetSeeds(int num, SeedsIterator begin)
FortuneHalfEdge * getPQmin()
void insertEdgeList(FortuneHalfEdge *lbase, FortuneHalfEdge *lnew)
FortuneSite * m_BottomSite
void AddOneSeed(PointType)
typename VDMesh::EdgeInfo EdgeInfo
double dist(FortuneSite *s1, FortuneSite *s2)
unsigned int m_PQhashsize
~VoronoiDiagram2DGenerator() override=default
VoronoiDiagram2DGenerator Self
void insertPQ(FortuneHalfEdge *he, FortuneSite *v, double offset)
bool almostsame(CoordinateType p1, CoordinateType p2)
void GenerateData() override
typename VDMesh::SeedsIterator SeedsIterator
FortuneSite * getLeftReg(FortuneHalfEdge *he)
unsigned int m_NumberOfSeeds
int PQbucket(FortuneHalfEdge *task)
void PQshowMin(PointType *answer)
typename VDMesh::CoordinateType CoordinateType
void bisect(FortuneEdge *, FortuneSite *s1, FortuneSite *s2)
SmartPointer< Self > Pointer
VoronoidDiagramType VDMesh
void deletePQ(FortuneHalfEdge *task)
std::vector< FortuneHalfEdge * > m_ELHash
FortuneSite * getRightReg(FortuneHalfEdge *he)
std::vector< FortuneHalfEdge > m_PQHash
bool differentPoint(PointType p1, PointType p2)
void AddSeeds(int num, SeedsIterator begin)
typename VDMesh::VoronoiEdge VoronoiEdge
void clip_line(FortuneEdge *task)
typename VDMesh::Pointer OutputType
MeshSource< VoronoiDiagram2D< TCoordinate > > Superclass
void createHalfEdge(FortuneHalfEdge *task, FortuneEdge *e, bool pm)
typename VDMesh::PointType PointType
FortuneHalfEdge m_ELrightend
bool right_of(FortuneHalfEdge *el, PointType *p)
FortuneHalfEdge m_ELleftend
void intersect(FortuneSite *newV, FortuneHalfEdge *el1, FortuneHalfEdge *el2)
void SetRandomSeeds(int num)
VoronoiDiagram2DGenerator()
void makeEndPoint(FortuneEdge *task, bool lr, FortuneSite *ends)
VoronoiDiagram2D< TCoordinate > VoronoidDiagramType
void SetBoundary(PointType vorsize)
void deleteEdgeList(FortuneHalfEdge *task)
typename VDMesh::SeedsType SeedsType
static bool comp(PointType arg1, PointType arg2)
unsigned char Pointonbnd(int VertID)
PointType GetSeed(int SeedID)
FortuneHalfEdge * findLeftHE(PointType *p)
Implements the 2-Dimensional Voronoi Diagram.
typename SeedsType::iterator SeedsIterator
std::vector< PointType > SeedsType
typename MeshTraits::CoordinateType CoordinateType
typename MeshTraits::PointType PointType
SmartPointer< Self > Pointer
std::deque< EdgeInfo > EdgeInfoDQ
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....