| 132094 | if (phi > phi1) phi1 = phi; |
| 132095 | } |
| 132096 | function linePoint(lambda, phi) { |
| 132097 | var p = (0, _cartesianJs.cartesian)([ |
| 132098 | lambda * (0, _mathJs.radians), |
| 132099 | phi * (0, _mathJs.radians) |
| 132100 | ]); |
| 132101 | if (p0) { |
| 132102 | var normal = (0, _cartesianJs.cartesianCross)(p0, p), equatorial = [ |
| 132103 | normal[1], |
| 132104 | -normal[0], |
| 132105 | 0 |
| 132106 | ], inflection = (0, _cartesianJs.cartesianCross)(equatorial, normal); |
| 132107 | (0, _cartesianJs.cartesianNormalizeInPlace)(inflection); |
| 132108 | inflection = (0, _cartesianJs.spherical)(inflection); |
| 132109 | var delta = lambda - lambda2, sign = delta > 0 ? 1 : -1, lambdai = inflection[0] * (0, _mathJs.degrees) * sign, phii, antimeridian = (0, _mathJs.abs)(delta) > 180; |
| 132110 | if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { |
| 132111 | phii = inflection[1] * (0, _mathJs.degrees); |
| 132112 | if (phii > phi1) phi1 = phii; |
| 132113 | } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { |
| 132114 | phii = -inflection[1] * (0, _mathJs.degrees); |
| 132115 | if (phii < phi0) phi0 = phii; |
| 132116 | } else { |
| 132117 | if (phi < phi0) phi0 = phi; |
| 132118 | if (phi > phi1) phi1 = phi; |
| 132119 | } |
| 132120 | if (antimeridian) { |
| 132121 | if (lambda < lambda2) { |
| 132122 | if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda; |
| 132123 | } else if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda; |
| 132124 | } else if (lambda1 >= lambda0) { |
| 132125 | if (lambda < lambda0) lambda0 = lambda; |
| 132126 | if (lambda > lambda1) lambda1 = lambda; |
| 132127 | } else { |
| 132128 | if (lambda > lambda2) { |
| 132129 | if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda; |
| 132130 | } else if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda; |
| 132131 | } |
| 132132 | } else ranges.push(range = [ |
| 132133 | lambda0 = lambda, |
| 132134 | lambda1 = lambda |
| 132135 | ]); |
| 132136 | if (phi < phi0) phi0 = phi; |
| 132137 | if (phi > phi1) phi1 = phi; |
| 132138 | p0 = p, lambda2 = lambda; |
| 132139 | } |
| 132140 | function boundsLineStart() { |
| 132141 | boundsStream.point = linePoint; |
| 132142 | } |