sesopenko / VoronoiLib

C# implementation of Fortunes Algorithm. Includes MonoGame example
MIT License
0 stars 2 forks source link

VoronoiLib

build workflow

C# implementation of Fortune's Algorithm, originally written by Logan Lembke and updated with nuget unit tests and package publishing to nuget. Unlike several implemenations of Fortune's Algorithm, this implementation guarantees O(n ln(n)) performance by way of a specialized Red Black Tree (Credit: Raymond Hill).

Dependencies

As such, projects should be able to be built on Linux or OS X.

Use

Install with dotnet CLI:

dotnet add package VoronoiLib

Create points, run algorithm.

var points = new List<FortuneSite> {
  new FortuneSite(100, 200),
  new FortuneSite(500, 200),
  new FortuneSite(300, 300)
}
//FortunesAlgorithm.Run(points, min x, min y, max x, max y)
LinkedList<VEdge> = FortunesAlgorithm.Run(points, 0, 0, 800, 800);

//VEdge.Start is a VPoint with location VEdge.Start.X and VEdge.End.Y
//VEdge.End is the ending point for the edge
//FortuneSite.Neighbors contains the site's neighbors in the Delaunay Triangulation

Issues and feature suggestions

See the issue manager of the repo to see work in progress and to suggest new features.

Implementation inspired by:

Feel free to use the code under MIT license. However, if you find the code useful, feel free to send mysel and/or Logan Lembke a message or make a link back to the repos.