wangzhibo
2021-09-06 f4af2a4a11d73b79355e7bef7184eaaab4c383ed
1
define(["./AttributeCompression-56959beb","./Cartesian2-40b13f31","./combine-83aa7971","./IndexDatatype-b42089ce","./Math-87254c13","./createTaskProcessorWorker","./Check-3917d765","./when-7b580518","./WebGLConstants-4e26b85a"],function(R,T,V,W,z,a,e,t,r){"use strict";var q=32767,i=Math.cos(z.CesiumMath.toRadians(150)),L=new T.Cartographic,_=new T.Cartesian3;var G=new T.Cartographic,Z=new T.Cartographic;function Y(a){var e=8*a,t=3*e,r=4*e;this.startEllipsoidNormals=new Float32Array(t),this.endEllipsoidNormals=new Float32Array(t),this.startPositionAndHeights=new Float32Array(r),this.startFaceNormalAndVertexCornerIds=new Float32Array(r),this.endPositionAndHeights=new Float32Array(r),this.endFaceNormalAndHalfWidths=new Float32Array(r),this.vertexBatchIds=new Uint16Array(e),this.indices=W.IndexDatatype.createTypedArray(e,36*a),this.vec3Offset=0,this.vec4Offset=0,this.batchIdOffset=0,this.indexOffset=0,this.volumeStartIndex=0}var o=new T.Cartesian3,d=new T.Cartesian3;function H(a,e,t,r,s){var n=T.Cartesian3.subtract(t,e,d),t=T.Cartesian3.subtract(e,a,o);return T.Cartesian3.normalize(n,n),T.Cartesian3.normalize(t,t),T.Cartesian3.dot(n,t)<i&&(t=T.Cartesian3.multiplyByScalar(t,-1,o)),T.Cartesian3.add(n,t,s),T.Cartesian3.equals(s,T.Cartesian3.ZERO)&&(s=T.Cartesian3.subtract(a,e)),T.Cartesian3.cross(s,r,s),T.Cartesian3.cross(r,s,s),T.Cartesian3.normalize(s,s),s}var O=[0,2,6,0,6,4,0,1,3,0,3,2,0,4,5,0,5,1,5,3,1,5,7,3,7,5,4,7,4,6,7,6,2,7,2,3],P=O.length,D=new T.Cartesian3,S=new T.Cartesian3,M=new T.Cartesian3,U=new T.Cartesian3,B=new T.Cartesian3;Y.prototype.addVolume=function(a,e,t,r,s,n,i,o,d,l){for(var f=T.Cartesian3.add(e,d,D),c=l.geodeticSurfaceNormal(f,S),f=T.Cartesian3.add(t,d,D),h=l.geodeticSurfaceNormal(f,U),u=H(a,e,t,c,M),C=H(r,t,e,h,B),p=this.startEllipsoidNormals,b=this.endEllipsoidNormals,m=this.startPositionAndHeights,A=this.startFaceNormalAndVertexCornerIds,v=this.endPositionAndHeights,w=this.endFaceNormalAndHalfWidths,g=this.vertexBatchIds,y=this.batchIdOffset,N=this.vec3Offset,k=this.vec4Offset,I=0;I<8;I++)T.Cartesian3.pack(c,p,N),T.Cartesian3.pack(h,b,N),T.Cartesian3.pack(e,m,k),m[k+3]=s,T.Cartesian3.pack(t,v,k),v[k+3]=n,T.Cartesian3.pack(u,A,k),A[k+3]=I,T.Cartesian3.pack(C,w,k),w[k+3]=i,g[y++]=o,N+=3,k+=4;this.batchIdOffset=y,this.vec3Offset=N,this.vec4Offset=k;var x=this.indices,E=this.volumeStartIndex,F=this.indexOffset;for(I=0;I<P;I++)x[F+I]=O[I]+E;this.volumeStartIndex+=8,this.indexOffset+=P};var j=new T.Rectangle,J=new T.Ellipsoid,K=new T.Cartesian3,Q=new T.Cartesian3,X=new T.Cartesian3,$=new T.Cartesian3,aa=new T.Cartesian3;return a(function(a,e){var t=new Uint16Array(a.positions),r=new Uint16Array(a.widths),s=new Uint32Array(a.counts),n=new Uint16Array(a.batchIds),i=j,o=J,d=K,l=new Float64Array(a.packedBuffer),f=0,c=l[f++],h=l[f++];T.Rectangle.unpack(l,2,i),f+=T.Rectangle.packedLength,T.Ellipsoid.unpack(l,f,o),f+=T.Ellipsoid.packedLength,T.Cartesian3.unpack(l,f,d);var u=t.length/3,l=t.subarray(0,u),f=t.subarray(u,2*u),C=t.subarray(2*u,3*u);R.AttributeCompression.zigZagDeltaDecode(l,f,C),function(a,e,t,r){for(var s=r.length,n=a.length,i=new Uint8Array(n),o=G,d=Z,l=0,f=0;f<s;f++){for(var c=r[f],h=c,u=1;u<c;u++){var C=l+u,p=C-1;d.longitude=a[C],d.latitude=e[C],o.longitude=a[p],o.latitude=e[p],T.Cartographic.equals(d,o)&&(h--,i[p]=1)}r[f]=h,l+=c}for(var b=0,m=0;m<n;m++)1!==i[m]&&(a[b]=a[m],e[b]=e[m],t[b]=t[m],b++)}(l,f,C,s);for(var p=s.length,b=0,m=0;m<p;m++)b+=s[m]-1;var A=new Y(b),v=function(a,e,t,r,s,n,i){for(var o=a.length,d=new Float64Array(3*o),l=0;l<o;++l){var f=a[l],c=e[l],h=t[l],f=z.CesiumMath.lerp(r.west,r.east,f/q),c=z.CesiumMath.lerp(r.south,r.north,c/q),h=z.CesiumMath.lerp(s,n,h/q),h=T.Cartographic.fromRadians(f,c,h,L),h=i.cartographicToCartesian(h,_);T.Cartesian3.pack(h,d,3*l)}return d}(l,f,C,i,c,h,o),u=l.length,w=new Float32Array(3*u);for(m=0;m<u;++m)w[3*m]=v[3*m]-d.x,w[3*m+1]=v[3*m+1]-d.y,w[3*m+2]=v[3*m+2]-d.z;var g=0,y=0;for(m=0;m<p;m++){for(var N=s[m]-1,k=.5*r[m],I=n[m],x=g,E=0;E<N;E++){var F=T.Cartesian3.unpack(w,g,X),H=T.Cartesian3.unpack(w,g+3,$),O=C[y],P=C[y+1],O=z.CesiumMath.lerp(c,h,O/q),P=z.CesiumMath.lerp(c,h,P/q);y++;var D,S,M,U=Q,B=aa;0===E?(S=T.Cartesian3.unpack(w,D=x+3*N,Q),T.Cartesian3.equals(S,F)?T.Cartesian3.unpack(w,D-3,U):(M=T.Cartesian3.subtract(F,H,Q),U=T.Cartesian3.add(M,F,Q))):T.Cartesian3.unpack(w,g-3,U),E===N-1?(M=T.Cartesian3.unpack(w,x,aa),T.Cartesian3.equals(M,H)?T.Cartesian3.unpack(w,x+3,B):(M=T.Cartesian3.subtract(H,F,aa),B=T.Cartesian3.add(M,H,aa))):T.Cartesian3.unpack(w,g+6,B),A.addVolume(U,F,H,B,O,P,k,I,d,o),g+=3}g+=3,y++}return l=A.indices,e.push(A.startEllipsoidNormals.buffer),e.push(A.endEllipsoidNormals.buffer),e.push(A.startPositionAndHeights.buffer),e.push(A.startFaceNormalAndVertexCornerIds.buffer),e.push(A.endPositionAndHeights.buffer),e.push(A.endFaceNormalAndHalfWidths.buffer),e.push(A.vertexBatchIds.buffer),e.push(l.buffer),l={indexDatatype:2===l.BYTES_PER_ELEMENT?W.IndexDatatype.UNSIGNED_SHORT:W.IndexDatatype.UNSIGNED_INT,startEllipsoidNormals:A.startEllipsoidNormals.buffer,endEllipsoidNormals:A.endEllipsoidNormals.buffer,startPositionAndHeights:A.startPositionAndHeights.buffer,startFaceNormalAndVertexCornerIds:A.startFaceNormalAndVertexCornerIds.buffer,endPositionAndHeights:A.endPositionAndHeights.buffer,endFaceNormalAndHalfWidths:A.endFaceNormalAndHalfWidths.buffer,vertexBatchIds:A.vertexBatchIds.buffer,indices:l.buffer},a.keepDecodedPositions&&(a=function(a){for(var e=a.length,t=new Uint32Array(e+1),r=0,s=0;s<e;++s)t[s]=r,r+=a[s];return t[e]=r,t}(s),e.push(v.buffer,a.buffer),l=V.combine(l,{decodedPositions:v.buffer,decodedPositionOffsets:a.buffer})),l})});