This commit is contained in:
Mike Bostock 2012-09-25 15:36:07 -07:00
Родитель 1b7c291179
Коммит 448c3d085f
3 изменённых файлов: 21 добавлений и 21 удалений

10
d3.v2.js поставляемый
Просмотреть файл

@ -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;
} }

8
d3.v2.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -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;
}