Code Monkey home page Code Monkey logo

voronoilib's Introduction

VoronoiLib

C# implementation of Fortune's Algorithm. Includes MonoGame example. 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

  • The library (VoronoiLib) is compiled for .net standard 1.1.
  • The demo (VoronoiDemo) is compiled for the MonoGame runtime
  • The speed test (VoronoiSpeedTest) is compiled for .NET Core

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

Use

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

#MonoGame Example: ##Voronoi Cells in Red. Delaunay Triangulation in Yellow Controls:

  • V: Show/ Hide Voronoi Diagram
  • D: Show/ Hide Delaunay Triangulation
  • W: Enable/ Disable Point Wiggle
  • G: Generate a New Set of Points
  • C: Clear the Screen
  • Click: Insert a Point

Voronoi

##Implementation inspired by:

Feel free to use the code under MIT license. However, if you find the code useful, feel free to send me a message or make a link back to the repo.

voronoilib's People

Contributors

zalgo2462 avatar chrisvm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.