4x/irrigation-monitoring-platf.../public/Cesium/Workers/createVerticesFromHeightmap.js

4 lines
26 KiB
JavaScript
Raw Permalink Normal View History

2024-12-26 19:24:07 +08:00
define(["./Matrix2-9aa31791","./AxisAlignedBoundingBox-07c6b7f2","./Transforms-d13cc04e","./when-4bbc8319","./RuntimeError-346a3079","./TerrainEncoding-ba779f11","./ComponentDatatype-93750d1a","./OrientedBoundingBox-4b932f63","./WebMercatorProjection-58801a11","./createTaskProcessorWorker","./combine-83860057","./AttributeCompression-af389d04","./WebGLConstants-1c8239cc","./EllipsoidTangentPlane-eecce7e8","./IntersectionTests-96a04219","./Plane-318d6937"],(function(e,t,a,i,r,n,s,l,o,f,u,c,d,h,m,g){"use strict";var p=Object.freeze({NONE:0,LERC:1}),x={};x.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var w=new e.Cartesian3,k=new e.Matrix4,y=new e.Cartesian3,I=new e.Cartesian3;x.computeVertices=function(r){var f,u,c,d,h=Math.cos,m=Math.sin,g=Math.sqrt,p=Math.atan,v=Math.exp,b=s.CesiumMath.PI_OVER_TWO,U=s.CesiumMath.toRadians,T=r.heightmap,M=r.width,V=r.height,A=r.skirtHeight,B=A>0,D=i.defaultValue(r.isGeographic,!0),S=i.defaultValue(r.ellipsoid,e.Ellipsoid.WGS84),P=1/S.maximumRadius,E=e.Rectangle.clone(r.nativeRectangle),C=e.Rectangle.clone(r.rectangle);i.defined(C)?(f=C.west,u=C.south,c=C.east,d=C.north):D?(f=U(E.west),u=U(E.south),c=U(E.east),d=U(E.north)):(f=E.west*P,u=b-2*p(v(-E.south*P)),c=E.east*P,d=b-2*p(v(-E.north*P)));var F=r.relativeToCenter,N=i.defined(F);F=N?F:e.Cartesian3.ZERO;var O=i.defaultValue(r.includeWebMercatorT,!1),R=i.defaultValue(r.exaggeration,1),L=i.defaultValue(r.exaggerationRelativeHeight,0),z=1!==R,H=i.defaultValue(r.structure,x.DEFAULT_STRUCTURE),_=i.defaultValue(H.heightScale,x.DEFAULT_STRUCTURE.heightScale),Y=i.defaultValue(H.heightOffset,x.DEFAULT_STRUCTURE.heightOffset),W=i.defaultValue(H.elementsPerHeight,x.DEFAULT_STRUCTURE.elementsPerHeight),X=i.defaultValue(H.stride,x.DEFAULT_STRUCTURE.stride),Z=i.defaultValue(H.elementMultiplier,x.DEFAULT_STRUCTURE.elementMultiplier),j=i.defaultValue(H.isBigEndian,x.DEFAULT_STRUCTURE.isBigEndian),G=e.Rectangle.computeWidth(E),q=e.Rectangle.computeHeight(E),Q=G/(M-1),J=q/(V-1);D||(G*=P,q*=P);var K,$,ee=S.radiiSquared,te=ee.x,ae=ee.y,ie=ee.z,re=65536,ne=-65536,se=a.Transforms.eastNorthUpToFixedFrame(F,S),le=e.Matrix4.inverseTransformation(se,k);O&&(K=o.WebMercatorProjection.geodeticLatitudeToMercatorAngle(u),$=1/(o.WebMercatorProjection.geodeticLatitudeToMercatorAngle(d)-K));var oe=y;oe.x=Number.POSITIVE_INFINITY,oe.y=Number.POSITIVE_INFINITY,oe.z=Number.POSITIVE_INFINITY;var fe=I;fe.x=Number.NEGATIVE_INFINITY,fe.y=Number.NEGATIVE_INFINITY,fe.z=Number.NEGATIVE_INFINITY;var ue=Number.POSITIVE_INFINITY,ce=M*V,de=ce+(A>0?2*M+2*V:0),he=new Array(de),me=new Array(de),ge=new Array(de),pe=O?new Array(de):[],xe=z?new Array(de):[],we=0,ke=V,ye=0,Ie=M;B&&(--we,++ke,--ye,++Ie);for(var ve=1e-5,be=we;be<ke;++be){var Ue=be;Ue<0&&(Ue=0),Ue>=V&&(Ue=V-1);var Te=E.north-J*Ue,Me=((Te=D?U(Te):b-2*p(v(-Te*P)))-u)/(d-u);Me=s.CesiumMath.clamp(Me,0,1);var Ve=be===we,Ae=be===ke-1;A>0&&(Ve?Te+=ve*q:Ae&&(Te-=ve*q));var Be,De=h(Te),Se=m(Te),Pe=ie*Se;O&&(Be=(o.WebMercatorProjection.geodeticLatitudeToMercatorAngle(Te)-K)*$);for(var Ee=ye;Ee<Ie;++Ee){var Ce=Ee;Ce<0&&(Ce=0),Ce>=M&&(Ce=M-1);var Fe,Ne,Oe=Ue*(M*X)+Ce*X;if(1===W)Fe=T[Oe];else if(Fe=0,j)for(Ne=0;Ne<W;++Ne)Fe=Fe*Z+T[Oe+Ne];else for(Ne=W-1;Ne>=0;--Ne)Fe=Fe*Z+T[Oe+Ne];Fe=Fe*_+Y,ne=Math.max(ne,Fe),re=Math.min(re,Fe);var Re=E.west+Q*Ce;D?Re=U(Re):Re*=P;var Le=(Re-f)/(c-f);Le=s.CesiumMath.clamp(Le,0,1);var ze=Ue*M+Ce;if(A>0){var He=Ee===ye,_e=Ee===Ie-1,Ye=Ve||Ae||He||_e;if((Ve||Ae)&&(He||_e))continue;Ye&&(Fe-=A,He?(ze=ce+(V-Ue-1),Re-=ve*G):Ae?ze=ce+V+(M-Ce-1):_e?(ze=ce+V+M+Ue,Re+=ve*G):Ve&&(ze=ce+V+M+V+Ce))}var We=De*h(Re),Xe=De*m(Re),Ze=te*We,je=ae*Xe,Ge=1/g(Ze*We+je*Xe+Pe*Se),qe=Ze*Ge,Qe=je*Ge,Je=Pe*Ge,Ke=new e.Cartesian3;Ke.x=qe+We*Fe,Ke.y=Qe+Xe*Fe,Ke.z=Je+Se*Fe,e.Matrix4.multiplyByPoint(le,Ke,w),e.Cartesian3.minimumByComponent(w,oe,oe),e.Cartesian3.maximumByComponent(w,fe,fe),ue=Math.min(ue,Fe),he[ze]=Ke,ge[ze]=new e.Cartesian2(Le,Me),me[ze]=Fe,O&&(pe[ze]=Be),z&&(xe[ze]=S.geodeticSurfaceNormal(Ke))}}var $e,et,tt=a.BoundingSphere.fromPoints(he)
/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */
!function(){var t,a,i,r,n,s,l,o,f,u,c,d,h,m,g,p,x=(t={defaultNoDataValue:-34027999387901484e22,decode:function(e,s){var l=(s=s||{}).encodedMaskData||null===s.encodedMaskData,o=n(e,s.inputOffset||0,l),f=null!==s.noDataValue?s.noDataValue:t.defaultNoDataValue,u=a(o,s.pixelType||Float32Array,s.encodedMaskData,f,s.returnMask),c={width:o.width,height:o.height,pixelData:u.resultPixels,minValue:u.minValue,maxValue:o.pixels.maxValue,noDataValue:f};return u.resultMask&&(c.maskData=u.resultMask),s.returnEncodedMask&&o.mask&&(c.encodedMaskData=o.mask.bitset?o.mask.bitset:null),s.returnFileInfo&&(c.fileInfo=i(o),s.computeUsedBitDepths&&(c.fileInfo.bitDepths=r(o))),c}},a=function(e,t,a,i,r){var n,l,o,f=0,u=e.pixels.numBlocksX,c=e.pixels.numBlocksY,d=Math.floor(e.width/u),h=Math.floor(e.height/c),m=2*e.maxZError,g=Number.MAX_VALUE;a=a||(e.mask?e.mask.bitset:null),l=new t(e.width*e.height),r&&a&&(o=new Uint8Array(e.width*e.height));for(var p,x,w=new Float32Array(d*h),k=0;k<=c;k++){var y=k!==c?h:e.height%c;if(0!==y)for(var I=0;I<=u;I++){var v=I!==u?d:e.width%u;if(0!==v){var b,U,T,M,V=k*e.width*h+I*d,A=e.width-v,B=e.pixels.blocks[f];if(B.encoding<2?(0===B.encoding?b=B.rawData:(s(B.stuffedData,B.bitsPerPixel,B.numValidPixels,B.offset,m,w,e.pixels.maxValue),b=w),U=0):T=2===B.encoding?0:B.offset,a)for(x=0;x<y;x++){for(7&V&&(M=a[V>>3],M<<=7&V),p=0;p<v;p++)7&V||(M=a[V>>3]),128&M?(o&&(o[V]=1),g=g>(n=B.encoding<2?b[U++]:T)?n:g,l[V++]=n):(o&&(o[V]=0),l[V++]=i),M<<=1;V+=A}else if(B.encoding<2)for(x=0;x<y;x++){for(p=0;p<v;p++)g=g>(n=b[U++])?n:g,l[V++]=n;V+=A}else for(g=g>T?T:g,x=0;x<y;x++){for(p=0;p<v;p++)l[V++]=T;V+=A}if(1===B.encoding&&U!==B.numValidPixels)throw"Block and Mask do not match";f++}}}return{resultPixels:l,resultMask:o,minValue:g}},i=function(e){return{fileIdentifierString:e.fileIdentifierString,fileVersion:e.fileVersion,imageType:e.imageType,height:e.height,width:e.width,maxZError:e.maxZError,eofOffset:e.eofOffset,mask:e.mask?{numBlocksX:e.mask.numBlocksX,numBlocksY:e.mask.numBlocksY,numBytes:e.mask.numBytes,maxValue:e.mask.maxValue}:null,pixels:{numBlocksX:e.pixels.numBlocksX,numBlocksY:e.pixels.numBlocksY,numBytes:e.pixels.numBytes,maxValue:e.pixels.maxValue,noDataValue:e.noDataValue}}},r=function(e){for(var t=e.pixels.numBlocksX*e.pixels.numBlocksY,a={},i=0;i<t;i++){var r=e.pixels.blocks[i];0===r.encoding?a.float32=!0:1===r.encoding?a[r.bitsPerPixel]=!0:a[0]=!0}return Object.keys(a)},n=function(e,t,a){var i={},r=new Uint8Array(e,t,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,r),"CntZImage"!==i.fileIdentifierString.trim())throw"Unexpected file identifier string: "+i.fileIdentifierString;t+=10;var n=new DataView(e,t,24);if(i.fileVersion=n.getInt32(0,!0),i.imageType=n.getInt32(4,!0),i.height=n.getUint32(8,!0),i.width=n.getUint32(12,!0),i.maxZError=n.getFloat64(16,!0),t+=24,!a)if(n=new DataView(e,t,16),i.mask={},i.mask.numBlocksY=n.getUint32(0,!0),i.mask.numBlocksX=n.getUint32(4,!0),i.mask.numBytes=n.getUint32(8,!0),i.mask.maxValue=n.getFloat32(12,!0),t+=16,i.mask.numBytes>0){var s=new Uint8Array(Math.ceil(i.width*i.height/8)),l=(n=new DataView(e,t,i.mask.numBytes)).getInt16(0,!0),o=2,f=0;do{if(l>0)for(;l--;)s[f++]=n.getUint8(o++);else{var u=n.getUint8(o++);for(l=-l;l--;)s[f++]=u}l=n.getInt16(o,!0),o+=2}while(o<i.mask.numBytes);if(-32768!==l||f<s.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=s,t+=i.mask.numBytes}else 0==(i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue)&&(i.mask.bitset=new Uint8Array(Math.ceil(i.width*i.height/8)));n=new DataView(e,t,16),i.pixels={},i.pixels.numBlocksY=n.getUint32(0,!0),i.pixels.numBlocksX=n.getUint32(4,!0),i.pixels.numBytes=n.getUint32(8,!0),i.pixels.maxValue=n.getFloat32(12,!0),t+=16;var c=i.pixels.numBlocksX,d=i.pixels.numBlocksY,h=c+(i.width%c>0?1:0),m=d+(i.height%d>0?1:0);i.pixels.blocks=new Array(h*m);for(var g=0,p=0;p<m;p++)for(var x=0;x<h;x++){var w=0,k=e.byteLength-t;n=new DataView(e,t,Math.min(10,k));var y={};i.pixels.blocks[g++]=y;var I=n.getUint8(0);if(w++,y.encoding=63&I,y.encoding>3)throw"Invalid block encoding ("+y.encoding+")";if(2!==y.encoding){if(