NONGYESHUZIDIZUO/public/Cesium/Workers/Plane-5716a082.js

2 lines
14 KiB
JavaScript

define(["exports","./Cartesian4-b0ddc4ba","./when-b60132fc","./Check-7b2a090c","./buildModuleUrl-8cce5713","./Math-31e539c2"],(function(a,t,e,r,n,i){"use strict";var s={};function o(a,t,e){var r=a+t;return i.Math3D.sign(a)!==i.Math3D.sign(t)&&Math.abs(r/Math.max(Math.abs(a),Math.abs(t)))<e?0:r}s.computeDiscriminant=function(a,t,e){return t*t-4*a*e},s.computeRealRoots=function(a,t,e){var r;if(0===a)return 0===t?[]:[-e/t];if(0===t){if(0===e)return[0,0];var n=Math.abs(e),s=Math.abs(a);if(n<s&&n/s<i.Math3D.EPSILON14)return[0,0];if(n>s&&s/n<i.Math3D.EPSILON14)return[];if((r=-e/a)<0)return[];var u=Math.sqrt(r);return[-u,u]}if(0===e)return(r=-t/a)<0?[r,0]:[0,r];var c=o(t*t,-(4*a*e),i.Math3D.EPSILON14);if(c<0)return[];var l=-.5*o(t,i.Math3D.sign(t)*Math.sqrt(c),i.Math3D.EPSILON14);return t>0?[l/a,e/l]:[e/l,l/a]};var u={};function c(a,t,e,r){var n,i,s=a,o=t/3,u=e/3,c=r,l=s*u,C=o*c,f=o*o,d=u*u,h=s*u-f,M=s*c-o*u,m=o*c-d,v=4*h*m-M*M;if(v<0){var g,p,w;f*C>=l*d?(g=s,p=h,w=-2*o*h+s*M):(g=c,p=m,w=-c*M+2*u*m);var R=-(w<0?-1:1)*Math.abs(g)*Math.sqrt(-v),O=(i=-w+R)/2,S=O<0?-Math.pow(-O,1/3):Math.pow(O,1/3),P=i===R?-S:-p/S;return n=p<=0?S+P:-w/(S*S+P*P+p),f*C>=l*d?[(n-o)/s]:[-c/(n+u)]}var y=h,x=-2*o*h+s*M,N=m,b=-c*M+2*u*m,I=Math.sqrt(v),D=Math.sqrt(3)/2,q=Math.abs(Math.atan2(s*I,-x)/3);n=2*Math.sqrt(-y);var L=Math.cos(q);i=n*L;var E=n*(-L/2-D*Math.sin(q)),z=i+E>2*o?i-o:E-o,T=s,U=z/T;q=Math.abs(Math.atan2(c*I,-b)/3);var B=-c,W=(i=(n=2*Math.sqrt(-N))*(L=Math.cos(q)))+(E=n*(-L/2-D*Math.sin(q)))<2*u?i+u:E+u,_=B/W,V=-z*W-T*B,Z=(u*V-o*(z*B))/(-o*V+u*(T*W));return U<=Z?U<=_?Z<=_?[U,Z,_]:[U,_,Z]:[_,U,Z]:U<=_?[Z,U,_]:Z<=_?[Z,_,U]:[_,Z,U]}u.computeDiscriminant=function(a,t,e,r){var n=t*t,i=e*e;return 18*a*t*e*r+n*i-27*(a*a)*(r*r)-4*(a*i*e+n*t*r)},u.computeRealRoots=function(a,t,e,r){var n,i;if(0===a)return s.computeRealRoots(t,e,r);if(0===t){if(0===e){if(0===r)return[0,0,0];var o=(i=-r/a)<0?-Math.pow(-i,1/3):Math.pow(i,1/3);return[o,o,o]}return 0===r?0===(n=s.computeRealRoots(a,0,e)).Length?[0]:[n[0],0,n[1]]:c(a,0,e,r)}return 0===e?0===r?(i=-t/a)<0?[i,0,0]:[0,0,i]:c(a,t,0,r):0===r?0===(n=s.computeRealRoots(a,t,e)).length?[0]:n[1]<=0?[n[0],n[1],0]:n[0]>=0?[0,n[0],n[1]]:[n[0],0,n[1]]:c(a,t,e,r)};var l={};function C(a,t,e,r){var n=a*a,o=t-3*n/8,c=e-t*a/2+n*a/8,l=r-e*a/4+t*n/16-3*n*n/256,C=u.computeRealRoots(1,2*o,o*o-4*l,-c*c);if(C.length>0){var f=-a/4,d=C[C.length-1];if(Math.abs(d)<i.Math3D.EPSILON14){var h=s.computeRealRoots(1,o,l);if(2===h.length){var M,m=h[0],v=h[1];if(m>=0&&v>=0){var g=Math.sqrt(m),p=Math.sqrt(v);return[f-p,f-g,f+g,f+p]}if(m>=0&&v<0)return[f-(M=Math.sqrt(m)),f+M];if(m<0&&v>=0)return[f-(M=Math.sqrt(v)),f+M]}return[]}if(d>0){var w=Math.sqrt(d),R=(o+d-c/w)/2,O=(o+d+c/w)/2,S=s.computeRealRoots(1,w,R),P=s.computeRealRoots(1,-w,O);return 0!==S.length?(S[0]+=f,S[1]+=f,0!==P.length?(P[0]+=f,P[1]+=f,S[1]<=P[0]?[S[0],S[1],P[0],P[1]]:P[1]<=S[0]?[P[0],P[1],S[0],S[1]]:S[0]>=P[0]&&S[1]<=P[1]?[P[0],S[0],S[1],P[1]]:P[0]>=S[0]&&P[1]<=S[1]?[S[0],P[0],P[1],S[1]]:S[0]>P[0]&&S[0]<P[1]?[P[0],S[0],P[1],S[1]]:[S[0],P[0],S[1],P[1]]):S):0!==P.length?(P[0]+=f,P[1]+=f,P):[]}}return[]}function f(a,t,e,r){var n=a*a,o=-2*t,c=e*a+t*t-4*r,l=n*r-e*t*a+e*e,C=u.computeRealRoots(1,o,c,l);if(C.length>0){var f,d,h,M,m,v,g=C[0],p=t-g,w=p*p,R=a/2,O=p/2,S=w-4*r,P=w+4*Math.abs(r),y=n-4*g,x=n+4*Math.abs(g);if(g<0||S*x<y*P){var N=Math.sqrt(y);f=N/2,d=0===N?0:(a*O-e)/N}else{var b=Math.sqrt(S);f=0===b?0:(a*O-e)/b,d=b/2}0===R&&0===f?(h=0,M=0):i.Math3D.sign(R)===i.Math3D.sign(f)?M=g/(h=R+f):h=g/(M=R-f),0===O&&0===d?(m=0,v=0):i.Math3D.sign(O)===i.Math3D.sign(d)?v=r/(m=O+d):m=r/(v=O-d);var I=s.computeRealRoots(1,h,m),D=s.computeRealRoots(1,M,v);if(0!==I.length)return 0!==D.length?I[1]<=D[0]?[I[0],I[1],D[0],D[1]]:D[1]<=I[0]?[D[0],D[1],I[0],I[1]]:I[0]>=D[0]&&I[1]<=D[1]?[D[0],I[0],I[1],D[1]]:D[0]>=I[0]&&D[1]<=I[1]?[I[0],D[0],D[1],I[1]]:I[0]>D[0]&&I[0]<D[1]?[D[0],I[0],D[1],I[1]]:[I[0],D[0],I[1],D[1]]:I;if(0!==D.length)return D}return[]}function d(a,r){r=t.Cartesian3.clone(e.defaultValue(r,t.Cartesian3.ZERO)),t.Cartesian3.equals(r,t.Cartesian3.ZERO)||t.Cartesian3.normalize(r,r),this.origin=t.Cartesian3.clone(e.defaultValue(a,t.Cartesian3.ZERO)),this.direction=r}l.computeDiscriminant=function(a,t,e,r,n){var i=a*a,s=t*t,o=s*t,u=e*e,c=u*e,l=r*r,C=l*r,f=n*n;return s*u*l-4*o*C-4*a*c*l+18*a*t*e*C-27*i*l*l+256*(i*a)*(f*n)+n*(18*o*e*r-4*s*c+16*a*u*u-80*a*t*u*r-6*a*s*l+144*i*e*l)+f*(144*a*s*e-27*s*s-128*i*u-192*i*t*r)},l.computeRealRoots=function(a,t,e,r,n){if(Math.abs(a)<i.Math3D.EPSILON15)return u.computeRealRoots(t,e,r,n);var s=t/a,o=e/a,c=r/a,l=n/a,d=s<0?1:0;switch(d+=o<0?d+1:d,d+=c<0?d+1:d,d+=l<0?d+1:d){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,c,l);case 1:case 2:case 5:case 8:case 11:return f(s,o,c,l);default:return}},d.clone=function(a,r){if(e.defined(a))return e.defined(r)?(r.origin=t.Cartesian3.clone(a.origin),r.direction=t.Cartesian3.clone(a.direction),r):new d(a.origin,a.direction)},d.getPoint=function(a,r,n){return e.defined(n)||(n=new t.Cartesian3),n=t.Cartesian3.multiplyByScalar(a.direction,r,n),t.Cartesian3.add(a.origin,n,n)};var h={rayPlane:function(a,r,n){e.defined(n)||(n=new t.Cartesian3);var s=a.origin,o=a.direction,u=r.normal,c=t.Cartesian3.dot(u,o);if(!(Math.abs(c)<i.Math3D.EPSILON15)){var l=(-r.distance-t.Cartesian3.dot(u,s))/c;if(!(l<0))return n=t.Cartesian3.multiplyByScalar(o,l,n),t.Cartesian3.add(s,n,n)}}},M=new t.Cartesian3,m=new t.Cartesian3,v=new t.Cartesian3,g=new t.Cartesian3,p=new t.Cartesian3;h.rayTriangleParametric=function(a,r,n,s,o){o=e.defaultValue(o,!1);var u,c,l,C,f,d=a.origin,h=a.direction,w=t.Cartesian3.subtract(n,r,M),R=t.Cartesian3.subtract(s,r,m),O=t.Cartesian3.cross(h,R,v),S=t.Cartesian3.dot(w,O);if(o){if(S<i.Math3D.EPSILON6)return;if(u=t.Cartesian3.subtract(d,r,g),(l=t.Cartesian3.dot(u,O))<0||l>S)return;if(c=t.Cartesian3.cross(u,w,p),(C=t.Cartesian3.dot(h,c))<0||l+C>S)return;f=t.Cartesian3.dot(R,c)/S}else{if(Math.abs(S)<i.Math3D.EPSILON6)return;var P=1/S;if(u=t.Cartesian3.subtract(d,r,g),(l=t.Cartesian3.dot(u,O)*P)<0||l>1)return;if(c=t.Cartesian3.cross(u,w,p),(C=t.Cartesian3.dot(h,c)*P)<0||l+C>1)return;f=t.Cartesian3.dot(R,c)*P}return f},h.rayTriangle=function(a,r,n,i,s,o){var u=h.rayTriangleParametric(a,r,n,i,s);if(e.defined(u)&&!(u<0))return e.defined(o)||(o=new t.Cartesian3),t.Cartesian3.multiplyByScalar(a.direction,u,o),t.Cartesian3.add(a.origin,o,o)};var w=new d;h.lineSegmentTriangle=function(a,r,n,i,s,o,u){var c=w;t.Cartesian3.clone(a,c.origin),t.Cartesian3.subtract(r,a,c.direction),t.Cartesian3.normalize(c.direction,c.direction);var l=h.rayTriangleParametric(c,n,i,s,o);if(!(!e.defined(l)||l<0||l>t.Cartesian3.distance(a,r)))return e.defined(u)||(u=new t.Cartesian3),t.Cartesian3.multiplyByScalar(c.direction,l,u),t.Cartesian3.add(c.origin,u,u)};var R={root0:0,root1:0};function O(a,r,i){e.defined(i)||(i=new n.Interval);var s=a.origin,o=a.direction,u=r.center,c=r.radius*r.radius,l=t.Cartesian3.subtract(s,u,v),C=function(a,t,e,r){var n=t*t-4*a*e;if(!(n<0)){if(n>0){var i=1/(2*a),s=Math.sqrt(n),o=(-t+s)*i,u=(-t-s)*i;return o<u?(r.root0=o,r.root1=u):(r.root0=u,r.root1=o),r}var c=-t/(2*a);if(0!==c)return r.root0=r.root1=c,r}}(t.Cartesian3.dot(o,o),2*t.Cartesian3.dot(o,l),t.Cartesian3.magnitudeSquared(l)-c,R);if(e.defined(C))return i.start=C.root0,i.stop=C.root1,i}h.raySphere=function(a,t,r){if(r=O(a,t,r),e.defined(r)&&!(r.stop<0))return r.start=Math.max(r.start,0),r};var S=new d;h.lineSegmentSphere=function(a,r,n,i){var s=S;t.Cartesian3.clone(a,s.origin);var o=t.Cartesian3.subtract(r,a,s.direction),u=t.Cartesian3.magnitude(o);if(t.Cartesian3.normalize(o,o),i=O(s,n,i),!(!e.defined(i)||i.stop<0||i.start>u))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,u),i};var P=new t.Cartesian3,y=new t.Cartesian3;function x(a,t,e){var r=a+t;return i.Math3D.sign(a)!==i.Math3D.sign(t)&&Math.abs(r/Math.max(Math.abs(a),Math.abs(t)))<e?0:r}h.rayEllipsoid=function(a,e){var r,i,s,o,u,c=e.oneOverRadii,l=t.Cartesian3.multiplyComponents(c,a.origin,P),C=t.Cartesian3.multiplyComponents(c,a.direction,y),f=t.Cartesian3.magnitudeSquared(l),d=t.Cartesian3.dot(l,C);if(f>1){if(d>=0)return;var h=d*d;if(r=f-1,h<(s=(i=t.Cartesian3.magnitudeSquared(C))*r))return;if(h>s){o=d*d-s;var M=(u=-d+Math.sqrt(o))/i,m=r/u;return M<m?new n.Interval(M,m):{start:m,stop:M}}var v=Math.sqrt(r/i);return new n.Interval(v,v)}return f<1?(r=f-1,o=d*d-(s=(i=t.Cartesian3.magnitudeSquared(C))*r),u=-d+Math.sqrt(o),new n.Interval(0,u/i)):d<0?(i=t.Cartesian3.magnitudeSquared(C),new n.Interval(0,-d/i)):void 0};var N=new t.Cartesian3,b=new t.Cartesian3,I=new t.Cartesian3,D=new t.Cartesian3,q=new t.Cartesian3,L=new n.Matrix3,E=new n.Matrix3,z=new n.Matrix3,T=new n.Matrix3,U=new n.Matrix3,B=new n.Matrix3,W=new n.Matrix3,_=new t.Cartesian3,V=new t.Cartesian3,Z=new t.Cartographic;h.grazingAltitudeLocation=function(a,r){var o=a.origin,u=a.direction;if(!t.Cartesian3.equals(o,t.Cartesian3.ZERO)){var c=r.geodeticSurfaceNormal(o,N);if(t.Cartesian3.dot(u,c)>=0)return o}var C=e.defined(this.rayEllipsoid(a,r)),f=r.transformPositionToScaledSpace(u,N),d=t.Cartesian3.normalize(f,f),h=t.Cartesian3.mostOrthogonalAxis(f,D),M=t.Cartesian3.normalize(t.Cartesian3.cross(h,d,b),b),m=t.Cartesian3.normalize(t.Cartesian3.cross(d,M,I),I),v=L;v[0]=d.x,v[1]=d.y,v[2]=d.z,v[3]=M.x,v[4]=M.y,v[5]=M.z,v[6]=m.x,v[7]=m.y,v[8]=m.z;var g=n.Matrix3.transpose(v,E),p=n.Matrix3.fromScale(r.radii,z),w=n.Matrix3.fromScale(r.oneOverRadii,T),R=U;R[0]=0,R[1]=-u.z,R[2]=u.y,R[3]=u.z,R[4]=0,R[5]=-u.x,R[6]=-u.y,R[7]=u.x,R[8]=0;var O,S,P=n.Matrix3.multiply(n.Matrix3.multiply(g,w,B),R,B),y=n.Matrix3.multiply(n.Matrix3.multiply(P,p,W),v,W),A=n.Matrix3.multiplyByVector(P,o,q),j=function(a,e,r,o,u){var c,C=o*o,f=u*u,d=(a[n.Matrix3.COLUMN1ROW1]-a[n.Matrix3.COLUMN2ROW2])*f,h=u*(o*x(a[n.Matrix3.COLUMN1ROW0],a[n.Matrix3.COLUMN0ROW1],i.Math3D.EPSILON15)+e.y),M=a[n.Matrix3.COLUMN0ROW0]*C+a[n.Matrix3.COLUMN2ROW2]*f+o*e.x+r,m=f*x(a[n.Matrix3.COLUMN2ROW1],a[n.Matrix3.COLUMN1ROW2],i.Math3D.EPSILON15),v=u*(o*x(a[n.Matrix3.COLUMN2ROW0],a[n.Matrix3.COLUMN0ROW2])+e.z),g=[];if(0===v&&0===m){if(0===(c=s.computeRealRoots(d,h,M)).length)return g;var p=c[0],w=Math.sqrt(Math.max(1-p*p,0));if(g.push(new t.Cartesian3(o,u*p,u*-w)),g.push(new t.Cartesian3(o,u*p,u*w)),2===c.length){var R=c[1],O=Math.sqrt(Math.max(1-R*R,0));g.push(new t.Cartesian3(o,u*R,u*-O)),g.push(new t.Cartesian3(o,u*R,u*O))}return g}var S=v*v,P=m*m,y=v*m,N=d*d+P,b=2*(h*d+y),I=2*M*d+h*h-P+S,D=2*(M*h-y),q=M*M-S;if(0===N&&0===b&&0===I&&0===D)return g;var L=(c=l.computeRealRoots(N,b,I,D,q)).length;if(0===L)return g;for(var E=0;E<L;++E){var z=c[E],T=z*z,U=Math.max(1-T,0),B=Math.sqrt(U),W=(i.Math3D.sign(d)===i.Math3D.sign(M)?x(d*T+M,h*z,i.Math3D.EPSILON12):i.Math3D.sign(M)===i.Math3D.sign(h*z)?x(d*T,h*z+M,i.Math3D.EPSILON12):x(d*T+h*z,M,i.Math3D.EPSILON12))*x(m*z,v,i.Math3D.EPSILON15);W<0?g.push(new t.Cartesian3(o,u*z,u*B)):W>0?g.push(new t.Cartesian3(o,u*z,u*-B)):0!==B?(g.push(new t.Cartesian3(o,u*z,u*-B)),g.push(new t.Cartesian3(o,u*z,u*B)),++E):g.push(new t.Cartesian3(o,u*z,u*B))}return g}(y,t.Cartesian3.negate(A,N),0,0,1),G=j.length;if(G>0){for(var Y=t.Cartesian3.clone(t.Cartesian3.ZERO,V),X=Number.NEGATIVE_INFINITY,k=0;k<G;++k){O=n.Matrix3.multiplyByVector(p,n.Matrix3.multiplyByVector(v,j[k],_),_);var F=t.Cartesian3.normalize(t.Cartesian3.subtract(O,o,D),D),H=t.Cartesian3.dot(F,u);H>X&&(X=H,Y=t.Cartesian3.clone(O,Y))}var J=r.cartesianToCartographic(Y,Z);return X=i.Math3D.clamp(X,0,1),S=t.Cartesian3.magnitude(t.Cartesian3.subtract(Y,o,D))*Math.sqrt(1-X*X),S=C?-S:S,J.height=S,r.cartographicToCartesian(J,new t.Cartesian3)}};var A=new t.Cartesian3;function j(a,e){this.normal=t.Cartesian3.clone(a),this.distance=e}h.lineSegmentPlane=function(a,r,n,s){e.defined(s)||(s=new t.Cartesian3);var o=t.Cartesian3.subtract(r,a,A),u=n.normal,c=t.Cartesian3.dot(u,o);if(!(Math.abs(c)<i.Math3D.EPSILON6)){var l=t.Cartesian3.dot(u,a),C=-(n.distance+l)/c;if(!(C<0||C>1))return t.Cartesian3.multiplyByScalar(o,C,s),t.Cartesian3.add(a,s,s),s}},h.trianglePlaneIntersection=function(a,e,r,n){var i,s,o=n.normal,u=n.distance,c=t.Cartesian3.dot(o,a)+u<0,l=t.Cartesian3.dot(o,e)+u<0,C=t.Cartesian3.dot(o,r)+u<0,f=0;if(f+=c?1:0,f+=l?1:0,1!==(f+=C?1:0)&&2!==f||(i=new t.Cartesian3,s=new t.Cartesian3),1===f){if(c)return h.lineSegmentPlane(a,e,n,i),h.lineSegmentPlane(a,r,n,s),{positions:[a,e,r,i,s],indices:[0,3,4,1,2,4,1,4,3]};if(l)return h.lineSegmentPlane(e,r,n,i),h.lineSegmentPlane(e,a,n,s),{positions:[a,e,r,i,s],indices:[1,3,4,2,0,4,2,4,3]};if(C)return h.lineSegmentPlane(r,a,n,i),h.lineSegmentPlane(r,e,n,s),{positions:[a,e,r,i,s],indices:[2,3,4,0,1,4,0,4,3]}}else if(2===f){if(!c)return h.lineSegmentPlane(e,a,n,i),h.lineSegmentPlane(r,a,n,s),{positions:[a,e,r,i,s],indices:[1,2,4,1,4,3,0,3,4]};if(!l)return h.lineSegmentPlane(r,e,n,i),h.lineSegmentPlane(a,e,n,s),{positions:[a,e,r,i,s],indices:[2,0,4,2,4,3,1,3,4]};if(!C)return h.lineSegmentPlane(a,r,n,i),h.lineSegmentPlane(e,r,n,s),{positions:[a,e,r,i,s],indices:[0,1,4,0,4,3,2,3,4]}}},j.fromPointNormal=function(a,r,n){var i=-t.Cartesian3.dot(r,a);return e.defined(n)?(t.Cartesian3.clone(r,n.normal),n.distance=i,n):new j(r,i)};var G=new t.Cartesian3;j.fromCartesian4=function(a,r){var n=t.Cartesian3.fromCartesian4(a,G),i=a.w;return e.defined(r)?(t.Cartesian3.clone(n,r.normal),r.distance=i,r):new j(n,i)},j.getPointDistance=function(a,e){return t.Cartesian3.dot(a.normal,e)+a.distance};var Y=new t.Cartesian3;j.projectPointOntoPlane=function(a,r,n){e.defined(n)||(n=new t.Cartesian3);var i=j.getPointDistance(a,r),s=t.Cartesian3.multiplyByScalar(a.normal,i,Y);return t.Cartesian3.subtract(r,s,n)};var X=new t.Cartesian3;j.transform=function(a,e,r){return n.Matrix4.multiplyByPointAsVector(e,a.normal,G),t.Cartesian3.normalize(G,G),t.Cartesian3.multiplyByScalar(a.normal,-a.distance,X),n.Matrix4.multiplyByPoint(e,X,X),j.fromPointNormal(X,G,r)},j.clone=function(a,r){return e.defined(r)?(t.Cartesian3.clone(a.normal,r.normal),r.distance=a.distance,r):new j(a.normal,a.distance)},j.equals=function(a,e){return a.distance===e.distance&&t.Cartesian3.equals(a.normal,e.normal)},j.ORIGIN_XY_PLANE=Object.freeze(new j(t.Cartesian3.UNIT_Z,0)),j.ORIGIN_YZ_PLANE=Object.freeze(new j(t.Cartesian3.UNIT_X,0)),j.ORIGIN_ZX_PLANE=Object.freeze(new j(t.Cartesian3.UNIT_Y,0)),a.IntersectionTests=h,a.Plane=j,a.Ray=d}));