You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+16-2Lines changed: 16 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,14 @@
2
2
3
3
FortuneSwift is a swift framework that uses Fortune's Algorithm to generate Voronoi diagrams and Delaunay triangulations from a set of points on a 2D plane. Fortune's Algorithm has a time complexity of `O(n log n)`, and a space complexity of `O(n)`. This framework is compatible with iOS 8+, macOS 10.13+.
- Add `.package(url: "https://github.com/TateLiang/FortuneSwift.git", from: "1.1.5")` to your `Package.swift` file's `dependencies`.
12
20
- Update your packages using `$ swift package update`.
13
21
14
-
15
22
## Usage
16
23
17
24
### Setup
@@ -80,9 +87,16 @@ func walk() -> [HalfEdge]?
80
87
-`incidentSite` is `nil` if it is an edge on the exterior border of the bounding rectangle.
81
88
-`walk()` outputs an ring of the `HalfEdges` defining the cell, or `nil` if the edges don't form a ring (should not happen)
82
89
90
+
## Details
91
+
92
+
##### Problem Definition
93
+
A voronoi diagram is a tesselation of cells in a plane, representing the points closest to a particular point. For each voronoi "site", its region is defined as the points closer to it than any other site. Voronoi diagrams are also dual-graphs of the Delaunay triangulation, where each edge of the Voronoi diagram corresponds to an adjacent edge in the Delaunay triangulation between the two incident points. Voronoi diagrams have a variety of applications including in Astronomy, Art, Biology, Robotics, and Physics.
94
+
95
+
##### Algorithm
96
+
[Fortune's Algorithm](https://en.wikipedia.org/wiki/Fortune%27s_algorithm) is a sweep line algorithm in computational geometry. Like problems such as convex hulls or segment intersection, an event queue is maintained through a priority queue data structure. Fortune's Algorithm makes use of a binary search tree to also maintain a "beach line", representing the currently known cells based on the location of the sweep line. At the end of the algorithm, the infinite edges can be bounded by a polygon, in this case, a rectangle.
97
+
83
98
## Issues
84
99
85
100
- Points outside of the bounding box will still effect the voronoi diagram, as the box simply bounds all of the infinite edges.
86
101
- The algorithm does not work with the edge case where all points are collinear.
87
102
- The algorithm does not work with the edge case where there are multiple sites at the same location.
0 commit comments