Fix quadtree find with accessors

This commit is contained in:
Thomas Preusse 2014-12-31 01:05:29 +01:00
Родитель 4e4709ce47
Коммит 743276d0c2
4 изменённых файлов: 12 добавлений и 4 удалений

2
d3.js поставляемый
Просмотреть файл

@ -5638,7 +5638,7 @@
(function find(node, x1, y1, x2, y2) {
if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;
if (point = node.point) {
var point, dx = x - point[0], dy = y - point[1], distance2 = dx * dx + dy * dy;
var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;
if (distance2 < minDistance2) {
var distance = Math.sqrt(minDistance2 = distance2);
x0 = x - distance, y0 = y - distance;

2
d3.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -210,8 +210,8 @@ function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {
// visit this point
if (point = node.point) {
var point,
dx = x - point[0],
dy = y - point[1],
dx = x - node.x,
dy = y - node.y,
distance2 = dx * dx + dy * dy;
if (distance2 < minDistance2) {
var distance = Math.sqrt(minDistance2 = distance2);

Просмотреть файл

@ -47,6 +47,14 @@ suite.addBatch({
assert.deepEqual(q.find([7.5, 7.5]), [7, 7]);
assert.deepEqual(q.find([.1, 15.9]), [0, 16]);
assert.deepEqual(q.find([15.9, 15.9]), [16, 16]);
},
"can find with accessors": function(q) {
q.x(function(d) { return d.x; });
q.y(function(d) { return d.y; });
var point = {x: 0, y: 0, arbitrary: 1};
q = q([point]);
assert.deepEqual(q.find([0, 0]), point);
}
},
"the quadtree applied directly": {