Resample between first and last ring points.
This commit is contained in:
Родитель
01a7e187ea
Коммит
32b0449333
|
@ -5719,23 +5719,40 @@
|
||||||
function resample(listener) {
|
function resample(listener) {
|
||||||
var resample = {
|
var resample = {
|
||||||
point: resamplePoint,
|
point: resamplePoint,
|
||||||
lineStart: function() {
|
lineStart: lineStart,
|
||||||
x0 = NaN;
|
lineEnd: lineEnd,
|
||||||
resample.point = resamplePointLine;
|
|
||||||
listener.lineStart();
|
|
||||||
},
|
|
||||||
lineEnd: function() {
|
|
||||||
resample.point = resamplePoint;
|
|
||||||
listener.lineEnd();
|
|
||||||
},
|
|
||||||
polygonStart: function() {
|
polygonStart: function() {
|
||||||
listener.polygonStart();
|
listener.polygonStart();
|
||||||
|
resample.lineStart = ringStart;
|
||||||
},
|
},
|
||||||
polygonEnd: function() {
|
polygonEnd: function() {
|
||||||
listener.polygonEnd();
|
listener.polygonEnd();
|
||||||
},
|
},
|
||||||
sphere: d3_noop
|
sphere: d3_noop
|
||||||
};
|
};
|
||||||
|
function lineStart() {
|
||||||
|
x0 = NaN;
|
||||||
|
resample.point = resamplePointLine;
|
||||||
|
listener.lineStart();
|
||||||
|
}
|
||||||
|
function lineEnd() {
|
||||||
|
resample.point = resamplePoint;
|
||||||
|
listener.lineEnd();
|
||||||
|
}
|
||||||
|
function ringStart() {
|
||||||
|
var λ00, φ00;
|
||||||
|
lineStart();
|
||||||
|
resample.point = function(λ, φ) {
|
||||||
|
resamplePointLine(λ00 = λ, φ00 = φ);
|
||||||
|
resample.point = resamplePointLine;
|
||||||
|
};
|
||||||
|
resample.lineEnd = function() {
|
||||||
|
var cartesian = d3_geo_cartesian([ λ00, φ00 ]), p = projectPoint(λ00, φ00);
|
||||||
|
resampleLineTo(x0, y0, λ0, a0, b0, c0, p[0], p[1], λ00, cartesian[0], cartesian[1], cartesian[2], maxDepth, listener);
|
||||||
|
resample.lineEnd = lineEnd;
|
||||||
|
lineEnd();
|
||||||
|
};
|
||||||
|
}
|
||||||
function resamplePoint(λ, φ) {
|
function resamplePoint(λ, φ) {
|
||||||
var point = projectPoint(λ, φ);
|
var point = projectPoint(λ, φ);
|
||||||
listener.point(point[0], point[1]);
|
listener.point(point[0], point[1]);
|
||||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -6,14 +6,46 @@ function d3_geo_resample(projectPoint) {
|
||||||
function resample(listener) {
|
function resample(listener) {
|
||||||
var resample = {
|
var resample = {
|
||||||
point: resamplePoint,
|
point: resamplePoint,
|
||||||
lineStart: function() { x0 = NaN; resample.point = resamplePointLine; listener.lineStart(); },
|
lineStart: lineStart,
|
||||||
lineEnd: function() { resample.point = resamplePoint; listener.lineEnd(); },
|
lineEnd: lineEnd,
|
||||||
// TODO resample last point to first point for polygon rings.
|
polygonStart: function() {
|
||||||
polygonStart: function() { listener.polygonStart(); },
|
listener.polygonStart();
|
||||||
|
resample.lineStart = ringStart;
|
||||||
|
},
|
||||||
polygonEnd: function() { listener.polygonEnd(); },
|
polygonEnd: function() { listener.polygonEnd(); },
|
||||||
sphere: d3_noop
|
sphere: d3_noop
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function lineStart() {
|
||||||
|
x0 = NaN;
|
||||||
|
resample.point = resamplePointLine;
|
||||||
|
listener.lineStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
function lineEnd() {
|
||||||
|
resample.point = resamplePoint;
|
||||||
|
listener.lineEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
function ringStart() {
|
||||||
|
var λ00, φ00; // first point
|
||||||
|
|
||||||
|
lineStart();
|
||||||
|
resample.point = function(λ, φ) {
|
||||||
|
resamplePointLine(λ00 = λ, φ00 = φ);
|
||||||
|
resample.point = resamplePointLine;
|
||||||
|
};
|
||||||
|
resample.lineEnd = function() {
|
||||||
|
var cartesian = d3_geo_cartesian([λ00, φ00]),
|
||||||
|
p = projectPoint(λ00, φ00);
|
||||||
|
resampleLineTo(x0, y0, λ0, a0, b0, c0,
|
||||||
|
p[0], p[1], λ00, cartesian[0], cartesian[1], cartesian[2],
|
||||||
|
maxDepth, listener);
|
||||||
|
resample.lineEnd = lineEnd;
|
||||||
|
lineEnd();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// 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 resamplePoint(λ, φ) {
|
function resamplePoint(λ, φ) {
|
||||||
var point = projectPoint(λ, φ);
|
var point = projectPoint(λ, φ);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче