bmh_cesium/public/lib/cesiumjs/CesiumUnminified/Workers/OrientedBoundingBox-5e0b7a7c.js

2 lines
10 KiB
JavaScript
Raw Normal View History

2025-03-09 23:23:50 +00:00
/* 2020-9-22 15:23:25 | 版权所有 军懋国兴 */
define(["exports","./when-cbf8cd21","./Check-35e1a91d","./Math-69007a69","./Cartesian2-43e3a3be","./Transforms-2d1ac5ec","./Plane-46b5436f","./EllipsoidTangentPlane-b5927ee3"],function(a,W,X,j,Z,N,G,Y){"use strict";function A(a,e){this.center=Z.Cartesian3.clone(W.defaultValue(a,Z.Cartesian3.ZERO)),this.halfAxes=N.Matrix3.clone(W.defaultValue(e,N.Matrix3.ZERO))}A.packedLength=Z.Cartesian3.packedLength+N.Matrix3.packedLength,A.pack=function(a,e,t){return X.Check.typeOf.object("value",a),X.Check.defined("array",e),t=W.defaultValue(t,0),Z.Cartesian3.pack(a.center,e,t),N.Matrix3.pack(a.halfAxes,e,t+Z.Cartesian3.packedLength),e},A.unpack=function(a,e,t){return X.Check.defined("array",a),e=W.defaultValue(e,0),W.defined(t)||(t=new A),Z.Cartesian3.unpack(a,e,t.center),N.Matrix3.unpack(a,e+Z.Cartesian3.packedLength,t.halfAxes),t};var T=new Z.Cartesian3,R=new Z.Cartesian3,I=new Z.Cartesian3,D=new Z.Cartesian3,L=new Z.Cartesian3,z=new Z.Cartesian3,S=new N.Matrix3,q={unitary:new N.Matrix3,diagonal:new N.Matrix3};A.fromPoints=function(a,e){if(W.defined(e)||(e=new A),!W.defined(a)||0===a.length)return e.halfAxes=N.Matrix3.ZERO,e.center=Z.Cartesian3.ZERO,e;for(var t=a.length,r=Z.Cartesian3.clone(a[0],T),n=1;n<t;n++)Z.Cartesian3.add(r,a[n],r);var i=1/t;Z.Cartesian3.multiplyByScalar(r,i,r);var s,o=0,d=0,C=0,u=0,c=0,l=0;for(n=0;n<t;n++)o+=(s=Z.Cartesian3.subtract(a[n],r,R)).x*s.x,d+=s.x*s.y,C+=s.x*s.z,u+=s.y*s.y,c+=s.y*s.z,l+=s.z*s.z;o*=i,d*=i,C*=i,u*=i,c*=i,l*=i;var h=S;h[0]=o,h[1]=d,h[2]=C,h[3]=d,h[4]=u,h[5]=c,h[6]=C,h[7]=c,h[8]=l;var f=N.Matrix3.computeEigenDecomposition(h,q),m=N.Matrix3.clone(f.unitary,e.halfAxes),x=N.Matrix3.getColumn(m,0,D),p=N.Matrix3.getColumn(m,1,L),M=N.Matrix3.getColumn(m,2,z),w=-Number.MAX_VALUE,g=-Number.MAX_VALUE,b=-Number.MAX_VALUE,y=Number.MAX_VALUE,v=Number.MAX_VALUE,O=Number.MAX_VALUE;for(n=0;n<t;n++)s=a[n],w=Math.max(Z.Cartesian3.dot(x,s),w),g=Math.max(Z.Cartesian3.dot(p,s),g),b=Math.max(Z.Cartesian3.dot(M,s),b),y=Math.min(Z.Cartesian3.dot(x,s),y),v=Math.min(Z.Cartesian3.dot(p,s),v),O=Math.min(Z.Cartesian3.dot(M,s),O);x=Z.Cartesian3.multiplyByScalar(x,.5*(y+w),x),p=Z.Cartesian3.multiplyByScalar(p,.5*(v+g),p),M=Z.Cartesian3.multiplyByScalar(M,.5*(O+b),M);var E=Z.Cartesian3.add(x,p,e.center);Z.Cartesian3.add(E,M,E);var P=I;return P.x=w-y,P.y=g-v,P.z=b-O,Z.Cartesian3.multiplyByScalar(P,.5,P),N.Matrix3.multiplyByScale(e.halfAxes,P,e.halfAxes),e};var m=new Z.Cartesian3,x=new Z.Cartesian3;function F(a,e,t,r,n,i,s,o,d,C,u){if(!(W.defined(n)&&W.defined(i)&&W.defined(s)&&W.defined(o)&&W.defined(d)&&W.defined(C)))throw new X.DeveloperError("all extents (minimum/maximum X/Y/Z) are required.");W.defined(u)||(u=new A);var c=u.halfAxes;N.Matrix3.setColumn(c,0,e,c),N.Matrix3.setColumn(c,1,t,c),N.Matrix3.setColumn(c,2,r,c),(f=m).x=(n+i)/2,f.y=(s+o)/2,f.z=(d+C)/2;var l=x;l.x=(i-n)/2,l.y=(o-s)/2,l.z=(C-d)/2;var h=u.center,f=N.Matrix3.multiplyByVector(c,f,f);return Z.Cartesian3.add(a,f,h),N.Matrix3.multiplyByScale(c,l,c),u}var H=new Z.Cartographic,J=new Z.Cartesian3,K=new Z.Cartographic,Q=new Z.Cartographic,$=new Z.Cartographic,aa=new Z.Cartographic,ea=new Z.Cartographic,ta=new Z.Cartesian3,ra=new Z.Cartesian3,na=new Z.Cartesian3,ia=new Z.Cartesian3,sa=new Z.Cartesian3,oa=new Z.Cartesian2,da=new Z.Cartesian2,Ca=new Z.Cartesian2,ua=new Z.Cartesian2,ca=new Z.Cartesian2,la=new Z.Cartesian3,ha=new Z.Cartesian3,fa=new Z.Cartesian3,ma=new Z.Cartesian3,xa=new Z.Cartesian2,pa=new Z.Cartesian3,Ma=new Z.Cartesian3,wa=new Z.Cartesian3,ga=new G.Plane(Z.Cartesian3.UNIT_X,0);A.fromRectangle=function(a,e,t,r,n){if(!W.defined(a))throw new X.DeveloperError("rectangle is required");if(a.width<0||a.width>j.CesiumMath.TWO_PI)throw new X.DeveloperError("Rectangle width must be between 0 and 2*pi");if(a.height<0||a.height>j.CesiumMath.PI)throw new X.DeveloperError("Rectangle height must be between 0 and pi");if(W.defined(r)&&!j.CesiumMath.equalsEpsilon(r.radii.x,r.radii.y,j.CesiumMath.EPSILON15))throw new X.DeveloperError("Ellipsoid must be an ellipsoid of revolution (radii.x == radii.y)");if(e=W.defaultValue(e,0),t=W.defaultValue(t,0),r=W.defa