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);
|
||||
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) {
|
||||
return rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
|
||||
}
|
||||
|
@ -2064,7 +2060,7 @@
|
|||
δλ = (Math.abs(λ1 - λ0) + 2 * π) % (2 * π);
|
||||
sλ0 = λ0 > 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.moveTo((point = projectPoint(sλ0 ? -π : π, φ0))[0], point[1]);
|
||||
}
|
||||
|
@ -2105,6 +2101,10 @@
|
|||
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(δλ, δφ, δγ) {
|
||||
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 * π);
|
||||
sλ0 = λ0 > 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.moveTo((point = projectPoint(sλ0 ? -π : π, φ0))[0], point[1]);
|
||||
}
|
||||
|
@ -67,17 +67,6 @@ function d3_geo_projectionMutator(projectAt) {
|
|||
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)
|
||||
function rotatePoint(coordinates) {
|
||||
return rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
|
||||
|
@ -131,3 +120,14 @@ function d3_geo_projectionMutator(projectAt) {
|
|||
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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче