snap-points-2d
Advanced tools
+2
-1
@@ -11,2 +11,3 @@ var gaussRandom = require('gauss-random') | ||
| var ids = new Int32Array(NUM_POINTS) | ||
| var weights = new Int32Array(NUM_POINTS) | ||
@@ -18,5 +19,5 @@ for(var i=0; i<2*NUM_POINTS; ++i) { | ||
| var timeStart = Date.now() | ||
| var levels = snapPoints(points, levelQT, ids) | ||
| var levels = snapPoints(points, levelQT, ids, weights) | ||
| console.log(Date.now() - timeStart) | ||
| console.log(levels) |
+58
-36
@@ -7,16 +7,17 @@ 'use strict' | ||
| function sortLevels(data_levels, data_points, data_ids, n0) { | ||
| function sortLevels(data_levels, data_points, data_ids, data_weights, n0) { | ||
| if (n0 <= 4*INSERT_SORT_CUTOFF) { | ||
| insertionSort(0, n0 - 1, data_levels, data_points, data_ids) | ||
| insertionSort(0, n0 - 1, data_levels, data_points, data_ids, data_weights) | ||
| } else { | ||
| quickSort(0, n0 - 1, data_levels, data_points, data_ids) | ||
| quickSort(0, n0 - 1, data_levels, data_points, data_ids, data_weights) | ||
| } | ||
| } | ||
| function insertionSort(left, right, data_levels, data_points, data_ids) { | ||
| function insertionSort(left, right, data_levels, data_points, data_ids, data_weights) { | ||
| for(var i=left+1; i<=right; ++i) { | ||
| var a_level = data_levels[i] | ||
| var a_x = data_points[2*i] | ||
| var a_y = data_points[2*i+1] | ||
| var a_id = data_ids[i] | ||
| var a_level = data_levels[i] | ||
| var a_x = data_points[2*i] | ||
| var a_y = data_points[2*i+1] | ||
| var a_id = data_ids[i] | ||
| var a_weight = data_weights[i] | ||
@@ -34,2 +35,3 @@ var j = i | ||
| data_ids[j] = data_ids[j-1] | ||
| data_weights[j] = data_weights[j-1] | ||
| j -= 1 | ||
@@ -42,6 +44,7 @@ } | ||
| data_ids[j] = a_id | ||
| data_weights[j] = a_weight | ||
| } | ||
| } | ||
| function swap(i, j, data_levels, data_points, data_ids) { | ||
| function swap(i, j, data_levels, data_points, data_ids, data_weights) { | ||
| var a_level = data_levels[i] | ||
@@ -51,2 +54,3 @@ var a_x = data_points[2*i] | ||
| var a_id = data_ids[i] | ||
| var a_weight = data_weights[i] | ||
@@ -57,2 +61,3 @@ data_levels[i] = data_levels[j] | ||
| data_ids[i] = data_ids[j] | ||
| data_weights[i] = data_weights[j] | ||
@@ -63,5 +68,6 @@ data_levels[j] = a_level | ||
| data_ids[j] = a_id | ||
| data_weights[j] = a_weight | ||
| } | ||
| function move(i, j, data_levels, data_points, data_ids) { | ||
| function move(i, j, data_levels, data_points, data_ids, data_weights) { | ||
| data_levels[i] = data_levels[j] | ||
@@ -71,5 +77,6 @@ data_points[2*i] = data_points[2*j] | ||
| data_ids[i] = data_ids[j] | ||
| data_weights[i] = data_weights[j] | ||
| } | ||
| function rotate(i, j, k, data_levels, data_points, data_ids) { | ||
| function rotate(i, j, k, data_levels, data_points, data_ids, data_weights) { | ||
| var a_level = data_levels[i] | ||
@@ -79,2 +86,3 @@ var a_x = data_points[2*i] | ||
| var a_id = data_ids[i] | ||
| var a_weight = data_weights[i] | ||
@@ -85,2 +93,3 @@ data_levels[i] = data_levels[j] | ||
| data_ids[i] = data_ids[j] | ||
| data_weights[i] = data_weights[j] | ||
@@ -91,2 +100,3 @@ data_levels[j] = data_levels[k] | ||
| data_ids[j] = data_ids[k] | ||
| data_weights[j] = data_weights[k] | ||
@@ -97,2 +107,3 @@ data_levels[k] = a_level | ||
| data_ids[k] = a_id | ||
| data_weights[k] = a_weight | ||
| } | ||
@@ -102,4 +113,4 @@ | ||
| i, j, | ||
| a_level, a_x, a_y, a_id, | ||
| data_levels, data_points, data_ids) { | ||
| a_level, a_x, a_y, a_id, a_weight, | ||
| data_levels, data_points, data_ids, data_weights) { | ||
@@ -110,2 +121,3 @@ data_levels[i] = data_levels[j] | ||
| data_ids[i] = data_ids[j] | ||
| data_weights[i] = data_weights[j] | ||
@@ -116,2 +128,3 @@ data_levels[j] = a_level | ||
| data_ids[j] = a_id | ||
| data_weights[j] = a_weight | ||
| } | ||
@@ -131,3 +144,3 @@ | ||
| function quickSort(left, right, data_levels, data_points, data_ids) { | ||
| function quickSort(left, right, data_levels, data_points, data_ids, data_weights) { | ||
| var sixth = (right - left + 1) / 6 | 0, | ||
@@ -147,3 +160,3 @@ index1 = left + sixth, | ||
| tmp = 0 | ||
| if(compare(el1, el2, data_levels, data_points, data_ids)) { | ||
| if(compare(el1, el2, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el1 | ||
@@ -153,3 +166,3 @@ el1 = el2 | ||
| } | ||
| if(compare(el4, el5, data_levels, data_points, data_ids)) { | ||
| if(compare(el4, el5, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el4 | ||
@@ -159,3 +172,3 @@ el4 = el5 | ||
| } | ||
| if(compare(el1, el3, data_levels, data_points, data_ids)) { | ||
| if(compare(el1, el3, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el1 | ||
@@ -165,3 +178,3 @@ el1 = el3 | ||
| } | ||
| if(compare(el2, el3, data_levels, data_points, data_ids)) { | ||
| if(compare(el2, el3, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el2 | ||
@@ -171,3 +184,3 @@ el2 = el3 | ||
| } | ||
| if(compare(el1, el4, data_levels, data_points, data_ids)) { | ||
| if(compare(el1, el4, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el1 | ||
@@ -177,3 +190,3 @@ el1 = el4 | ||
| } | ||
| if(compare(el3, el4, data_levels, data_points, data_ids)) { | ||
| if(compare(el3, el4, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el3 | ||
@@ -183,3 +196,3 @@ el3 = el4 | ||
| } | ||
| if(compare(el2, el5, data_levels, data_points, data_ids)) { | ||
| if(compare(el2, el5, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el2 | ||
@@ -189,3 +202,3 @@ el2 = el5 | ||
| } | ||
| if(compare(el2, el3, data_levels, data_points, data_ids)) { | ||
| if(compare(el2, el3, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el2 | ||
@@ -195,3 +208,3 @@ el2 = el3 | ||
| } | ||
| if(compare(el4, el5, data_levels, data_points, data_ids)) { | ||
| if(compare(el4, el5, data_levels, data_points, data_ids, data_weights)) { | ||
| tmp = el4 | ||
@@ -206,2 +219,3 @@ el4 = el5 | ||
| var pivot1_id = data_ids[el2] | ||
| var pivot1_weight = data_weights[el2] | ||
@@ -212,2 +226,3 @@ var pivot2_level = data_levels[el4] | ||
| var pivot2_id = data_ids[el4] | ||
| var pivot2_weight = data_weights[el4] | ||
@@ -244,4 +259,11 @@ var ptr0 = el1 | ||
| move(index2, left, data_levels, data_points, data_ids) | ||
| move(index4, right, data_levels, data_points, data_ids) | ||
| var weight_x = data_weights[ptr0] | ||
| var weight_y = data_weights[ptr2] | ||
| var weight_z = data_weights[ptr4] | ||
| data_weights[ptr5] = weight_x | ||
| data_weights[ptr6] = weight_y | ||
| data_weights[ptr7] = weight_z | ||
| move(index2, left, data_levels, data_points, data_ids, data_weights) | ||
| move(index4, right, data_levels, data_points, data_ids, data_weights) | ||
| for (var k = less; k <= great; ++k) { | ||
@@ -252,3 +274,3 @@ if (comparePivot(k, | ||
| if (k !== less) { | ||
| swap(k, less, data_levels, data_points, data_ids) | ||
| swap(k, less, data_levels, data_points, data_ids, data_weights) | ||
| } | ||
@@ -272,7 +294,7 @@ ++less; | ||
| data_levels, data_points, data_ids)) { | ||
| rotate(k, less, great, data_levels, data_points, data_ids) | ||
| rotate(k, less, great, data_levels, data_points, data_ids, data_weights) | ||
| ++less; | ||
| --great; | ||
| } else { | ||
| swap(k, great, data_levels, data_points, data_ids) | ||
| swap(k, great, data_levels, data_points, data_ids, data_weights) | ||
| --great; | ||
@@ -286,19 +308,19 @@ } | ||
| } | ||
| shufflePivot(left, less-1, pivot1_level, pivot1_x, pivot1_y, pivot1_id, data_levels, data_points, data_ids) | ||
| shufflePivot(right, great+1, pivot2_level, pivot2_x, pivot2_y, pivot2_id, data_levels, data_points, data_ids) | ||
| shufflePivot(left, less-1, pivot1_level, pivot1_x, pivot1_y, pivot1_id, pivot1_weight, data_levels, data_points, data_ids, data_weights) | ||
| shufflePivot(right, great+1, pivot2_level, pivot2_x, pivot2_y, pivot2_id, pivot2_weight, data_levels, data_points, data_ids, data_weights) | ||
| if (less - 2 - left <= INSERT_SORT_CUTOFF) { | ||
| insertionSort(left, less - 2, data_levels, data_points, data_ids) | ||
| insertionSort(left, less - 2, data_levels, data_points, data_ids, data_weights) | ||
| } else { | ||
| quickSort(left, less - 2, data_levels, data_points, data_ids) | ||
| quickSort(left, less - 2, data_levels, data_points, data_ids, data_weights) | ||
| } | ||
| if (right - (great + 2) <= INSERT_SORT_CUTOFF) { | ||
| insertionSort(great + 2, right, data_levels, data_points, data_ids) | ||
| insertionSort(great + 2, right, data_levels, data_points, data_ids, data_weights) | ||
| } else { | ||
| quickSort(great + 2, right, data_levels, data_points, data_ids) | ||
| quickSort(great + 2, right, data_levels, data_points, data_ids, data_weights) | ||
| } | ||
| if (great - less <= INSERT_SORT_CUTOFF) { | ||
| insertionSort(less, great, data_levels, data_points, data_ids) | ||
| insertionSort(less, great, data_levels, data_points, data_ids, data_weights) | ||
| } else { | ||
| quickSort(less, great, data_levels, data_points, data_ids) | ||
| quickSort(less, great, data_levels, data_points, data_ids, data_weights) | ||
| } | ||
| } |
+1
-1
| { | ||
| "name": "snap-points-2d", | ||
| "version": "2.0.0", | ||
| "version": "3.0.0", | ||
| "description": "snap round 2d points", | ||
@@ -5,0 +5,0 @@ "main": "snap.js", |
+2
-1
@@ -13,3 +13,3 @@ snap-points-2d | ||
| #### `var hlod = require('snap-points-2d')(points, ids, [, bounds])` | ||
| #### `var hlod = require('snap-points-2d')(points, ids, weights, [, bounds])` | ||
| Reorders the points hierarchically such that those which are drawn at the same pixel coordinate are grouped together. | ||
@@ -19,2 +19,3 @@ | ||
| * `ids` is an array which gets the reordered index of the points | ||
| * `weights` is an array of point weights, which can be used for transparent rendering | ||
| * `bounds` is an optional array of 4 values giving the bounding box of the points | ||
@@ -21,0 +22,0 @@ |
+3
-2
@@ -39,3 +39,3 @@ 'use strict' | ||
| function snapPoints(points, ids, bounds) { | ||
| function snapPoints(points, ids, weights, bounds) { | ||
| var n = points.length >>> 1 | ||
@@ -77,2 +77,3 @@ if(n < 1) { | ||
| var count = end - start | ||
| weights[ptr] = count | ||
| levels[ptr++] = level | ||
@@ -98,3 +99,3 @@ for(var i=0; i<2; ++i) { | ||
| snapRec(lox, loy, diam, 0, n, 0) | ||
| sortLevels(levels, points, ids, n) | ||
| sortLevels(levels, points, ids, weights, n) | ||
@@ -101,0 +102,0 @@ var lod = [] |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
16363
9.53%420
5.79%31
3.33%0
-100%