Skip to content

Commit 7ec55e8

Browse files
committed
replace kdtree by point-cluster
1 parent 9362b36 commit 7ec55e8

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@
8686
"glslify": "^6.1.1",
8787
"has-hover": "^1.0.1",
8888
"has-passive-events": "^1.0.0",
89-
"kdgrass": "^1.0.1",
9089
"mapbox-gl": "0.44.1",
9190
"matrix-camera-controller": "^2.1.3",
9291
"mouse-change": "^1.4.0",

src/traces/scattergl/index.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var createRegl = require('regl');
1212
var createScatter = require('regl-scatter2d');
1313
var createLine = require('regl-line2d');
1414
var createError = require('regl-error2d');
15-
var kdtree = require('kdgrass');
15+
var cluster = require('point-cluster');
1616
var arrayRange = require('array-range');
1717

1818
var Registry = require('../../registry');
@@ -72,7 +72,7 @@ function calc(gd, trace) {
7272
// and it is also
7373
if(xa.type !== 'log' && ya.type !== 'log') {
7474
// FIXME: delegate this to webworker
75-
stash.tree = kdtree(positions, 512);
75+
stash.tree = cluster(positions);
7676
} else {
7777
var ids = stash.ids = new Array(count);
7878
for(i = 0; i < count; i++) {
@@ -104,6 +104,12 @@ function calc(gd, trace) {
104104
if(opts.line && !scene.line2d) scene.line2d = true;
105105
if((opts.errorX || opts.errorY) && !scene.error2d) scene.error2d = true;
106106

107+
// FIXME: organize it in a more appropriate manner, probably in sceneOptions
108+
// put point-cluster instance for optimized regl calc
109+
if(opts.marker) {
110+
opts.marker.cluster = stash.tree;
111+
}
112+
107113
// save scene opts batch
108114
scene.lineOptions.push(opts.line);
109115
scene.errorXOptions.push(opts.errorX);
@@ -547,10 +553,7 @@ function plot(gd, subplot, cdata) {
547553
// create select2d
548554
if(!scene.select2d) {
549555
// create scatter instance by cloning scatter2d
550-
scene.select2d = createScatter(
551-
fullLayout._glcanvas.data()[1].regl,
552-
{clone: scene.scatter2d}
553-
);
556+
scene.select2d = createScatter(fullLayout._glcanvas.data()[1].regl);
554557
}
555558

556559
if(scene.scatter2d && scene.selectBatch && scene.selectBatch.length) {

src/traces/scatterpolargl/index.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
'use strict';
1010

11-
var kdtree = require('kdgrass');
11+
var cluster = require('point-cluster');
1212
var isNumeric = require('fast-isnumeric');
1313

1414
var ScatterGl = require('../scattergl');
@@ -106,6 +106,12 @@ function plot(container, subplot, cdata) {
106106
if(options.line && !scene.line2d) scene.line2d = true;
107107
if((options.errorX || options.errorY) && !scene.error2d) scene.error2d = true;
108108

109+
stash.tree = cluster(positions);
110+
111+
if(options.marker) {
112+
options.marker.cluster = stash.tree;
113+
}
114+
109115
// bring positions to selected/unselected options
110116
if(subTypes.hasMarkers(trace)) {
111117
options.selected.positions = options.unselected.positions = options.marker.positions;
@@ -132,7 +138,6 @@ function plot(container, subplot, cdata) {
132138
stash.theta = thetaArray;
133139
stash.positions = positions;
134140
stash.count = count;
135-
stash.tree = kdtree(positions, 512);
136141
});
137142

138143
return ScatterGl.plot(container, subplot, cdata);

0 commit comments

Comments
 (0)