Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::VoronoiDiagramFortune Class Reference

Fortune sweep-line Voronoi construction. More...

#include <geom_algorithms.H>

Collaboration diagram for Aleph::VoronoiDiagramFortune:
[legend]

Classes

struct  Arc
 Arc in the beach-line state structure. More...
 
struct  Event
 Forward declaration of beach-line arc. More...
 
struct  EventCmp
 Comparator for prioritizing events in the sweep-line. More...
 
struct  TriKey
 Key for identifying a triangle by its vertex indices. More...
 

Public Types

using Edge = VoronoiDiagramFromDelaunay::Edge
 Type for Voronoi edges.
 
using Cell = VoronoiDiagramFromDelaunay::Cell
 Type for Voronoi cells.
 
using ClippedCell = VoronoiDiagramFromDelaunay::ClippedCell
 Type for clipped Voronoi cells.
 
using Result = VoronoiDiagramFromDelaunay::Result
 Complete result structure.
 

Public Member Functions

Result operator() (const DynList< Point > &pts) const
 Compute the Voronoi diagram for a list of points.
 
Result operator() (const std::initializer_list< Point > il) const
 Compute the Voronoi diagram from an initializer list.
 
Array< ClippedCellclipped_cells (const DynList< Point > &pts, const Polygon &clip) const
 Compute Voronoi cells clipped to a bounding polygon.
 
Array< ClippedCellclipped_cells (const std::initializer_list< Point > il, const Polygon &clip) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Static Private Member Functions

static double as_double (const Geom_Number &v)
 
static bool all_collinear (const Array< Point > &pts)
 
static DelaunayTriangulationBowyerWatson::IndexedTriangle normalized_triangle (const size_t i, const size_t j, const size_t k, const Array< Point > &sites)
 
static double breakpoint_x (const Point &left_site, const Point &right_site, const double sweepline_y)
 
static Arclocate_arc (Arc *head, const Array< Point > &sites, const double x, const double sweepline_y)
 
static void invalidate_circle_event (Arc *arc)
 
static void enqueue_circle_event (Arc *arc, const double sweepline_y, const Array< Point > &sites, DynBinHeap< Event *, EventCmp > &queue, Array< std::unique_ptr< Event > > &event_pool, size_t &next_event_id)
 
static bool is_valid_delaunay (const DelaunayTriangulationBowyerWatson::Result &dt)
 
static DelaunayTriangulationBowyerWatson::Result triangulate_sweep (const Array< Point > &sites)
 

Private Attributes

VoronoiDiagramFromDelaunay voronoi_
 
DelaunayTriangulationBowyerWatson fallback_
 

Static Private Attributes

static constexpr double kEps = 1e-9
 

Detailed Description

Fortune sweep-line Voronoi construction.

This class computes a Delaunay triangulation via Fortune's beach-line sweep (site + circle events) and then reuses VoronoiDiagramFromDelaunay to build Voronoi vertices/edges/cells, avoiding duplicated dual logic.

Fortune's algorithm is a sweep-line algorithm for generating Voronoi diagrams in O(n log n) time.

Author
Leandro Rabindranath León
Alejandro J. Mujica

Definition at line 4261 of file geom_algorithms.H.

Member Typedef Documentation

◆ Cell

◆ ClippedCell

◆ Edge

◆ Result

Member Function Documentation

◆ all_collinear()

static bool Aleph::VoronoiDiagramFortune::all_collinear ( const Array< Point > &  pts)
inlinestaticprivate

◆ as_double()

static double Aleph::VoronoiDiagramFortune::as_double ( const Geom_Number v)
inlinestaticprivate

◆ breakpoint_x()

static double Aleph::VoronoiDiagramFortune::breakpoint_x ( const Point left_site,
const Point right_site,
const double  sweepline_y 
)
inlinestaticprivate

◆ clipped_cells() [1/2]

Array< ClippedCell > Aleph::VoronoiDiagramFortune::clipped_cells ( const DynList< Point > &  pts,
const Polygon clip 
) const
inline

Compute Voronoi cells clipped to a bounding polygon.

Parameters
ptsInput list of sites.
clipBounding polygon used for clipping.
Returns
Array of clipped cells.

Definition at line 4697 of file geom_algorithms.H.

References Aleph::VoronoiDiagramFromDelaunay::clipped_cells_indexed(), and Aleph::divide_and_conquer_partition_dp().

Referenced by clipped_cells(), and TEST_F().

◆ clipped_cells() [2/2]

Array< ClippedCell > Aleph::VoronoiDiagramFortune::clipped_cells ( const std::initializer_list< Point il,
const Polygon clip 
) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 4704 of file geom_algorithms.H.

References Aleph::DynList< T >::append(), clipped_cells(), and Aleph::divide_and_conquer_partition_dp().

◆ enqueue_circle_event()

◆ invalidate_circle_event()

static void Aleph::VoronoiDiagramFortune::invalidate_circle_event ( Arc arc)
inlinestaticprivate

◆ is_valid_delaunay()

static bool Aleph::VoronoiDiagramFortune::is_valid_delaunay ( const DelaunayTriangulationBowyerWatson::Result dt)
inlinestaticprivate

◆ locate_arc()

static Arc * Aleph::VoronoiDiagramFortune::locate_arc ( Arc head,
const Array< Point > &  sites,
const double  x,
const double  sweepline_y 
)
inlinestaticprivate

◆ normalized_triangle()

static DelaunayTriangulationBowyerWatson::IndexedTriangle Aleph::VoronoiDiagramFortune::normalized_triangle ( const size_t  i,
const size_t  j,
const size_t  k,
const Array< Point > &  sites 
)
inlinestaticprivate

Definition at line 4354 of file geom_algorithms.H.

References Aleph::CW, k, and Aleph::orientation().

Referenced by triangulate_sweep().

◆ operator()() [1/2]

Result Aleph::VoronoiDiagramFortune::operator() ( const DynList< Point > &  pts) const
inline

Compute the Voronoi diagram for a list of points.

Parameters
ptsInput list of sites.
Returns
Result structure containing the diagram components.

Definition at line 4661 of file geom_algorithms.H.

References Aleph::divide_and_conquer_partition_dp(), fallback_, is_valid_delaunay(), triangulate_sweep(), and voronoi_.

◆ operator()() [2/2]

Result Aleph::VoronoiDiagramFortune::operator() ( const std::initializer_list< Point il) const
inline

Compute the Voronoi diagram from an initializer list.

Parameters
ilInitializer list of points.
Returns
Result structure containing the diagram components.

Definition at line 4682 of file geom_algorithms.H.

References Aleph::DynList< T >::append(), and Aleph::divide_and_conquer_partition_dp().

◆ triangulate_sweep()

Member Data Documentation

◆ fallback_

DelaunayTriangulationBowyerWatson Aleph::VoronoiDiagramFortune::fallback_
private

Definition at line 4334 of file geom_algorithms.H.

Referenced by operator()().

◆ kEps

constexpr double Aleph::VoronoiDiagramFortune::kEps = 1e-9
staticconstexprprivate

◆ voronoi_

VoronoiDiagramFromDelaunay Aleph::VoronoiDiagramFortune::voronoi_
private

Definition at line 4333 of file geom_algorithms.H.

Referenced by operator()().


The documentation for this class was generated from the following file: