bmh_cesium/public/lib/cesiumjs/CesiumUnminified/Workers/createVerticesFromHeightmap.js

2 lines
26 KiB
JavaScript
Raw Normal View History

2025-03-09 23:23:50 +00:00
/* 2020-9-22 15:23:25 | 版权所有 军懋国兴 */
define(["./when-cbf8cd21","./Check-35e1a91d","./Math-69007a69","./Cartesian2-43e3a3be","./Transforms-2d1ac5ec","./RuntimeError-f4c64df1","./WebGLConstants-95ceb4e9","./ComponentDatatype-607c9a0c","./AttributeCompression-ea810287","./IntersectionTests-459f6f08","./Plane-46b5436f","./WebMercatorProjection-3da37aae","./createTaskProcessorWorker","./EllipsoidTangentPlane-b5927ee3","./OrientedBoundingBox-5e0b7a7c","./TerrainEncoding-848fa40b"],function(Ye,We,Xe,Ze,je,n,e,t,i,a,r,qe,s,Ge,Qe,Je){"use strict";var l=Object.freeze({NONE:0,LERC:1}),Ke={};Ke.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var $e=new Ze.Cartesian3,et=new je.Matrix4,tt=new Ze.Cartesian3,it=new Ze.Cartesian3;Ke.computeVertices=function(e){if(!Ye.defined(e)||!Ye.defined(e.heightmap))throw new We.DeveloperError("options.heightmap is required.");if(!Ye.defined(e.width)||!Ye.defined(e.height))throw new We.DeveloperError("options.width and options.height are required.");if(!Ye.defined(e.nativeRectangle))throw new We.DeveloperError("options.nativeRectangle is required.");if(!Ye.defined(e.skirtHeight))throw new We.DeveloperError("options.skirtHeight is required.");var t,i,a,r=Math.cos,n=Math.sin,s=Math.sqrt,l=Math.atan,o=Math.exp,f=Xe.CesiumMath.PI_OVER_TWO,u=Xe.CesiumMath.toRadians,d=e.heightmap,c=e.width,h=e.height,m=e.skirtHeight,g=Ye.defaultValue(e.isGeographic,!0),p=Ye.defaultValue(e.ellipsoid,Ze.Ellipsoid.WGS84),w=1/p.maximumRadius,x=e.nativeRectangle,k=e.rectangle,y=Ye.defined(k)?(t=k.west,i=k.south,a=k.east,k.north):g?(t=u(x.west),i=u(x.south),a=u(x.east),u(x.north)):(t=x.west*w,i=f-2*l(o(-x.south*w)),a=x.east*w,f-2*l(o(-x.north*w))),I=e.relativeToCenter,b=Ye.defined(I),I=b?I:Ze.Cartesian3.ZERO,v=Ye.defaultValue(e.exaggeration,1),U=Ye.defaultValue(e.includeWebMercatorT,!1),T=Ye.defaultValue(e.structure,Ke.DEFAULT_STRUCTURE),M=Ye.defaultValue(T.heightScale,Ke.DEFAULT_STRUCTURE.heightScale),V=Ye.defaultValue(T.heightOffset,Ke.DEFAULT_STRUCTURE.heightOffset),A=Ye.defaultValue(T.elementsPerHeight,Ke.DEFAULT_STRUCTURE.elementsPerHeight),D=Ye.defaultValue(T.stride,Ke.DEFAULT_STRUCTURE.stride),B=Ye.defaultValue(T.elementMultiplier,Ke.DEFAULT_STRUCTURE.elementMultiplier),S=Ye.defaultValue(T.isBigEndian,Ke.DEFAULT_STRUCTURE.isBigEndian),P=Ze.Rectangle.computeWidth(x),E=Ze.Rectangle.computeHeight(x),C=P/(c-1),F=E/(h-1);g||(P*=w,E*=w);var L,O,N=p.radiiSquared,R=N.x,z=N.y,H=N.z,_=65536,Y=-65536,W=je.Transforms.eastNorthUpToFixedFrame(I,p),X=je.Matrix4.inverseTransformation(W,et);U&&(L=qe.WebMercatorProjection.geodeticLatitudeToMercatorAngle(i),O=1/(qe.WebMercatorProjection.geodeticLatitudeToMercatorAngle(y)-L));var Z=tt;Z.x=Number.POSITIVE_INFINITY,Z.y=Number.POSITIVE_INFINITY,Z.z=Number.POSITIVE_INFINITY;var j=it;j.x=Number.NEGATIVE_INFINITY,j.y=Number.NEGATIVE_INFINITY,j.z=Number.NEGATIVE_INFINITY;var q=Number.POSITIVE_INFINITY,G=c*h,Q=G+(0<m?2*c+2*h:0),J=new Array(Q),K=new Array(Q),$=new Array(Q),ee=U?new Array(Q):[],te=0,ie=h,ae=0,re=c;0<m&&(--te,++ie,--ae,++re);for(var ne=te;ne<ie;++ne){var se=ne;se<0&&(se=0),h<=se&&(se=h-1);var le=x.north-F*se,oe=((le=g?u(le):f-2*l(o(-le*w)))-i)/(y-i),oe=Xe.CesiumMath.clamp(oe,0,1),fe=ne===te,ue=ne===ie-1;0<m&&(fe?le+=1e-5*E:ue&&(le-=1e-5*E));var de,ce=r(le),he=n(le),me=H*he;U&&(de=(qe.WebMercatorProjection.geodeticLatitudeToMercatorAngle(le)-L)*O);for(var ge=ae;ge<re;++ge){var pe=ge;pe<0&&(pe=0),c<=pe&&(pe=c-1);var we=se*(c*D)+pe*D;if(1===A)ke=d[we];else{var xe,ke=0;if(S)for(xe=0;xe<A;++xe)ke=ke*B+d[we+xe];else for(xe=A-1;0<=xe;--xe)ke=ke*B+d[we+xe]}ke=(ke*M+V)*v,Y=Math.max(Y,ke),_=Math.min(_,ke);var ye=x.west+C*pe;g?ye=u(ye):ye*=w;var Ie=(ye-t)/(a-t),Ie=Xe.CesiumMath.clamp(Ie,0,1),be=se*c+pe;if(0<m){var ve=ge===ae,Ue=ge===re-1,Te=fe||ue||ve||Ue;if((fe||ue)&&(ve||Ue))continue;Te&&(ke-=m,ve?(be=h-se-1+G,ye-=1e-5*P):ue?be=G+h+(c-pe-1):Ue?(be=G+h+c+se,ye+=1e-5*P):fe&&(be=G+h+c+h+pe))}var Me=ce*r(ye),Ve=ce*n(ye),Ae=R*Me,De=z*Ve,Be=1/s(Ae*Me+De*Ve+me*he),Se=Ae*Be,Pe=De*Be,Ee=me*Be,Ce=new Ze.Cartesian3;Ce.x=Se+Me*ke,Ce.y=Pe+Ve*ke,Ce.z=Ee+he*ke,J[b