simplify-js
Advanced tools
Comparing version 1.2.1 to 1.2.2
{ | ||
"name": "simplify-js", | ||
"version": "1.2.1", | ||
"version": "1.2.2", | ||
"description": "A high-performance JavaScript 2D/3D polyline simplification library", | ||
@@ -19,8 +19,9 @@ "homepage": "http://mourner.github.com/simplify-js/", | ||
"devDependencies": { | ||
"benchmark": "^1.0.0", | ||
"faucet": "0.0.1", | ||
"tape": "^2.12.3", | ||
"jshint": "^2.5.0" | ||
"jshint": "^2.6.3", | ||
"tape": "^3.5.0" | ||
}, | ||
"scripts": { | ||
"test": "jshint simplify.js test.js && node test.js | faucet" | ||
"test": "jshint simplify.js test/test.js && node test/test.js | faucet" | ||
}, | ||
@@ -27,0 +28,0 @@ "jshintConfig": { |
@@ -9,2 +9,3 @@ Simplify.js is a high-performance JavaScript polyline simplification library by Vladimir Agafonkin, extracted from [Leaflet](http://leafletjs.com). | ||
* PHP: [AKeN / simplify-php](https://github.com/AKeN/simplify-php) (by Rotari Gheorghe) | ||
* PHP: [andreychumak / simplify-php](https://github.com/andreychumak/simplify-php) (by Andrey Chumak) | ||
* Java: [ekeneijeoma / simplify-java](https://github.com/ekeneijeoma/simplify-java) (by Ekene Ijeoma) | ||
@@ -15,1 +16,4 @@ * Java: [hgoebl / simplify-java](https://github.com/hgoebl/simplify-java) (by Heinrich Göbl) | ||
* Rust: [calvinmetcalf / simplify-rs](https://github.com/calvinmetcalf/simplify-rs) (by Calvin Metcalf) | ||
* Ruby: [odlp / simplify_rb](https://github.com/odlp/simplify_rb) (by Oliver Peate) | ||
* Go: [yrsh / simplify_go](https://github.com/yrsh/simplify-go) (by Anton Korotkikh) | ||
* C# (Portable): [imshz / simplify-net](https://github.com/imshz/simplify-net) (by Shees Ul-Hassan) |
@@ -71,43 +71,31 @@ /* | ||
// simplification using optimized Douglas-Peucker algorithm with recursion elimination | ||
function simplifyDouglasPeucker(points, sqTolerance) { | ||
function simplifyDPStep(points, first, last, sqTolerance, simplified) { | ||
var maxSqDist = 0, | ||
index; | ||
var len = points.length, | ||
MarkerArray = typeof Uint8Array !== 'undefined' ? Uint8Array : Array, | ||
markers = new MarkerArray(len), | ||
first = 0, | ||
last = len - 1, | ||
stack = [], | ||
newPoints = [], | ||
i, maxSqDist, sqDist, index; | ||
for (var i = first + 1; i < last; i++) { | ||
var sqDist = getSqSegDist(points[i], points[first], points[last]); | ||
markers[first] = markers[last] = 1; | ||
while (last) { | ||
maxSqDist = 0; | ||
for (i = first + 1; i < last; i++) { | ||
sqDist = getSqSegDist(points[i], points[first], points[last]); | ||
if (sqDist > maxSqDist) { | ||
index = i; | ||
maxSqDist = sqDist; | ||
} | ||
if (sqDist > maxSqDist) { | ||
index = i; | ||
maxSqDist = sqDist; | ||
} | ||
if (maxSqDist > sqTolerance) { | ||
markers[index] = 1; | ||
stack.push(first, index, index, last); | ||
} | ||
last = stack.pop(); | ||
first = stack.pop(); | ||
} | ||
for (i = 0; i < len; i++) { | ||
if (markers[i]) newPoints.push(points[i]); | ||
if (maxSqDist > sqTolerance) { | ||
if (index - first > 1) simplifyDPStep(points, first, index, sqTolerance, simplified); | ||
simplified.push(points[index]); | ||
if (last - index > 1) simplifyDPStep(points, index, last, sqTolerance, simplified); | ||
} | ||
} | ||
return newPoints; | ||
// simplification using Ramer-Douglas-Peucker algorithm | ||
function simplifyDouglasPeucker(points, sqTolerance) { | ||
var last = points.length - 1; | ||
var simplified = [points[0]]; | ||
simplifyDPStep(points, 0, last, sqTolerance, simplified); | ||
simplified.push(points[last]); | ||
return simplified; | ||
} | ||
@@ -118,2 +106,4 @@ | ||
if (points.length <= 2) return points; | ||
var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1; | ||
@@ -120,0 +110,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
32083
7
143
18
4