Extract static function.
This commit is contained in:
Родитель
1b7c291179
Коммит
448c3d085f
|
@ -2030,10 +2030,6 @@
|
||||||
coordinates = projectRotate.invert((coordinates[0] - δx) / k, (δy - coordinates[1]) / k);
|
coordinates = projectRotate.invert((coordinates[0] - δx) / k, (δy - coordinates[1]) / k);
|
||||||
return [ coordinates[0] * d3_degrees, coordinates[1] * d3_degrees ];
|
return [ coordinates[0] * d3_degrees, coordinates[1] * d3_degrees ];
|
||||||
}
|
}
|
||||||
function intersect(λ0, φ0, λ1, φ1) {
|
|
||||||
var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);
|
|
||||||
return Math.abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;
|
|
||||||
}
|
|
||||||
function rotatePoint(coordinates) {
|
function rotatePoint(coordinates) {
|
||||||
return rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
|
return rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
|
||||||
}
|
}
|
||||||
|
@ -2064,7 +2060,7 @@
|
||||||
δλ = (Math.abs(λ1 - λ0) + 2 * π) % (2 * π);
|
δλ = (Math.abs(λ1 - λ0) + 2 * π) % (2 * π);
|
||||||
sλ0 = λ0 > 0;
|
sλ0 = λ0 > 0;
|
||||||
if (sλ0 ^ λ1 > 0 && (δλ >= π || δλ < ε && Math.abs(Math.abs(λ0) - π) < ε)) {
|
if (sλ0 ^ λ1 > 0 && (δλ >= π || δλ < ε && Math.abs(Math.abs(λ0) - π) < ε)) {
|
||||||
φ0 = intersect(λ0, φ0, λ1, φ1);
|
φ0 = d3_geo_projectionIntersectAntemeridian(λ0, φ0, λ1, φ1);
|
||||||
context.lineTo((point = projectPoint(sλ0 ? π : -π, φ0))[0], point[1]);
|
context.lineTo((point = projectPoint(sλ0 ? π : -π, φ0))[0], point[1]);
|
||||||
context.moveTo((point = projectPoint(sλ0 ? -π : π, φ0))[0], point[1]);
|
context.moveTo((point = projectPoint(sλ0 ? -π : π, φ0))[0], point[1]);
|
||||||
}
|
}
|
||||||
|
@ -2105,6 +2101,10 @@
|
||||||
return reset();
|
return reset();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
function d3_geo_projectionIntersectAntemeridian(λ0, φ0, λ1, φ1) {
|
||||||
|
var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);
|
||||||
|
return Math.abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;
|
||||||
|
}
|
||||||
function d3_geo_rotation(δλ, δφ, δγ) {
|
function d3_geo_rotation(δλ, δφ, δγ) {
|
||||||
return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_equirectangular;
|
return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_equirectangular;
|
||||||
}
|
}
|
||||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -54,7 +54,7 @@ function d3_geo_projectionMutator(projectAt) {
|
||||||
δλ = (Math.abs(λ1 - λ0) + 2 * π) % (2 * π);
|
δλ = (Math.abs(λ1 - λ0) + 2 * π) % (2 * π);
|
||||||
sλ0 = λ0 > 0;
|
sλ0 = λ0 > 0;
|
||||||
if (sλ0 ^ (λ1 > 0) && (δλ >= π || δλ < ε && Math.abs(Math.abs(λ0) - π) < ε)) {
|
if (sλ0 ^ (λ1 > 0) && (δλ >= π || δλ < ε && Math.abs(Math.abs(λ0) - π) < ε)) {
|
||||||
φ0 = intersect(λ0, φ0, λ1, φ1);
|
φ0 = d3_geo_projectionIntersectAntemeridian(λ0, φ0, λ1, φ1);
|
||||||
context.lineTo((point = projectPoint(sλ0 ? π : -π, φ0))[0], point[1]);
|
context.lineTo((point = projectPoint(sλ0 ? π : -π, φ0))[0], point[1]);
|
||||||
context.moveTo((point = projectPoint(sλ0 ? -π : π, φ0))[0], point[1]);
|
context.moveTo((point = projectPoint(sλ0 ? -π : π, φ0))[0], point[1]);
|
||||||
}
|
}
|
||||||
|
@ -67,17 +67,6 @@ function d3_geo_projectionMutator(projectAt) {
|
||||||
context.closePath();
|
context.closePath();
|
||||||
};
|
};
|
||||||
|
|
||||||
function intersect(λ0, φ0, λ1, φ1) {
|
|
||||||
var cosφ0,
|
|
||||||
cosφ1,
|
|
||||||
sinλ0_λ1 = Math.sin(λ0 - λ1);
|
|
||||||
return Math.abs(sinλ0_λ1) > ε
|
|
||||||
? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1)
|
|
||||||
- Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0))
|
|
||||||
/ (cosφ0 * cosφ1 * sinλ0_λ1))
|
|
||||||
: (φ0 + φ1) / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO remove redundant code with p(coordinates)
|
// TODO remove redundant code with p(coordinates)
|
||||||
function rotatePoint(coordinates) {
|
function rotatePoint(coordinates) {
|
||||||
return rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
|
return rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
|
||||||
|
@ -131,3 +120,14 @@ function d3_geo_projectionMutator(projectAt) {
|
||||||
return reset();
|
return reset();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function d3_geo_projectionIntersectAntemeridian(λ0, φ0, λ1, φ1) {
|
||||||
|
var cosφ0,
|
||||||
|
cosφ1,
|
||||||
|
sinλ0_λ1 = Math.sin(λ0 - λ1);
|
||||||
|
return Math.abs(sinλ0_λ1) > ε
|
||||||
|
? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1)
|
||||||
|
- Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0))
|
||||||
|
/ (cosφ0 * cosφ1 * sinλ0_λ1))
|
||||||
|
: (φ0 + φ1) / 2;
|
||||||
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче