2 lines
7.5 KiB
JavaScript
2 lines
7.5 KiB
JavaScript
|
|
define(["exports","./ArcType-98a7a011","./arrayRemoveDuplicates-a4c6347e","./Cartesian2-1b9b0d8a","./Cartographic-1bbcab04","./ComponentDatatype-d430c7f7","./when-515d5295","./Rectangle-e170be8b","./EllipsoidRhumbLine-f50fdea6","./GeometryAttribute-9bc31a7f","./GeometryAttributes-7d904f0f","./GeometryPipeline-137aa28e","./IndexDatatype-eefd5922","./Math-5e38123d","./PrimitiveType-b38a4004","./PolygonPipeline-b8b35011","./WindingOrder-8479ef05"],(function(e,t,r,a,n,i,o,s,u,h,l,c,f,p,v,g,d){"use strict";function y(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(y.prototype,{length:{get:function(){return this._length}}}),y.prototype.enqueue=function(e){this._array.push(e),this._length++},y.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}},y.prototype.peek=function(){if(0!==this._length)return this._array[this._offset]},y.prototype.contains=function(e){return-1!==this._array.indexOf(e)},y.prototype.clear=function(){this._array.length=this._offset=this._length=0},y.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 a=r.pop();if(o.t(a)){t+=2;var i=a.positions,s=a.holes;if(o.t(i)&&(t+=i.length*n.a.packedLength),o.t(s))for(var u=s.length,h=0;h<u;++h)r.push(s[h])}}return t},packPolygonHierarchy:function(e,t,r){for(var a=[e];a.length>0;){var i=a.pop();if(o.t(i)){var s=i.positions,u=i.holes;if(t[r++]=o.t(s)?s.length:0,t[r++]=o.t(u)?u.length:0,o.t(s))for(var h=s.length,l=0;l<h;++l,r+=3)n.a.pack(s[l],t,r);if(o.t(u))for(var c=u.length,f=0;f<c;++f)a.push(u[f])}}return r},unpackPolygonHierarchy:function(e,t){for(var r=e[t++],a=e[t++],i=new Array(r),o=a>0?new Array(a):void 0,s=0;s<r;++s,t+=n.a.packedLength)i[s]=n.a.unpack(e,t);for(var u=0;u<a;++u)o[u]=m.unpackPolygonHierarchy(e,t),t=o[u].startingIndex,delete o[u].startingIndex;return{positions:i,holes:o,startingIndex:t}}},b=new n.a;function w(e,t,r,a){return n.a.subtract(t,e,b),n.a.multiplyByScalar(b,r/a,b),n.a.add(e,b,b),[b.x,b.y,b.z]}m.subdivideLineCount=function(e,t,r){var a=n.a.distance(e,t)/r,i=Math.max(0,Math.ceil(p.n.log2(a)));return Math.pow(2,i)};var I=new n.i,T=new n.i,_=new n.i,x=new n.a;m.subdivideRhumbLineCount=function(e,t,r,a){var n=e.cartesianToCartographic(t,I),i=e.cartesianToCartographic(r,T),o=new u.M(n,i,e).surfaceDistance/a,s=Math.max(0,Math.ceil(p.n.log2(o)));return Math.pow(2,s)},m.subdivideLine=function(e,t,r,a){var i=m.subdivideLineCount(e,t,r),s=n.a.distance(e,t),u=s/i;o.t(a)||(a=[]);var h=a;h.length=3*i;for(var l=0,c=0;c<i;c++){var f=w(e,t,c*u,s);h[l++]=f[0],h[l++]=f[1],h[l++]=f[2]}return h},m.subdivideRhumbLine=function(e,t,r,a,n){var i=e.cartesianToCartographic(t,I),s=e.cartesianToCartographic(r,T),h=new u.M(i,s,e),l=h.surfaceDistance/a,c=Math.max(0,Math.ceil(p.n.log2(l))),f=Math.pow(2,c),v=h.surfaceDistance/f;o.t(n)||(n=[]);var g=n;g.length=3*f;for(var d=0,y=0;y<f;y++){var m=h.interpolateUsingSurfaceDistance(y*v,_),b=e.cartographicToCartesian(m,x);g[d++]=b.x,g[d++]=b.y,g[d++]=b.z}return g};var E=new n.a,D=new n.a,S=new n.a,L=new n.a;m.scaleToGeodeticHeightExtruded=function(e,t,r,a,i){a=o.e(a,s.n.WGS84);var u=E,h=D,l=S,c=L;if(o.t(e)&&o.t(e.attributes)&&o.t(e.attributes.position))for(var f=e.attributes.position.values,p=f.length/2,v=0;v<p;v+=3)n.a.fromArray(f,v,l),a.geodeticSurfaceNormal(l,u),c=a.scaleToGeodeticSurface(l,c),h=n.a.multiplyByScalar(u,r,h),h=n.a.add(c,h,h),f[v+p]=h.x,f[v+1+p]=h.y,f[v+2+p]=h.z,i&&(c=n.a.clone(l,c)),h=n.a.multiplyByScalar(u,t,h),h=n.a.add(c,h,h),f[v]=h.x,f[v+1]=h.y,f[v+2]=h.z;return e},m.polygonOutlinesFromHierarchy=function(e,t,a){var i,s,u,h=[],l=new y;for(l.enqueue(e);0!==l.length;){var c=l.dequeue(),f=c.positions;if(t)for(u=f.length,i=0;i<u;i++)a.scaleToGeodeticSurface(f[i],f[i]);if(!((f=r.u(f,n.a.equalsEpsilon,!0)).length<3)){var p=c.holes?c.holes.length:0;for(i=0;i<p;i++){var v=c.holes[i],g=v.positions;if(t
|