A Ruby implementation of the Douglas-Peucker algorithm
Ruby
Switch branches/tags
Nothing to show
Clone or download
Latest commit 88bbf52 Sep 4, 2011
Permalink
Failed to load latest commit information.
lib Initial Sep 5, 2011
spec Initial Sep 5, 2011
.gitignore Initial Sep 5, 2011
Gemfile Initial Sep 5, 2011
LICENSE Initial Sep 5, 2011
README.md Initial Sep 5, 2011
Rakefile Initial Sep 5, 2011
douglas_peucker.gemspec Initial Sep 5, 2011

README.md

Douglas-Peucker Algorithm

This algorithm simplifies a line by recursively dividing a line and removing points outside of a predefined threshold. Check out the Wikipedia page to read up on it more.

Usage

>> require "douglas_peucker"
=> true
>> line = [[0, 0], [1, 1], [2, 1], [3, 2.5], [4, 4]]
=> [[0, 0], [1, 1], [2, 1], [3, 2.5], [4, 4]]
>> DouglasPeucker::LineSimplifier.new(line).threshold(1).points
=> [[0, 0], [4, 4]]
>> DouglasPeucker::LineSimplifier.new(line).threshold(0.5).points
=> [[0, 0], [2, 1], [4, 4]]
>> DouglasPeucker::LineSimplifier.new(line).points
=> [[0, 0], [1, 1], [2, 1], [4, 4]]

License

See the LICENSE

Author

Written by Josh Clayton, although the algorithm and its various implementations have been written before.