1 |
- define(["exports","./Matrix2-7fbd2afb","./defaultValue-81eec7ed","./RuntimeError-8952249c","./Transforms-969e35b7","./ComponentDatatype-be80d12c"],(function(t,e,n,a,i,r){"use strict";const s={};function o(t,e,n){const a=t+e;return r.CesiumMath.sign(t)!==r.CesiumMath.sign(e)&&Math.abs(a/Math.max(Math.abs(t),Math.abs(e)))<n?0:a}s.computeDiscriminant=function(t,e,n){return e*e-4*t*n},s.computeRealRoots=function(t,e,n){let a;if(0===t)return 0===e?[]:[-n/e];if(0===e){if(0===n)return[0,0];const e=Math.abs(n),i=Math.abs(t);if(e<i&&e/i<r.CesiumMath.EPSILON14)return[0,0];if(e>i&&i/e<r.CesiumMath.EPSILON14)return[];if(a=-n/t,a<0)return[];const s=Math.sqrt(a);return[-s,s]}if(0===n)return a=-e/t,a<0?[a,0]:[0,a];const i=o(e*e,-(4*t*n),r.CesiumMath.EPSILON14);if(i<0)return[];const s=-.5*o(e,r.CesiumMath.sign(e)*Math.sqrt(i),r.CesiumMath.EPSILON14);return e>0?[s/t,n/s]:[n/s,s/t]};const c={};function u(t,e,n,a){const i=t,r=e/3,s=n/3,o=a,c=i*s,u=r*o,l=r*r,C=s*s,M=i*s-l,h=i*o-r*s,m=r*o-C,f=4*M*m-h*h;let d,g;if(f<0){let t,e,n;l*u>=c*C?(t=i,e=M,n=-2*r*M+i*h):(t=o,e=m,n=-o*h+2*s*m);const a=-(n<0?-1:1)*Math.abs(t)*Math.sqrt(-f);g=-n+a;const p=g/2,w=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),R=g===a?-w:-e/w;return d=e<=0?w+R:-n/(w*w+R*R+e),l*u>=c*C?[(d-r)/i]:[-o/(d+s)]}const p=M,w=-2*r*M+i*h,R=m,S=-o*h+2*s*m,O=Math.sqrt(f),x=Math.sqrt(3)/2;let y=Math.abs(Math.atan2(i*O,-w)/3);d=2*Math.sqrt(-p);let P=Math.cos(y);g=d*P;let b=d*(-P/2-x*Math.sin(y));const N=g+b>2*r?g-r:b-r,q=i,L=N/q;y=Math.abs(Math.atan2(o*O,-S)/3),d=2*Math.sqrt(-R),P=Math.cos(y),g=d*P,b=d*(-P/2-x*Math.sin(y));const I=-o,E=g+b<2*s?g+s:b+s,z=I/E,T=-N*E-q*I,v=(s*T-r*(N*I))/(-r*T+s*(q*E));return L<=v?L<=z?v<=z?[L,v,z]:[L,z,v]:[z,L,v]:L<=z?[v,L,z]:v<=z?[v,z,L]:[z,v,L]}c.computeDiscriminant=function(t,e,n,a){const i=e*e,r=n*n;return 18*t*e*n*a+i*r-27*(t*t)*(a*a)-4*(t*r*n+i*e*a)},c.computeRealRoots=function(t,e,n,a){let i,r;if(0===t)return s.computeRealRoots(e,n,a);if(0===e){if(0===n){if(0===a)return[0,0,0];r=-a/t;const e=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[e,e,e]}return 0===a?(i=s.computeRealRoots(t,0,n),0===i.Length?[0]:[i[0],0,i[1]]):u(t,0,n,a)}return 0===n?0===a?(r=-e/t,r<0?[r,0,0]:[0,0,r]):u(t,e,0,a):0===a?(i=s.computeRealRoots(t,e,n),0===i.length?[0]:i[1]<=0?[i[0],i[1],0]:i[0]>=0?[0,i[0],i[1]]:[i[0],0,i[1]]):u(t,e,n,a)};const l={};function C(t,e,n,a){const i=t*t,o=e-3*i/8,u=n-e*t/2+i*t/8,l=a-n*t/4+e*i/16-3*i*i/256,C=c.computeRealRoots(1,2*o,o*o-4*l,-u*u);if(C.length>0){const e=-t/4,n=C[C.length-1];if(Math.abs(n)<r.CesiumMath.EPSILON14){const t=s.computeRealRoots(1,o,l);if(2===t.length){const n=t[0],a=t[1];let i;if(n>=0&&a>=0){const t=Math.sqrt(n),i=Math.sqrt(a);return[e-i,e-t,e+t,e+i]}if(n>=0&&a<0)return i=Math.sqrt(n),[e-i,e+i];if(n<0&&a>=0)return i=Math.sqrt(a),[e-i,e+i]}return[]}if(n>0){const t=Math.sqrt(n),a=(o+n-u/t)/2,i=(o+n+u/t)/2,r=s.computeRealRoots(1,t,a),c=s.computeRealRoots(1,-t,i);return 0!==r.length?(r[0]+=e,r[1]+=e,0!==c.length?(c[0]+=e,c[1]+=e,r[1]<=c[0]?[r[0],r[1],c[0],c[1]]:c[1]<=r[0]?[c[0],c[1],r[0],r[1]]:r[0]>=c[0]&&r[1]<=c[1]?[c[0],r[0],r[1],c[1]]:c[0]>=r[0]&&c[1]<=r[1]?[r[0],c[0],c[1],r[1]]:r[0]>c[0]&&r[0]<c[1]?[c[0],r[0],c[1],r[1]]:[r[0],c[0],r[1],c[1]]):r):0!==c.length?(c[0]+=e,c[1]+=e,c):[]}}return[]}function M(t,e,n,a){const i=t*t,o=-2*e,u=n*t+e*e-4*a,l=i*a-n*e*t+n*n,C=c.computeRealRoots(1,o,u,l);if(C.length>0){const o=C[0],c=e-o,u=c*c,l=t/2,M=c/2,h=u-4*a,m=u+4*Math.abs(a),f=i-4*o,d=i+4*Math.abs(o);let g,p,w,R,S,O;if(o<0||h*d<f*m){const e=Math.sqrt(f);g=e/2,p=0===e?0:(t*M-n)/e}else{const e=Math.sqrt(h);g=0===e?0:(t*M-n)/e,p=e/2}0===l&&0===g?(w=0,R=0):r.CesiumMath.sign(l)===r.CesiumMath.sign(g)?(w=l+g,R=o/w):(R=l-g,w=o/R),0===M&&0===p?(S=0,O=0):r.CesiumMath.sign(M)===r.CesiumMath.sign(p)?(S=M+p,O=a/S):(O=M-p,S=a/O);const x=s.computeRealRoots(1,w,S),y=s.computeRealRoots(1,R,O);if(0!==x.length)return 0!==y.length?x[1]<=y[0]?[x[0],x[1],y[0],y[1]]:y[1]<=x[0]?[y[0],y[1],x[0],x[1]]:x[0]>=y[0]&&x[1]<=y[1]?[y[0],x[0],x[1],y[1]]:y[0]>=x[0]&&y[1]<=x[1]?[x[0],y[0],y[1],x[1]]:x[0]>y[0]&&x[0]<y[1]?[y[0],x[0],y[1],x[1]]:[x[0],y[0],x[1],y[1]]:x;if(0!==y.length)return y}return[]}function h(t,a){a=e.Cartesian3.clone(n.defaultValue(a,e.Cartesian3.ZERO)),e.Cartesian3.equals(a,e.Cartesian3.ZERO)||e.Cartesian3.normalize(a,a),this.origin=e.Cartesian3.clone(n.defaultValue(t,e.Cartesian3.ZERO)),this.direction=a}l.computeDiscriminant=function(t,e,n,a,i){const r=t*t,s=e*e,o=s*e,c=n*n,u=c*n,l=a*a,C=l*a,M=i*i;return s*c*l-4*o*C-4*t*u*l+18*t*e*n*C-27*r*l*l+256*(r*t)*(M*i)+i*(18*o*n*a-4*s*u+16*t*c*c-80*t*e*c*a-6*t*s*l+144*r*n*l)+M*(144*t*s*n-27*s*s-128*r*c-192*r*e*a)},l.computeRealRoots=function(t,e,n,a,i){if(Math.abs(t)<r.CesiumMath.EPSILON15)return c.computeRealRoots(e,n,a,i);const s=e/t,o=n/t,u=a/t,l=i/t;let h=s<0?1:0;switch(h+=o<0?h+1:h,h+=u<0?h+1:h,h+=l<0?h+1:h,h){case 0:case 3:case 4:case 6:case 7:case 9:case 10:case 12:case 13:case 14:case 15:return C(s,o,u,l);case 1:case 2:case 5:case 8:case 11:return M(s,o,u,l);default:return}},h.clone=function(t,a){if(n.defined(t))return n.defined(a)?(a.origin=e.Cartesian3.clone(t.origin),a.direction=e.Cartesian3.clone(t.direction),a):new h(t.origin,t.direction)},h.getPoint=function(t,a,i){return n.defined(i)||(i=new e.Cartesian3),i=e.Cartesian3.multiplyByScalar(t.direction,a,i),e.Cartesian3.add(t.origin,i,i)};const m={rayPlane:function(t,a,i){n.defined(i)||(i=new e.Cartesian3);const s=t.origin,o=t.direction,c=a.normal,u=e.Cartesian3.dot(c,o);if(Math.abs(u)<r.CesiumMath.EPSILON15)return;const l=(-a.distance-e.Cartesian3.dot(c,s))/u;return l<0?void 0:(i=e.Cartesian3.multiplyByScalar(o,l,i),e.Cartesian3.add(s,i,i))}},f=new e.Cartesian3,d=new e.Cartesian3,g=new e.Cartesian3,p=new e.Cartesian3,w=new e.Cartesian3;m.rayTriangleParametric=function(t,a,i,s,o){o=n.defaultValue(o,!1);const c=t.origin,u=t.direction,l=e.Cartesian3.subtract(i,a,f),C=e.Cartesian3.subtract(s,a,d),M=e.Cartesian3.cross(u,C,g),h=e.Cartesian3.dot(l,M);let m,R,S,O,x;if(o){if(h<r.CesiumMath.EPSILON6)return;if(m=e.Cartesian3.subtract(c,a,p),S=e.Cartesian3.dot(m,M),S<0||S>h)return;if(R=e.Cartesian3.cross(m,l,w),O=e.Cartesian3.dot(u,R),O<0||S+O>h)return;x=e.Cartesian3.dot(C,R)/h}else{if(Math.abs(h)<r.CesiumMath.EPSILON6)return;const t=1/h;if(m=e.Cartesian3.subtract(c,a,p),S=e.Cartesian3.dot(m,M)*t,S<0||S>1)return;if(R=e.Cartesian3.cross(m,l,w),O=e.Cartesian3.dot(u,R)*t,O<0||S+O>1)return;x=e.Cartesian3.dot(C,R)*t}return x},m.rayTriangle=function(t,a,i,r,s,o){const c=m.rayTriangleParametric(t,a,i,r,s);if(n.defined(c)&&!(c<0))return n.defined(o)||(o=new e.Cartesian3),e.Cartesian3.multiplyByScalar(t.direction,c,o),e.Cartesian3.add(t.origin,o,o)};const R=new h;m.lineSegmentTriangle=function(t,a,i,r,s,o,c){const u=R;e.Cartesian3.clone(t,u.origin),e.Cartesian3.subtract(a,t,u.direction),e.Cartesian3.normalize(u.direction,u.direction);const l=m.rayTriangleParametric(u,i,r,s,o);if(!(!n.defined(l)||l<0||l>e.Cartesian3.distance(t,a)))return n.defined(c)||(c=new e.Cartesian3),e.Cartesian3.multiplyByScalar(u.direction,l,c),e.Cartesian3.add(u.origin,c,c)};const S={root0:0,root1:0};function O(t,a,r){n.defined(r)||(r=new i.Interval);const s=t.origin,o=t.direction,c=a.center,u=a.radius*a.radius,l=e.Cartesian3.subtract(s,c,g),C=function(t,e,n,a){const i=e*e-4*t*n;if(i<0)return;if(i>0){const n=1/(2*t),r=Math.sqrt(i),s=(-e+r)*n,o=(-e-r)*n;return s<o?(a.root0=s,a.root1=o):(a.root0=o,a.root1=s),a}const r=-e/(2*t);return 0!==r?(a.root0=a.root1=r,a):void 0}(e.Cartesian3.dot(o,o),2*e.Cartesian3.dot(o,l),e.Cartesian3.magnitudeSquared(l)-u,S);if(n.defined(C))return r.start=C.root0,r.stop=C.root1,r}m.raySphere=function(t,e,a){if(a=O(t,e,a),n.defined(a)&&!(a.stop<0))return a.start=Math.max(a.start,0),a};const x=new h;m.lineSegmentSphere=function(t,a,i,r){const s=x;e.Cartesian3.clone(t,s.origin);const o=e.Cartesian3.subtract(a,t,s.direction),c=e.Cartesian3.magnitude(o);if(e.Cartesian3.normalize(o,o),r=O(s,i,r),!(!n.defined(r)||r.stop<0||r.start>c))return r.start=Math.max(r.start,0),r.stop=Math.min(r.stop,c),r};const y=new e.Cartesian3,P=new e.Cartesian3;function b(t,e,n){const a=t+e;return r.CesiumMath.sign(t)!==r.CesiumMath.sign(e)&&Math.abs(a/Math.max(Math.abs(t),Math.abs(e)))<n?0:a}m.rayEllipsoid=function(t,n){const a=n.oneOverRadii,r=e.Cartesian3.multiplyComponents(a,t.origin,y),s=e.Cartesian3.multiplyComponents(a,t.direction,P),o=e.Cartesian3.magnitudeSquared(r),c=e.Cartesian3.dot(r,s);let u,l,C,M,h;if(o>1){if(c>=0)return;const t=c*c;if(u=o-1,l=e.Cartesian3.magnitudeSquared(s),C=l*u,t<C)return;if(t>C){M=c*c-C,h=-c+Math.sqrt(M);const t=h/l,e=u/h;return t<e?new i.Interval(t,e):{start:e,stop:t}}const n=Math.sqrt(u/l);return new i.Interval(n,n)}return o<1?(u=o-1,l=e.Cartesian3.magnitudeSquared(s),C=l*u,M=c*c-C,h=-c+Math.sqrt(M),new i.Interval(0,h/l)):c<0?(l=e.Cartesian3.magnitudeSquared(s),new i.Interval(0,-c/l)):void 0};const N=new e.Cartesian3,q=new e.Cartesian3,L=new e.Cartesian3,I=new e.Cartesian3,E=new e.Cartesian3,z=new e.Matrix3,T=new e.Matrix3,v=new e.Matrix3,U=new e.Matrix3,W=new e.Matrix3,B=new e.Matrix3,V=new e.Matrix3,Z=new e.Cartesian3,D=new e.Cartesian3,A=new e.Cartographic;m.grazingAltitudeLocation=function(t,a){const i=t.origin,o=t.direction;if(!e.Cartesian3.equals(i,e.Cartesian3.ZERO)){const t=a.geodeticSurfaceNormal(i,N);if(e.Cartesian3.dot(o,t)>=0)return i}const c=n.defined(this.rayEllipsoid(t,a)),u=a.transformPositionToScaledSpace(o,N),C=e.Cartesian3.normalize(u,u),M=e.Cartesian3.mostOrthogonalAxis(u,I),h=e.Cartesian3.normalize(e.Cartesian3.cross(M,C,q),q),m=e.Cartesian3.normalize(e.Cartesian3.cross(C,h,L),L),f=z;f[0]=C.x,f[1]=C.y,f[2]=C.z,f[3]=h.x,f[4]=h.y,f[5]=h.z,f[6]=m.x,f[7]=m.y,f[8]=m.z;const d=e.Matrix3.transpose(f,T),g=e.Matrix3.fromScale(a.radii,v),p=e.Matrix3.fromScale(a.oneOverRadii,U),w=W;w[0]=0,w[1]=-o.z,w[2]=o.y,w[3]=o.z,w[4]=0,w[5]=-o.x,w[6]=-o.y,w[7]=o.x,w[8]=0;const R=e.Matrix3.multiply(e.Matrix3.multiply(d,p,B),w,B),S=e.Matrix3.multiply(e.Matrix3.multiply(R,g,V),f,V),O=e.Matrix3.multiplyByVector(R,i,E),x=function(t,n,a,i,o){const c=i*i,u=o*o,C=(t[e.Matrix3.COLUMN1ROW1]-t[e.Matrix3.COLUMN2ROW2])*u,M=o*(i*b(t[e.Matrix3.COLUMN1ROW0],t[e.Matrix3.COLUMN0ROW1],r.CesiumMath.EPSILON15)+n.y),h=t[e.Matrix3.COLUMN0ROW0]*c+t[e.Matrix3.COLUMN2ROW2]*u+i*n.x+a,m=u*b(t[e.Matrix3.COLUMN2ROW1],t[e.Matrix3.COLUMN1ROW2],r.CesiumMath.EPSILON15),f=o*(i*b(t[e.Matrix3.COLUMN2ROW0],t[e.Matrix3.COLUMN0ROW2])+n.z);let d;const g=[];if(0===f&&0===m){if(d=s.computeRealRoots(C,M,h),0===d.length)return g;const t=d[0],n=Math.sqrt(Math.max(1-t*t,0));if(g.push(new e.Cartesian3(i,o*t,o*-n)),g.push(new e.Cartesian3(i,o*t,o*n)),2===d.length){const t=d[1],n=Math.sqrt(Math.max(1-t*t,0));g.push(new e.Cartesian3(i,o*t,o*-n)),g.push(new e.Cartesian3(i,o*t,o*n))}return g}const p=f*f,w=m*m,R=f*m,S=C*C+w,O=2*(M*C+R),x=2*h*C+M*M-w+p,y=2*(h*M-R),P=h*h-p;if(0===S&&0===O&&0===x&&0===y)return g;d=l.computeRealRoots(S,O,x,y,P);const N=d.length;if(0===N)return g;for(let t=0;t<N;++t){const n=d[t],a=n*n,s=Math.max(1-a,0),c=Math.sqrt(s);let u;u=r.CesiumMath.sign(C)===r.CesiumMath.sign(h)?b(C*a+h,M*n,r.CesiumMath.EPSILON12):r.CesiumMath.sign(h)===r.CesiumMath.sign(M*n)?b(C*a,M*n+h,r.CesiumMath.EPSILON12):b(C*a+M*n,h,r.CesiumMath.EPSILON12);const l=u*b(m*n,f,r.CesiumMath.EPSILON15);l<0?g.push(new e.Cartesian3(i,o*n,o*c)):l>0?g.push(new e.Cartesian3(i,o*n,o*-c)):0!==c?(g.push(new e.Cartesian3(i,o*n,o*-c)),g.push(new e.Cartesian3(i,o*n,o*c)),++t):g.push(new e.Cartesian3(i,o*n,o*c))}return g}(S,e.Cartesian3.negate(O,N),0,0,1);let y,P;const F=x.length;if(F>0){let t=e.Cartesian3.clone(e.Cartesian3.ZERO,D),n=Number.NEGATIVE_INFINITY;for(let a=0;a<F;++a){y=e.Matrix3.multiplyByVector(g,e.Matrix3.multiplyByVector(f,x[a],Z),Z);const r=e.Cartesian3.normalize(e.Cartesian3.subtract(y,i,I),I),s=e.Cartesian3.dot(r,o);s>n&&(n=s,t=e.Cartesian3.clone(y,t))}const s=a.cartesianToCartographic(t,A);return n=r.CesiumMath.clamp(n,0,1),P=e.Cartesian3.magnitude(e.Cartesian3.subtract(t,i,I))*Math.sqrt(1-n*n),P=c?-P:P,s.height=P,a.cartographicToCartesian(s,new e.Cartesian3)}};const F=new e.Cartesian3;m.lineSegmentPlane=function(t,a,i,s){n.defined(s)||(s=new e.Cartesian3);const o=e.Cartesian3.subtract(a,t,F),c=i.normal,u=e.Cartesian3.dot(c,o);if(Math.abs(u)<r.CesiumMath.EPSILON6)return;const l=e.Cartesian3.dot(c,t),C=-(i.distance+l)/u;return C<0||C>1?void 0:(e.Cartesian3.multiplyByScalar(o,C,s),e.Cartesian3.add(t,s,s),s)},m.trianglePlaneIntersection=function(t,n,a,i){const r=i.normal,s=i.distance,o=e.Cartesian3.dot(r,t)+s<0,c=e.Cartesian3.dot(r,n)+s<0,u=e.Cartesian3.dot(r,a)+s<0;let l,C,M=0;if(M+=o?1:0,M+=c?1:0,M+=u?1:0,1!==M&&2!==M||(l=new e.Cartesian3,C=new e.Cartesian3),1===M){if(o)return m.lineSegmentPlane(t,n,i,l),m.lineSegmentPlane(t,a,i,C),{positions:[t,n,a,l,C],indices:[0,3,4,1,2,4,1,4,3]};if(c)return m.lineSegmentPlane(n,a,i,l),m.lineSegmentPlane(n,t,i,C),{positions:[t,n,a,l,C],indices:[1,3,4,2,0,4,2,4,3]};if(u)return m.lineSegmentPlane(a,t,i,l),m.lineSegmentPlane(a,n,i,C),{positions:[t,n,a,l,C],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===M){if(!o)return m.lineSegmentPlane(n,t,i,l),m.lineSegmentPlane(a,t,i,C),{positions:[t,n,a,l,C],indices:[1,2,4,1,4,3,0,3,4]};if(!c)return m.lineSegmentPlane(a,n,i,l),m.lineSegmentPlane(t,n,i,C),{positions:[t,n,a,l,C],indices:[2,0,4,2,4,3,1,3,4]};if(!u)return m.lineSegmentPlane(t,a,i,l),m.lineSegmentPlane(n,a,i,C),{positions:[t,n,a,l,C],indices:[0,1,4,0,4,3,2,3,4]}}},t.IntersectionTests=m,t.Ray=h}));
|