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