MCPcopy Create free account
hub / github.com/microsoft/SandDance / linePoint

Function linePoint

docs/app/js/sanddance-app.js:132096–132139  ·  view source on GitHub ↗
(lambda, phi)

Source from the content-addressed store, hash-verified

132094 if (phi > phi1) phi1 = phi;
132095}
132096function 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}
132140function boundsLineStart() {
132141 boundsStream.point = linePoint;
132142}

Callers 3

boundsRingPointFunction · 0.70
lineEndFunction · 0.70
ringPointFunction · 0.70

Calls 6

angleFunction · 0.70
visible1Function · 0.70
projectFunction · 0.70
resampleLineToFunction · 0.70
maxMethod · 0.45
minMethod · 0.45

Tested by

no test coverage detected