define(["exports","./defined-b9ff0e39","./defaultValue-199f5aa8","./Math-92bd3539","./Cartesian2-8fa798b8","./defineProperties-ae15c9d5","./Transforms-a140c8a7","./ComponentDatatype-569c1e3e","./GeometryAttribute-928dddaf","./GeometryAttributes-c3465b51","./GeometryPipeline-7ade6afd","./IndexDatatype-7119db15","./arrayRemoveDuplicates-1efed288","./ArcType-c72d871a","./EllipsoidRhumbLine-fb5cc30d","./PolygonPipeline-7e1a6f3b"],function(e,I,c,x,E,t,y,P,A,_,d,G,L,M,v,D){"use strict";function S(){this._array=[],this._offset=0,this._length=0}t.defineProperties(S.prototype,{length:{get:function(){return this._length}}}),S.prototype.enqueue=function(e){this._array.push(e),this._length++},S.prototype.dequeue=function(){if(0!==this._length){var e=this._array,t=this._offset,r=e[t];return e[t]=void 0,10<++t&&2*t>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,r}},S.prototype.peek=function(){if(0!==this._length)return this._array[this._offset]},S.prototype.contains=function(e){return-1!==this._array.indexOf(e)},S.prototype.clear=function(){this._array.length=this._offset=this._length=0},S.prototype.sort=function(e){0<this._offset&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var R={computeHierarchyPackedLength:function(e){for(var t=0,r=[e];0<r.length;){var i=r.pop();if(I.defined(i)){t+=2;var a=i.positions,n=i.holes;if(I.defined(a)&&(t+=a.length*E.Cartesian3.packedLength),I.defined(n))for(var o=n.length,s=0;s<o;++s)r.push(n[s])}}return t},packPolygonHierarchy:function(e,t,r){for(var i=[e];0<i.length;){var a=i.pop();if(I.defined(a)){var n=a.positions,o=a.holes;if(t[r++]=I.defined(n)?n.length:0,t[r++]=I.defined(o)?o.length:0,I.defined(n))for(var s=n.length,u=0;u<s;++u,r+=3)E.Cartesian3.pack(n[u],t,r);if(I.defined(o))for(var l=o.length,h=0;h<l;++h)i.push(o[h])}}return r},unpackPolygonHierarchy:function(e,t){for(var r=e[t++],i=e[t++],a=new Array(r),n=0<i?new Array(i):void 0,o=0;o<r;++o,t+=E.Cartesian3.packedLength)a[o]=E.Cartesian3.unpack(e,t);for(var s=0;s<i;++s)n[s]=R.unpackPolygonHierarchy(e,t),t=n[s].startingIndex,delete n[s].startingIndex;return{positions:a,holes:n,startingIndex:t}}},g=new E.Cartesian3;R.subdivideLineCount=function(e,t,r){var i=E.Cartesian3.distance(e,t)/r,a=Math.max(0,Math.ceil(x.CesiumMath.log2(i)));return Math.pow(2,a)};var m=new E.Cartographic,C=new E.Cartographic,b=new E.Cartographic,T=new E.Cartesian3;R.subdivideRhumbLineCount=function(e,t,r,i){var a=e.cartesianToCartographic(t,m),n=e.cartesianToCartographic(r,C),o=new v.EllipsoidRhumbLine(a,n,e).surfaceDistance/i,s=Math.max(0,Math.ceil(x.CesiumMath.log2(o)));return Math.pow(2,s)},R.subdivideLine=function(e,t,r,i){var a=R.subdivideLineCount(e,t,r),n=E.Cartesian3.distance(e,t),o=n/a;I.defined(i)||(i=[]);var s=i;s.length=3*a;for(var u,l,h,f,c=0,p=0;p<a;p++){var d=(u=e,l=t,h=p*o,f=n,E.Cartesian3.subtract(l,u,g),E.Cartesian3.multiplyByScalar(g,h/f,g),E.Cartesian3.add(u,g,g),[g.x,g.y,g.z]);s[c++]=d[0],s[c++]=d[1],s[c++]=d[2]}return s},R.subdivideRhumbLine=function(e,t,r,i,a){var n=e.cartesianToCartographic(t,m),o=e.cartesianToCartographic(r,C),s=new v.EllipsoidRhumbLine(n,o,e),u=s.surfaceDistance/i,l=Math.max(0,Math.ceil(x.CesiumMath.log2(u))),h=Math.pow(2,l),f=s.surfaceDistance/h;I.defined(a)||(a=[]);var c=a;c.length=3*h;for(var p=0,d=0;d<h;d++){var y=s.interpolateUsingSurfaceDistance(d*f,b),g=e.cartographicToCartesian(y,T);c[p++]=g.x,c[p++]=g.y,c[p++]=g.z}return c};var p=new E.Cartesian3,w=new E.Cartesian3,N=new E.Cartesian3,O=new E.Cartesian3;R.scaleToGeodeticHeightExtruded=function(e,t,r,i,a){i=c.defaultValue(i,E.Ellipsoid.WGS84);var n=p,o=w,s=N,u=O;if(I.defined(e)&&I.defined(e.attributes)&&I.defined(e.attributes.position))for(var l=e.attributes.position.values,h=l.length/2,f=0;f<h;f+=3)E.Cartesian3.fromArray(l,f,s),i.geodeticSurfaceNormal(s,n),u=i.scaleToGeodeticSurface(s,u),o=E.Cartesian3.multiplyByScalar(n,r,o),o=E.Cartesian3.add(u,o,o),l[f+h]=o.x,l[f+1+h]=o.y,l[f+2+h]=o.z,a&&(u=E.Cartesian3.clone(s,u)),o=E.Cartesian3.multiplyByScalar(n,t,o),o=E.Cartesian3.add(u,o,o),l[f]=o.x,l[f+1]=o.y,l[f+2]=o.z;return e},R.polygonOutlinesFromHierarchy=function(e,t,r){var i,a,n,o=[],s=new S;for(s.enqueue(e);0!==s.length;){var u=s.dequeue(),l=u.positions;if(t)for(n=l.length,i=0;i<n;i++)r.scaleToGeodeticSurface(l[i],l[i]);if(!((l=L.arrayRemoveDuplicates(l,E.Cartesian3.equalsEpsilon,!0)).length<3)){var h=u.holes?u.holes.length:0;for(i=0;i<h;i++){var f=u.holes[i],c=f.positions;if(t)for(n=c.length,a=0;a<n;++a)r.scaleToGeodeticSurface(c[a],c[a]);if(!((c=L.arrayRemoveDuplicates(c,E.Cartesian3.equalsEpsilon,!0)).length<3)){o.push(c);var p=0;for(I.defined(f.holes)&&(p=f.holes.length),a=0;a<p;a++)s.enqueue(f.holes[a])}}o.push(l)}}return o},R.polygonsFromHierarchy=function(e,t,r,i){var a=[],n=[],o=new S;for(o.enqueue(e);0!==o.length;){var s,u,l=o.dequeue(),h=l.positions,f=l.holes;if(r)for(u=h.length,s=0;s<u;s++)i.scaleToGeodeticSurface(h[s],h[s]);if(!((h=L.arrayRemoveDuplicates(h,E.Cartesian3.equalsEpsilon,!0)).length<3)){var c=t(h);if(I.defined(c)){var p=[],d=D.PolygonPipeline.computeWindingOrder2D(c);d===D.WindingOrder.CLOCKWISE&&(c.reverse(),h=h.slice().reverse());var y,g=h.slice(),v=I.defined(f)?f.length:0,m=[];for(s=0;s<v;s++){var C=f[s],b=C.positions;if(r)for(u=b.length,y=0;y<u;++y)i.scaleToGeodeticSurface(b[y],b[y]);if(!((b=L.arrayRemoveDuplicates(b,E.Cartesian3.equalsEpsilon,!0)).length<3)){var T=t(b);if(I.defined(T)){(d=D.PolygonPipeline.computeWindingOrder2D(T))===D.WindingOrder.CLOCKWISE&&(T.reverse(),b=b.slice().reverse()),m.push(b),p.push(g.length),g=g.concat(b),c=c.concat(T);var w=0;for(I.defined(C.holes)&&(w=C.holes.length),y=0;y<w;y++)o.enqueue(C.holes[y])}}}a.push({outerRing:h,holes:m}),n.push({positions:g,positions2D:c,holes:p})}}}return{hierarchy:a,polygons:n}};var q=new E.Cartesian2,B=new E.Cartesian3,H=new y.Quaternion,k=new y.Matrix3;R.computeBoundingRectangle=function(e,t,r,i,a){for(var n=y.Quaternion.fromAxisAngle(e,i,H),o=y.Matrix3.fromQuaternion(n,k),s=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,f=r.length,c=0;c<f;++c){var p=E.Cartesian3.clone(r[c],B);y.Matrix3.multiplyByVector(o,p,p);var d=t(p,q);I.defined(d)&&(s=Math.min(s,d.x),u=Math.max(u,d.x),l=Math.min(l,d.y),h=Math.max(h,d.y))}return a.x=s,a.y=l,a.width=u-s,a.height=h-l,a},R.createGeometryFromPositions=function(e,t,r,i,a,n){var o=D.PolygonPipeline.triangulate(t.positions2D,t.holes);o.length<3&&(o=[0,1,2]);var s=t.positions;if(i){for(var u=s.length,l=new Array(3*u),h=0,f=0;f<u;f++){var c=s[f];l[h++]=c.x,l[h++]=c.y,l[h++]=c.z}var p=new A.Geometry({attributes:{position:new A.GeometryAttribute({componentDatatype:P.ComponentDatatype.DOUBLE,componentsPerAttribute:3,values:l})},indices:o,primitiveType:A.PrimitiveType.TRIANGLES});return a.normal?d.GeometryPipeline.computeNormal(p):p}return n===M.ArcType.GEODESIC?D.PolygonPipeline.computeSubdivision(e,s,o,r):n===M.ArcType.RHUMB?D.PolygonPipeline.computeRhumbLineSubdivision(e,s,o,r):void 0};var z=[],W=new E.Cartesian3,F=new E.Cartesian3;R.computeWallGeometry=function(e,t,r,i,a){var n,o,s,u,l,h=e.length,f=0;if(i)for(o=3*h*2,n=new Array(2*o),s=0;s<h;s++)u=e[s],l=e[(s+1)%h],n[f]=n[f+o]=u.x,n[++f]=n[f+o]=u.y,n[++f]=n[f+o]=u.z,n[++f]=n[f+o]=l.x,n[++f]=n[f+o]=l.y,n[++f]=n[f+o]=l.z,++f;else{var c=x.CesiumMath.chordLength(r,t.maximumRadius),p=0;if(a===M.ArcType.GEODESIC)for(s=0;s<h;s++)p+=R.subdivideLineCount(e[s],e[(s+1)%h],c);else if(a===M.ArcType.RHUMB)for(s=0;s<h;s++)p+=R.subdivideRhumbLineCount(t,e[s],e[(s+1)%h],c);for(o=3*(p+h),n=new Array(2*o),s=0;s<h;s++){var d;u=e[s],l=e[(s+1)%h],a===M.ArcType.GEODESIC?d=R.subdivideLine(u,l,c,z):a===M.ArcType.RHUMB&&(d=R.subdivideRhumbLine(t,u,l,c,z));for(var y=d.length,g=0;g<y;++g,++f)n[f]=d[g],n[f+o]=d[g];n[f]=l.x,n[f+o]=l.x,n[++f]=l.y,n[f+o]=l.y,n[++f]=l.z,n[f+o]=l.z,++f}}h=n.length;var v=G.IndexDatatype.createTypedArray(h/3,h-6*e.length),m=0;for(h/=6,s=0;s<h;s++){var C=s,b=C+1,T=C+h,w=T+1;u=E.Cartesian3.fromArray(n,3*C,W),l=E.Cartesian3.fromArray(n,3*b,F),E.Cartesian3.equalsEpsilon(u,l,x.CesiumMath.EPSILON10,x.CesiumMath.EPSILON10)||(v[m++]=C,v[m++]=T,v[m++]=b,v[m++]=b,v[m++]=T,v[m++]=w)}return new A.Geometry({attributes:new _.GeometryAttributes({position:new A.GeometryAttribute({componentDatatype:P.ComponentDatatype.DOUBLE,componentsPerAttribute:3,values:n})}),indices:v,primitiveType:A.PrimitiveType.TRIANGLES})},e.PolygonGeometryLibrary=R});
|