import "../math/trigonometry"; import "geo"; import "projection"; function d3_geo_mercator(λ, φ) { return [λ, Math.log(Math.tan(π / 4 + φ / 2))]; } d3_geo_mercator.invert = function(x, y) { return [x, 2 * Math.atan(Math.exp(y)) - π / 2]; }; function d3_geo_mercatorProjection(project) { var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto; m.scale = function() { var v = scale.apply(m, arguments); return v === m ? (clipAuto ? m.clipExtent(null) : m) : v; }; m.translate = function() { var v = translate.apply(m, arguments); return v === m ? (clipAuto ? m.clipExtent(null) : m) : v; }; m.clipExtent = function(_) { var v = clipExtent.apply(m, arguments); if (v === m) { if (clipAuto = _ == null) { var k = π * scale(), t = translate(); clipExtent([[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]]); } } else if (clipAuto) { v = null; } return v; }; return m.clipExtent(null); } (d3.geo.mercator = function() { return d3_geo_mercatorProjection(d3_geo_mercator); }).raw = d3_geo_mercator;