geonome / simplify2-js

A library for doing fast line simplification (radial distance, ramer - douglas - peucker) in JavaScript.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

simplify2

This is another version of Vladimir Agafonkin's awesome simplify.js library for doing high-performance polyline simplification in JavaScript primarily using the Ramer-Douglas-Peucker simplification algorithm.

Simplify2.js is a collection of similar simplification algorithms that has been somewhat optimized. The douglasPeucker() function does not require any temporary internal memory constructs with a size proportional to the input (for marker array and stack); the use of recursion of cause requires use of some number of stack frames - but this will in practice be very few. The math and flow has also been tweaked so that fewer calculations are needed.

A quite noticeable speedup can be observed on large inputs (>100K+ point) with a low tolerance < 1 for high fidelity output (e.g. needed for LOD generation).

Additional test cases have been added.

Please see in-code API docs.

Usage

var simplify = require('simplify2');
...
var points = [...], // array of {x, y} objects.
    tolerance = 0.2;
    
// run the douglas-peucker simplification 
var simplifiedPoints = simplify.douglasPeucker(points, tolerance);

About

A library for doing fast line simplification (radial distance, ramer - douglas - peucker) in JavaScript.

License:BSD 2-Clause "Simplified" License


Languages

Language:JavaScript 100.0%