d3.geom.voronoi: always assign input data.

This commit is contained in:
Jason Davies 2013-03-19 16:02:09 +00:00
Родитель 2f1c62deea
Коммит 112ec6fac8
4 изменённых файлов: 24 добавлений и 19 удалений

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

@ -4070,8 +4070,8 @@ d3 = function() {
return triangles;
};
d3.geom.voronoi = function(points) {
var size = null, x = d3_svg_lineX, y = d3_svg_lineY, clip, compat;
if (compat = arguments.length) return voronoi(points);
var size = null, x = d3_svg_lineX, y = d3_svg_lineY, clip;
if (arguments.length) return voronoi(points);
function voronoi(data) {
var points = [], polygons = data.map(function() {
return [];
@ -4139,7 +4139,7 @@ d3 = function() {
}
});
if (clip) for (i = 0; i < n; ++i) clip(polygons[i]);
if (!compat) for (i = 0; i < n; ++i) polygons[i].point = data[i];
for (i = 0; i < n; ++i) polygons[i].point = data[i];
return polygons;
}
voronoi.x = function(_) {

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

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

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

@ -30,11 +30,10 @@ d3.geom.voronoi = function(points) {
var size = null,
x = d3_svg_lineX,
y = d3_svg_lineY,
clip,
compat;
clip;
// For backwards-compatibility.
if (compat = arguments.length) return voronoi(points);
if (arguments.length) return voronoi(points);
function voronoi(data) {
var points = [],
@ -127,7 +126,7 @@ d3.geom.voronoi = function(points) {
});
if (clip) for (i = 0; i < n; ++i) clip(polygons[i]);
if (!compat) for (i = 0; i < n; ++i) polygons[i].point = data[i];
for (i = 0; i < n; ++i) polygons[i].point = data[i];
return polygons;
}

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

@ -144,7 +144,7 @@ suite.addBatch({
}
},
"the default voronoi layout used directly": {
"the default voronoi layout applied directly": {
"with zero points": {
"returns the empty array": function(voronoi) {
assert.deepEqual(voronoi([]), []);
@ -152,30 +152,30 @@ suite.addBatch({
},
"with one point": {
"returns the semi-infinite bounding box": function(voronoi) {
assert.deepEqual(voronoi([[50, 50]], 100, 100), [[[-1000000,-1000000],[-1000000,1000000],[1000000,1000000],[1000000,-1000000]]]);
assert.deepEqual(asArray(voronoi([[50, 50]], 100, 100)), [[[-1000000,-1000000],[-1000000,1000000],[1000000,1000000],[1000000,-1000000]]]);
}
},
"with two points": {
"separated by a line at 90° (vertical)": function(voronoi) {
assert.deepEqual(voronoi([[50, 25], [50, 75]], 100, 100), [[[-1000000,50],[1000000,50],[-1000000,-1000000],[1000000,-1000000]],[[-1000000,50],[1000000,50],[-1000000,1000000],[1000000,1000000]]]);
assert.deepEqual(voronoi([[50, 75], [50, 25]], 100, 100), [[[-1000000,50],[1000000,50],[-1000000,1000000],[1000000,1000000]],[[-1000000,50],[1000000,50],[-1000000,-1000000],[1000000,-1000000]]]);
assert.deepEqual(asArray(voronoi([[50, 25], [50, 75]], 100, 100)), [[[-1000000,50],[1000000,50],[-1000000,-1000000],[1000000,-1000000]],[[-1000000,50],[1000000,50],[-1000000,1000000],[1000000,1000000]]]);
assert.deepEqual(asArray(voronoi([[50, 75], [50, 25]], 100, 100)), [[[-1000000,50],[1000000,50],[-1000000,1000000],[1000000,1000000]],[[-1000000,50],[1000000,50],[-1000000,-1000000],[1000000,-1000000]]]);
},
"separated by a line at 0° (horizontal)": function(voronoi) {
assert.deepEqual(voronoi([[25, 50], [75, 50]], 100, 100), [[[50,1000000],[50,-1000000],[-1000000,-1000000],[-1000000,1000000]],[[50,-1000000],[50,1000000],[1000000,-1000000],[1000000,1000000]]]);
assert.deepEqual(voronoi([[75, 50], [25, 50]], 100, 100), [[[50,-1000000],[50,1000000],[1000000,-1000000],[1000000,1000000]],[[50,1000000],[50,-1000000],[-1000000,-1000000],[-1000000,1000000]]]);
assert.deepEqual(asArray(voronoi([[25, 50], [75, 50]], 100, 100)), [[[50,1000000],[50,-1000000],[-1000000,-1000000],[-1000000,1000000]],[[50,-1000000],[50,1000000],[1000000,-1000000],[1000000,1000000]]]);
assert.deepEqual(asArray(voronoi([[75, 50], [25, 50]], 100, 100)), [[[50,-1000000],[50,1000000],[1000000,-1000000],[1000000,1000000]],[[50,1000000],[50,-1000000],[-1000000,-1000000],[-1000000,1000000]]]);
},
"separated by a line at 45° (diagonal)": function(voronoi) {
assert.deepEqual(voronoi([[25, 25], [75, 75]], 100, 100), [[[-999900,1000000],[1000100,-1000000],[-1000000,-1000000]],[[-999900,1000000],[1000100,-1000000],[1000000,1000000]]]);
assert.deepEqual(voronoi([[75, 25], [25, 75]], 100, 100), [[[-1000000,-1000000],[1000000,1000000],[1000000,-1000000]],[[-1000000,-1000000],[1000000,1000000],[-1000000,1000000]]]);
assert.deepEqual(asArray(voronoi([[25, 25], [75, 75]], 100, 100)), [[[-999900,1000000],[1000100,-1000000],[-1000000,-1000000]],[[-999900,1000000],[1000100,-1000000],[1000000,1000000]]]);
assert.deepEqual(asArray(voronoi([[75, 25], [25, 75]], 100, 100)), [[[-1000000,-1000000],[1000000,1000000],[1000000,-1000000]],[[-1000000,-1000000],[1000000,1000000],[-1000000,1000000]]]);
},
"separated by an arbitrary diagonal": function(voronoi) {
assert.deepEqual(voronoi([[25, 25], [50, 75]], 100, 100), [[[-1000000,500068.75],[1000000,-499931.25],[-1000000,-1000000],[1000000,-1000000]],[[-1000000,500068.75],[1000000,-499931.25],[-1000000,1000000],[1000000,1000000]]]);
assert.deepEqual(voronoi([[25, 25], [75, 50]], 100, 100), [[[-499931.25,1000000],[500068.75,-1000000],[-1000000,1000000],[1000000,1000000]], [[-499931.25,1000000],[500068.75,-1000000],[-1000000,-1000000],[1000000,-1000000]]]);
assert.deepEqual(asArray(voronoi([[25, 25], [50, 75]], 100, 100)), [[[-1000000,500068.75],[1000000,-499931.25],[-1000000,-1000000],[1000000,-1000000]],[[-1000000,500068.75],[1000000,-499931.25],[-1000000,1000000],[1000000,1000000]]]);
assert.deepEqual(asArray(voronoi([[25, 25], [75, 50]], 100, 100)), [[[-499931.25,1000000],[500068.75,-1000000],[-1000000,1000000],[1000000,1000000]], [[-499931.25,1000000],[500068.75,-1000000],[-1000000,-1000000],[1000000,-1000000]]]);
}
},
"with three points": {
"collinear": function(voronoi) {
assert.deepEqual(voronoi([[25, 25], [50, 50], [75, 75]], 100, 100), [[[-999925,1000000],[1000075,-1000000],[-1000000,-1000000]],[[-999925,1000000],[-999875,1000000],[1000125,-1000000],[1000075,-1000000]],[[-999875,1000000],[1000125,-1000000],[1000000,1000000]]]);
assert.deepEqual(asArray(voronoi([[25, 25], [50, 50], [75, 75]], 100, 100)), [[[-999925,1000000],[1000075,-1000000],[-1000000,-1000000]],[[-999925,1000000],[-999875,1000000],[1000125,-1000000],[1000075,-1000000]],[[-999875,1000000],[1000125,-1000000],[1000000,1000000]]]);
}
}
}
@ -183,3 +183,9 @@ suite.addBatch({
});
suite.export(module);
function asArray(array) {
return array.map(function(d) {
return Array.prototype.slice.call(d);
});
}