d3.geom.voronoi: always assign input data.
This commit is contained in:
Родитель
2f1c62deea
Коммит
112ec6fac8
|
@ -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(_) {
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче