Remove resampling temporary state.
This commit is contained in:
Родитель
31d59cfc93
Коммит
6091249215
|
@ -6385,15 +6385,9 @@
|
|||
function resamplePoint(point) {
|
||||
return projectPoint(point[0], point[1]);
|
||||
}
|
||||
var λ00, φ00, λ0, sinφ0, cosφ0, x0, y0;
|
||||
function resampleLine(coordinates) {
|
||||
if (!(n = coordinates.length)) return coordinates;
|
||||
var n, i = 0, p = coordinates[0], λ, φ, line;
|
||||
line = [ p = projectPoint(λ00 = λ0 = p[0], φ00 = φ = p[1]) ];
|
||||
sinφ0 = Math.sin(φ);
|
||||
cosφ0 = Math.cos(φ);
|
||||
x0 = p[0];
|
||||
y0 = p[1];
|
||||
var n, i = 0, p = coordinates[0], λ, φ, λ0, line = [ p = projectPoint(λ0 = p[0], φ = p[1]) ], sinφ0 = Math.sin(φ), cosφ0 = Math.cos(φ), x0 = p[0], y0 = p[1];
|
||||
while (++i < n) {
|
||||
p = coordinates[i];
|
||||
p = projectPoint(λ = p[0], φ = p[1]);
|
||||
|
@ -6403,11 +6397,12 @@
|
|||
return line;
|
||||
}
|
||||
function resamplePolygon(coordinates) {
|
||||
var n = coordinates.length, i = -1, polygon = [], ring, p;
|
||||
var n = coordinates.length, i = -1, polygon = [], ring, resampled, l, m, p;
|
||||
while (++i < n) {
|
||||
polygon.push(ring = resampleLine(coordinates[i]));
|
||||
p = projectPoint(λ00, φ00);
|
||||
resampleLineTo(x0, y0, λ0, sinφ0, cosφ0, p[0], p[1], λ00, Math.sin(φ00), Math.cos(φ00), maxDepth, ring);
|
||||
polygon.push(resampled = resampleLine(ring = coordinates[i]));
|
||||
m = ring.length - 1;
|
||||
l = resampled.length - 1;
|
||||
resampleLineTo((p = ring[0])[0], p[1], (p = resampled[0])[0], Math.sin(p[1]), Math.cos(p[1]), (p = ring[m])[0], p[1], (p = resampled[l])[0], Math.sin(p[1]), Math.cos(p[1]), maxDepth, ring);
|
||||
}
|
||||
return polygon;
|
||||
}
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -137,16 +137,6 @@ function d3_geo_projectionMutator(projectAt) {
|
|||
return projectPoint(point[0], point[1]);
|
||||
}
|
||||
|
||||
// Temporary state used by resampleLine & resamplePolygon.
|
||||
// TODO find a cleaner way to encapsulate this temporary state?
|
||||
var λ00,
|
||||
φ00,
|
||||
λ0,
|
||||
sinφ0,
|
||||
cosφ0,
|
||||
x0,
|
||||
y0;
|
||||
|
||||
// TODO rename: this is not just resampling, it also projects and transforms!
|
||||
function resampleLine(coordinates) {
|
||||
if (!(n = coordinates.length)) return coordinates;
|
||||
|
@ -155,11 +145,11 @@ function d3_geo_projectionMutator(projectAt) {
|
|||
p = coordinates[0],
|
||||
λ,
|
||||
φ,
|
||||
line;
|
||||
line = [p = projectPoint(λ00 = λ0 = p[0], φ00 = φ = p[1])];
|
||||
sinφ0 = Math.sin(φ);
|
||||
cosφ0 = Math.cos(φ);
|
||||
x0 = p[0];
|
||||
λ0,
|
||||
line = [p = projectPoint(λ0 = p[0], φ = p[1])],
|
||||
sinφ0 = Math.sin(φ),
|
||||
cosφ0 = Math.cos(φ),
|
||||
x0 = p[0],
|
||||
y0 = p[1];
|
||||
while (++i < n) {
|
||||
p = coordinates[i];
|
||||
|
@ -178,11 +168,18 @@ function d3_geo_projectionMutator(projectAt) {
|
|||
i = -1,
|
||||
polygon = [],
|
||||
ring,
|
||||
resampled,
|
||||
l,
|
||||
m,
|
||||
p;
|
||||
while (++i < n) {
|
||||
polygon.push(ring = resampleLine(coordinates[i]));
|
||||
p = projectPoint(λ00, φ00); // TODO isn't this the same as ring[0]?
|
||||
resampleLineTo(x0, y0, λ0, sinφ0, cosφ0, p[0], p[1], λ00, Math.sin(φ00), Math.cos(φ00), maxDepth, ring);
|
||||
polygon.push(resampled = resampleLine(ring = coordinates[i]));
|
||||
m = ring.length - 1;
|
||||
l = resampled.length - 1;
|
||||
resampleLineTo(
|
||||
(p = ring[0])[0], p[1], (p = resampled[0])[0], Math.sin(p[1]), Math.cos(p[1]),
|
||||
(p = ring[m])[0], p[1], (p = resampled[l])[0], Math.sin(p[1]), Math.cos(p[1]),
|
||||
maxDepth, ring);
|
||||
}
|
||||
return polygon;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче