Newer
Older
ganzhou-feidu / static / lib / freedo / Freedo / Workers / IntersectionTests-caa0ba1a.js
bairujie on 14 Apr 2023 16 KB init
define(["exports","./when-cbf8cd21","./Check-35e1a91d","./Math-e66fad2a","./Cartesian2-44433f55","./Matrix3-146a3f23"],function(t,q,a,W,T,U){"use strict";var B={};function h(t,a,e){var r=t+a;return W.CesiumMath.sign(t)!==W.CesiumMath.sign(a)&&Math.abs(r/Math.max(Math.abs(t),Math.abs(a)))<e?0:r}B.computeDiscriminant=function(t,a,e){return a*a-4*t*e},B.computeRealRoots=function(t,a,e){var r;if(0===t)return 0===a?[]:[-e/a];if(0===a){if(0===e)return[0,0];var n=Math.abs(e),i=Math.abs(t);if(n<i&&n/i<W.CesiumMath.EPSILON14)return[0,0];if(i<n&&i/n<W.CesiumMath.EPSILON14)return[];if((r=-e/t)<0)return[];var s=Math.sqrt(r);return[-s,s]}if(0===e)return(r=-a/t)<0?[r,0]:[0,r];var o=h(a*a,-(4*t*e),W.CesiumMath.EPSILON14);if(o<0)return[];var u=-.5*h(a,W.CesiumMath.sign(a)*Math.sqrt(o),W.CesiumMath.EPSILON14);return 0<a?[u/t,e/u]:[e/u,u/t]};var N={};function o(t,a,e,r){var n=t,i=a/3,s=e/3,o=r,u=n*s,h=i*o,l=i*i,c=s*s,C=n*s-l,d=n*o-i*s,f=i*o-c,M=4*C*f-d*d;if(M<0){var g,m,p,v=u*c<=l*h?-2*i*(m=C)+(g=n)*d:-(g=o)*d+2*s*(m=f),R=-(v<0?-1:1)*Math.abs(g)*Math.sqrt(-M),w=(p=R-v)/2,x=w<0?-Math.pow(-w,1/3):Math.pow(w,1/3),S=p===R?-x:-m/x,b=m<=0?x+S:-v/(x*x+S*S+m);return u*c<=l*h?[(b-i)/n]:[-o/(b+s)]}var O=C,y=-2*i*C+n*d,P=f,N=-o*d+2*s*f,q=Math.sqrt(M),I=Math.sqrt(3)/2,L=Math.abs(Math.atan2(n*q,-y)/3);b=2*Math.sqrt(-O);var E=Math.cos(L);p=b*E;var z=b*(-E/2-I*Math.sin(L)),W=2*i<p+z?p-i:z-i,T=n,U=W/T,L=Math.abs(Math.atan2(o*q,-N)/3),B=-o,V=(p=(b=2*Math.sqrt(-P))*(E=Math.cos(L)))+(z=b*(-E/2-I*Math.sin(L)))<2*s?p+s:z+s,Z=B/V,A=-W*V-T*B,D=(s*A-i*(W*B))/(-i*A+s*(T*V));return U<=D?U<=Z?D<=Z?[U,D,Z]:[U,Z,D]:[Z,U,D]:U<=Z?[D,U,Z]:D<=Z?[D,Z,U]:[Z,D,U]}N.computeDiscriminant=function(t,a,e,r){var n=a*a,i=e*e;return 18*t*a*e*r+n*i-27*(t*t)*(r*r)-4*(t*i*e+n*a*r)},N.computeRealRoots=function(t,a,e,r){var n,i;if(0===t)return B.computeRealRoots(a,e,r);if(0!==a)return 0===e?0===r?(i=-a/t)<0?[i,0,0]:[0,0,i]:o(t,a,0,r):0===r?0===(n=B.computeRealRoots(t,a,e)).length?[0]:n[1]<=0?[n[0],n[1],0]:0<=n[0]?[0,n[0],n[1]]:[n[0],0,n[1]]:o(t,a,e,r);if(0!==e)return 0===r?0===(n=B.computeRealRoots(t,0,e)).Length?[0]:[n[0],0,n[1]]:o(t,0,e,r);if(0===r)return[0,0,0];var s=(i=-r/t)<0?-Math.pow(-i,1/3):Math.pow(i,1/3);return[s,s,s]};var V={};function l(t,a,e,r){var n=t*t,i=a-3*n/8,s=e-a*t/2+n*t/8,o=r-e*t/4+a*n/16-3*n*n/256,u=N.computeRealRoots(1,2*i,i*i-4*o,-s*s);if(0<u.length){var h=-t/4,l=u[u.length-1];if(Math.abs(l)<W.CesiumMath.EPSILON14){var c=B.computeRealRoots(1,i,o);if(2===c.length){var C,d=c[0],f=c[1];if(0<=d&&0<=f){var M=Math.sqrt(d),g=Math.sqrt(f);return[h-g,h-M,h+M,h+g]}if(0<=d&&f<0)return[h-(C=Math.sqrt(d)),h+C];if(d<0&&0<=f)return[h-(C=Math.sqrt(f)),h+C]}return[]}if(0<l){var m=Math.sqrt(l),p=(i+l-s/m)/2,v=(i+l+s/m)/2,R=B.computeRealRoots(1,m,p),w=B.computeRealRoots(1,-m,v);return 0!==R.length?(R[0]+=h,R[1]+=h,0!==w.length?(w[0]+=h,w[1]+=h,R[1]<=w[0]?[R[0],R[1],w[0],w[1]]:w[1]<=R[0]?[w[0],w[1],R[0],R[1]]:R[0]>=w[0]&&R[1]<=w[1]?[w[0],R[0],R[1],w[1]]:w[0]>=R[0]&&w[1]<=R[1]?[R[0],w[0],w[1],R[1]]:R[0]>w[0]&&R[0]<w[1]?[w[0],R[0],w[1],R[1]]:[R[0],w[0],R[1],w[1]]):R):0!==w.length?(w[0]+=h,w[1]+=h,w):[]}}return[]}function c(t,a,e,r){var n=t*t,i=-2*a,s=e*t+a*a-4*r,o=n*r-e*a*t+e*e,u=N.computeRealRoots(1,i,s,o);if(0<u.length){var h,l,c,C,d,f,M,g,m=u[0],p=a-m,v=p*p,R=t/2,w=p/2,x=v-4*r,S=v+4*Math.abs(r),b=n-4*m,O=n+4*Math.abs(m);c=m<0||x*O<b*S?(l=(h=Math.sqrt(b))/2,0===h?0:(t*w-e)/h):(l=0===(C=Math.sqrt(x))?0:(t*w-e)/C,C/2),0==R&&0===l?f=d=0:W.CesiumMath.sign(R)===W.CesiumMath.sign(l)?f=m/(d=R+l):d=m/(f=R-l),0==w&&0===c?g=M=0:W.CesiumMath.sign(w)===W.CesiumMath.sign(c)?g=r/(M=w+c):M=r/(g=w-c);var y=B.computeRealRoots(1,d,M),P=B.computeRealRoots(1,f,g);if(0!==y.length)return 0!==P.length?y[1]<=P[0]?[y[0],y[1],P[0],P[1]]:P[1]<=y[0]?[P[0],P[1],y[0],y[1]]:y[0]>=P[0]&&y[1]<=P[1]?[P[0],y[0],y[1],P[1]]:P[0]>=y[0]&&P[1]<=y[1]?[y[0],P[0],P[1],y[1]]:y[0]>P[0]&&y[0]<P[1]?[P[0],y[0],P[1],y[1]]:[y[0],P[0],y[1],P[1]]:y;if(0!==P.length)return P}return[]}function e(t,a){a=T.Cartesian3.clone(q.defaultValue(a,T.Cartesian3.ZERO)),T.Cartesian3.equals(a,T.Cartesian3.ZERO)||T.Cartesian3.normalize(a,a),this.origin=T.Cartesian3.clone(q.defaultValue(t,T.Cartesian3.ZERO)),this.direction=a}V.computeDiscriminant=function(t,a,e,r,n){var i=t*t,s=a*a,o=s*a,u=e*e,h=u*e,l=r*r,c=l*r,C=n*n;return s*u*l-4*o*c-4*t*h*l+18*t*a*e*c-27*i*l*l+256*(i*t)*(C*n)+n*(18*o*e*r-4*s*h+16*t*u*u-80*t*a*u*r-6*t*s*l+144*i*e*l)+C*(144*t*s*e-27*s*s-128*i*u-192*i*a*r)},V.computeRealRoots=function(t,a,e,r,n){if(Math.abs(t)<W.CesiumMath.EPSILON15)return N.computeRealRoots(a,e,r,n);var i=a/t,s=e/t,o=r/t,u=n/t,h=i<0?1:0;switch(h+=s<0?h+1:h,h+=o<0?h+1:h,h+=u<0?h+1:h){case 0:return l(i,s,o,u);case 1:case 2:return c(i,s,o,u);case 3:case 4:return l(i,s,o,u);case 5:return c(i,s,o,u);case 6:case 7:return l(i,s,o,u);case 8:return c(i,s,o,u);case 9:case 10:return l(i,s,o,u);case 11:return c(i,s,o,u);case 12:case 13:case 14:case 15:return l(i,s,o,u);default:return}},e.clone=function(t,a){if(q.defined(t))return q.defined(a)?(a.origin=T.Cartesian3.clone(t.origin),a.direction=T.Cartesian3.clone(t.direction),a):new e(t.origin,t.direction)},e.getPoint=function(t,a,e){return q.defined(e)||(e=new T.Cartesian3),e=T.Cartesian3.multiplyByScalar(t.direction,a,e),T.Cartesian3.add(t.origin,e,e)};var C={rayPlane:function(t,a,e){q.defined(e)||(e=new T.Cartesian3);var r=t.origin,n=t.direction,i=a.normal,s=T.Cartesian3.dot(i,n);if(!(Math.abs(s)<W.CesiumMath.EPSILON15)){var o=(-a.distance-T.Cartesian3.dot(i,r))/s;if(!(o<0))return e=T.Cartesian3.multiplyByScalar(n,o,e),T.Cartesian3.add(r,e,e)}}},m=new T.Cartesian3,p=new T.Cartesian3,v=new T.Cartesian3,R=new T.Cartesian3,w=new T.Cartesian3;C.rayTriangleParametric=function(t,a,e,r,n){n=q.defaultValue(n,!1);var i,s,o,u=t.origin,h=t.direction,l=T.Cartesian3.subtract(e,a,m),c=T.Cartesian3.subtract(r,a,p),C=T.Cartesian3.cross(h,c,v),d=T.Cartesian3.dot(l,C);if(n){if(d<W.CesiumMath.EPSILON6)return;if(g=T.Cartesian3.subtract(u,a,R),(f=T.Cartesian3.dot(g,C))<0||d<f)return;if(i=T.Cartesian3.cross(g,l,w),(s=T.Cartesian3.dot(h,i))<0||d<f+s)return;o=T.Cartesian3.dot(c,i)/d}else{if(Math.abs(d)<W.CesiumMath.EPSILON6)return;var f,M=1/d,g=T.Cartesian3.subtract(u,a,R);if((f=T.Cartesian3.dot(g,C)*M)<0||1<f)return;if(i=T.Cartesian3.cross(g,l,w),(s=T.Cartesian3.dot(h,i)*M)<0||1<f+s)return;o=T.Cartesian3.dot(c,i)*M}return o},C.rayTriangle=function(t,a,e,r,n,i){var s=C.rayTriangleParametric(t,a,e,r,n);if(q.defined(s)&&!(s<0))return q.defined(i)||(i=new T.Cartesian3),T.Cartesian3.multiplyByScalar(t.direction,s,i),T.Cartesian3.add(t.origin,i,i)};var d=new e;C.lineSegmentTriangle=function(t,a,e,r,n,i,s){var o=d;T.Cartesian3.clone(t,o.origin),T.Cartesian3.subtract(a,t,o.direction),T.Cartesian3.normalize(o.direction,o.direction);var u=C.rayTriangleParametric(o,e,r,n,i);if(!(!q.defined(u)||u<0||u>T.Cartesian3.distance(t,a)))return q.defined(s)||(s=new T.Cartesian3),T.Cartesian3.multiplyByScalar(o.direction,u,s),T.Cartesian3.add(o.origin,s,s)};var f={root0:0,root1:0};function u(t,a,e){q.defined(e)||(e=new U.Interval);var r=t.origin,n=t.direction,i=a.center,s=a.radius*a.radius,o=T.Cartesian3.subtract(r,i,v),u=function(t,a,e,r){var n=a*a-4*t*e;if(!(n<0)){if(0<n){var i=1/(2*t),s=Math.sqrt(n),o=(-a+s)*i,u=(-a-s)*i;return o<u?(r.root0=o,r.root1=u):(r.root0=u,r.root1=o),r}var h=-a/(2*t);if(0!=h)return r.root0=r.root1=h,r}}(T.Cartesian3.dot(n,n),2*T.Cartesian3.dot(n,o),T.Cartesian3.magnitudeSquared(o)-s,f);if(q.defined(u))return e.start=u.root0,e.stop=u.root1,e}C.raySphere=function(t,a,e){if(e=u(t,a,e),q.defined(e)&&!(e.stop<0))return e.start=Math.max(e.start,0),e};var M=new e;C.lineSegmentSphere=function(t,a,e,r){var n=M;T.Cartesian3.clone(t,n.origin);var i=T.Cartesian3.subtract(a,t,n.direction),s=T.Cartesian3.magnitude(i);if(T.Cartesian3.normalize(i,i),r=u(n,e,r),!(!q.defined(r)||r.stop<0||r.start>s))return r.start=Math.max(r.start,0),r.stop=Math.min(r.stop,s),r};var g=new T.Cartesian3,x=new T.Cartesian3;function Z(t,a,e){var r=t+a;return W.CesiumMath.sign(t)!==W.CesiumMath.sign(a)&&Math.abs(r/Math.max(Math.abs(t),Math.abs(a)))<e?0:r}C.rayEllipsoid=function(t,a){var e,r,n=a.oneOverRadii,i=T.Cartesian3.multiplyComponents(n,t.origin,g),s=T.Cartesian3.multiplyComponents(n,t.direction,x),o=T.Cartesian3.magnitudeSquared(i),u=T.Cartesian3.dot(i,s);if(1<o){if(0<=u)return;var h,l,c=u*u,C=o-1;if(c<(l=(h=T.Cartesian3.magnitudeSquared(s))*C))return;if(l<c){e=u*u-l;var d=(r=-u+Math.sqrt(e))/h,f=C/r;return d<f?new U.Interval(d,f):{start:f,stop:d}}var M=Math.sqrt(C/h);return new U.Interval(M,M)}return o<1?(C=o-1,e=u*u-(l=(h=T.Cartesian3.magnitudeSquared(s))*C),r=-u+Math.sqrt(e),new U.Interval(0,r/h)):u<0?(h=T.Cartesian3.magnitudeSquared(s),new U.Interval(0,-u/h)):void 0};var I=new T.Cartesian3,L=new T.Cartesian3,E=new T.Cartesian3,z=new T.Cartesian3,A=new T.Cartesian3,D=new U.Matrix3,k=new U.Matrix3,F=new U.Matrix3,G=new U.Matrix3,Y=new U.Matrix3,_=new U.Matrix3,j=new U.Matrix3,H=new T.Cartesian3,J=new T.Cartesian3,K=new T.Cartographic;C.grazingAltitudeLocation=function(t,a){var e=t.origin,r=t.direction;if(!T.Cartesian3.equals(e,T.Cartesian3.ZERO)){var n=a.geodeticSurfaceNormal(e,I);if(0<=T.Cartesian3.dot(r,n))return e}var i=q.defined(this.rayEllipsoid(t,a)),s=a.transformPositionToScaledSpace(r,I),o=T.Cartesian3.normalize(s,s),u=T.Cartesian3.mostOrthogonalAxis(s,z),h=T.Cartesian3.normalize(T.Cartesian3.cross(u,o,L),L),l=T.Cartesian3.normalize(T.Cartesian3.cross(o,h,E),E),c=D;c[0]=o.x,c[1]=o.y,c[2]=o.z,c[3]=h.x,c[4]=h.y,c[5]=h.z,c[6]=l.x,c[7]=l.y,c[8]=l.z;var C=U.Matrix3.transpose(c,k),d=U.Matrix3.fromScale(a.radii,F),f=U.Matrix3.fromScale(a.oneOverRadii,G),M=Y;M[0]=0,M[1]=-r.z,M[2]=r.y,M[3]=r.z,M[4]=0,M[5]=-r.x,M[6]=-r.y,M[7]=r.x,M[8]=0;var g,m=U.Matrix3.multiply(U.Matrix3.multiply(C,f,_),M,_),p=U.Matrix3.multiply(U.Matrix3.multiply(m,d,j),c,j),v=U.Matrix3.multiplyByVector(m,e,A),R=function(t,a,e,r,n){var i,s=r*r,o=n*n,u=(t[U.Matrix3.COLUMN1ROW1]-t[U.Matrix3.COLUMN2ROW2])*o,h=n*(r*Z(t[U.Matrix3.COLUMN1ROW0],t[U.Matrix3.COLUMN0ROW1],W.CesiumMath.EPSILON15)+a.y),l=t[U.Matrix3.COLUMN0ROW0]*s+t[U.Matrix3.COLUMN2ROW2]*o+r*a.x+e,c=o*Z(t[U.Matrix3.COLUMN2ROW1],t[U.Matrix3.COLUMN1ROW2],W.CesiumMath.EPSILON15),C=n*(r*Z(t[U.Matrix3.COLUMN2ROW0],t[U.Matrix3.COLUMN0ROW2])+a.z),d=[];if(0==C&&0==c){if(0===(i=B.computeRealRoots(u,h,l)).length)return d;var f,M,g=i[0],m=Math.sqrt(Math.max(1-g*g,0));return d.push(new T.Cartesian3(r,n*g,n*-m)),d.push(new T.Cartesian3(r,n*g,n*m)),2===i.length&&(f=i[1],M=Math.sqrt(Math.max(1-f*f,0)),d.push(new T.Cartesian3(r,n*f,n*-M)),d.push(new T.Cartesian3(r,n*f,n*M))),d}var p=C*C,v=c*c,R=C*c,w=u*u+v,x=2*(h*u+R),S=2*l*u+h*h-v+p,b=2*(l*h-R),O=l*l-p;if(0==w&&0==x&&0==S&&0==b)return d;var y=(i=V.computeRealRoots(w,x,S,b,O)).length;if(0===y)return d;for(var P=0;P<y;++P){var N=i[P],q=N*N,I=Math.max(1-q,0),L=Math.sqrt(I),E=W.CesiumMath.sign(u)===W.CesiumMath.sign(l)?Z(u*q+l,h*N,W.CesiumMath.EPSILON12):W.CesiumMath.sign(l)===W.CesiumMath.sign(h*N)?Z(u*q,h*N+l,W.CesiumMath.EPSILON12):Z(u*q+h*N,l,W.CesiumMath.EPSILON12),z=E*Z(c*N,C,W.CesiumMath.EPSILON15);z<0?d.push(new T.Cartesian3(r,n*N,n*L)):0<z?d.push(new T.Cartesian3(r,n*N,n*-L)):0!==L?(d.push(new T.Cartesian3(r,n*N,n*-L)),d.push(new T.Cartesian3(r,n*N,n*L)),++P):d.push(new T.Cartesian3(r,n*N,n*L))}return d}(p,T.Cartesian3.negate(v,I),0,0,1),w=R.length;if(0<w){for(var x=T.Cartesian3.clone(T.Cartesian3.ZERO,J),S=Number.NEGATIVE_INFINITY,b=0;b<w;++b){g=U.Matrix3.multiplyByVector(d,U.Matrix3.multiplyByVector(c,R[b],H),H);var O=T.Cartesian3.normalize(T.Cartesian3.subtract(g,e,z),z),y=T.Cartesian3.dot(O,r);S<y&&(S=y,x=T.Cartesian3.clone(g,x))}var P=a.cartesianToCartographic(x,K),S=W.CesiumMath.clamp(S,0,1),N=T.Cartesian3.magnitude(T.Cartesian3.subtract(x,e,z))*Math.sqrt(1-S*S);return N=i?-N:N,P.height=N,a.cartographicToCartesian(P,new T.Cartesian3)}};var S=new T.Cartesian3;function b(t,a){for(var e,r,n=0,i=a.length,s=a[0],o=1;o<=i;o++)r=a[o%i],t[0]>Math.min(s[0],r[0])&&t[0]<=Math.max(s[0],r[0])&&t[1]<=Math.max(s[1],r[1])&&s[0]!==r[0]&&(e=(t[0]-s[0])*(r[1]-s[1])/(r[0]-s[0])+s[1],(s[1]===r[1]||t[1]<=e)&&n++),s=r;return n%2}C.lineSegmentPlane=function(t,a,e,r){q.defined(r)||(r=new T.Cartesian3);var n=T.Cartesian3.subtract(a,t,S),i=e.normal,s=T.Cartesian3.dot(i,n);if(!(Math.abs(s)<W.CesiumMath.EPSILON6)){var o=T.Cartesian3.dot(i,t),u=-(e.distance+o)/s;if(!(u<0||1<u))return T.Cartesian3.multiplyByScalar(n,u,r),T.Cartesian3.add(t,r,r),r}},C.trianglePlaneIntersection=function(t,a,e,r){var n,i,s=r.normal,o=r.distance,u=T.Cartesian3.dot(s,t)+o<0,h=T.Cartesian3.dot(s,a)+o<0,l=T.Cartesian3.dot(s,e)+o<0,c=0;if(c+=u?1:0,c+=h?1:0,1!=(c+=l?1:0)&&2!=c||(n=new T.Cartesian3,i=new T.Cartesian3),1==c){if(u)return C.lineSegmentPlane(t,a,r,n),C.lineSegmentPlane(t,e,r,i),{positions:[t,a,e,n,i],indices:[0,3,4,1,2,4,1,4,3]};if(h)return C.lineSegmentPlane(a,e,r,n),C.lineSegmentPlane(a,t,r,i),{positions:[t,a,e,n,i],indices:[1,3,4,2,0,4,2,4,3]};if(l)return C.lineSegmentPlane(e,t,r,n),C.lineSegmentPlane(e,a,r,i),{positions:[t,a,e,n,i],indices:[2,3,4,0,1,4,0,4,3]}}else if(2==c){if(!u)return C.lineSegmentPlane(a,t,r,n),C.lineSegmentPlane(e,t,r,i),{positions:[t,a,e,n,i],indices:[1,2,4,1,4,3,0,3,4]};if(!h)return C.lineSegmentPlane(e,a,r,n),C.lineSegmentPlane(t,a,r,i),{positions:[t,a,e,n,i],indices:[2,0,4,2,4,3,1,3,4]};if(!l)return C.lineSegmentPlane(t,e,r,n),C.lineSegmentPlane(a,e,r,i),{positions:[t,a,e,n,i],indices:[0,1,4,0,4,3,2,3,4]}}},C.intersetRectangleWithConstraintRegion=function(t,a){if(!q.defined(t)||!q.defined(a))return-1;var r=Math.min(t.east,t.west),n=Math.max(t.east,t.west),i=Math.min(t.north,t.south),s=Math.max(t.north,t.south);function e(t){if(b([r,i],t))return 1;if(b([r,s],t))return 1;if(b([n,i],t))return 1;if(b([n,s],t))return 1;for(var a=[[r,i],[r,s],[n,s],[n,i]],e=0;e<t.length;e++)if(b(t[e],a))return 1}for(var o=0;o<a.length;o++){var u=a[o].minMaxRegion,h=u[0],l=u[1],c=u[2],C=u[3],d=Math.abs(r+n-h-l),f=Math.abs(r-n)+Math.abs(h-l),M=Math.abs(i+s-c-C),g=Math.abs(i-s)+Math.abs(c-C),m=a[o].constraintRegion;if(d<=f&&M<=g&&e(m))return o;if((h<=r&&r<=l&&c<=i&&i<=C||r<=h&&h<=n&&i<=c&&c<=s)&&e(m))return o}return-1},C.isCartographicInConstraintRegion=function(t,a,e){if(!q.defined(t||!q.defined(e)))return-1;var r;if(-1!==a&&(r=e[a].constraintRegion,b([t.longitude,t.latitude],r)))return a;for(var n=0;n<e.length;n++)if(n!==a&&(r=e[n].constraintRegion,b([t.longitude,t.latitude],r)))return n;return-1};var O=new T.Cartographic,y=new T.Cartographic,P=new T.Cartesian3,Q=new T.Cartesian3,X=new T.Cartesian3;C.interoplateCartographicWhenSmooth=function(t,a){if(!q.defined(a.interpolateCartographics))return a.height;var C=t.longitude,d=t.latitude;for(var e=[],r=a.constraintRegion.length,n=0;n<r;n++){var i=function(t,a){var e=1e4*C,r=1e4*d,n=1e4*t[0],i=1e4*t[1],s=1e4*a[0],o=1e4*a[1],u=s-n,h=o-i;if(Math.abs(u)<1e-6&&Math.abs(h)<1e-6)return{distance:1e10};if(Math.abs(u)<1e-6)return r>=Math.min(o,i)&&r<=Math.max(o,i)?{distance:(e-n)*(e-n),point:[n/1e4,d]}:{distance:1e10};if(Math.abs(h)<1e-6)return e>=Math.min(n,s)&&e<=Math.max(n,s)?{distance:(r-o)*(r-o),point:[C,o/1e4]}:{distance:1e10};var l=(h*n-u*i-(h*e-u*r))/(u*u+h*h),c=[h*l,-u*l];return{distance:c[0]*c[0]+c[1]*c[1],point:[(h*l+e)/1e4,(-u*l+r)/1e4]}}(a.constraintRegion[n],a.constraintRegion[(n+1)%r]);e.push({distance:i.distance,index:n,point:i.point})}if(e.sort(function(t,a){var e=t.distance,r=a.distance;return e<r?-1:r<e?1:0}),e.length<2||1e8<e[1].distance||1e8<e[0].distance)return a.height;O.longitude=e[0].point[0],O.latitude=e[0].point[1],y.longitude=e[1].point[0],y.latitude=e[1].point[1],P=T.Cartesian3.fromRadians(t.longitude,t.latitude),Q=T.Cartesian3.fromRadians(O.longitude,O.latitude),X=T.Cartesian3.fromRadians(y.longitude,y.latitude);for(var s,o,u=T.Cartesian3.distance(Q,P),h=T.Cartesian3.distance(X,P),l=0,c=0;c<a.interpolateCartographics.length;c++){var f=a.interpolateCartographics[c],M=a.interpolateCartographics[(c+1)%a.interpolateCartographics.length];if(0==(Math.abs(f.longitude-M.longitude)>Math.abs(f.latitude-M.latitude)?0:1)?(f.longitude<=C&&M.longitude>=C||f.longitude>=C&&M.longitude<=C)&&(s=Math.abs(C-f.longitude),o=Math.abs(C-M.longitude),y.height=(f.height*o+M.height*s)/(s+o),l++):(f.latitude<=d&&M.latitude>=d||f.latitude>=d&&M.latitude<=d)&&(s=Math.abs(d-f.latitude),o=Math.abs(d-M.latitude),O.height=(f.height*o+M.height*s)/(s+o),l++),2===l)break}if(2!==l)return a.height;var g=O.height-.5*u,m=y.height-.5*h;return g<m?m:g},t.IntersectionTests=C,t.Ray=e});