(lambda, phi)
| 10059 | } |
| 10060 | |
| 10061 | function linePoint(lambda, phi) { |
| 10062 | var p = cartesian([lambda * radians, phi * radians]); |
| 10063 | if (p0) { |
| 10064 | var normal = cartesianCross(p0, p), |
| 10065 | equatorial = [normal[1], -normal[0], 0], |
| 10066 | inflection = cartesianCross(equatorial, normal); |
| 10067 | cartesianNormalizeInPlace(inflection); |
| 10068 | inflection = spherical(inflection); |
| 10069 | var delta = lambda - lambda2, |
| 10070 | sign = delta > 0 ? 1 : -1, |
| 10071 | lambdai = inflection[0] * degrees * sign, |
| 10072 | phii, |
| 10073 | antimeridian = abs$1(delta) > 180; |
| 10074 | if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { |
| 10075 | phii = inflection[1] * degrees; |
| 10076 | if (phii > phi1) phi1 = phii; |
| 10077 | } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { |
| 10078 | phii = -inflection[1] * degrees; |
| 10079 | if (phii < phi0) phi0 = phii; |
| 10080 | } else { |
| 10081 | if (phi < phi0) phi0 = phi; |
| 10082 | if (phi > phi1) phi1 = phi; |
| 10083 | } |
| 10084 | if (antimeridian) { |
| 10085 | if (lambda < lambda2) { |
| 10086 | if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; |
| 10087 | } else { |
| 10088 | if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; |
| 10089 | } |
| 10090 | } else { |
| 10091 | if (lambda1 >= lambda0$1) { |
| 10092 | if (lambda < lambda0$1) lambda0$1 = lambda; |
| 10093 | if (lambda > lambda1) lambda1 = lambda; |
| 10094 | } else { |
| 10095 | if (lambda > lambda2) { |
| 10096 | if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; |
| 10097 | } else { |
| 10098 | if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; |
| 10099 | } |
| 10100 | } |
| 10101 | } |
| 10102 | } else { |
| 10103 | ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); |
| 10104 | } |
| 10105 | if (phi < phi0) phi0 = phi; |
| 10106 | if (phi > phi1) phi1 = phi; |
| 10107 | p0 = p, lambda2 = lambda; |
| 10108 | } |
| 10109 | |
| 10110 | function boundsLineStart() { |
| 10111 | boundsStream$2.point = linePoint; |
no test coverage detected