Agriculture-front-end/public/Cesium/Workers/PolygonGeometryLibrary-ae9ad77c.js
2023-04-16 22:33:44 +08:00

2 lines
8.4 KiB
JavaScript

define(["exports","./ArcType-29cf2197","./arrayRemoveDuplicates-d2f048c5","./Cartesian2-47311507","./Cartographic-3309dd0d","./ComponentDatatype-c140a87d","./when-b60132fc","./EllipsoidRhumbLine-ed1a6bf4","./GeometryAttribute-3a42bbdc","./GeometryAttributes-252e9929","./GeometryPipeline-e1b82a4e","./IndexDatatype-8a5eead4","./Math-119be1a3","./BoundingSphere-561b54d0","./PolygonPipeline-f49953b9","./PrimitiveType-39acab88","./Transforms-cb0006b0"],(function(e,t,r,i,a,n,o,s,u,l,h,c,f,p,d,y,g){"use strict";function v(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(v.prototype,{length:{get:function(){return this._length}}}),v.prototype.enqueue=function(e){this._array.push(e),this._length++},v.prototype.dequeue=function(){if(0!==this._length){var e=this._array,t=this._offset,r=e[t];return e[t]=void 0,++t>10&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,r}},v.prototype.peek=function(){if(0!==this._length)return this._array[this._offset]},v.prototype.contains=function(e){return-1!==this._array.indexOf(e)},v.prototype.clear=function(){this._array.length=this._offset=this._length=0},v.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var m={computeHierarchyPackedLength:function(e){for(var t=0,r=[e];r.length>0;){var i=r.pop();if(o.defined(i)){t+=2;var n=i.positions,s=i.holes;if(o.defined(n)&&(t+=n.length*a.Cartesian3.packedLength),o.defined(s))for(var u=s.length,l=0;l<u;++l)r.push(s[l])}}return t},packPolygonHierarchy:function(e,t,r){for(var i=[e];i.length>0;){var n=i.pop();if(o.defined(n)){var s=n.positions,u=n.holes;if(t[r++]=o.defined(s)?s.length:0,t[r++]=o.defined(u)?u.length:0,o.defined(s))for(var l=s.length,h=0;h<l;++h,r+=3)a.Cartesian3.pack(s[h],t,r);if(o.defined(u))for(var c=u.length,f=0;f<c;++f)i.push(u[f])}}return r},unpackPolygonHierarchy:function(e,t){for(var r=e[t++],i=e[t++],n=new Array(r),o=i>0?new Array(i):void 0,s=0;s<r;++s,t+=a.Cartesian3.packedLength)n[s]=a.Cartesian3.unpack(e,t);for(var u=0;u<i;++u)o[u]=m.unpackPolygonHierarchy(e,t),t=o[u].startingIndex,delete o[u].startingIndex;return{positions:n,holes:o,startingIndex:t}}},C=new a.Cartesian3;function b(e,t,r,i){return a.Cartesian3.subtract(t,e,C),a.Cartesian3.multiplyByScalar(C,r/i,C),a.Cartesian3.add(e,C,C),[C.x,C.y,C.z]}m.subdivideLineCount=function(e,t,r){var i=a.Cartesian3.distance(e,t)/r,n=Math.max(0,Math.ceil(f.CesiumMath.log2(i)));return Math.pow(2,n)};var w=new a.Cartographic,T=new a.Cartographic,I=new a.Cartographic,E=new a.Cartesian3;m.subdivideRhumbLineCount=function(e,t,r,i){var a=e.cartesianToCartographic(t,w),n=e.cartesianToCartographic(r,T),o=new s.EllipsoidRhumbLine(a,n,e).surfaceDistance/i,u=Math.max(0,Math.ceil(f.CesiumMath.log2(o)));return Math.pow(2,u)},m.subdivideLine=function(e,t,r,i){var n=m.subdivideLineCount(e,t,r),s=a.Cartesian3.distance(e,t),u=s/n;o.defined(i)||(i=[]);var l=i;l.length=3*n;for(var h=0,c=0;c<n;c++){var f=b(e,t,c*u,s);l[h++]=f[0],l[h++]=f[1],l[h++]=f[2]}return l},m.subdivideRhumbLine=function(e,t,r,i,a){var n=e.cartesianToCartographic(t,w),u=e.cartesianToCartographic(r,T),l=new s.EllipsoidRhumbLine(n,u,e),h=l.surfaceDistance/i,c=Math.max(0,Math.ceil(f.CesiumMath.log2(h))),p=Math.pow(2,c),d=l.surfaceDistance/p;o.defined(a)||(a=[]);var y=a;y.length=3*p;for(var g=0,v=0;v<p;v++){var m=l.interpolateUsingSurfaceDistance(v*d,I),C=e.cartographicToCartesian(m,E);y[g++]=C.x,y[g++]=C.y,y[g++]=C.z}return y};var P=new a.Cartesian3,x=new a.Cartesian3,_=new a.Cartesian3,A=new a.Cartesian3;m.scaleToGeodeticHeightExtruded=function(e,t,r,n,s){n=o.defaultValue(n,i.Ellipsoid.WGS84);var u=P,l=x,h=_,c=A;if(o.defined(e)&&o.defined(e.attributes)&&o.defined(e.attributes.position))for(var f=e.attributes.position.values,p=f.length/2,d=0;d<p;d+=3)a.Cartesian3.fromArray(f,d,h),n.geodeticSurfaceNormal(h,u),c=n.scaleToGeodeticSurface(h,c),l=a.Cartesian3.multiplyByScalar(u,r,l),l=a.Cartesian3.add(c,l,l),f[d+p]=l.x,f[d+1+p]=l.y,f[d+2+p]=l.z,s&&(c=a.Cartesian3.clone(h,c)),l=a.Cartesian3.multiplyByScalar(u,t,l),l=a.Cartesian3.add(c,l,l),f[d]=l.x,f[d+1]=l.y,f[d+2]=l.z;return e},m.polygonOutlinesFromHierarchy=function(e,t,i){var n,s,u,l=[],h=new v;for(h.enqueue(e);0!==h.length;){var c=h.dequeue(),f=c.positions;if(t)for(u=f.length,n=0;n<u;n++)i.scaleToGeodeticSurface(f[n],f[n]);if(!((f=r.arrayRemoveDuplicates(f,a.Cartesian3.equalsEpsilon,!0)).length<3)){var p=c.holes?c.holes.length:0;for(n=0;n<p;n++){var d=c.holes[n],y=d.positions;if(t)for(u=y.length,s=0;s<u;++s)i.scaleToGeodeticSurface(y[s],y[s]);if(!((y=r.arrayRemoveDuplicates(y,a.Cartesian3.equalsEpsilon,!0)).length<3)){l.push(y);var g=0;for(o.defined(d.holes)&&(g=d.holes.length),s=0;s<g;s++)h.enqueue(d.holes[s])}}l.push(f)}}return l};var L=new a.Cartesian3(6378137,6378137,6378137);m.polygonsFromHierarchy=function(e,t,i,n){var s=[],u=[],l=new v;for(l.enqueue(e);0!==l.length;){var h,c,p,y=l.dequeue(),g=y.positions,m=y.holes,C=g.slice();if(i)for(c=g.length,h=0;h<c;h++)n.scaleToGeodeticSurface(g[h],C[h]);if(o.defined(n)&&!a.Cartesian3.equals(n._radii,L)&&(p=f.CesiumMath.EPSILON7),!((g=r.arrayRemoveDuplicates(C,a.Cartesian3.equalsEpsilon,!0,p)).length<3)){var b=t(g);if(o.defined(b)){var w=[],T=d.PolygonPipeline.computeWindingOrder2D(b);T===d.WindingOrder.CLOCKWISE&&(b.reverse(),g=g.slice().reverse());var I,E=g.slice(),P=o.defined(m)?m.length:0,x=[];for(h=0;h<P;h++){var _=m[h],A=_.positions;if(i)for(c=A.length,I=0;I<c;++I)n.scaleToGeodeticSurface(A[I],A[I]);if(!((A=r.arrayRemoveDuplicates(A,a.Cartesian3.equalsEpsilon,!0,f.CesiumMath.EPSILON7)).length<3)){var M=t(A);if(o.defined(M)){(T=d.PolygonPipeline.computeWindingOrder2D(M))===d.WindingOrder.CLOCKWISE&&(M.reverse(),A=A.slice().reverse()),x.push(A),w.push(E.length),E=E.concat(A),b=b.concat(M);var S=0;for(o.defined(_.holes)&&(S=_.holes.length),I=0;I<S;I++)l.enqueue(_.holes[I])}}}s.push({outerRing:g,holes:x}),u.push({positions:E,positions2D:b,holes:w})}}}return{hierarchy:s,polygons:u}};var M=new i.Cartesian2,S=new a.Cartesian3,G=new g.Quaternion,D=new p.Matrix3;m.computeBoundingRectangle=function(e,t,r,i,n){for(var s=g.Quaternion.fromAxisAngle(e,i,G),u=p.Matrix3.fromQuaternion(s,D),l=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,c=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,d=r.length,y=0;y<d;++y){var v=a.Cartesian3.clone(r[y],S);p.Matrix3.multiplyByVector(u,v,v);var m=t(v,M);o.defined(m)&&(l=Math.min(l,m.x),h=Math.max(h,m.x),c=Math.min(c,m.y),f=Math.max(f,m.y))}return n.x=l,n.y=c,n.width=h-l,n.height=f-c,n},m.createGeometryFromPositions=function(e,r,i,a,o,s){var l=d.PolygonPipeline.triangulate(r.positions2D,r.holes);l.length<3&&(l=[0,1,2]);var c=r.positions;if(a){for(var f=c.length,p=new Array(3*f),g=0,v=0;v<f;v++){var m=c[v];p[g++]=m.x,p[g++]=m.y,p[g++]=m.z}var C=new u.Geometry({attributes:{position:new u.GeometryAttribute({componentDatatype:n.ComponentDatatype.DOUBLE,componentsPerAttribute:3,values:p})},indices:l,primitiveType:y.PrimitiveType.TRIANGLES});return o.normal?h.GeometryPipeline.computeNormal(C):C}return s===t.ArcType.GEODESIC?d.PolygonPipeline.computeSubdivision(e,c,l,i):s===t.ArcType.RHUMB?d.PolygonPipeline.computeRhumbLineSubdivision(e,c,l,i):void 0};var N=[],R=new a.Cartesian3,O=new a.Cartesian3;m.computeWallGeometry=function(e,r,i,o,s){var h,p,d,g,v,C=e.length,b=0;if(o)for(p=3*C*2,h=new Array(2*p),d=0;d<C;d++)g=e[d],v=e[(d+1)%C],h[b]=h[b+p]=g.x,h[++b]=h[b+p]=g.y,h[++b]=h[b+p]=g.z,h[++b]=h[b+p]=v.x,h[++b]=h[b+p]=v.y,h[++b]=h[b+p]=v.z,++b;else{var w=f.CesiumMath.chordLength(i,r.maximumRadius),T=0;if(s===t.ArcType.GEODESIC)for(d=0;d<C;d++)T+=m.subdivideLineCount(e[d],e[(d+1)%C],w);else if(s===t.ArcType.RHUMB)for(d=0;d<C;d++)T+=m.subdivideRhumbLineCount(r,e[d],e[(d+1)%C],w);for(p=3*(T+C),h=new Array(2*p),d=0;d<C;d++){var I;g=e[d],v=e[(d+1)%C],s===t.ArcType.GEODESIC?I=m.subdivideLine(g,v,w,N):s===t.ArcType.RHUMB&&(I=m.subdivideRhumbLine(r,g,v,w,N));for(var E=I.length,P=0;P<E;++P,++b)h[b]=I[P],h[b+p]=I[P];h[b]=v.x,h[b+p]=v.x,h[++b]=v.y,h[b+p]=v.y,h[++b]=v.z,h[b+p]=v.z,++b}}C=h.length;var x=c.IndexDatatype.createTypedArray(C/3,C-6*e.length),_=0;for(C/=6,d=0;d<C;d++){var A=d,L=A+1,M=A+C,S=M+1;g=a.Cartesian3.fromArray(h,3*A,R),v=a.Cartesian3.fromArray(h,3*L,O),a.Cartesian3.equalsEpsilon(g,v,f.CesiumMath.EPSILON10,f.CesiumMath.EPSILON10)||(x[_++]=A,x[_++]=M,x[_++]=L,x[_++]=L,x[_++]=M,x[_++]=S)}return new u.Geometry({attributes:new l.GeometryAttributes({position:new u.GeometryAttribute({componentDatatype:n.ComponentDatatype.DOUBLE,componentsPerAttribute:3,values:h})}),indices:x,primitiveType:y.PrimitiveType.TRIANGLES})},e.PolygonGeometryLibrary=m}));