MCPcopy Create free account
hub / github.com/breck7/scroll / clipAntimeridianLine

Function clipAntimeridianLine

external/.d3.js:10833–10876  ·  view source on GitHub ↗
(stream)

Source from the content-addressed store, hash-verified

10831// intersections or the line was empty; 1 - no intersections; 2 - there were
10832// intersections, and the first and last segments should be rejoined.
10833function clipAntimeridianLine(stream) {
10834 var lambda0 = NaN,
10835 phi0 = NaN,
10836 sign0 = NaN,
10837 clean; // no intersections
10838
10839 return {
10840 lineStart: function() {
10841 stream.lineStart();
10842 clean = 1;
10843 },
10844 point: function(lambda1, phi1) {
10845 var sign1 = lambda1 > 0 ? pi$1 : -pi$1,
10846 delta = abs$1(lambda1 - lambda0);
10847 if (abs$1(delta - pi$1) < epsilon$1) { // line crosses a pole
10848 stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$1 : -halfPi$1);
10849 stream.point(sign0, phi0);
10850 stream.lineEnd();
10851 stream.lineStart();
10852 stream.point(sign1, phi0);
10853 stream.point(lambda1, phi0);
10854 clean = 0;
10855 } else if (sign0 !== sign1 && delta >= pi$1) { // line crosses antimeridian
10856 if (abs$1(lambda0 - sign0) < epsilon$1) lambda0 -= sign0 * epsilon$1; // handle degeneracies
10857 if (abs$1(lambda1 - sign1) < epsilon$1) lambda1 -= sign1 * epsilon$1;
10858 phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);
10859 stream.point(sign0, phi0);
10860 stream.lineEnd();
10861 stream.lineStart();
10862 stream.point(sign1, phi0);
10863 clean = 0;
10864 }
10865 stream.point(lambda0 = lambda1, phi0 = phi1);
10866 sign0 = sign1;
10867 },
10868 lineEnd: function() {
10869 stream.lineEnd();
10870 lambda0 = phi0 = NaN;
10871 },
10872 clean: function() {
10873 return 2 - clean; // if intersections, rejoin first and last segments
10874 }
10875 };
10876}
10877
10878function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {
10879 var cosPhi0,

Callers

nothing calls this directly

Calls 4

lineStartMethod · 0.45
pointMethod · 0.45
lineEndMethod · 0.45

Tested by

no test coverage detected