define(["exports","./Transforms-b51fdb37","./Rectangle-82621db8","./Check-24483042","./when-54335d57","./EllipsoidTangentPlane-3e9e5847","./Math-7a8129d6","./Plane-fd9e13db"],function(a,A,q,t,X,j,Z,G){"use strict";function T(a,t){this.center=q.Cartesian3.clone(X.defaultValue(a,q.Cartesian3.ZERO)),this.halfAxes=A.Matrix3.clone(X.defaultValue(t,A.Matrix3.ZERO))}T.packedLength=q.Cartesian3.packedLength+A.Matrix3.packedLength,T.pack=function(a,t,e){return e=X.defaultValue(e,0),q.Cartesian3.pack(a.center,t,e),A.Matrix3.pack(a.halfAxes,t,e+q.Cartesian3.packedLength),t},T.unpack=function(a,t,e){return t=X.defaultValue(t,0),X.defined(e)||(e=new T),q.Cartesian3.unpack(a,t,e.center),A.Matrix3.unpack(a,t+q.Cartesian3.packedLength,e.halfAxes),e};var R=new q.Cartesian3,I=new q.Cartesian3,E=new q.Cartesian3,L=new q.Cartesian3,z=new q.Cartesian3,S=new q.Cartesian3,U=new A.Matrix3,V={unitary:new A.Matrix3,diagonal:new A.Matrix3};T.fromPoints=function(a,t){if(X.defined(t)||(t=new T),!X.defined(a)||0===a.length)return t.halfAxes=A.Matrix3.ZERO,t.center=q.Cartesian3.ZERO,t;var e,n=a.length,r=q.Cartesian3.clone(a[0],R);for(e=1;e<n;e++)q.Cartesian3.add(r,a[e],r);var i=1/n;q.Cartesian3.multiplyByScalar(r,i,r);var s,o=0,C=0,c=0,u=0,d=0,l=0;for(e=0;e<n;e++)o+=(s=q.Cartesian3.subtract(a[e],r,I)).x*s.x,C+=s.x*s.y,c+=s.x*s.z,u+=s.y*s.y,d+=s.y*s.z,l+=s.z*s.z;o*=i,C*=i,c*=i,u*=i,d*=i,l*=i;var h=U;h[0]=o,h[1]=C,h[2]=c,h[3]=C,h[4]=u,h[5]=d,h[6]=c,h[7]=d,h[8]=l;var x=A.Matrix3.computeEigenDecomposition(h,V),M=A.Matrix3.clone(x.unitary,t.halfAxes),m=A.Matrix3.getColumn(M,0,L),f=A.Matrix3.getColumn(M,1,z),p=A.Matrix3.getColumn(M,2,S),g=-Number.MAX_VALUE,w=-Number.MAX_VALUE,y=-Number.MAX_VALUE,b=Number.MAX_VALUE,O=Number.MAX_VALUE,P=Number.MAX_VALUE;for(e=0;e<n;e++)s=a[e],g=Math.max(q.Cartesian3.dot(m,s),g),w=Math.max(q.Cartesian3.dot(f,s),w),y=Math.max(q.Cartesian3.dot(p,s),y),b=Math.min(q.Cartesian3.dot(m,s),b),O=Math.min(q.Cartesian3.dot(f,s),O),P=Math.min(q.Cartesian3.dot(p,s),P);m=q.Cartesian3.multiplyByScalar(m,.5*(b+g),m),f=q.Cartesian3.multiplyByScalar(f,.5*(O+w),f),p=q.Cartesian3.multiplyByScalar(p,.5*(P+y),p);var N=q.Cartesian3.add(m,f,t.center);q.Cartesian3.add(N,p,N);var v=E;return v.x=g-b,v.y=w-O,v.z=y-P,q.Cartesian3.multiplyByScalar(v,.5,v),A.Matrix3.multiplyByScale(t.halfAxes,v,t.halfAxes),t};var M=new q.Cartesian3,m=new q.Cartesian3;function F(a,t,e,n,r,i,s,o,C,c,u){X.defined(u)||(u=new T);var d=u.halfAxes;A.Matrix3.setColumn(d,0,t,d),A.Matrix3.setColumn(d,1,e,d),A.Matrix3.setColumn(d,2,n,d);var l=M;l.x=(r+i)/2,l.y=(s+o)/2,l.z=(C+c)/2;var h=m;h.x=(i-r)/2,h.y=(o-s)/2,h.z=(c-C)/2;var x=u.center;return l=A.Matrix3.multiplyByVector(d,l,l),q.Cartesian3.add(a,l,x),A.Matrix3.multiplyByScale(d,h,d),u}var Y=new q.Cartographic,H=new q.Cartesian3,J=new q.Cartographic,K=new q.Cartographic,Q=new q.Cartographic,$=new q.Cartographic,aa=new q.Cartographic,ta=new q.Cartesian3,ea=new q.Cartesian3,na=new q.Cartesian3,ra=new q.Cartesian3,ia=new q.Cartesian3,sa=new q.Cartesian2,oa=new q.Cartesian2,Ca=new q.Cartesian2,ca=new q.Cartesian2,ua=new q.Cartesian2,da=new q.Cartesian3,la=new q.Cartesian3,ha=new q.Cartesian3,xa=new q.Cartesian3,Ma=new q.Cartesian2,ma=new q.Cartesian3,fa=new q.Cartesian3,pa=new q.Cartesian3,ga=new G.Plane(q.Cartesian3.UNIT_X,0);T.fromRectangle=function(a,t,e,n,r){var i,s,o,C,c,u,d;if(t=X.defaultValue(t,0),e=X.defaultValue(e,0),n=X.defaultValue(n,q.Ellipsoid.WGS84),a.width<=Z.CesiumMath.PI){var l=q.Rectangle.center(a,Y),h=n.cartographicToCartesian(l,H),x=new j.EllipsoidTangentPlane(h,n);d=x.plane;var M=l.longitude,m=a.south<0&&0<a.north?0:l.latitude,f=q.Cartographic.fromRadians(M,a.north,e,J),p=q.Cartographic.fromRadians(a.west,a.north,e,K),g=q.Cartographic.fromRadians(a.west,m,e,Q),w=q.Cartographic.fromRadians(a.west,a.south,e,$),y=q.Cartographic.fromRadians(M,a.south,e,aa),b=n.cartographicToCartesian(f,ta),O=n.cartographicToCartesian(p,ea),P=n.cartographicToCartesian(g,na),N=n.cartographicToCartesian(w,ra),v=n.cartographicToCartesian(y,ia),A=x.projectPointToNearestOnPlane(b,sa),T=x.projectPointToNearestOnPlane(O,oa),R=x.projectPointToNearestOnPlane(P,Ca),I=x.projectPointToNearestOnPlane(N,ca),E=x.projectPointToNearestOnPlane(v,ua);return s=-(i=Math.min(T.x,R.x,I.x)),C=Math.max(T.y,A.y),o=Math.min(I.y,E.y),p.height=w.height=t,O=n.cartographicToCartesian(p,ea),N=n.cartographicToCartesian(w,ra),c=Math.min(G.Plane.getPointDistance(d,O),G.Plane.getPointDistance(d,N)),u=e,F(x.origin,x.xAxis,x.yAxis,x.zAxis,i,s,o,C,c,u,r)}var L=0<a.south,z=a.north<0,S=L?a.south:z?a.north:0,U=q.Rectangle.center(a,Y).longitude,V=q.Cartesian3.fromRadians(U,S,e,n,da);V.z=0;var B=Math.abs(V.x)<Z.CesiumMath.EPSILON10&&Math.abs(V.y)<Z.CesiumMath.EPSILON10?q.Cartesian3.UNIT_X:q.Cartesian3.normalize(V,la),_=q.Cartesian3.UNIT_Z,k=q.Cartesian3.cross(B,_,ha);d=G.Plane.fromPointNormal(V,B,ga);var W=q.Cartesian3.fromRadians(U+Z.CesiumMath.PI_OVER_TWO,S,e,n,xa);i=-(s=q.Cartesian3.dot(G.Plane.projectPointOntoPlane(d,W,Ma),k)),C=q.Cartesian3.fromRadians(0,a.north,z?t:e,n,ma).z,o=q.Cartesian3.fromRadians(0,a.south,L?t:e,n,fa).z;var D=q.Cartesian3.fromRadians(a.east,S,e,n,pa);return F(V,k,_,B,i,s,o,C,c=G.Plane.getPointDistance(d,D),u=0,r)},T.clone=function(a,t){if(X.defined(a))return X.defined(t)?(q.Cartesian3.clone(a.center,t.center),A.Matrix3.clone(a.halfAxes,t.halfAxes),t):new T(a.center,a.halfAxes)},T.intersectPlane=function(a,t){var e=a.center,n=t.normal,r=a.halfAxes,i=n.x,s=n.y,o=n.z,C=Math.abs(i*r[A.Matrix3.COLUMN0ROW0]+s*r[A.Matrix3.COLUMN0ROW1]+o*r[A.Matrix3.COLUMN0ROW2])+Math.abs(i*r[A.Matrix3.COLUMN1ROW0]+s*r[A.Matrix3.COLUMN1ROW1]+o*r[A.Matrix3.COLUMN1ROW2])+Math.abs(i*r[A.Matrix3.COLUMN2ROW0]+s*r[A.Matrix3.COLUMN2ROW1]+o*r[A.Matrix3.COLUMN2ROW2]),c=q.Cartesian3.dot(n,e)+t.distance;return c<=-C?A.Intersect.OUTSIDE:C<=c?A.Intersect.INSIDE:A.Intersect.INTERSECTING};var x=new q.Cartesian3,f=new q.Cartesian3,p=new q.Cartesian3,h=new q.Cartesian3;T.distanceSquaredTo=function(a,t){var e=q.Cartesian3.subtract(t,a.center,M),n=a.halfAxes,r=A.Matrix3.getColumn(n,0,x),i=A.Matrix3.getColumn(n,1,f),s=A.Matrix3.getColumn(n,2,p),o=q.Cartesian3.magnitude(r),C=q.Cartesian3.magnitude(i),c=q.Cartesian3.magnitude(s);q.Cartesian3.normalize(r,r),q.Cartesian3.normalize(i,i),q.Cartesian3.normalize(s,s);var u=h;u.x=q.Cartesian3.dot(e,r),u.y=q.Cartesian3.dot(e,i),u.z=q.Cartesian3.dot(e,s);var d,l=0;return u.x<-o?l+=(d=u.x+o)*d:u.x>o&&(l+=(d=u.x-o)*d),u.y<-C?l+=(d=u.y+C)*d:u.y>C&&(l+=(d=u.y-C)*d),u.z<-c?l+=(d=u.z+c)*d:u.z>c&&(l+=(d=u.z-c)*d),l};var g=new q.Cartesian3,w=new q.Cartesian3;T.computePlaneDistances=function(a,t,e,n){X.defined(n)||(n=new A.Interval);var r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,s=a.center,o=a.halfAxes,C=A.Matrix3.getColumn(o,0,x),c=A.Matrix3.getColumn(o,1,f),u=A.Matrix3.getColumn(o,2,p),d=q.Cartesian3.add(C,c,g);q.Cartesian3.add(d,u,d),q.Cartesian3.add(d,s,d);var l=q.Cartesian3.subtract(d,t,w),h=q.Cartesian3.dot(e,l);return r=Math.min(h,r),i=Math.max(h,i),q.Cartesian3.add(s,C,d),q.Cartesian3.add(d,c,d),q.Cartesian3.subtract(d,u,d),q.Cartesian3.subtract(d,t,l),h=q.Cartesian3.dot(e,l),r=Math.min(h,r),i=Math.max(h,i),q.Cartesian3.add(s,C,d),q.Cartesian3.subtract(d,c,d),q.Cartesian3.add(d,u,d),q.Cartesian3.subtract(d,t,l),h=q.Cartesian3.dot(e,l),r=Math.min(h,r),i=Math.max(h,i),q.Cartesian3.add(s,C,d),q.Cartesian3.subtract(d,c,d),q.Cartesian3.subtract(d,u,d),q.Cartesian3.subtract(d,t,l),h=q.Cartesian3.dot(e,l),r=Math.min(h,r),i=Math.max(h,i),q.Cartesian3.subtract(s,C,d),q.Cartesian3.add(d,c,d),q.Cartesian3.add(d,u,d),q.Cartesian3.subtract(d,t,l),h=q.Cartesian3.dot(e,l),r=Math.min(h,r),i=Math.max(h,i),q.Cartesian3.subtract(s,C,d),q.Cartesian3.add(d,c,d),q.Cartesian3.subtract(d,u,d),q.Cartesian3.subtract(d,t,l),h=q.Cartesian3.dot(e,l),r=Math.min(h,r),i=Math.max(h,i),q.Cartesian3.subtract(s,C,d),q.Cartesian3.subtract(d,c,d),q.Cartesian3.add(d,u,d),q.Cartesian3.subtract(d,t,l),h=q.Cartesian3.dot(e,l),r=Math.min(h,r),i=Math.max(h,i),q.Cartesian3.subtract(s,C,d),q.Cartesian3.subtract(d,c,d),q.Cartesian3.subtract(d,u,d),q.Cartesian3.subtract(d,t,l),h=q.Cartesian3.dot(e,l),r=Math.min(h,r),i=Math.max(h,i),n.start=r,n.stop=i,n};var n=new A.BoundingSphere;T.isOccluded=function(a,t){var e=A.BoundingSphere.fromOrientedBoundingBox(a,n);return!t.isBoundingSphereVisible(e)},T.prototype.intersectPlane=function(a){return T.intersectPlane(this,a)},T.prototype.distanceSquaredTo=function(a){return T.distanceSquaredTo(this,a)},T.prototype.computePlaneDistances=function(a,t,e){return T.computePlaneDistances(this,a,t,e)},T.prototype.isOccluded=function(a){return T.isOccluded(this,a)},T.equals=function(a,t){return a===t||X.defined(a)&&X.defined(t)&&q.Cartesian3.equals(a.center,t.center)&&A.Matrix3.equals(a.halfAxes,t.halfAxes)},T.prototype.clone=function(a){return T.clone(this,a)},T.prototype.equals=function(a){return T.equals(this,a)},a.OrientedBoundingBox=T});
|