PolygonPipeline-805ba13c.js 4.9 KB

1
  1. define(["exports","./earcut-2.2.1-20c8012f","./Cartesian2-47311507","./Cartographic-3309dd0d","./Check-7b2a090c","./ComponentDatatype-c140a87d","./when-b60132fc","./EllipsoidRhumbLine-ed1a6bf4","./GeometryAttribute-c42d25b7","./Math-119be1a3","./buildModuleUrl-57a32107","./WebGLConstants-4ae0db90"],(function(a,e,t,i,r,n,s,u,o,h,p,d){"use strict";var l={CLOCKWISE:d.WebGLConstants.CW,COUNTER_CLOCKWISE:d.WebGLConstants.CCW,validate:function(a){return a===l.CLOCKWISE||a===l.COUNTER_CLOCKWISE}},C=Object.freeze(l),m=new i.Cartesian3,c=new i.Cartesian3,y={computeArea2D:function(a){for(var e=a.length,t=0,i=e-1,r=0;r<e;i=r++){var n=a[i],s=a[r];t+=n.x*s.y-s.x*n.y}return.5*t},computeWindingOrder2D:function(a){return y.computeArea2D(a)>0?C.COUNTER_CLOCKWISE:C.CLOCKWISE},triangulate:function(a,i){var r=t.Cartesian2.packArray(a);return e.earcut(r,i,2)}},f=new i.Cartesian3,g=new i.Cartesian3,v=new i.Cartesian3,E=new i.Cartesian3,b=new i.Cartesian3,S=new i.Cartesian3,w=new i.Cartesian3;y.computeSubdivision=function(a,e,t,r,u){u=s.defaultValue(u,!1),r=s.defaultValue(r,h.CesiumMath.RADIANS_PER_DEGREE);var d,l=t.slice(0),C=e.length,m=new Array(3*C),c=0;for(d=0;d<C;d++){var y=e[d];m[c++]=y.x,m[c++]=y.y,m[c++]=y.z}for(var A=[],x={},R=a.maximumRadius,L=h.CesiumMath.chordLength(r,R),M=L*L;l.length>0;){var D,G,O=l.pop(),T=l.pop(),W=l.pop(),z=i.Cartesian3.fromArray(m,3*W,f),P=i.Cartesian3.fromArray(m,3*T,g),I=i.Cartesian3.fromArray(m,3*O,v),B=u?z:i.Cartesian3.multiplyByScalar(i.Cartesian3.normalize(z,E),R,E),U=u?P:i.Cartesian3.multiplyByScalar(i.Cartesian3.normalize(P,b),R,b),N=u?I:i.Cartesian3.multiplyByScalar(i.Cartesian3.normalize(I,S),R,S),_=i.Cartesian3.magnitudeSquared(i.Cartesian3.subtract(B,U,w)),K=i.Cartesian3.magnitudeSquared(i.Cartesian3.subtract(U,N,w)),V=i.Cartesian3.magnitudeSquared(i.Cartesian3.subtract(N,B,w)),q=Math.max(_,K,V);q>M?_===q?(d=x[D=Math.min(W,T)+" "+Math.max(W,T)],s.defined(d)||(G=i.Cartesian3.add(z,P,w),i.Cartesian3.multiplyByScalar(G,.5,G),m.push(G.x,G.y,G.z),d=m.length/3-1,x[D]=d),l.push(W,d,O),l.push(d,T,O)):K===q?(d=x[D=Math.min(T,O)+" "+Math.max(T,O)],s.defined(d)||(G=i.Cartesian3.add(P,I,w),i.Cartesian3.multiplyByScalar(G,.5,G),m.push(G.x,G.y,G.z),d=m.length/3-1,x[D]=d),l.push(T,d,W),l.push(d,O,W)):V===q&&(d=x[D=Math.min(O,W)+" "+Math.max(O,W)],s.defined(d)||(G=i.Cartesian3.add(I,z,w),i.Cartesian3.multiplyByScalar(G,.5,G),m.push(G.x,G.y,G.z),d=m.length/3-1,x[D]=d),l.push(O,d,T),l.push(d,W,T)):(A.push(W),A.push(T),A.push(O))}return new o.Geometry({attributes:{position:new o.GeometryAttribute({componentDatatype:n.ComponentDatatype.DOUBLE,componentsPerAttribute:3,values:m})},indices:A,primitiveType:p.PrimitiveType.TRIANGLES})};var A=new i.Cartographic,x=new i.Cartographic,R=new i.Cartographic,L=new i.Cartographic;y.computeRhumbLineSubdivision=function(a,e,t,r){r=s.defaultValue(r,h.CesiumMath.RADIANS_PER_DEGREE);var d,l=t.slice(0),C=e.length,m=new Array(3*C),c=0;for(d=0;d<C;d++){var y=e[d];m[c++]=y.x,m[c++]=y.y,m[c++]=y.z}for(var E=[],b={},S=a.maximumRadius,M=h.CesiumMath.chordLength(r,S),D=new u.EllipsoidRhumbLine(void 0,void 0,a),G=new u.EllipsoidRhumbLine(void 0,void 0,a),O=new u.EllipsoidRhumbLine(void 0,void 0,a);l.length>0;){var T=l.pop(),W=l.pop(),z=l.pop(),P=i.Cartesian3.fromArray(m,3*z,f),I=i.Cartesian3.fromArray(m,3*W,g),B=i.Cartesian3.fromArray(m,3*T,v),U=a.cartesianToCartographic(P,A),N=a.cartesianToCartographic(I,x),_=a.cartesianToCartographic(B,R);D.setEndPoints(U,N);var K=D.surfaceDistance;G.setEndPoints(N,_);var V=G.surfaceDistance;O.setEndPoints(_,U);var q,F,k,j,H=O.surfaceDistance,J=Math.max(K,V,H);J>M?K===J?(d=b[q=Math.min(z,W)+" "+Math.max(z,W)],s.defined(d)||(F=D.interpolateUsingFraction(.5,L),k=.5*(U.height+N.height),j=i.Cartesian3.fromRadians(F.longitude,F.latitude,k,a,w),m.push(j.x,j.y,j.z),d=m.length/3-1,b[q]=d),l.push(z,d,T),l.push(d,W,T)):V===J?(d=b[q=Math.min(W,T)+" "+Math.max(W,T)],s.defined(d)||(F=G.interpolateUsingFraction(.5,L),k=.5*(N.height+_.height),j=i.Cartesian3.fromRadians(F.longitude,F.latitude,k,a,w),m.push(j.x,j.y,j.z),d=m.length/3-1,b[q]=d),l.push(W,d,z),l.push(d,T,z)):H===J&&(d=b[q=Math.min(T,z)+" "+Math.max(T,z)],s.defined(d)||(F=O.interpolateUsingFraction(.5,L),k=.5*(_.height+U.height),j=i.Cartesian3.fromRadians(F.longitude,F.latitude,k,a,w),m.push(j.x,j.y,j.z),d=m.length/3-1,b[q]=d),l.push(T,d,W),l.push(d,z,W)):(E.push(z),E.push(W),E.push(T))}return new o.Geometry({attributes:{position:new o.GeometryAttribute({componentDatatype:n.ComponentDatatype.DOUBLE,componentsPerAttribute:3,values:m})},indices:E,primitiveType:p.PrimitiveType.TRIANGLES})},y.scaleToGeodeticHeight=function(a,e,r,n){r=s.defaultValue(r,t.Ellipsoid.WGS84);var u=m,o=c;if(e=s.defaultValue(e,0),n=s.defaultValue(n,!0),s.defined(a))for(var h=a.length,p=0;p<h;p+=3)i.Cartesian3.fromArray(a,p,o),n&&(o=r.scaleToGeodeticSurface(o,o)),0!==e&&(u=r.geodeticSurfaceNormal(o,u),i.Cartesian3.multiplyByScalar(u,e,u),i.Cartesian3.add(o,u,o)),a[p]=o.x,a[p+1]=o.y,a[p+2]=o.z;return a},a.PolygonPipeline=y,a.WindingOrder=C}));