mars3d-wind 3.5.14 → 3.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
3
3
  *
4
- * 版本信息:v3.5.14
5
- * 编译日期:2023-07-03 18:37:06
4
+ * 版本信息:v3.5.15
5
+ * 编译日期:2023-07-10 19:14:29
6
6
  * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
7
  * 使用单位:免费公开版 ,2023-03-17
8
8
  */
@@ -11,5 +11,5 @@
11
11
  typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
12
12
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
13
13
  })(this, (function (exports, mars3d) {
14
- 'use strict';const _0x273563=_0x3cb0;(function(_0x32eeca,_0x239669){const _0x724f52=_0x3cb0,_0x1f1e12=_0x32eeca();while(!![]){try{const _0x451990=parseInt(_0x724f52(0xb5))/0x1*(-parseInt(_0x724f52(0x154))/0x2)+-parseInt(_0x724f52(0xe8))/0x3*(parseInt(_0x724f52(0x126))/0x4)+-parseInt(_0x724f52(0xdc))/0x5+parseInt(_0x724f52(0xf1))/0x6*(-parseInt(_0x724f52(0x108))/0x7)+parseInt(_0x724f52(0x92))/0x8*(-parseInt(_0x724f52(0xa9))/0x9)+-parseInt(_0x724f52(0x105))/0xa*(-parseInt(_0x724f52(0x16d))/0xb)+parseInt(_0x724f52(0xb4))/0xc*(parseInt(_0x724f52(0xfb))/0xd);if(_0x451990===_0x239669)break;else _0x1f1e12['push'](_0x1f1e12['shift']());}catch(_0x42e8d0){_0x1f1e12['push'](_0x1f1e12['shift']());}}}(_0x2b06,0x6f4e1));function _interopNamespace(_0x1731dc){const _0x42d2e9=_0x3cb0;if(_0x1731dc&&_0x1731dc['__esModule'])return _0x1731dc;var _0x13d544=Object['create'](null);return _0x1731dc&&Object['keys'](_0x1731dc)[_0x42d2e9(0x143)](function(_0xc8cd88){const _0x3c422c=_0x42d2e9;if(_0xc8cd88!=='default'){var _0x47f320=Object[_0x3c422c(0x125)](_0x1731dc,_0xc8cd88);Object['defineProperty'](_0x13d544,_0xc8cd88,_0x47f320['get']?_0x47f320:{'enumerable':!![],'get':function(){return _0x1731dc[_0xc8cd88];}});}}),_0x13d544['default']=_0x1731dc,_0x13d544;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace[_0x273563(0x15d)];function getU(_0x5b4061,_0x5469cc){const _0x39734d=_0x273563,_0x1d9349=_0x5b4061*Math['cos'](Cesium$7[_0x39734d(0xd4)]['toRadians'](_0x5469cc));return _0x1d9349;}function _0x3cb0(_0x44efe8,_0x212878){const _0x2b06a1=_0x2b06();return _0x3cb0=function(_0x3cb096,_0x339a99){_0x3cb096=_0x3cb096-0x88;let _0x4f0487=_0x2b06a1[_0x3cb096];return _0x4f0487;},_0x3cb0(_0x44efe8,_0x212878);}function getV(_0x4f0598,_0x2297d6){const _0x551b44=_0x273563,_0x3fa7cb=_0x4f0598*Math[_0x551b44(0xdb)](Cesium$7[_0x551b44(0xd4)][_0x551b44(0x129)](_0x2297d6));return _0x3fa7cb;}function getSpeed(_0x4e931a,_0x15e575){const _0x4ea5da=_0x273563,_0x162855=Math[_0x4ea5da(0x120)](Math[_0x4ea5da(0x12d)](_0x4e931a,0x2)+Math['pow'](_0x15e575,0x2));return _0x162855;}function _0x2b06(){const _0x5579e8=['visible','mouseHidden','277537FUQQGv','off','canvasContext','pointer-events','xmax','unbindEvent','segments','NEAREST','mouse_down','primitiveType','117050BFZSyk','canvasWidth','OPAQUE','1693363nHAFma','udata','Compute','lat','colorTable','isDestroyed','all','_onMapWhellEvent','height','top','ShaderProgram','_randomParticle','depthTexture','fromCssColorString','autoClear','min','mode','updateSpeed','UNSIGNED_BYTE','nextTrails','lon','_bilinearInterpolation','windField','PrimitiveCollection','sqrt','refreshParticles','CanvasWindField','rows','postProcessingSpeed','getOwnPropertyDescriptor','3627100zPiogQ','DrawCommand','camera','toRadians','textures','viewerParameters','pointerEvents','pow','maxAge','defineProperty','PI_OVER_THREE','wheel','_onMouseMoveEvent','random','commandToExecute','getUVByXY','nextParticlesSpeed','layer','segmentsColor','_removedHook','Framebuffer','defined','color','_mountedHook','_updateIng','push','particlesTextureSize','SceneTransforms','fadeOpacity','forEach','refreshTimer','mouse_move','ymax','wind','context','Appearance','fillRect','particlesWind','primitives','array','STATIC_DRAW','rawRenderState','clientHeight','//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x,\x20360.0);\x0a\x20\x20\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20-90.0,\x2090.0);\x0a\x0a\x20\x20\x20\x20vec3\x20index3D\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20index3D.z\x20=\x20(lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z;\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205],\x20width\x20=\x203,\x20height\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x203\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x202\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWind(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20\x20\x20float\x20result\x20=\x20texture(windTexture,\x20normalizedIndex2D).r;\x0a\x20\x20\x20\x20return\x20result;\x0a}\x0a\x0aconst\x20mat4\x20kernelMatrix\x20=\x20mat4(\x0a\x20\x20\x20\x200.0,\x20-1.0,\x202.0,\x20-1.0,\x20//\x20first\x20column\x0a\x20\x20\x20\x202.0,\x200.0,\x20-5.0,\x203.0,\x20//\x20second\x20column\x0a\x20\x20\x20\x200.0,\x201.0,\x204.0,\x20-3.0,\x20//\x20third\x20column\x0a\x20\x20\x20\x200.0,\x200.0,\x20-1.0,\x201.0\x20//\x20fourth\x20column\x0a);\x0afloat\x20oneDimensionInterpolation(float\x20t,\x20float\x20p0,\x20float\x20p1,\x20float\x20p2,\x20float\x20p3)\x20{\x0a\x20\x20\x20\x20vec4\x20tVec4\x20=\x20vec4(1.0,\x20t,\x20t\x20*\x20t,\x20t\x20*\x20t\x20*\x20t);\x0a\x20\x20\x20\x20tVec4\x20=\x20tVec4\x20/\x202.0;\x0a\x20\x20\x20\x20vec4\x20pVec4\x20=\x20vec4(p0,\x20p1,\x20p2,\x20p3);\x0a\x20\x20\x20\x20return\x20dot((tVec4\x20*\x20kernelMatrix),\x20pVec4);\x0a}\x0a\x0afloat\x20calculateB(sampler2D\x20windTexture,\x20float\x20t,\x20float\x20lon,\x20float\x20lat,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20float\x20lon0\x20=\x20floor(lon)\x20-\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon1\x20=\x20floor(lon);\x0a\x20\x20\x20\x20float\x20lon2\x20=\x20floor(lon)\x20+\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon3\x20=\x20floor(lon)\x20+\x202.0\x20*\x20interval.x;\x0a\x0a\x20\x20\x20\x20float\x20p0\x20=\x20getWind(windTexture,\x20vec3(lon0,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p1\x20=\x20getWind(windTexture,\x20vec3(lon1,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p2\x20=\x20getWind(windTexture,\x20vec3(lon2,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p3\x20=\x20getWind(windTexture,\x20vec3(lon3,\x20lat,\x20lev));\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(t,\x20p0,\x20p1,\x20p2,\x20p3);\x0a}\x0a\x0afloat\x20interpolateOneTexture(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20\x20\x20float\x20lat0\x20=\x20floor(lat)\x20-\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat1\x20=\x20floor(lat);\x0a\x20\x20\x20\x20float\x20lat2\x20=\x20floor(lat)\x20+\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat3\x20=\x20floor(lat)\x20+\x202.0\x20*\x20interval.y;\x0a\x0a\x20\x20\x20\x20vec2\x20coefficient\x20=\x20lonLatLev.xy\x20-\x20floor(lonLatLev.xy);\x0a\x20\x20\x20\x20float\x20b0\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat0,\x20lev);\x0a\x20\x20\x20\x20float\x20b1\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat1,\x20lev);\x0a\x20\x20\x20\x20float\x20b2\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat2,\x20lev);\x0a\x20\x20\x20\x20float\x20b3\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat3,\x20lev);\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(coefficient.y,\x20b0,\x20b1,\x20b2,\x20b3);\x0a}\x0a\x0avec3\x20bicubic(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm\x0a\x20\x20\x20\x20float\x20u\x20=\x20interpolateOneTexture(U,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20v\x20=\x20interpolateOneTexture(V,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}\x0a','windData','postMessage','358okutMT','clientWidth','positionWC','levmin','_onMouseDownEvent','postProcessingPosition','FLOAT','nextTrailsColor','Cartesian3','Cesium','framebuffers','createWindTextures','PixelFormat','onmessage','scene','vmax','RGB','#ffffff','source','ComponentDatatype','framebuffer','setData','drawingBufferHeight','resize','PixelDatatype','385CVGqTl','fromDegrees','pixelSize','TRIANGLES','EventType','DISABLE_GL_POSITION_LOG_DEPTH','xmin','max','isPointVisible','preExecute','_drawLines','fromGeometry','_calcUV','createTexture','frameTime','register','fixedHeight','addPrimitives','style','BaseLayer','Cartesian2','show','toGridXY','maxParticles','2952CBDxum','left','_addedHook','getParticles','particlesRendering','currentParticlesPosition','dimensions','setOptions','IDENTITY','initWorker','DepthFunction','_createCanvas','length','GeometryAttribute','lineWidth','randomBetween','commandType','particlesComputing','redraw','hidden','lev','mouseDown','colors','5661cHeYXw','data','getUVByPoint','clear','_speedRate','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','WindLayer','grid','destroy','particleSystem','globalCompositeOperation','1908mcmoqH','4599NsUGff','floor','particles','particlesNumber','ShaderSource','_onMouseUpEvent','getOptions','container','attributeLocations','clearCommand','clearFramebuffers','globe','bind','cols','canvas','createRenderingFramebuffers','update','add','ymin','atan2','shaderProgram','_showHook','lng','commandList','toDegrees','BufferUsage','speedRate','preRender','_pointerEvents','Draw','PI_OVER_TWO','Math','setDate','uniformMap','geometry','mouseUp','createFramebuffer','drawingBufferWidth','sin','4511730ZcTNTV','_updateIng2','vertexShaderSource','stroke','outputTexture','TWO_PI','reverse','vertexArray','age','createRenderingPrimitives','_map','windTextures','3TWWXnC','ellipsoid','width','_calc_speedRate','latRange','_maxAge','destination-in','ClearCommand','_setOptionsHook','12gssFuY','options','RGBA','particlesTextures','Pass','keys','west','fragmentShaderSource'];_0x2b06=function(){return _0x5579e8;};return _0x2b06();}function getDirection(_0x8d91c8,_0x30182b){const _0x1cfd38=_0x273563;let _0x1ae026=Cesium$7['Math'][_0x1cfd38(0xcd)](Math[_0x1cfd38(0xc8)](_0x30182b,_0x8d91c8));return _0x1ae026+=_0x1ae026<0x0?0x168:0x0,_0x1ae026;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x30f3c8){const _0xa9e565=_0x273563;this['commandType']=_0x30f3c8[_0xa9e565(0xa2)],this['geometry']=_0x30f3c8['geometry'],this['attributeLocations']=_0x30f3c8['attributeLocations'],this['primitiveType']=_0x30f3c8['primitiveType'],this[_0xa9e565(0xd6)]=_0x30f3c8[_0xa9e565(0xd6)],this['vertexShaderSource']=_0x30f3c8['vertexShaderSource'],this['fragmentShaderSource']=_0x30f3c8[_0xa9e565(0xf8)],this[_0xa9e565(0x14f)]=_0x30f3c8['rawRenderState'],this[_0xa9e565(0x168)]=_0x30f3c8['framebuffer'],this['outputTexture']=_0x30f3c8['outputTexture'],this['autoClear']=_0x30f3c8[_0xa9e565(0x116)]??![],this[_0xa9e565(0x176)]=_0x30f3c8[_0xa9e565(0x176)],this['show']=!![],this[_0xa9e565(0x134)]=undefined,this['clearCommand']=undefined,this[_0xa9e565(0x116)]&&(this['clearCommand']=new Cesium$6[(_0xa9e565(0xef))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0xa9e565(0x168)],'pass':Cesium$6[_0xa9e565(0xf5)][_0xa9e565(0x107)]}));}['createCommand'](_0x3edaa1){const _0x4ecd69=_0x273563;switch(this[_0x4ecd69(0xa2)]){case'Draw':{const _0x4d8c15=Cesium$6['VertexArray'][_0x4ecd69(0x178)]({'context':_0x3edaa1,'geometry':this[_0x4ecd69(0xd7)],'attributeLocations':this[_0x4ecd69(0xbd)],'bufferUsage':Cesium$6[_0x4ecd69(0xce)]['STATIC_DRAW']}),_0x18d257=Cesium$6[_0x4ecd69(0x112)]['fromCache']({'context':_0x3edaa1,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this[_0x4ecd69(0xde)],'fragmentShaderSource':this['fragmentShaderSource']}),_0x1cea76=Cesium$6['RenderState']['fromCache'](this[_0x4ecd69(0x14f)]);return new Cesium$6[(_0x4ecd69(0x127))]({'primitiveType':this[_0x4ecd69(0x104)],'shaderProgram':_0x18d257,'vertexArray':_0x4d8c15,'modelMatrix':Cesium$6['Matrix4'][_0x4ecd69(0x9a)],'renderState':_0x1cea76,'uniformMap':this[_0x4ecd69(0xd6)],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE'],'pickOnly':!![],'owner':this});}case _0x4ecd69(0x10a):{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this['outputTexture'],'persists':!![]});}}}['setGeometry'](_0x34537a,_0x2249fa){this['geometry']=_0x2249fa;const _0x25bb00=Cesium$6['VertexArray']['fromGeometry']({'context':_0x34537a,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x25bb00;}['update'](_0x14f474){const _0x38fe53=_0x273563;if(!this['show'])return;if(_0x14f474['mode']!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6['defined'](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x14f474['context'])),Cesium$6[_0x38fe53(0x13b)](this[_0x38fe53(0x176)])&&this[_0x38fe53(0x176)](),Cesium$6['defined'](this['clearCommand'])&&_0x14f474['commandList']['push'](this['clearCommand']),_0x14f474[_0x38fe53(0xcc)][_0x38fe53(0x13f)](this['commandToExecute']);}[_0x273563(0x10d)](){return![];}[_0x273563(0xb1)](){const _0x52c719=_0x273563;if(this['clearCommand']){var _0x323506,_0x1a06cc;(_0x323506=this[_0x52c719(0xbe)])!==null&&_0x323506!==void 0x0&&_0x323506['vertexArray']&&this[_0x52c719(0xbe)]['vertexArray'][_0x52c719(0xb1)](),(_0x1a06cc=this['clearCommand'])!==null&&_0x1a06cc!==void 0x0&&_0x1a06cc['shaderProgram']&&this['clearCommand']['shaderProgram']['destroy'](),delete this[_0x52c719(0xbe)];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this['commandToExecute'][_0x52c719(0xc9)]&&this[_0x52c719(0x134)]['shaderProgram']['destroy'](),delete this[_0x52c719(0x134)]),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0xc435b5=function(){const _0x4be646=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x4be646;},_0x436764=function(_0x32c9a4,_0x2f492d){const _0x3c020b=_0x3cb0;if(Cesium$5[_0x3c020b(0x13b)](_0x2f492d)){const _0x21e61f={};_0x21e61f['arrayBufferView']=_0x2f492d,_0x32c9a4[_0x3c020b(0x166)]=_0x21e61f;}const _0x80af01=new Cesium$5['Texture'](_0x32c9a4);return _0x80af01;},_0x28f309=function(_0x2ffd7f,_0x374626,_0x58afae){const _0x580be2=_0x3cb0,_0x36629e=new Cesium$5[(_0x580be2(0x13a))]({'context':_0x2ffd7f,'colorTextures':[_0x374626],'depthTexture':_0x58afae});return _0x36629e;},_0x3bb0be=function(_0x4815ca){const _0x3d927f=_0x3cb0,_0x5390e3=!![],_0x5e5cba=![],_0x1df060={'viewport':_0x4815ca['viewport'],'depthTest':_0x4815ca['depthTest'],'depthMask':_0x4815ca['depthMask'],'blending':_0x4815ca['blending']},_0x3d9926=Cesium$5[_0x3d927f(0x149)]['getDefaultRenderState'](_0x5390e3,_0x5e5cba,_0x1df060);return _0x3d9926;},_0x4297a2=function(_0x4575b9){const _0x46fb24=_0x3cb0,_0x357f8f={},_0x3c6639=Cesium$5[_0x46fb24(0xd4)]['mod'](_0x4575b9[_0x46fb24(0xf7)],Cesium$5[_0x46fb24(0xd4)][_0x46fb24(0xe1)]),_0x5a320c=Cesium$5['Math']['mod'](_0x4575b9['east'],Cesium$5['Math']['TWO_PI']),_0x4029fa=_0x4575b9['width'];let _0x3af8e4,_0x57b54c;_0x4029fa>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x3af8e4=0x0,_0x57b54c=Cesium$5['Math']['TWO_PI']):_0x5a320c-_0x3c6639<_0x4029fa?(_0x3af8e4=_0x3c6639,_0x57b54c=_0x3c6639+_0x4029fa):(_0x3af8e4=_0x3c6639,_0x57b54c=_0x5a320c);_0x357f8f[_0x46fb24(0x11c)]={'min':Cesium$5['Math'][_0x46fb24(0xcd)](_0x3af8e4),'max':Cesium$5['Math'][_0x46fb24(0xcd)](_0x57b54c)};const _0xde5713=_0x4575b9['south'],_0x832287=_0x4575b9['north'],_0xf27c48=_0x4575b9['height'],_0x4bfad3=_0xf27c48>Cesium$5[_0x46fb24(0xd4)]['PI']/0xc?_0xf27c48/0x2:0x0;let _0x3e9b39=Cesium$5[_0x46fb24(0xd4)]['clampToLatitudeRange'](_0xde5713-_0x4bfad3),_0x164c64=Cesium$5['Math']['clampToLatitudeRange'](_0x832287+_0x4bfad3);return _0x3e9b39<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x3e9b39=-Cesium$5['Math'][_0x46fb24(0xd3)]),_0x164c64>Cesium$5[_0x46fb24(0xd4)][_0x46fb24(0x130)]&&(_0x164c64=Cesium$5[_0x46fb24(0xd4)]['PI_OVER_TWO']),_0x357f8f['lat']={'min':Cesium$5[_0x46fb24(0xd4)]['toDegrees'](_0x3e9b39),'max':Cesium$5['Math']['toDegrees'](_0x164c64)},_0x357f8f;};return{'getFullscreenQuad':_0xc435b5,'createTexture':_0x436764,'createFramebuffer':_0x28f309,'createRawRenderState':_0x3bb0be,'viewRectangleToLonLatRange':_0x4297a2};}());var segmentDraw_vert='in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert='in\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0a}\x0a',trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20trailsColor;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$4=mars3d__namespace[_0x273563(0x15d)];class ParticlesRendering{constructor(_0x23bdf1,_0xa5ba39,_0xea97cd,_0x29e4ae,_0x27072e){const _0x56ea71=_0x273563;this['createRenderingTextures'](_0x23bdf1,_0xa5ba39,_0xea97cd['colors']),this[_0x56ea71(0xc4)](_0x23bdf1),this[_0x56ea71(0xe5)](_0x23bdf1,_0xea97cd,_0x29e4ae,_0x27072e);}['createRenderingTextures'](_0x41590a,_0x4aa944,_0x512bdb){const _0x6c1bb5=_0x273563,_0x2f4d99={'context':_0x41590a,'width':_0x41590a['drawingBufferWidth'],'height':_0x41590a['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat'][_0x6c1bb5(0xf3)],'pixelDatatype':Cesium$4['PixelDatatype'][_0x6c1bb5(0x11a)]},_0x21b222={'context':_0x41590a,'width':_0x41590a[_0x6c1bb5(0xda)],'height':_0x41590a['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x536c4f=_0x512bdb[_0x6c1bb5(0x9e)],_0x3c17e5=new Float32Array(_0x536c4f*0x3);for(let _0x533713=0x0;_0x533713<_0x536c4f;_0x533713++){const _0x597e37=Cesium$4['Color'][_0x6c1bb5(0x115)](_0x512bdb[_0x533713]);_0x3c17e5[0x3*_0x533713]=_0x597e37['red'],_0x3c17e5[0x3*_0x533713+0x1]=_0x597e37['green'],_0x3c17e5[0x3*_0x533713+0x2]=_0x597e37['blue'];}const _0x4537f3={'context':_0x41590a,'width':_0x536c4f,'height':0x1,'pixelFormat':Cesium$4['PixelFormat'][_0x6c1bb5(0x164)],'pixelDatatype':Cesium$4[_0x6c1bb5(0x16c)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this[_0x6c1bb5(0x12a)]={'segmentsColor':Util['createTexture'](_0x2f4d99),'segmentsDepth':Util[_0x6c1bb5(0x17a)](_0x21b222),'currentTrailsColor':Util['createTexture'](_0x2f4d99),'currentTrailsDepth':Util['createTexture'](_0x21b222),'nextTrailsColor':Util['createTexture'](_0x2f4d99),'nextTrailsDepth':Util['createTexture'](_0x21b222),'colorTable':Util['createTexture'](_0x4537f3,_0x3c17e5)};}['createRenderingFramebuffers'](_0x221ab9){const _0x168a0d=_0x273563;this['framebuffers']={'segments':Util[_0x168a0d(0xd9)](_0x221ab9,this['textures'][_0x168a0d(0x138)],this[_0x168a0d(0x12a)]['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x221ab9,this['textures']['currentTrailsColor'],this['textures']['currentTrailsDepth']),'nextTrails':Util[_0x168a0d(0xd9)](_0x221ab9,this['textures'][_0x168a0d(0x15b)],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x3cf2c0){const _0x5dab2d=_0x273563,_0x202e5d=0x4;let _0x62dce=[];for(let _0xf7717c=0x0;_0xf7717c<_0x3cf2c0[_0x5dab2d(0x140)];_0xf7717c++){for(let _0x539690=0x0;_0x539690<_0x3cf2c0[_0x5dab2d(0x140)];_0x539690++){for(let _0x370b0a=0x0;_0x370b0a<_0x202e5d;_0x370b0a++){_0x62dce[_0x5dab2d(0x13f)](_0xf7717c/_0x3cf2c0[_0x5dab2d(0x140)]),_0x62dce[_0x5dab2d(0x13f)](_0x539690/_0x3cf2c0['particlesTextureSize']);}}}_0x62dce=new Float32Array(_0x62dce);let _0x51ee45=[];const _0x1057d8=[-0x1,0x1],_0x539045=[-0x1,0x1];for(let _0x392167=0x0;_0x392167<_0x3cf2c0[_0x5dab2d(0x91)];_0x392167++){for(let _0x32e996=0x0;_0x32e996<_0x202e5d/0x2;_0x32e996++){for(let _0x35589d=0x0;_0x35589d<_0x202e5d/0x2;_0x35589d++){_0x51ee45[_0x5dab2d(0x13f)](_0x1057d8[_0x32e996]),_0x51ee45['push'](_0x539045[_0x35589d]),_0x51ee45['push'](0x0);}}}_0x51ee45=new Float32Array(_0x51ee45);const _0x1ee484=0x6*_0x3cf2c0[_0x5dab2d(0x91)],_0x3608a0=new Uint32Array(_0x1ee484);for(let _0x7f7ff6=0x0,_0x1cf1c6=0x0,_0xb90a31=0x0;_0x7f7ff6<_0x3cf2c0['maxParticles'];_0x7f7ff6++){_0x3608a0[_0x1cf1c6++]=_0xb90a31+0x0,_0x3608a0[_0x1cf1c6++]=_0xb90a31+0x1,_0x3608a0[_0x1cf1c6++]=_0xb90a31+0x2,_0x3608a0[_0x1cf1c6++]=_0xb90a31+0x2,_0x3608a0[_0x1cf1c6++]=_0xb90a31+0x1,_0x3608a0[_0x1cf1c6++]=_0xb90a31+0x3,_0xb90a31+=0x4;}const _0x20aca2=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x62dce}),'normal':new Cesium$4[(_0x5dab2d(0x9f))]({'componentDatatype':Cesium$4[_0x5dab2d(0x167)]['FLOAT'],'componentsPerAttribute':0x3,'values':_0x51ee45})}),'indices':_0x3608a0});return _0x20aca2;}['createRenderingPrimitives'](_0x3125f6,_0x2795e5,_0x3ae85f,_0x41f7c6){const _0x5e54bc=_0x273563,_0x1a2006=this;this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x2795e5),'primitiveType':Cesium$4['PrimitiveType'][_0x5e54bc(0x170)],'uniformMap':{'currentParticlesPosition':function(){const _0x420323=_0x5e54bc;return _0x41f7c6[_0x420323(0xf4)][_0x420323(0x97)];},'postProcessingPosition':function(){const _0x5731be=_0x5e54bc;return _0x41f7c6[_0x5731be(0xf4)][_0x5731be(0x159)];},'postProcessingSpeed':function(){const _0x35560c=_0x5e54bc;return _0x41f7c6[_0x35560c(0xf4)]['postProcessingSpeed'];},'colorTable':function(){const _0x4b1ef1=_0x5e54bc;return _0x1a2006['textures'][_0x4b1ef1(0x10c)];},'aspect':function(){const _0x3a753c=_0x5e54bc;return _0x3125f6['drawingBufferWidth']/_0x3125f6[_0x3a753c(0x16a)];},'pixelSize':function(){const _0x456441=_0x5e54bc;return _0x3ae85f[_0x456441(0x16f)];},'lineWidth':function(){return _0x2795e5['lineWidth'];},'particleHeight':function(){return _0x2795e5['particleHeight'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4[(_0x5e54bc(0xb9))]({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this[_0x5e54bc(0x15e)]['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x1a2006['textures']['segmentsColor'];},'segmentsDepthTexture':function(){return _0x1a2006['textures']['segmentsDepth'];},'currentTrailsColor':function(){return _0x1a2006['framebuffers']['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0xc072da=_0x5e54bc;return _0x1a2006[_0xc072da(0x15e)]['currentTrails']['depthTexture'];},'fadeOpacity':function(){const _0x535e3a=_0x5e54bc;return _0x2795e5[_0x535e3a(0x142)];}},'vertexShaderSource':new Cesium$4[(_0x5e54bc(0xb9))]({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0x5e54bc(0xb9))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x5e54bc(0x9c)]['ALWAYS']},'depthMask':!![]}),'framebuffer':this[_0x5e54bc(0x15e)][_0x5e54bc(0x11b)],'autoClear':!![],'preExecute':function(){const _0x2e60bf=_0x5e54bc,_0x499c7c=_0x1a2006['framebuffers']['currentTrails'];_0x1a2006[_0x2e60bf(0x15e)]['currentTrails']=_0x1a2006[_0x2e60bf(0x15e)]['nextTrails'],_0x1a2006[_0x2e60bf(0x15e)]['nextTrails']=_0x499c7c,_0x1a2006['primitives']['trails']['commandToExecute']['framebuffer']=_0x1a2006['framebuffers']['nextTrails'],_0x1a2006['primitives']['trails']['clearCommand']['framebuffer']=_0x1a2006['framebuffers'][_0x2e60bf(0x11b)];}}),'screen':new CustomPrimitive({'commandType':_0x5e54bc(0xd2),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType'][_0x5e54bc(0x170)],'uniformMap':{'trailsColorTexture':function(){return _0x1a2006['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x24d53d=_0x5e54bc;return _0x1a2006['framebuffers']['nextTrails'][_0x24d53d(0x114)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x5e54bc(0x172)],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x5e54bc(0xae)],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag=_0x273563(0x151),updateSpeed_frag='uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec3\x20percent\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20\x20\x20float\x20normalization\x20=\x20length(percent);\x0a\x0a\x20\x20\x20\x20return\x20normalization;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20//\x20vec3\x20currentSpeed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20out_FragColor\x20=\x20nextSpeed;\x0a}\x0a',updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a',postProcessingPosition_frag='uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a',postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$3=mars3d__namespace[_0x273563(0x15d)];class ParticlesComputing{constructor(_0x15b799,_0x1998b1,_0x387b67,_0x2fa0b8){this['data']=_0x1998b1,this['createWindTextures'](_0x15b799,_0x1998b1),this['createParticlesTextures'](_0x15b799,_0x387b67,_0x2fa0b8),this['createComputingPrimitives'](_0x1998b1,_0x387b67,_0x2fa0b8);}[_0x273563(0x15f)](_0xc0e306,_0x2d021e){const _0x121c91=_0x273563,_0x3891fc={'context':_0xc0e306,'width':_0x2d021e[_0x121c91(0x98)]['lon'],'height':_0x2d021e[_0x121c91(0x98)]['lat']*(_0x2d021e['dimensions']['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype'][_0x121c91(0x15a)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x121c91(0x102)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this['windTextures']={'U':Util['createTexture'](_0x3891fc,_0x2d021e['U']['array']),'V':Util[_0x121c91(0x17a)](_0x3891fc,_0x2d021e['V']['array'])};}['createParticlesTextures'](_0x2a411c,_0x421b4c,_0x42f3b3){const _0x41569a=_0x273563,_0x5798c8={'context':_0x2a411c,'width':_0x421b4c['particlesTextureSize'],'height':_0x421b4c[_0x41569a(0x140)],'pixelFormat':Cesium$3[_0x41569a(0x160)]['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x41569a(0x102)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x2d8549=this['randomizeParticles'](_0x421b4c['maxParticles'],_0x42f3b3),_0x3e5a31=new Float32Array(0x4*_0x421b4c['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util[_0x41569a(0x17a)](_0x5798c8),'currentParticlesPosition':Util['createTexture'](_0x5798c8,_0x2d8549),'nextParticlesPosition':Util['createTexture'](_0x5798c8,_0x2d8549),'currentParticlesSpeed':Util['createTexture'](_0x5798c8,_0x3e5a31),'nextParticlesSpeed':Util['createTexture'](_0x5798c8,_0x3e5a31),'postProcessingPosition':Util['createTexture'](_0x5798c8,_0x2d8549),'postProcessingSpeed':Util[_0x41569a(0x17a)](_0x5798c8,_0x3e5a31)};}['randomizeParticles'](_0x33ba76,_0x42be03){const _0x53a8e4=_0x273563,_0x13d726=new Float32Array(0x4*_0x33ba76);for(let _0x29fdec=0x0;_0x29fdec<_0x33ba76;_0x29fdec++){_0x13d726[0x4*_0x29fdec]=Cesium$3[_0x53a8e4(0xd4)]['randomBetween'](_0x42be03['lonRange']['x'],_0x42be03['lonRange']['y']),_0x13d726[0x4*_0x29fdec+0x1]=Cesium$3['Math'][_0x53a8e4(0xa1)](_0x42be03['latRange']['x'],_0x42be03['latRange']['y']),_0x13d726[0x4*_0x29fdec+0x2]=Cesium$3[_0x53a8e4(0xd4)]['randomBetween'](this['data']['lev']['min'],this[_0x53a8e4(0xaa)][_0x53a8e4(0xa6)]['max']),_0x13d726[0x4*_0x29fdec+0x3]=0x0;}return _0x13d726;}['destroyParticlesTextures'](){const _0x429825=_0x273563;Object[_0x429825(0xf6)](this['particlesTextures'])[_0x429825(0x143)](_0x16cf27=>{this['particlesTextures'][_0x16cf27]['destroy']();});}['createComputingPrimitives'](_0x539d65,_0x285316,_0x497e01){const _0x58ac27=_0x273563,_0x4db1ca=new Cesium$3['Cartesian3'](_0x539d65['dimensions']['lon'],_0x539d65[_0x58ac27(0x98)][_0x58ac27(0x10b)],_0x539d65['dimensions']['lev']),_0x2f7dec=new Cesium$3['Cartesian3'](_0x539d65['lon']['min'],_0x539d65[_0x58ac27(0x10b)]['min'],_0x539d65[_0x58ac27(0xa6)]['min']),_0x1d48d2=new Cesium$3['Cartesian3'](_0x539d65['lon']['max'],_0x539d65['lat']['max'],_0x539d65['lev']['max']),_0x1e80cf=new Cesium$3['Cartesian3']((_0x1d48d2['x']-_0x2f7dec['x'])/(_0x4db1ca['x']-0x1),(_0x1d48d2['y']-_0x2f7dec['y'])/(_0x4db1ca['y']-0x1),_0x4db1ca['z']>0x1?(_0x1d48d2['z']-_0x2f7dec['z'])/(_0x4db1ca['z']-0x1):0x1),_0x57328b=new Cesium$3['Cartesian2'](_0x539d65['U']['min'],_0x539d65['U']['max']),_0x54287b=new Cesium$3['Cartesian2'](_0x539d65['V'][_0x58ac27(0x117)],_0x539d65['V']['max']),_0x14559d=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':_0x58ac27(0x10a),'uniformMap':{'U':function(){const _0x447b8d=_0x58ac27;return _0x14559d[_0x447b8d(0xe7)]['U'];},'V':function(){const _0x2c7c91=_0x58ac27;return _0x14559d[_0x2c7c91(0xe7)]['V'];},'currentParticlesPosition':function(){return _0x14559d['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x4db1ca;},'minimum':function(){return _0x2f7dec;},'maximum':function(){return _0x1d48d2;},'interval':function(){return _0x1e80cf;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x194562=_0x58ac27;_0x14559d['primitives']['getWind']['commandToExecute'][_0x194562(0xe0)]=_0x14559d['particlesTextures'][_0x194562(0x14b)];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x14559d['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){return _0x14559d['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x57328b;},'vSpeedRange':function(){return _0x54287b;},'pixelSize':function(){return _0x497e01['pixelSize'];},'speedFactor':function(){return _0x285316['speedFactor'];}},'fragmentShaderSource':new Cesium$3[(_0x58ac27(0xb9))]({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function(){const _0x3ed420=_0x58ac27,_0x2b1aef=_0x14559d[_0x3ed420(0xf4)]['currentParticlesSpeed'];_0x14559d['particlesTextures']['currentParticlesSpeed']=_0x14559d['particlesTextures']['postProcessingSpeed'],_0x14559d['particlesTextures'][_0x3ed420(0x124)]=_0x2b1aef,_0x14559d[_0x3ed420(0x14c)][_0x3ed420(0x119)]['commandToExecute'][_0x3ed420(0xe0)]=_0x14559d['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){return _0x14559d['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function(){return _0x14559d['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function(){const _0xdb5a14=_0x58ac27,_0x199225=_0x14559d['particlesTextures'][_0xdb5a14(0x97)];_0x14559d['particlesTextures']['currentParticlesPosition']=_0x14559d['particlesTextures'][_0xdb5a14(0x159)],_0x14559d['particlesTextures']['postProcessingPosition']=_0x199225,_0x14559d['primitives']['updatePosition']['commandToExecute']['outputTexture']=_0x14559d['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){const _0x53bd82=_0x58ac27;return _0x14559d[_0x53bd82(0xf4)]['nextParticlesPosition'];},'nextParticlesSpeed':function(){const _0x121cf5=_0x58ac27;return _0x14559d[_0x121cf5(0xf4)]['nextParticlesSpeed'];},'lonRange':function(){return _0x497e01['lonRange'];},'latRange':function(){return _0x497e01['latRange'];},'randomCoefficient':function(){const _0x2e963c=Math['random']();return _0x2e963c;},'dropRate':function(){return _0x285316['dropRate'];},'dropRateBump':function(){return _0x285316['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){const _0x56caff=_0x58ac27;_0x14559d[_0x56caff(0x14c)]['postProcessingPosition']['commandToExecute'][_0x56caff(0xe0)]=_0x14559d[_0x56caff(0xf4)]['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x123768=_0x58ac27;return _0x14559d['particlesTextures'][_0x123768(0x159)];},'nextParticlesSpeed':function(){const _0x1f346=_0x58ac27;return _0x14559d['particlesTextures'][_0x1f346(0x136)];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x58ac27(0x124)],'preExecute':function(){const _0x170868=_0x58ac27;_0x14559d[_0x170868(0x14c)][_0x170868(0x124)]['commandToExecute']['outputTexture']=_0x14559d['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x11e8a2,_0x30a9a3,_0x3b6922,_0x3d3b84){const _0x4cff19=_0x273563;this['context']=_0x11e8a2,_0x30a9a3={..._0x30a9a3},_0x30a9a3['udata']&&_0x30a9a3['vdata']&&(_0x30a9a3['dimensions']={},_0x30a9a3['dimensions']['lon']=_0x30a9a3[_0x4cff19(0xc2)],_0x30a9a3['dimensions']['lat']=_0x30a9a3[_0x4cff19(0x123)],_0x30a9a3['dimensions']['lev']=_0x30a9a3['lev']||0x1,_0x30a9a3['lon']={},_0x30a9a3['lon']['min']=_0x30a9a3[_0x4cff19(0x173)],_0x30a9a3['lon'][_0x4cff19(0x174)]=_0x30a9a3['xmax'],_0x30a9a3[_0x4cff19(0x10b)]={},_0x30a9a3['lat'][_0x4cff19(0x117)]=_0x30a9a3['ymin'],_0x30a9a3['lat']['max']=_0x30a9a3['ymax'],_0x30a9a3['lev']={},_0x30a9a3['lev']['min']=_0x30a9a3[_0x4cff19(0x157)]??0x1,_0x30a9a3['lev']['max']=_0x30a9a3['levmax']??0x1,_0x30a9a3['U']={},_0x30a9a3['U']['array']=new Float32Array(_0x30a9a3[_0x4cff19(0x109)]),_0x30a9a3['U']['min']=_0x30a9a3['umin']??Math['min'](..._0x30a9a3['udata']),_0x30a9a3['U']['max']=_0x30a9a3['umax']??Math[_0x4cff19(0x174)](..._0x30a9a3[_0x4cff19(0x109)]),_0x30a9a3['V']={},_0x30a9a3['V'][_0x4cff19(0x14d)]=new Float32Array(_0x30a9a3['vdata']),_0x30a9a3['V'][_0x4cff19(0x117)]=_0x30a9a3['vmin']??Math['min'](..._0x30a9a3['vdata']),_0x30a9a3['V']['max']=_0x30a9a3[_0x4cff19(0x163)]??Math[_0x4cff19(0x174)](..._0x30a9a3['vdata'])),this['data']=_0x30a9a3,this[_0x4cff19(0xf2)]=_0x3b6922,this['viewerParameters']=_0x3d3b84,this['particlesComputing']=new ParticlesComputing(this[_0x4cff19(0x148)],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this[_0x4cff19(0xf2)],this['viewerParameters'],this['particlesComputing']);}['canvasResize'](_0x522305){const _0x3d81b2=_0x273563;this['particlesComputing']['destroyParticlesTextures'](),Object[_0x3d81b2(0xf6)](this[_0x3d81b2(0xa3)]['windTextures'])['forEach'](_0x5212d1=>{this['particlesComputing']['windTextures'][_0x5212d1]['destroy']();}),this['particlesRendering']['textures'][_0x3d81b2(0x10c)]['destroy'](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x4e9995=>{const _0x351a51=_0x3d81b2;this['particlesRendering'][_0x351a51(0x15e)][_0x4e9995]['destroy']();}),this[_0x3d81b2(0x148)]=_0x522305,this['particlesComputing']=new ParticlesComputing(this['context'],this[_0x3d81b2(0xaa)],this[_0x3d81b2(0xf2)],this[_0x3d81b2(0x12b)]),this['particlesRendering']=new ParticlesRendering(this[_0x3d81b2(0x148)],this['data'],this[_0x3d81b2(0xf2)],this['viewerParameters'],this['particlesComputing']);}[_0x273563(0xbf)](){const _0x33e986=_0x273563,_0x580281=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x33e986(0xf5)]['OPAQUE']});Object[_0x33e986(0xf6)](this['particlesRendering']['framebuffers'])['forEach'](_0xaca93c=>{const _0x1815ae=_0x33e986;_0x580281[_0x1815ae(0x168)]=this['particlesRendering'][_0x1815ae(0x15e)][_0xaca93c],_0x580281['execute'](this['context']);});}['refreshParticles'](_0x46cf71){const _0x27909d=_0x273563;this['clearFramebuffers'](),this['particlesComputing']['destroyParticlesTextures'](),this[_0x27909d(0xa3)]['createParticlesTextures'](this[_0x27909d(0x148)],this['options'],this['viewerParameters']);if(_0x46cf71){const _0x12deac=this['particlesRendering']['createSegmentsGeometry'](this['options']);this[_0x27909d(0x96)]['primitives'][_0x27909d(0x101)]['geometry']=_0x12deac;const _0x2c9c7e=Cesium$2['VertexArray']['fromGeometry']({'context':this['context'],'geometry':_0x12deac,'attributeLocations':this['particlesRendering']['primitives']['segments']['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage'][_0x27909d(0x14e)]});this['particlesRendering']['primitives']['segments']['commandToExecute'][_0x27909d(0xe3)]=_0x2c9c7e;}}['setOptions'](_0x221eca){const _0x585210=_0x273563;let _0x573125=![];this['options']['maxParticles']!==_0x221eca['maxParticles']&&(_0x573125=!![]),Object[_0x585210(0xf6)](_0x221eca)['forEach'](_0x5b816f=>{const _0x3db560=_0x585210;this[_0x3db560(0xf2)][_0x5b816f]=_0x221eca[_0x5b816f];}),this[_0x585210(0x121)](_0x573125);}['applyViewerParameters'](_0x272b29){const _0x542158=_0x273563;Object[_0x542158(0xf6)](_0x272b29)['forEach'](_0x3694e5=>{this['viewerParameters'][_0x3694e5]=_0x272b29[_0x3694e5];}),this[_0x542158(0x121)](![]);}['destroy'](){const _0x35c410=_0x273563;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x4654d4=>{this['particlesComputing']['windTextures'][_0x4654d4]['destroy']();}),this[_0x35c410(0x96)]['textures']['colorTable']['destroy'](),Object['keys'](this[_0x35c410(0x96)]['framebuffers'])['forEach'](_0x5baf45=>{this['particlesRendering']['framebuffers'][_0x5baf45]['destroy']();});for(const _0x20285a in this){delete this[_0x20285a];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x273563(0x137)]['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':['rgb(206,255,255)']};class WindLayer extends BaseLayer$1{constructor(_0x458fcb={}){const _0x44b824=_0x273563;_0x458fcb={...DEF_OPTIONS,..._0x458fcb},super(_0x458fcb),this[_0x44b824(0xf0)](_0x458fcb);}get['layer'](){return this['primitives'];}get['data'](){return this['_data'];}set['data'](_0x411945){this['setData'](_0x411945);}get['colors'](){const _0x3e7fb7=_0x273563;return this['options'][_0x3e7fb7(0xa8)];}set['colors'](_0x4d9418){const _0x1aed23=_0x273563;this[_0x1aed23(0xf2)][_0x1aed23(0xa8)]=_0x4d9418,this['particleSystem']&&this['particleSystem'][_0x1aed23(0x99)]({'colors':_0x4d9418}),this['resize']();}[_0x273563(0x13d)](){}['_addedHook'](){const _0x17aa05=_0x273563;this['scene']=this['_map'][_0x17aa05(0x162)],this['camera']=this[_0x17aa05(0xe6)][_0x17aa05(0x128)],this['primitives']=new Cesium$1[(_0x17aa05(0x11f))](),this[_0x17aa05(0xe6)]['scene']['primitives']['add'](this['primitives']),this[_0x17aa05(0x12b)]={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1[(_0x17aa05(0x8e))](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1['BoundingSphere'](Cesium$1[_0x17aa05(0x15c)]['ZERO'],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this['resize'][_0x17aa05(0xc1)](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x17aa05(0xe6)]['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x17aa05(0xd8)],this[_0x17aa05(0xba)],this),this[_0x17aa05(0xe6)]['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x17aa05(0x132)],this),this['_data']&&this['setData'](this['_data']);}[_0x273563(0x139)](){const _0x55f9d8=_0x273563;window['removeEventListener']('resize',this['resize']),this[_0x55f9d8(0xe6)]['off'](mars3d__namespace[_0x55f9d8(0x171)]['preRender'],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x55f9d8(0x131)],this[_0x55f9d8(0x10f)],this),this[_0x55f9d8(0xe6)]['off'](mars3d__namespace['EventType'][_0x55f9d8(0xa7)],this['_onMouseDownEvent'],this),this[_0x55f9d8(0xe6)]['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace[_0x55f9d8(0x171)]['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this[_0x55f9d8(0xe6)][_0x55f9d8(0x162)][_0x55f9d8(0x14c)]['remove'](this[_0x55f9d8(0x14c)]);}['resize'](){const _0x3160a9=_0x273563;if(!this[_0x3160a9(0x8f)]||!this['particleSystem'])return;this['primitives']['show']=![],this['primitives']['removeAll'](),this['_map']['once'](mars3d__namespace[_0x3160a9(0x171)][_0x3160a9(0xd0)],this['_onMap_preRenderEvent'],this);}['_onMap_preRenderEvent'](_0x2648c7){const _0x35ef07=_0x273563;this['particleSystem']['canvasResize'](this[_0x35ef07(0x162)][_0x35ef07(0x148)]),this['addPrimitives'](),this['primitives']['show']=!![];}[_0x273563(0x10f)](_0x13edbb){const _0x3c1268=_0x273563;clearTimeout(this['refreshTimer']);if(!this[_0x3c1268(0x8f)]||!this[_0x3c1268(0xb2)])return;this[_0x3c1268(0x14c)]['show']=![],this['refreshTimer']=setTimeout(()=>{const _0x31aba7=_0x3c1268;if(!this['show'])return;this[_0x31aba7(0xa4)]();},0xc8);}['_onMouseDownEvent'](_0xa0ca19){const _0x3318a9=_0x273563;this[_0x3318a9(0x103)]=!![];}[_0x273563(0x132)](_0x466517){const _0x2934ae=_0x273563;if(!this['show']||!this[_0x2934ae(0xb2)])return;this['mouse_down']&&(this['primitives']['show']=![],this[_0x2934ae(0x145)]=!![]);}['_onMouseUpEvent'](_0x413e45){const _0x2bf48e=_0x273563;if(!this['show']||!this[_0x2bf48e(0xb2)])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['primitives']['show']=!![],this[_0x2bf48e(0x103)]=![],this['mouse_move']=![];}['redraw'](){const _0x5d35ec=_0x273563;if(!this[_0x5d35ec(0xe6)]||!this['show'])return;this['updateViewerParameters'](),this['particleSystem']['applyViewerParameters'](this[_0x5d35ec(0x12b)]),this[_0x5d35ec(0x14c)]['show']=!![];}[_0x273563(0x169)](_0xe3286b){const _0x34f80a=_0x273563;this['_data']=_0xe3286b,this['particleSystem']&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this[_0x34f80a(0x162)][_0x34f80a(0x148)],_0xe3286b,this['getOptions'](),this['viewerParameters']),this[_0x34f80a(0x8b)]();}['_setOptionsHook'](_0x4edf58,_0x2c218d){const _0x5c627e=_0x273563;if(_0x4edf58)for(const _0x4eb6dd in _0x4edf58){this[_0x4eb6dd]=_0x4edf58[_0x4eb6dd];}this['particleSystem']&&this[_0x5c627e(0xb2)]['setOptions'](this[_0x5c627e(0xbb)]());}['getOptions'](){const _0x56b737=_0x273563,_0x3a4c38=Math['ceil'](Math['sqrt'](this[_0x56b737(0xb8)]));return this['particlesNumber']=_0x3a4c38*_0x3a4c38,{'particlesTextureSize':_0x3a4c38,'maxParticles':this['particlesNumber'],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this[_0x56b737(0xa0)],'colors':this[_0x56b737(0xa8)]};}['addPrimitives'](){const _0x11055f=_0x273563;this['primitives'][_0x11055f(0xc6)](this[_0x11055f(0xb2)]['particlesComputing']['primitives']['getWind']),this['primitives'][_0x11055f(0xc6)](this['particleSystem'][_0x11055f(0xa3)]['primitives']['updateSpeed']),this[_0x11055f(0x14c)]['add'](this[_0x11055f(0xb2)]['particlesComputing']['primitives']['updatePosition']),this['primitives']['add'](this[_0x11055f(0xb2)]['particlesComputing']['primitives']['postProcessingPosition']),this[_0x11055f(0x14c)]['add'](this['particleSystem'][_0x11055f(0xa3)]['primitives']['postProcessingSpeed']),this[_0x11055f(0x14c)]['add'](this[_0x11055f(0xb2)]['particlesRendering']['primitives']['segments']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['trails']),this['primitives']['add'](this['particleSystem']['particlesRendering'][_0x11055f(0x14c)]['screen']);}['updateViewerParameters'](){const _0x2cd38a=_0x273563;let _0x1afa38=this['camera']['computeViewRectangle'](this['scene']['globe'][_0x2cd38a(0xe9)]);if(!_0x1afa38){const _0x21c1d8=this['_map']['getExtent']();_0x1afa38=Cesium$1['Rectangle']['fromDegrees'](_0x21c1d8['xmin'],_0x21c1d8['ymin'],_0x21c1d8['xmax'],_0x21c1d8['ymax']);}const _0x442b27=Util['viewRectangleToLonLatRange'](_0x1afa38);this['viewerParameters']['lonRange']['x']=_0x442b27['lon']['min'],this[_0x2cd38a(0x12b)]['lonRange']['y']=_0x442b27['lon']['max'],this[_0x2cd38a(0x12b)][_0x2cd38a(0xec)]['x']=_0x442b27['lat']['min'],this['viewerParameters']['latRange']['y']=_0x442b27['lat']['max'];const _0x3e2512=this[_0x2cd38a(0x128)]['getPixelSize'](this['globeBoundingSphere'],this['scene']['drawingBufferWidth'],this['scene'][_0x2cd38a(0x16a)]);_0x3e2512>0x0&&(this['viewerParameters']['pixelSize']=_0x3e2512);}}mars3d__namespace['LayerUtil'][_0x273563(0x89)](_0x273563(0x147),WindLayer),mars3d__namespace['layer'][_0x273563(0xaf)]=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this['age']=null;}['destroy'](){for(const _0x11c657 in this){delete this[_0x11c657];}}}class CanvasWindField{constructor(_0x533eab){const _0x4fdea5=_0x273563;this[_0x4fdea5(0x99)](_0x533eab);}get['speedRate'](){const _0xd53c47=_0x273563;return this[_0xd53c47(0xad)];}set['speedRate'](_0x529076){const _0x585917=_0x273563;this['_speedRate']=(0x64-(_0x529076>0x63?0x63:_0x529076))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this[_0x585917(0x146)]-this['ymin'])/this[_0x585917(0xad)]];}get['maxAge'](){return this['_maxAge'];}set['maxAge'](_0x36d183){const _0x10d2f7=_0x273563;this[_0x10d2f7(0xed)]=_0x36d183;}['setOptions'](_0x2dc276){const _0x2c50ab=_0x273563;this['options']=_0x2dc276,this['maxAge']=_0x2dc276[_0x2c50ab(0x12e)]||0x78,this['speedRate']=_0x2dc276['speedRate']||0x32,this[_0x2c50ab(0xb7)]=[];const _0x519726=_0x2dc276['particlesNumber']||0x1000;for(let _0x48d02c=0x0;_0x48d02c<_0x519726;_0x48d02c++){const _0x4bdb53=this[_0x2c50ab(0x113)](new CanvasParticle());this['particles'][_0x2c50ab(0x13f)](_0x4bdb53);}}['setDate'](_0x26de8f){const _0x1bcfe7=_0x273563;this[_0x1bcfe7(0x123)]=_0x26de8f['rows'],this['cols']=_0x26de8f['cols'],this['xmin']=_0x26de8f['xmin'],this[_0x1bcfe7(0xff)]=_0x26de8f[_0x1bcfe7(0xff)],this[_0x1bcfe7(0xc7)]=_0x26de8f['ymin'],this['ymax']=_0x26de8f['ymax'],this[_0x1bcfe7(0xb0)]=[];const _0x5345e6=_0x26de8f[_0x1bcfe7(0x109)],_0x2b5462=_0x26de8f['vdata'];let _0x294068=![];_0x5345e6['length']===this['rows']&&_0x5345e6[0x0]['length']===this['cols']&&(_0x294068=!![]);let _0x2c646c=0x0,_0x4b6a5a=null,_0x107729=null;for(let _0x26ef51=0x0;_0x26ef51<this[_0x1bcfe7(0x123)];_0x26ef51++){_0x4b6a5a=[];for(let _0x58e570=0x0;_0x58e570<this['cols'];_0x58e570++,_0x2c646c++){_0x294068?_0x107729=this[_0x1bcfe7(0x179)](_0x5345e6[_0x26ef51][_0x58e570],_0x2b5462[_0x26ef51][_0x58e570]):_0x107729=this['_calcUV'](_0x5345e6[_0x2c646c],_0x2b5462[_0x2c646c]),_0x4b6a5a[_0x1bcfe7(0x13f)](_0x107729);}this[_0x1bcfe7(0xb0)]['push'](_0x4b6a5a);}this['options']['reverseY']&&this[_0x1bcfe7(0xb0)][_0x1bcfe7(0xe2)]();}['clear'](){delete this['rows'],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this['ymax'],delete this['grid'],delete this['particles'];}['toGridXY'](_0x5d4260,_0x94b390){const _0x2760b6=_0x273563,_0x3f23b6=(_0x5d4260-this[_0x2760b6(0x173)])/(this['xmax']-this[_0x2760b6(0x173)])*(this['cols']-0x1),_0x56767c=(this[_0x2760b6(0x146)]-_0x94b390)/(this[_0x2760b6(0x146)]-this['ymin'])*(this['rows']-0x1);return[_0x3f23b6,_0x56767c];}[_0x273563(0x135)](_0x4265db,_0x398a2c){const _0x4dc299=_0x273563;if(_0x4265db<0x0||_0x4265db>=this['cols']||_0x398a2c>=this['rows'])return[0x0,0x0,0x0];const _0x1fa34f=Math['floor'](_0x4265db),_0x4debd8=Math[_0x4dc299(0xb6)](_0x398a2c);if(_0x1fa34f===_0x4265db&&_0x4debd8===_0x398a2c)return this['grid'][_0x398a2c][_0x4265db];const _0x540f7d=_0x1fa34f+0x1,_0x439fc7=_0x4debd8+0x1,_0x5743e7=this[_0x4dc299(0x135)](_0x1fa34f,_0x4debd8),_0x2fd898=this['getUVByXY'](_0x540f7d,_0x4debd8),_0x569081=this['getUVByXY'](_0x1fa34f,_0x439fc7),_0x5a7fb8=this[_0x4dc299(0x135)](_0x540f7d,_0x439fc7);let _0xab90d3=null;try{_0xab90d3=this[_0x4dc299(0x11d)](_0x4265db-_0x1fa34f,_0x398a2c-_0x4debd8,_0x5743e7,_0x2fd898,_0x569081,_0x5a7fb8);}catch(_0x5626c0){console['log'](_0x4265db,_0x398a2c);}return _0xab90d3;}['_bilinearInterpolation'](_0x170516,_0x305f92,_0x2bbde7,_0x783c4a,_0x570838,_0x5958fc){const _0x1d9520=0x1-_0x170516,_0x543035=0x1-_0x305f92,_0x5505e2=_0x1d9520*_0x543035,_0x1c77f9=_0x170516*_0x543035,_0x19aa9d=_0x1d9520*_0x305f92,_0x2a67b8=_0x170516*_0x305f92,_0x2b5011=_0x2bbde7[0x0]*_0x5505e2+_0x783c4a[0x0]*_0x1c77f9+_0x570838[0x0]*_0x19aa9d+_0x5958fc[0x0]*_0x2a67b8,_0x3336ab=_0x2bbde7[0x1]*_0x5505e2+_0x783c4a[0x1]*_0x1c77f9+_0x570838[0x1]*_0x19aa9d+_0x5958fc[0x1]*_0x2a67b8;return this['_calcUV'](_0x2b5011,_0x3336ab);}['_calcUV'](_0x2a2b30,_0x303d44){return[+_0x2a2b30,+_0x303d44,Math['sqrt'](_0x2a2b30*_0x2a2b30+_0x303d44*_0x303d44)];}[_0x273563(0xab)](_0x33f85f,_0x38a630){const _0x428295=_0x273563;if(!this['isInExtent'](_0x33f85f,_0x38a630))return null;const _0x505ef3=this[_0x428295(0x90)](_0x33f85f,_0x38a630),_0x2bd3c1=this[_0x428295(0x135)](_0x505ef3[0x0],_0x505ef3[0x1]);return _0x2bd3c1;}['isInExtent'](_0x203e7e,_0x418d3b){return _0x203e7e>=this['xmin']&&_0x203e7e<=this['xmax']&&_0x418d3b>=this['ymin']&&_0x418d3b<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x457b2c=_0x273563,_0x306162=fRandomByfloat(this['xmin'],this[_0x457b2c(0xff)]),_0x214f34=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x214f34,'lng':_0x306162};}[_0x273563(0x95)](){const _0xf3eeab=_0x273563;let _0x1a4a92,_0x20e733,_0xfd0815;for(let _0x445fb4=0x0,_0x364612=this['particles']['length'];_0x445fb4<_0x364612;_0x445fb4++){let _0x164229=this['particles'][_0x445fb4];_0x164229['age']<=0x0&&(_0x164229=this['_randomParticle'](_0x164229));if(_0x164229[_0xf3eeab(0xe4)]>0x0){const _0x2b1370=_0x164229['tlng'],_0x36f9bf=_0x164229['tlat'];_0xfd0815=this['getUVByPoint'](_0x2b1370,_0x36f9bf),_0xfd0815?(_0x1a4a92=_0x2b1370+this['_calc_speedRate'][0x0]*_0xfd0815[0x0],_0x20e733=_0x36f9bf+this[_0xf3eeab(0xeb)][0x1]*_0xfd0815[0x1],_0x164229['lng']=_0x2b1370,_0x164229['lat']=_0x36f9bf,_0x164229['tlng']=_0x1a4a92,_0x164229['tlat']=_0x20e733,_0x164229[_0xf3eeab(0xe4)]--):_0x164229[_0xf3eeab(0xe4)]=0x0;}}return this['particles'];}[_0x273563(0x113)](_0x5659de){const _0x55ce29=_0x273563;let _0x1dccf3,_0x16a9db;for(let _0x399c84=0x0;_0x399c84<0x1e;_0x399c84++){_0x1dccf3=this['getRandomLatLng'](),_0x16a9db=this['getUVByPoint'](_0x1dccf3['lng'],_0x1dccf3['lat']);if(_0x16a9db&&_0x16a9db[0x2]>0x0)break;}if(!_0x16a9db)return _0x5659de;const _0x45645a=_0x1dccf3[_0x55ce29(0xcb)]+this['_calc_speedRate'][0x0]*_0x16a9db[0x0],_0x4ec2cd=_0x1dccf3['lat']+this[_0x55ce29(0xeb)][0x1]*_0x16a9db[0x1];return _0x5659de['lng']=_0x1dccf3['lng'],_0x5659de['lat']=_0x1dccf3['lat'],_0x5659de['tlng']=_0x45645a,_0x5659de['tlat']=_0x4ec2cd,_0x5659de['age']=Math['round'](Math[_0x55ce29(0x133)]()*this['maxAge']),_0x5659de;}['destroy'](){for(const _0x2eb040 in this){delete this[_0x2eb040];}}}function fRandomByfloat(_0x4b9ff0,_0x118593){return _0x4b9ff0+Math['random']()*(_0x118593-_0x4b9ff0);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer'][_0x273563(0x8d)];class CanvasWindLayer extends BaseLayer{constructor(_0x133de4={}){super(_0x133de4),this['_setOptionsHook'](_0x133de4),this['canvas']=null;}['_setOptionsHook'](_0x116659,_0x541b08){const _0x4a64b8=_0x273563;this['frameTime']=0x3e8/(_0x116659['frameRate']||0xa),this[_0x4a64b8(0xd1)]=this['options'][_0x4a64b8(0x12c)]??![],this['color']=_0x116659[_0x4a64b8(0x13c)]||_0x4a64b8(0x165),this[_0x4a64b8(0xa0)]=_0x116659['lineWidth']||0x1,this['fixedHeight']=_0x116659['fixedHeight']??0x0,this['reverseY']=_0x116659['reverseY']??![],this['windField']&&this[_0x4a64b8(0x11e)][_0x4a64b8(0x99)](_0x116659);}get['layer'](){const _0x3669b3=_0x273563;return this[_0x3669b3(0xc3)];}get['canvasWidth'](){const _0x38e1bc=_0x273563;return this['_map']['scene'][_0x38e1bc(0xc3)][_0x38e1bc(0x155)];}get['canvasHeight'](){const _0x371016=_0x273563;return this['_map']['scene']['canvas'][_0x371016(0x150)];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x27b292){const _0x1757fc=_0x273563;this['_pointerEvents']=_0x27b292;if(!this[_0x1757fc(0xc3)])return;_0x27b292?this[_0x1757fc(0xc3)][_0x1757fc(0x8c)]['pointer-events']=_0x1757fc(0x10e):this[_0x1757fc(0xc3)]['style'][_0x1757fc(0xfe)]='none';}get['particlesNumber'](){const _0x57dfb5=_0x273563;return this['options'][_0x57dfb5(0xb8)];}set['particlesNumber'](_0x4b5c7b){const _0x1d4e28=_0x273563;this['options'][_0x1d4e28(0xb8)]=_0x4b5c7b,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){const _0x4f167b=_0x273563;return this[_0x4f167b(0xf2)]['speedRate'];}set[_0x273563(0xcf)](_0x475d0a){this['options']['speedRate']=_0x475d0a,this['windField']&&(this['windField']['speedRate']=_0x475d0a);}get['maxAge'](){return this['options']['maxAge'];}set['maxAge'](_0x3ea822){this['options']['maxAge']=_0x3ea822,this['windField']&&(this['windField']['maxAge']=_0x3ea822);}get[_0x273563(0xaa)](){return this['windData'];}set['data'](_0x214b80){this['setData'](_0x214b80);}[_0x273563(0xca)](_0x4b6ea9){const _0x55c0f8=_0x273563;_0x4b6ea9?this['_addedHook']():(this[_0x55c0f8(0x152)]&&(this['options'][_0x55c0f8(0xaa)]=this['windData']),this['_removedHook']());}['_mountedHook'](){const _0x39cb0e=_0x273563;this[_0x39cb0e(0xf2)]['worker']?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}[_0x273563(0x94)](){const _0x4faeec=_0x273563;this['canvas']=this[_0x4faeec(0x9d)](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this[_0x4faeec(0xf2)]['data']&&this['setData'](this[_0x4faeec(0xf2)]['data']);}['_removedHook'](){const _0x143161=_0x273563;this[_0x143161(0xac)](),this['unbindEvent'](),this['canvas']&&(this[_0x143161(0xe6)]['container']['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x3b8c57=_0x273563,_0x524e4c=mars3d__namespace['DomUtil']['create']('canvas','mars3d-canvasWind',this['_map'][_0x3b8c57(0xbc)]);return _0x524e4c[_0x3b8c57(0x8c)]['position']='absolute',_0x524e4c[_0x3b8c57(0x8c)][_0x3b8c57(0x111)]='0px',_0x524e4c['style'][_0x3b8c57(0x93)]='0px',_0x524e4c['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',_0x524e4c[_0x3b8c57(0x8c)]['height']=this['_map']['scene']['canvas']['clientHeight']+'px',_0x524e4c['style']['pointerEvents']=this['_pointerEvents']?'auto':'none',_0x524e4c[_0x3b8c57(0x8c)]['zIndex']=this['options']['zIndex']??0x9,_0x524e4c['width']=this['_map']['scene']['canvas']['clientWidth'],_0x524e4c[_0x3b8c57(0x110)]=this['_map']['scene']['canvas'][_0x3b8c57(0x150)],_0x524e4c;}[_0x273563(0x16b)](){const _0xcd3a1a=_0x273563;this['canvas']&&(this['canvas'][_0xcd3a1a(0x8c)]['width']=this[_0xcd3a1a(0xe6)]['scene']['canvas'][_0xcd3a1a(0x155)]+'px',this[_0xcd3a1a(0xc3)]['style']['height']=this[_0xcd3a1a(0xe6)]['scene']['canvas']['clientHeight']+'px',this['canvas'][_0xcd3a1a(0xea)]=this['_map']['scene']['canvas']['clientWidth'],this['canvas']['height']=this[_0xcd3a1a(0xe6)]['scene']['canvas'][_0xcd3a1a(0x150)]);}['bindEvent'](){const _0x412431=_0x273563,_0x2932b7=this;let _0x3434ed=Date['now']();(function _0x14604c(){const _0x4c1767=_0x3cb0;_0x2932b7['animateFrame']=window['requestAnimationFrame'](_0x14604c);if(_0x2932b7[_0x4c1767(0x8f)]&&_0x2932b7['windField']){const _0x4f267c=Date['now'](),_0x51c835=_0x4f267c-_0x3434ed;_0x51c835>_0x2932b7['frameTime']&&(_0x3434ed=_0x4f267c-_0x51c835%_0x2932b7[_0x4c1767(0x88)],_0x2932b7['update']());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this[_0x412431(0x10f)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x412431(0xe6)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x273563(0x100)](){const _0x1ac49a=_0x273563;window['cancelAnimationFrame'](this['animateFrame']),delete this['animateFrame'],window['removeEventListener'](_0x1ac49a(0x16b),this['resize']),this[_0x1ac49a(0xf2)][_0x1ac49a(0xfa)]&&(this['_map'][_0x1ac49a(0xfc)](mars3d__namespace[_0x1ac49a(0x171)]['wheel'],this['_onMapWhellEvent'],this),this['_map'][_0x1ac49a(0xfc)](mars3d__namespace['EventType']['mouseDown'],this[_0x1ac49a(0x158)],this),this['_map'][_0x1ac49a(0xfc)](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace[_0x1ac49a(0x171)]['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x49dd32){const _0x1080bd=_0x273563;clearTimeout(this[_0x1080bd(0x144)]);if(!this['show']||!this[_0x1080bd(0xc3)])return;this['canvas']['style']['visibility']=_0x1080bd(0xa5),this['refreshTimer']=setTimeout(()=>{const _0x725a09=_0x1080bd;if(!this[_0x725a09(0x8f)])return;this['redraw'](),this['canvas']['style']['visibility']=_0x725a09(0xf9);},0xc8);}[_0x273563(0x158)](_0x4adb99){const _0x8fde6f=_0x273563;this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x8fde6f(0x132)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}[_0x273563(0x132)](_0x2b0739){const _0x439e37=_0x273563;if(!this['show']||!this[_0x439e37(0xc3)])return;this['mouse_down']&&(this[_0x439e37(0xc3)]['style']['visibility']=_0x439e37(0xa5),this[_0x439e37(0x145)]=!![]);}['_onMouseUpEvent'](_0x1d130d){const _0x4f819c=_0x273563;if(!this[_0x4f819c(0x8f)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['canvas']['style']['visibility']='visible',this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x3f40d3){const _0x4d5e77=_0x273563;this['clear'](),this['windData']=_0x3f40d3,this[_0x4d5e77(0x11e)]['setDate'](_0x3f40d3),this['redraw']();}['redraw'](){const _0x26dee4=_0x273563;if(!this['show'])return;this[_0x26dee4(0x11e)][_0x26dee4(0x99)](this['options']),this[_0x26dee4(0xc5)]();}[_0x273563(0xc5)](){const _0x3ef37d=_0x273563;if(this['_updateIng'])return;this[_0x3ef37d(0x13e)]=!![];if(this['worker'])this['windField']['update']();else{const _0x63cca3=this['windField']['getParticles']();this['_drawLines'](_0x63cca3);}this['_updateIng']=![];}[_0x273563(0x177)](_0x33d935){const _0x43047e=_0x273563;this['canvasContext']['globalCompositeOperation']=_0x43047e(0xee),this[_0x43047e(0xfd)][_0x43047e(0x14a)](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext'][_0x43047e(0xb3)]='lighter',this[_0x43047e(0xfd)]['globalAlpha']=0.9,this[_0x43047e(0xfd)]['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this[_0x43047e(0x13c)];const _0x519e3c=this['_map']['scene']['mode']!==Cesium['SceneMode']['SCENE3D'],_0x4b7aee=this[_0x43047e(0x106)]*0.25;for(let _0x571287=0x0,_0x559dfd=_0x33d935['length'];_0x571287<_0x559dfd;_0x571287++){const _0x33e4d3=_0x33d935[_0x571287],_0x2375f3=this['_tomap'](_0x33e4d3[_0x43047e(0xcb)],_0x33e4d3['lat'],_0x33e4d3),_0x48bba4=this['_tomap'](_0x33e4d3['tlng'],_0x33e4d3['tlat'],_0x33e4d3);if(!_0x2375f3||!_0x48bba4)continue;if(_0x519e3c&&Math['abs'](_0x2375f3[0x0]-_0x48bba4[0x0])>=_0x4b7aee)continue;this['canvasContext']['moveTo'](_0x2375f3[0x0],_0x2375f3[0x1]),this['canvasContext']['lineTo'](_0x48bba4[0x0],_0x48bba4[0x1]);}this[_0x43047e(0xfd)][_0x43047e(0xdf)]();}['_tomap'](_0x4feb50,_0x28bbbc,_0x5ed3ef){const _0xfa7077=_0x273563,_0x197974=Cesium['Cartesian3'][_0xfa7077(0x16e)](_0x4feb50,_0x28bbbc,this[_0xfa7077(0x8a)]),_0x306cb3=this[_0xfa7077(0xe6)][_0xfa7077(0x162)];if(_0x306cb3[_0xfa7077(0x118)]===Cesium['SceneMode']['SCENE3D']){const _0x4dd9be=new Cesium['EllipsoidalOccluder'](_0x306cb3[_0xfa7077(0xc0)]['ellipsoid'],_0x306cb3['camera'][_0xfa7077(0x156)]),_0x580552=_0x4dd9be[_0xfa7077(0x175)](_0x197974);if(!_0x580552)return _0x5ed3ef['age']=0x0,null;}const _0x5f5b4c=Cesium[_0xfa7077(0x141)]['wgs84ToWindowCoordinates'](this[_0xfa7077(0xe6)][_0xfa7077(0x162)],_0x197974);return _0x5f5b4c?[_0x5f5b4c['x'],_0x5f5b4c['y']]:null;}[_0x273563(0xac)](){this['windField']['clear'](),delete this['windData'];}[_0x273563(0x9b)](){const _0x36f346=_0x273563;this['worker']=new Worker(this['options']['worker']),this['worker'][_0x36f346(0x161)]=_0x4cf5bd=>{const _0x1c8723=_0x36f346;this['_drawLines'](_0x4cf5bd[_0x1c8723(0xaa)]['particles']),this[_0x1c8723(0xdd)]=![];},this['windField']={'init':_0x10eee7=>{this['worker']['postMessage']({'type':'init','options':_0x10eee7});},'setOptions':_0x412ec9=>{const _0x3d8cc9=_0x36f346;this['worker']['postMessage']({'type':_0x3d8cc9(0x99),'options':_0x412ec9});},'setDate':_0x43387f=>{const _0x6e8a51=_0x36f346;this['worker'][_0x6e8a51(0x153)]({'type':_0x6e8a51(0xd5),'data':_0x43387f});},'update':()=>{const _0x18ae1e=_0x36f346;if(this['_updateIng2'])return;this[_0x18ae1e(0xdd)]=!![],this['worker']['postMessage']({'type':'update'});},'clear':()=>{const _0x3d5db7=_0x36f346;this['worker'][_0x3d5db7(0x153)]({'type':'clear'});}},this['windField']['init'](this[_0x36f346(0xf2)]);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace[_0x273563(0x122)]=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports[_0x273563(0x122)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil,Object[_0x273563(0x12f)](exports,'__esModule',{'value':!![]});
14
+ 'use strict';const _0xb93ce=_0x57a3;(function(_0x230989,_0x2a4aee){const _0x18252d=_0x57a3,_0x2966c8=_0x230989();while(!![]){try{const _0x38ca56=parseInt(_0x18252d(0x279))/0x1*(-parseInt(_0x18252d(0x26a))/0x2)+-parseInt(_0x18252d(0x209))/0x3*(-parseInt(_0x18252d(0x240))/0x4)+-parseInt(_0x18252d(0x23f))/0x5*(-parseInt(_0x18252d(0x29f))/0x6)+-parseInt(_0x18252d(0x23b))/0x7+-parseInt(_0x18252d(0x24a))/0x8*(-parseInt(_0x18252d(0x260))/0x9)+parseInt(_0x18252d(0x24e))/0xa+-parseInt(_0x18252d(0x256))/0xb;if(_0x38ca56===_0x2a4aee)break;else _0x2966c8['push'](_0x2966c8['shift']());}catch(_0x33c748){_0x2966c8['push'](_0x2966c8['shift']());}}}(_0x354a,0xee219));function _interopNamespace(_0x495e03){if(_0x495e03&&_0x495e03['__esModule'])return _0x495e03;var _0x37674a=Object['create'](null);return _0x495e03&&Object['keys'](_0x495e03)['forEach'](function(_0x25edd3){const _0x3a16b8=_0x57a3;if(_0x25edd3!=='default'){var _0x5fa0f9=Object['getOwnPropertyDescriptor'](_0x495e03,_0x25edd3);Object[_0x3a16b8(0x274)](_0x37674a,_0x25edd3,_0x5fa0f9[_0x3a16b8(0x269)]?_0x5fa0f9:{'enumerable':!![],'get':function(){return _0x495e03[_0x25edd3];}});}}),_0x37674a['default']=_0x495e03,_0x37674a;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x5785a5,_0x3afc38){const _0xb9d714=_0x5785a5*Math['cos'](Cesium$7['Math']['toRadians'](_0x3afc38));return _0xb9d714;}function getV(_0x25e216,_0x45a990){const _0xd47c82=_0x57a3,_0x188dd3=_0x25e216*Math[_0xd47c82(0x25d)](Cesium$7['Math']['toRadians'](_0x45a990));return _0x188dd3;}function getSpeed(_0x1b6f8f,_0xee1429){const _0x5aaad3=_0x57a3,_0x352b11=Math['sqrt'](Math[_0x5aaad3(0x253)](_0x1b6f8f,0x2)+Math['pow'](_0xee1429,0x2));return _0x352b11;}function getDirection(_0x55fcff,_0x49dccb){const _0x43098f=_0x57a3;let _0x5b5a64=Cesium$7['Math'][_0x43098f(0x20d)](Math[_0x43098f(0x2bb)](_0x49dccb,_0x55fcff));return _0x5b5a64+=_0x5b5a64<0x0?0x168:0x0,_0x5b5a64;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x32880e){const _0x529e3b=_0x57a3;this['commandType']=_0x32880e['commandType'],this['geometry']=_0x32880e['geometry'],this['attributeLocations']=_0x32880e['attributeLocations'],this['primitiveType']=_0x32880e['primitiveType'],this['uniformMap']=_0x32880e['uniformMap'],this[_0x529e3b(0x288)]=_0x32880e['vertexShaderSource'],this['fragmentShaderSource']=_0x32880e['fragmentShaderSource'],this[_0x529e3b(0x27f)]=_0x32880e[_0x529e3b(0x27f)],this['framebuffer']=_0x32880e['framebuffer'],this['outputTexture']=_0x32880e['outputTexture'],this['autoClear']=_0x32880e['autoClear']??![],this[_0x529e3b(0x1e4)]=_0x32880e['preExecute'],this['show']=!![],this[_0x529e3b(0x2a9)]=undefined,this['clearCommand']=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6[(_0x529e3b(0x2bc))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE']}));}[_0xb93ce(0x233)](_0x34a2ee){const _0xf0db18=_0xb93ce;switch(this[_0xf0db18(0x2ae)]){case _0xf0db18(0x212):{const _0x44cfad=Cesium$6['VertexArray']['fromGeometry']({'context':_0x34a2ee,'geometry':this[_0xf0db18(0x298)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage'][_0xf0db18(0x228)]}),_0x3cddad=Cesium$6['ShaderProgram']['fromCache']({'context':_0x34a2ee,'attributeLocations':this[_0xf0db18(0x24d)],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this[_0xf0db18(0x234)]}),_0x38058d=Cesium$6['RenderState']['fromCache'](this['rawRenderState']);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x3cddad,'vertexArray':_0x44cfad,'modelMatrix':Cesium$6['Matrix4'][_0xf0db18(0x2a8)],'renderState':_0x38058d,'uniformMap':this[_0xf0db18(0x299)],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass'][_0xf0db18(0x29d)],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this[_0xf0db18(0x299)],'outputTexture':this[_0xf0db18(0x28d)],'persists':!![]});}}}['setGeometry'](_0x270d3a,_0xc25580){const _0x386cc4=_0xb93ce;this['geometry']=_0xc25580;const _0x38bc0e=Cesium$6['VertexArray'][_0x386cc4(0x2a5)]({'context':_0x270d3a,'geometry':this[_0x386cc4(0x298)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute'][_0x386cc4(0x1f2)]=_0x38bc0e;}['update'](_0x3cccf2){const _0x300436=_0xb93ce;if(!this[_0x300436(0x2a1)])return;if(_0x3cccf2['mode']!==Cesium$6[_0x300436(0x20f)]['SCENE3D'])return;!Cesium$6['defined'](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x3cccf2['context'])),Cesium$6['defined'](this[_0x300436(0x1e4)])&&this['preExecute'](),Cesium$6['defined'](this[_0x300436(0x1ff)])&&_0x3cccf2[_0x300436(0x1df)]['push'](this['clearCommand']),_0x3cccf2['commandList']['push'](this[_0x300436(0x2a9)]);}[_0xb93ce(0x1e3)](){return![];}[_0xb93ce(0x244)](){const _0x4fa85c=_0xb93ce;if(this['clearCommand']){var _0x3e6984,_0x20cdc7;(_0x3e6984=this['clearCommand'])!==null&&_0x3e6984!==void 0x0&&_0x3e6984['vertexArray']&&this['clearCommand']['vertexArray']['destroy'](),(_0x20cdc7=this[_0x4fa85c(0x1ff)])!==null&&_0x20cdc7!==void 0x0&&_0x20cdc7['shaderProgram']&&this[_0x4fa85c(0x1ff)][_0x4fa85c(0x237)]['destroy'](),delete this[_0x4fa85c(0x1ff)];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this['commandToExecute']['shaderProgram']&&this['commandToExecute']['shaderProgram']['destroy'](),delete this[_0x4fa85c(0x2a9)]),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x267f3a=function(){const _0x386e5a=_0x57a3,_0x58994b=new Cesium$5[(_0x386e5a(0x271))]({'attributes':new Cesium$5[(_0x386e5a(0x20b))]({'position':new Cesium$5[(_0x386e5a(0x280))]({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype'][_0x386e5a(0x2c3)],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x58994b;},_0xead11c=function(_0x2507de,_0x326740){if(Cesium$5['defined'](_0x326740)){const _0x484152={};_0x484152['arrayBufferView']=_0x326740,_0x2507de['source']=_0x484152;}const _0x10d9a9=new Cesium$5['Texture'](_0x2507de);return _0x10d9a9;},_0x567b9f=function(_0x3ee427,_0x41949b,_0x4b4610){const _0x234450=new Cesium$5['Framebuffer']({'context':_0x3ee427,'colorTextures':[_0x41949b],'depthTexture':_0x4b4610});return _0x234450;},_0x41068a=function(_0x530cdb){const _0x2bb169=!![],_0x1faeaf=![],_0x5561fe={'viewport':_0x530cdb['viewport'],'depthTest':_0x530cdb['depthTest'],'depthMask':_0x530cdb['depthMask'],'blending':_0x530cdb['blending']},_0x252fc8=Cesium$5['Appearance']['getDefaultRenderState'](_0x2bb169,_0x1faeaf,_0x5561fe);return _0x252fc8;},_0x1bdb4a=function(_0x14f92f){const _0x522832=_0x57a3,_0x30a6cf={},_0x5cd147=Cesium$5['Math']['mod'](_0x14f92f[_0x522832(0x2c4)],Cesium$5['Math']['TWO_PI']),_0x5db3d9=Cesium$5['Math'][_0x522832(0x201)](_0x14f92f['east'],Cesium$5['Math']['TWO_PI']),_0x2d1c1a=_0x14f92f['width'];let _0x4c23f2,_0x35bfa6;_0x2d1c1a>Cesium$5['Math'][_0x522832(0x1ee)]?(_0x4c23f2=0x0,_0x35bfa6=Cesium$5[_0x522832(0x26c)][_0x522832(0x21c)]):_0x5db3d9-_0x5cd147<_0x2d1c1a?(_0x4c23f2=_0x5cd147,_0x35bfa6=_0x5cd147+_0x2d1c1a):(_0x4c23f2=_0x5cd147,_0x35bfa6=_0x5db3d9);_0x30a6cf['lon']={'min':Cesium$5[_0x522832(0x26c)]['toDegrees'](_0x4c23f2),'max':Cesium$5[_0x522832(0x26c)][_0x522832(0x20d)](_0x35bfa6)};const _0x460363=_0x14f92f['south'],_0x182fc1=_0x14f92f['north'],_0x5c9f21=_0x14f92f['height'],_0x4b605c=_0x5c9f21>Cesium$5['Math']['PI']/0xc?_0x5c9f21/0x2:0x0;let _0x43264f=Cesium$5['Math'][_0x522832(0x27e)](_0x460363-_0x4b605c),_0x332af4=Cesium$5[_0x522832(0x26c)][_0x522832(0x27e)](_0x182fc1+_0x4b605c);return _0x43264f<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x43264f=-Cesium$5[_0x522832(0x26c)]['PI_OVER_TWO']),_0x332af4>Cesium$5[_0x522832(0x26c)][_0x522832(0x2ad)]&&(_0x332af4=Cesium$5['Math'][_0x522832(0x248)]),_0x30a6cf['lat']={'min':Cesium$5[_0x522832(0x26c)][_0x522832(0x20d)](_0x43264f),'max':Cesium$5['Math']['toDegrees'](_0x332af4)},_0x30a6cf;};return{'getFullscreenQuad':_0x267f3a,'createTexture':_0xead11c,'createFramebuffer':_0x567b9f,'createRawRenderState':_0x41068a,'viewRectangleToLonLatRange':_0x1bdb4a};}());var segmentDraw_vert='in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert='in\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0a}\x0a',trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20trailsColor;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x37964b,_0x39ada1,_0x1437af,_0x4b5c0a,_0x112e45){const _0x427831=_0xb93ce;this['createRenderingTextures'](_0x37964b,_0x39ada1,_0x1437af['colors']),this[_0x427831(0x225)](_0x37964b),this['createRenderingPrimitives'](_0x37964b,_0x1437af,_0x4b5c0a,_0x112e45);}['createRenderingTextures'](_0x180e98,_0xa19e85,_0x52c759){const _0x1e2aa9=_0xb93ce,_0x272c43={'context':_0x180e98,'width':_0x180e98['drawingBufferWidth'],'height':_0x180e98['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['RGBA'],'pixelDatatype':Cesium$4[_0x1e2aa9(0x220)]['UNSIGNED_BYTE']},_0x56f6f2={'context':_0x180e98,'width':_0x180e98['drawingBufferWidth'],'height':_0x180e98['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x1e2aa9(0x232)][_0x1e2aa9(0x287)],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x4fe99d=_0x52c759['length'],_0x347391=new Float32Array(_0x4fe99d*0x3);for(let _0x2f351e=0x0;_0x2f351e<_0x4fe99d;_0x2f351e++){const _0x3960c4=Cesium$4['Color']['fromCssColorString'](_0x52c759[_0x2f351e]);_0x347391[0x3*_0x2f351e]=_0x3960c4['red'],_0x347391[0x3*_0x2f351e+0x1]=_0x3960c4['green'],_0x347391[0x3*_0x2f351e+0x2]=_0x3960c4['blue'];}const _0x120c2b={'context':_0x180e98,'width':_0x4fe99d,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4[_0x1e2aa9(0x220)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter'][_0x1e2aa9(0x23e)]})};this['textures']={'segmentsColor':Util[_0x1e2aa9(0x259)](_0x272c43),'segmentsDepth':Util[_0x1e2aa9(0x259)](_0x56f6f2),'currentTrailsColor':Util['createTexture'](_0x272c43),'currentTrailsDepth':Util['createTexture'](_0x56f6f2),'nextTrailsColor':Util[_0x1e2aa9(0x259)](_0x272c43),'nextTrailsDepth':Util[_0x1e2aa9(0x259)](_0x56f6f2),'colorTable':Util['createTexture'](_0x120c2b,_0x347391)};}['createRenderingFramebuffers'](_0x35c995){const _0x5d2143=_0xb93ce;this['framebuffers']={'segments':Util['createFramebuffer'](_0x35c995,this['textures']['segmentsColor'],this[_0x5d2143(0x24b)]['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x35c995,this[_0x5d2143(0x24b)]['currentTrailsColor'],this[_0x5d2143(0x24b)]['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x35c995,this['textures'][_0x5d2143(0x2aa)],this['textures'][_0x5d2143(0x1f9)])};}['createSegmentsGeometry'](_0x965c12){const _0x1c01d7=_0xb93ce,_0x1b6179=0x4;let _0x2cad91=[];for(let _0x4d18b3=0x0;_0x4d18b3<_0x965c12[_0x1c01d7(0x245)];_0x4d18b3++){for(let _0x3e2332=0x0;_0x3e2332<_0x965c12['particlesTextureSize'];_0x3e2332++){for(let _0x1d6b0b=0x0;_0x1d6b0b<_0x1b6179;_0x1d6b0b++){_0x2cad91['push'](_0x4d18b3/_0x965c12['particlesTextureSize']),_0x2cad91['push'](_0x3e2332/_0x965c12['particlesTextureSize']);}}}_0x2cad91=new Float32Array(_0x2cad91);let _0x1da22c=[];const _0x3e5fca=[-0x1,0x1],_0x503f80=[-0x1,0x1];for(let _0x38767a=0x0;_0x38767a<_0x965c12['maxParticles'];_0x38767a++){for(let _0xbc1bce=0x0;_0xbc1bce<_0x1b6179/0x2;_0xbc1bce++){for(let _0x2779fb=0x0;_0x2779fb<_0x1b6179/0x2;_0x2779fb++){_0x1da22c['push'](_0x3e5fca[_0xbc1bce]),_0x1da22c['push'](_0x503f80[_0x2779fb]),_0x1da22c['push'](0x0);}}}_0x1da22c=new Float32Array(_0x1da22c);const _0x3cb2a1=0x6*_0x965c12['maxParticles'],_0x14a1f6=new Uint32Array(_0x3cb2a1);for(let _0x42adb8=0x0,_0x58be02=0x0,_0x3c5b96=0x0;_0x42adb8<_0x965c12['maxParticles'];_0x42adb8++){_0x14a1f6[_0x58be02++]=_0x3c5b96+0x0,_0x14a1f6[_0x58be02++]=_0x3c5b96+0x1,_0x14a1f6[_0x58be02++]=_0x3c5b96+0x2,_0x14a1f6[_0x58be02++]=_0x3c5b96+0x2,_0x14a1f6[_0x58be02++]=_0x3c5b96+0x1,_0x14a1f6[_0x58be02++]=_0x3c5b96+0x3,_0x3c5b96+=0x4;}const _0x205b76=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4[(_0x1c01d7(0x280))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x2cad91}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype'][_0x1c01d7(0x2c3)],'componentsPerAttribute':0x3,'values':_0x1da22c})}),'indices':_0x14a1f6});return _0x205b76;}['createRenderingPrimitives'](_0x107851,_0x3e2e80,_0x4f3ec6,_0x45d00d){const _0x3972e8=_0xb93ce,_0x3662d9=this;this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x3e2e80),'primitiveType':Cesium$4['PrimitiveType'][_0x3972e8(0x1f8)],'uniformMap':{'currentParticlesPosition':function(){const _0x14438b=_0x3972e8;return _0x45d00d[_0x14438b(0x1e9)][_0x14438b(0x2a2)];},'postProcessingPosition':function(){const _0x5289fb=_0x3972e8;return _0x45d00d['particlesTextures'][_0x5289fb(0x252)];},'postProcessingSpeed':function(){const _0x295047=_0x3972e8;return _0x45d00d['particlesTextures'][_0x295047(0x1f0)];},'colorTable':function(){const _0x484a37=_0x3972e8;return _0x3662d9[_0x484a37(0x24b)][_0x484a37(0x210)];},'aspect':function(){return _0x107851['drawingBufferWidth']/_0x107851['drawingBufferHeight'];},'pixelSize':function(){const _0xab0431=_0x3972e8;return _0x4f3ec6[_0xab0431(0x250)];},'lineWidth':function(){return _0x3e2e80['lineWidth'];},'particleHeight':function(){return _0x3e2e80['particleHeight'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x3972e8(0x224)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':_0x3972e8(0x212),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x3972e8(0x26d)]['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){const _0x48b892=_0x3972e8;return _0x3662d9['textures'][_0x48b892(0x1fb)];},'segmentsDepthTexture':function(){const _0x2a9e71=_0x3972e8;return _0x3662d9[_0x2a9e71(0x24b)]['segmentsDepth'];},'currentTrailsColor':function(){const _0xf5a10f=_0x3972e8;return _0x3662d9['framebuffers']['currentTrails'][_0xf5a10f(0x204)](0x0);},'trailsDepthTexture':function(){return _0x3662d9['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){const _0x2c188b=_0x3972e8;return _0x3e2e80[_0x2c188b(0x264)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction'][_0x3972e8(0x1fe)]},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x3d25f7=_0x3972e8,_0x4f3eb0=_0x3662d9[_0x3d25f7(0x211)]['currentTrails'];_0x3662d9['framebuffers']['currentTrails']=_0x3662d9['framebuffers']['nextTrails'],_0x3662d9['framebuffers']['nextTrails']=_0x4f3eb0,_0x3662d9['primitives']['trails']['commandToExecute']['framebuffer']=_0x3662d9['framebuffers']['nextTrails'],_0x3662d9['primitives']['trails']['clearCommand']['framebuffer']=_0x3662d9['framebuffers'][_0x3d25f7(0x20e)];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){const _0x38de90=_0x3972e8;return _0x3662d9[_0x38de90(0x211)][_0x38de90(0x20e)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x9d2f4c=_0x3972e8;return _0x3662d9['framebuffers']['nextTrails'][_0x9d2f4c(0x246)];}},'vertexShaderSource':new Cesium$4[(_0x3972e8(0x206))]({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag=_0xb93ce(0x273),updateSpeed_frag='uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec3\x20percent\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20\x20\x20float\x20normalization\x20=\x20length(percent);\x0a\x0a\x20\x20\x20\x20return\x20normalization;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20//\x20vec3\x20currentSpeed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20out_FragColor\x20=\x20nextSpeed;\x0a}\x0a',updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a',postProcessingPosition_frag='uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a',postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x28fc1b,_0x55b609,_0xa6b07f,_0x20acba){this['data']=_0x55b609,this['createWindTextures'](_0x28fc1b,_0x55b609),this['createParticlesTextures'](_0x28fc1b,_0xa6b07f,_0x20acba),this['createComputingPrimitives'](_0x55b609,_0xa6b07f,_0x20acba);}['createWindTextures'](_0x26278e,_0x16ac8e){const _0x1bd364=_0xb93ce,_0x1426db={'context':_0x26278e,'width':_0x16ac8e[_0x1bd364(0x282)]['lon'],'height':_0x16ac8e['dimensions']['lat']*(_0x16ac8e[_0x1bd364(0x282)]['lev']||0x1),'pixelFormat':Cesium$3[_0x1bd364(0x232)][_0x1bd364(0x28a)],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this['windTextures']={'U':Util[_0x1bd364(0x259)](_0x1426db,_0x16ac8e['U'][_0x1bd364(0x2bd)]),'V':Util['createTexture'](_0x1426db,_0x16ac8e['V']['array'])};}[_0xb93ce(0x2b8)](_0x5ef2eb,_0xf0b3c,_0x29e2bc){const _0x18ffdc=_0xb93ce,_0x1152e7={'context':_0x5ef2eb,'width':_0xf0b3c['particlesTextureSize'],'height':_0xf0b3c[_0x18ffdc(0x245)],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3[_0x18ffdc(0x220)]['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x18ffdc(0x1dd)]})},_0x58ee28=this['randomizeParticles'](_0xf0b3c['maxParticles'],_0x29e2bc),_0x5ad4ce=new Float32Array(0x4*_0xf0b3c['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x1152e7),'currentParticlesPosition':Util['createTexture'](_0x1152e7,_0x58ee28),'nextParticlesPosition':Util['createTexture'](_0x1152e7,_0x58ee28),'currentParticlesSpeed':Util[_0x18ffdc(0x259)](_0x1152e7,_0x5ad4ce),'nextParticlesSpeed':Util['createTexture'](_0x1152e7,_0x5ad4ce),'postProcessingPosition':Util['createTexture'](_0x1152e7,_0x58ee28),'postProcessingSpeed':Util['createTexture'](_0x1152e7,_0x5ad4ce)};}['randomizeParticles'](_0x1e6c33,_0x5d90eb){const _0x1a86c7=_0xb93ce,_0x5ca397=new Float32Array(0x4*_0x1e6c33);for(let _0x3188a7=0x0;_0x3188a7<_0x1e6c33;_0x3188a7++){_0x5ca397[0x4*_0x3188a7]=Cesium$3['Math']['randomBetween'](_0x5d90eb['lonRange']['x'],_0x5d90eb['lonRange']['y']),_0x5ca397[0x4*_0x3188a7+0x1]=Cesium$3[_0x1a86c7(0x26c)][_0x1a86c7(0x295)](_0x5d90eb[_0x1a86c7(0x1f6)]['x'],_0x5d90eb['latRange']['y']),_0x5ca397[0x4*_0x3188a7+0x2]=Cesium$3['Math'][_0x1a86c7(0x295)](this['data'][_0x1a86c7(0x22f)]['min'],this['data']['lev']['max']),_0x5ca397[0x4*_0x3188a7+0x3]=0x0;}return _0x5ca397;}['destroyParticlesTextures'](){Object['keys'](this['particlesTextures'])['forEach'](_0x5722d3=>{this['particlesTextures'][_0x5722d3]['destroy']();});}['createComputingPrimitives'](_0x360a06,_0x308ba6,_0x4ceb39){const _0x210767=_0xb93ce,_0x1cf59d=new Cesium$3['Cartesian3'](_0x360a06[_0x210767(0x282)]['lon'],_0x360a06['dimensions']['lat'],_0x360a06['dimensions']['lev']),_0x32a69b=new Cesium$3['Cartesian3'](_0x360a06['lon']['min'],_0x360a06['lat'][_0x210767(0x29b)],_0x360a06['lev']['min']),_0x32b286=new Cesium$3['Cartesian3'](_0x360a06['lon']['max'],_0x360a06['lat']['max'],_0x360a06['lev'][_0x210767(0x272)]),_0x5bf9e8=new Cesium$3[(_0x210767(0x27c))]((_0x32b286['x']-_0x32a69b['x'])/(_0x1cf59d['x']-0x1),(_0x32b286['y']-_0x32a69b['y'])/(_0x1cf59d['y']-0x1),_0x1cf59d['z']>0x1?(_0x32b286['z']-_0x32a69b['z'])/(_0x1cf59d['z']-0x1):0x1),_0xb5caf4=new Cesium$3['Cartesian2'](_0x360a06['U'][_0x210767(0x29b)],_0x360a06['U']['max']),_0x17e253=new Cesium$3['Cartesian2'](_0x360a06['V']['min'],_0x360a06['V'][_0x210767(0x272)]),_0x150a9f=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x150a9f['windTextures']['U'];},'V':function(){const _0x424dcb=_0x210767;return _0x150a9f[_0x424dcb(0x1fa)]['V'];},'currentParticlesPosition':function(){return _0x150a9f['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x1cf59d;},'minimum':function(){return _0x32a69b;},'maximum':function(){return _0x32b286;},'interval':function(){return _0x5bf9e8;}},'fragmentShaderSource':new Cesium$3[(_0x210767(0x206))]({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x199b45=_0x210767;_0x150a9f['primitives']['getWind']['commandToExecute']['outputTexture']=_0x150a9f['particlesTextures'][_0x199b45(0x1ec)];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x150a9f['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){const _0x5c3d79=_0x210767;return _0x150a9f['particlesTextures'][_0x5c3d79(0x1ec)];},'uSpeedRange':function(){return _0xb5caf4;},'vSpeedRange':function(){return _0x17e253;},'pixelSize':function(){return _0x4ceb39['pixelSize'];},'speedFactor':function(){return _0x308ba6['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x210767(0x2b7)],'preExecute':function(){const _0x27b124=_0x210767,_0x1e6144=_0x150a9f['particlesTextures']['currentParticlesSpeed'];_0x150a9f['particlesTextures']['currentParticlesSpeed']=_0x150a9f['particlesTextures']['postProcessingSpeed'],_0x150a9f['particlesTextures']['postProcessingSpeed']=_0x1e6144,_0x150a9f['primitives']['updateSpeed']['commandToExecute']['outputTexture']=_0x150a9f['particlesTextures'][_0x27b124(0x2b7)];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x32aae5=_0x210767;return _0x150a9f['particlesTextures'][_0x32aae5(0x2a2)];},'currentParticlesSpeed':function(){return _0x150a9f['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this[_0x210767(0x1e9)]['nextParticlesPosition'],'preExecute':function(){const _0x3766b9=_0x210767,_0x5416ea=_0x150a9f['particlesTextures']['currentParticlesPosition'];_0x150a9f['particlesTextures']['currentParticlesPosition']=_0x150a9f['particlesTextures']['postProcessingPosition'],_0x150a9f['particlesTextures']['postProcessingPosition']=_0x5416ea,_0x150a9f['primitives']['updatePosition'][_0x3766b9(0x2a9)]['outputTexture']=_0x150a9f['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){return _0x150a9f['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){const _0x39e679=_0x210767;return _0x150a9f[_0x39e679(0x1e9)][_0x39e679(0x2b7)];},'lonRange':function(){return _0x4ceb39['lonRange'];},'latRange':function(){return _0x4ceb39['latRange'];},'randomCoefficient':function(){const _0x4a3cd1=Math['random']();return _0x4a3cd1;},'dropRate':function(){const _0x5ee65b=_0x210767;return _0x308ba6[_0x5ee65b(0x263)];},'dropRateBump':function(){return _0x308ba6['dropRateBump'];}},'fragmentShaderSource':new Cesium$3[(_0x210767(0x206))]({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){_0x150a9f['primitives']['postProcessingPosition']['commandToExecute']['outputTexture']=_0x150a9f['particlesTextures']['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x562ae2=_0x210767;return _0x150a9f['particlesTextures'][_0x562ae2(0x252)];},'nextParticlesSpeed':function(){const _0x3f7f27=_0x210767;return _0x150a9f[_0x3f7f27(0x1e9)]['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x210767(0x1f0)],'preExecute':function(){const _0xa97331=_0x210767;_0x150a9f['primitives'][_0xa97331(0x1f0)]['commandToExecute'][_0xa97331(0x28d)]=_0x150a9f['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace[_0xb93ce(0x219)];function _0x57a3(_0x123f71,_0x30ba99){const _0x354a0f=_0x354a();return _0x57a3=function(_0x57a318,_0x3bb826){_0x57a318=_0x57a318-0x1dc;let _0x2b52f2=_0x354a0f[_0x57a318];return _0x2b52f2;},_0x57a3(_0x123f71,_0x30ba99);}class ParticleSystem{constructor(_0xffb8ad,_0x21c7f5,_0x24306e,_0x3160f4){const _0x376d0b=_0xb93ce;this[_0x376d0b(0x257)]=_0xffb8ad,_0x21c7f5={..._0x21c7f5},_0x21c7f5['udata']&&_0x21c7f5['vdata']&&(_0x21c7f5['dimensions']={},_0x21c7f5[_0x376d0b(0x282)]['lon']=_0x21c7f5['cols'],_0x21c7f5['dimensions']['lat']=_0x21c7f5['rows'],_0x21c7f5['dimensions']['lev']=_0x21c7f5['lev']||0x1,_0x21c7f5[_0x376d0b(0x2b9)]={},_0x21c7f5['lon']['min']=_0x21c7f5['xmin'],_0x21c7f5['lon'][_0x376d0b(0x272)]=_0x21c7f5[_0x376d0b(0x22d)],_0x21c7f5['lat']={},_0x21c7f5['lat']['min']=_0x21c7f5['ymin'],_0x21c7f5['lat']['max']=_0x21c7f5['ymax'],_0x21c7f5['lev']={},_0x21c7f5['lev']['min']=_0x21c7f5['levmin']??0x1,_0x21c7f5[_0x376d0b(0x22f)]['max']=_0x21c7f5['levmax']??0x1,_0x21c7f5['U']={},_0x21c7f5['U'][_0x376d0b(0x2bd)]=new Float32Array(_0x21c7f5['udata']),_0x21c7f5['U'][_0x376d0b(0x29b)]=_0x21c7f5[_0x376d0b(0x21f)]??Math[_0x376d0b(0x29b)](..._0x21c7f5['udata']),_0x21c7f5['U'][_0x376d0b(0x272)]=_0x21c7f5[_0x376d0b(0x296)]??Math[_0x376d0b(0x272)](..._0x21c7f5['udata']),_0x21c7f5['V']={},_0x21c7f5['V']['array']=new Float32Array(_0x21c7f5['vdata']),_0x21c7f5['V'][_0x376d0b(0x29b)]=_0x21c7f5['vmin']??Math['min'](..._0x21c7f5['vdata']),_0x21c7f5['V']['max']=_0x21c7f5['vmax']??Math['max'](..._0x21c7f5[_0x376d0b(0x2b0)])),this[_0x376d0b(0x26e)]=_0x21c7f5,this['options']=_0x24306e,this[_0x376d0b(0x29a)]=_0x3160f4,this[_0x376d0b(0x2c1)]=new ParticlesComputing(this['context'],this['data'],this['options'],this[_0x376d0b(0x29a)]),this['particlesRendering']=new ParticlesRendering(this[_0x376d0b(0x257)],this[_0x376d0b(0x26e)],this['options'],this['viewerParameters'],this['particlesComputing']);}['canvasResize'](_0x46d1e2){const _0x4a3a01=_0xb93ce;this['particlesComputing'][_0x4a3a01(0x208)](),Object[_0x4a3a01(0x24c)](this['particlesComputing'][_0x4a3a01(0x1fa)])[_0x4a3a01(0x2a0)](_0x5260ee=>{const _0xf8df5a=_0x4a3a01;this['particlesComputing']['windTextures'][_0x5260ee][_0xf8df5a(0x244)]();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object['keys'](this['particlesRendering'][_0x4a3a01(0x211)])[_0x4a3a01(0x2a0)](_0x5f47b4=>{this['particlesRendering']['framebuffers'][_0x5f47b4]['destroy']();}),this[_0x4a3a01(0x257)]=_0x46d1e2,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0x4a3a01(0x2b3)],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this[_0x4a3a01(0x2c1)]);}['clearFramebuffers'](){const _0x32b3ce=_0xb93ce,_0xbaeae7=new Cesium$2['ClearCommand']({'color':new Cesium$2[(_0x32b3ce(0x1ed))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});Object['keys'](this['particlesRendering'][_0x32b3ce(0x211)])['forEach'](_0x722fb2=>{const _0x1340e2=_0x32b3ce;_0xbaeae7['framebuffer']=this['particlesRendering']['framebuffers'][_0x722fb2],_0xbaeae7['execute'](this[_0x1340e2(0x257)]);});}['refreshParticles'](_0x44d2f5){const _0x4d3700=_0xb93ce;this[_0x4d3700(0x25e)](),this[_0x4d3700(0x2c1)]['destroyParticlesTextures'](),this['particlesComputing']['createParticlesTextures'](this[_0x4d3700(0x257)],this['options'],this['viewerParameters']);if(_0x44d2f5){const _0x3314a7=this['particlesRendering']['createSegmentsGeometry'](this[_0x4d3700(0x2b3)]);this['particlesRendering'][_0x4d3700(0x21e)][_0x4d3700(0x224)]['geometry']=_0x3314a7;const _0x4a8484=Cesium$2[_0x4d3700(0x1fd)]['fromGeometry']({'context':this['context'],'geometry':_0x3314a7,'attributeLocations':this['particlesRendering']['primitives']['segments']['attributeLocations'],'bufferUsage':Cesium$2[_0x4d3700(0x213)]['STATIC_DRAW']});this['particlesRendering']['primitives']['segments']['commandToExecute'][_0x4d3700(0x1f2)]=_0x4a8484;}}[_0xb93ce(0x2be)](_0x7f34b5){const _0x384911=_0xb93ce;let _0x3fc820=![];this['options']['maxParticles']!==_0x7f34b5['maxParticles']&&(_0x3fc820=!![]),Object[_0x384911(0x24c)](_0x7f34b5)['forEach'](_0x1d9890=>{const _0x43fe43=_0x384911;this[_0x43fe43(0x2b3)][_0x1d9890]=_0x7f34b5[_0x1d9890];}),this[_0x384911(0x22e)](_0x3fc820);}[_0xb93ce(0x267)](_0x25dfd2){const _0x5d33a5=_0xb93ce;Object[_0x5d33a5(0x24c)](_0x25dfd2)['forEach'](_0x56e274=>{this['viewerParameters'][_0x56e274]=_0x25dfd2[_0x56e274];}),this[_0x5d33a5(0x22e)](![]);}[_0xb93ce(0x244)](){const _0xcb331e=_0xb93ce;clearTimeout(this['canrefresh']),this['particlesComputing'][_0xcb331e(0x208)](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0xeb7cc5=>{this['particlesComputing']['windTextures'][_0xeb7cc5]['destroy']();}),this['particlesRendering'][_0xcb331e(0x24b)][_0xcb331e(0x210)]['destroy'](),Object[_0xcb331e(0x24c)](this['particlesRendering'][_0xcb331e(0x211)])['forEach'](_0x5b9db5=>{const _0x5e251c=_0xcb331e;this[_0x5e251c(0x26f)]['framebuffers'][_0x5b9db5]['destroy']();});for(const _0x16a771 in this){delete this[_0x16a771];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':['rgb(206,255,255)']};class WindLayer extends BaseLayer$1{constructor(_0x537968={}){_0x537968={...DEF_OPTIONS,..._0x537968},super(_0x537968),this['_setOptionsHook'](_0x537968);}get['layer'](){return this['primitives'];}get['data'](){const _0x21a7f2=_0xb93ce;return this[_0x21a7f2(0x1f1)];}set['data'](_0x45316d){this['setData'](_0x45316d);}get[_0xb93ce(0x227)](){return this['options']['colors'];}set['colors'](_0x56dea6){this['options']['colors']=_0x56dea6,this['particleSystem']&&this['particleSystem']['setOptions']({'colors':_0x56dea6}),this['resize']();}[_0xb93ce(0x1de)](){}['_addedHook'](){const _0x37c47d=_0xb93ce;this[_0x37c47d(0x1e1)]=this[_0x37c47d(0x222)]['scene'],this['camera']=this['_map'][_0x37c47d(0x2af)],this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map']['scene'][_0x37c47d(0x21e)][_0x37c47d(0x22b)](this['primitives']),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3'][_0x37c47d(0x25b)],0.99*0x615299),this['updateViewerParameters'](),window[_0x37c47d(0x22c)]('resize',this['resize']['bind'](this),![]),this[_0x37c47d(0x1fc)]=![],this['mouse_move']=![],this[_0x37c47d(0x222)]['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x37c47d(0x231)][_0x37c47d(0x290)],this['_onMouseUpEvent'],this),this[_0x37c47d(0x222)]['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_data']&&this['setData'](this['_data']);}['_removedHook'](){const _0x293618=_0xb93ce;window['removeEventListener']('resize',this[_0x293618(0x2c2)]),this[_0x293618(0x222)]['off'](mars3d__namespace['EventType'][_0x293618(0x214)],this['_onMap_preRenderEvent'],this),this[_0x293618(0x222)][_0x293618(0x230)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x293618(0x222)]['off'](mars3d__namespace['EventType']['mouseDown'],this[_0x293618(0x29e)],this),this[_0x293618(0x222)][_0x293618(0x230)](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this[_0x293618(0x222)]['scene']['primitives'][_0x293618(0x2b6)](this[_0x293618(0x21e)]);}['resize'](){const _0x5ecff7=_0xb93ce;if(!this['show']||!this['particleSystem'])return;this[_0x5ecff7(0x21e)][_0x5ecff7(0x2a1)]=![],this[_0x5ecff7(0x21e)][_0x5ecff7(0x284)](),this['_map'][_0x5ecff7(0x268)](mars3d__namespace['EventType']['preRender'],this[_0x5ecff7(0x2c0)],this);}['_onMap_preRenderEvent'](_0x307ef4){const _0x12aaae=_0xb93ce;this['particleSystem'][_0x12aaae(0x28c)](this['scene']['context']),this['addPrimitives'](),this['primitives']['show']=!![];}[_0xb93ce(0x200)](_0xc92d8d){const _0xcc8781=_0xb93ce;clearTimeout(this['refreshTimer']);if(!this['show']||!this['particleSystem'])return;this[_0xcc8781(0x21e)]['show']=![],this[_0xcc8781(0x281)]=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}[_0xb93ce(0x29e)](_0x5b70a6){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x1e5912){const _0x44a60a=_0xb93ce;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this[_0x44a60a(0x21e)]['show']=![],this[_0x44a60a(0x247)]=!![]);}['_onMouseUpEvent'](_0x444c65){const _0x27c753=_0xb93ce;if(!this['show']||!this[_0x27c753(0x2a3)])return;this['mouse_down']&&this[_0x27c753(0x247)]&&this['redraw'](),this['primitives']['show']=!![],this['mouse_down']=![],this['mouse_move']=![];}[_0xb93ce(0x20a)](){const _0x4a57b7=_0xb93ce;if(!this['_map']||!this['show'])return;this[_0x4a57b7(0x1ea)](),this['particleSystem'][_0x4a57b7(0x267)](this['viewerParameters']),this['primitives']['show']=!![];}['setData'](_0x59a22c){const _0xe1f11b=_0xb93ce;this['_data']=_0x59a22c,this['particleSystem']&&this['particleSystem'][_0xe1f11b(0x244)](),this[_0xe1f11b(0x2a3)]=new ParticleSystem(this['scene']['context'],_0x59a22c,this['getOptions'](),this[_0xe1f11b(0x29a)]),this['addPrimitives']();}[_0xb93ce(0x25f)](_0x5b847a,_0x5bf910){const _0x38e147=_0xb93ce;if(_0x5b847a)for(const _0x2a230b in _0x5b847a){this[_0x2a230b]=_0x5b847a[_0x2a230b];}this['particleSystem']&&this['particleSystem']['setOptions'](this[_0x38e147(0x216)]());}['getOptions'](){const _0x10281a=_0xb93ce,_0x4da112=Math['ceil'](Math[_0x10281a(0x255)](this['particlesNumber']));return this['particlesNumber']=_0x4da112*_0x4da112,{'particlesTextureSize':_0x4da112,'maxParticles':this['particlesNumber'],'particleHeight':this['fixedHeight'],'fadeOpacity':this[_0x10281a(0x264)],'dropRate':this['dropRate'],'dropRateBump':this[_0x10281a(0x276)],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this[_0x10281a(0x227)]};}['addPrimitives'](){const _0x18cf76=_0xb93ce;this['primitives']['add'](this[_0x18cf76(0x2a3)][_0x18cf76(0x2c1)]['primitives']['getWind']),this[_0x18cf76(0x21e)]['add'](this['particleSystem']['particlesComputing'][_0x18cf76(0x21e)][_0x18cf76(0x1ef)]),this['primitives'][_0x18cf76(0x22b)](this['particleSystem']['particlesComputing']['primitives'][_0x18cf76(0x1e5)]),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives']['postProcessingPosition']),this['primitives'][_0x18cf76(0x22b)](this['particleSystem']['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['segments']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives'][_0x18cf76(0x2b2)]),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives'][_0x18cf76(0x261)]);}['updateViewerParameters'](){const _0x3f09a4=_0xb93ce;let _0x2333ee=this[_0x3f09a4(0x2af)][_0x3f09a4(0x202)](this['scene']['globe']['ellipsoid']);if(!_0x2333ee){const _0x4c8ee8=this['_map']['getExtent']();_0x2333ee=Cesium$1['Rectangle']['fromDegrees'](_0x4c8ee8[_0x3f09a4(0x23c)],_0x4c8ee8[_0x3f09a4(0x21a)],_0x4c8ee8['xmax'],_0x4c8ee8[_0x3f09a4(0x223)]);}const _0x2843c7=Util['viewRectangleToLonLatRange'](_0x2333ee);this[_0x3f09a4(0x29a)]['lonRange']['x']=_0x2843c7['lon']['min'],this[_0x3f09a4(0x29a)]['lonRange']['y']=_0x2843c7[_0x3f09a4(0x2b9)]['max'],this['viewerParameters']['latRange']['x']=_0x2843c7['lat'][_0x3f09a4(0x29b)],this['viewerParameters']['latRange']['y']=_0x2843c7['lat'][_0x3f09a4(0x272)];const _0x1e6344=this[_0x3f09a4(0x2af)]['getPixelSize'](this['globeBoundingSphere'],this['scene']['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0x1e6344>0x0&&(this['viewerParameters']['pixelSize']=_0x1e6344);}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace[_0xb93ce(0x27d)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this['age']=null;}[_0xb93ce(0x244)](){for(const _0x4df18e in this){delete this[_0x4df18e];}}}class CanvasWindField{constructor(_0x5b0837){this['setOptions'](_0x5b0837);}get[_0xb93ce(0x286)](){const _0x247c39=_0xb93ce;return this[_0x247c39(0x1eb)];}set['speedRate'](_0x39ad03){const _0x359939=_0xb93ce;this['_speedRate']=(0x64-(_0x39ad03>0x63?0x63:_0x39ad03))*0x64,this['_calc_speedRate']=[(this['xmax']-this[_0x359939(0x23c)])/this['_speedRate'],(this['ymax']-this[_0x359939(0x21a)])/this['_speedRate']];}get[_0xb93ce(0x265)](){return this['_maxAge'];}set['maxAge'](_0x3fc2b5){const _0x57413e=_0xb93ce;this[_0x57413e(0x2a6)]=_0x3fc2b5;}['setOptions'](_0x4ea6da){const _0x17e9b8=_0xb93ce;this[_0x17e9b8(0x2b3)]=_0x4ea6da,this[_0x17e9b8(0x265)]=_0x4ea6da['maxAge']||0x78,this['speedRate']=_0x4ea6da['speedRate']||0x32,this[_0x17e9b8(0x23a)]=[];const _0x2021d0=_0x4ea6da[_0x17e9b8(0x285)]||0x1000;for(let _0x3a3180=0x0;_0x3a3180<_0x2021d0;_0x3a3180++){const _0x4e9342=this[_0x17e9b8(0x1e0)](new CanvasParticle());this[_0x17e9b8(0x23a)]['push'](_0x4e9342);}}[_0xb93ce(0x1f3)](_0x96537a){const _0xbc9d69=_0xb93ce;this['rows']=_0x96537a['rows'],this['cols']=_0x96537a[_0xbc9d69(0x28b)],this['xmin']=_0x96537a['xmin'],this[_0xbc9d69(0x22d)]=_0x96537a['xmax'],this['ymin']=_0x96537a['ymin'],this[_0xbc9d69(0x223)]=_0x96537a['ymax'],this['grid']=[];const _0x530d5d=_0x96537a['udata'],_0x184a15=_0x96537a['vdata'];let _0x1d3a36=![];_0x530d5d['length']===this[_0xbc9d69(0x217)]&&_0x530d5d[0x0]['length']===this[_0xbc9d69(0x28b)]&&(_0x1d3a36=!![]);let _0x593a2e=0x0,_0x1cd2c1=null,_0x4e08e3=null;for(let _0x928688=0x0;_0x928688<this['rows'];_0x928688++){_0x1cd2c1=[];for(let _0x124f18=0x0;_0x124f18<this[_0xbc9d69(0x28b)];_0x124f18++,_0x593a2e++){_0x1d3a36?_0x4e08e3=this['_calcUV'](_0x530d5d[_0x928688][_0x124f18],_0x184a15[_0x928688][_0x124f18]):_0x4e08e3=this['_calcUV'](_0x530d5d[_0x593a2e],_0x184a15[_0x593a2e]),_0x1cd2c1[_0xbc9d69(0x251)](_0x4e08e3);}this['grid']['push'](_0x1cd2c1);}this['options']['reverseY']&&this['grid']['reverse']();}['clear'](){const _0x59b0b3=_0xb93ce;delete this[_0x59b0b3(0x217)],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this['ymax'],delete this['grid'],delete this[_0x59b0b3(0x23a)];}[_0xb93ce(0x241)](_0x15c966,_0x4abada){const _0x82298a=_0xb93ce,_0x233f64=(_0x15c966-this[_0x82298a(0x23c)])/(this['xmax']-this[_0x82298a(0x23c)])*(this['cols']-0x1),_0x3b0854=(this['ymax']-_0x4abada)/(this[_0x82298a(0x223)]-this['ymin'])*(this['rows']-0x1);return[_0x233f64,_0x3b0854];}[_0xb93ce(0x258)](_0x359d2b,_0x481f61){const _0x50e62f=_0xb93ce;if(_0x359d2b<0x0||_0x359d2b>=this['cols']||_0x481f61>=this[_0x50e62f(0x217)])return[0x0,0x0,0x0];const _0x546f1c=Math['floor'](_0x359d2b),_0x16076d=Math['floor'](_0x481f61);if(_0x546f1c===_0x359d2b&&_0x16076d===_0x481f61)return this[_0x50e62f(0x27b)][_0x481f61][_0x359d2b];const _0x32191d=_0x546f1c+0x1,_0x5c401c=_0x16076d+0x1,_0x31158c=this['getUVByXY'](_0x546f1c,_0x16076d),_0x7e5999=this[_0x50e62f(0x258)](_0x32191d,_0x16076d),_0x49541a=this[_0x50e62f(0x258)](_0x546f1c,_0x5c401c),_0x207312=this[_0x50e62f(0x258)](_0x32191d,_0x5c401c);let _0x4aafd8=null;try{_0x4aafd8=this['_bilinearInterpolation'](_0x359d2b-_0x546f1c,_0x481f61-_0x16076d,_0x31158c,_0x7e5999,_0x49541a,_0x207312);}catch(_0x23fc52){console[_0x50e62f(0x278)](_0x359d2b,_0x481f61);}return _0x4aafd8;}['_bilinearInterpolation'](_0x2d8829,_0x5616d2,_0x4a36b2,_0x4eac8e,_0x4eb3aa,_0x76b2ef){const _0x2dde72=0x1-_0x2d8829,_0x3e499c=0x1-_0x5616d2,_0x52778e=_0x2dde72*_0x3e499c,_0x183fa9=_0x2d8829*_0x3e499c,_0x37dc80=_0x2dde72*_0x5616d2,_0x762942=_0x2d8829*_0x5616d2,_0x29a7b8=_0x4a36b2[0x0]*_0x52778e+_0x4eac8e[0x0]*_0x183fa9+_0x4eb3aa[0x0]*_0x37dc80+_0x76b2ef[0x0]*_0x762942,_0x11eb92=_0x4a36b2[0x1]*_0x52778e+_0x4eac8e[0x1]*_0x183fa9+_0x4eb3aa[0x1]*_0x37dc80+_0x76b2ef[0x1]*_0x762942;return this['_calcUV'](_0x29a7b8,_0x11eb92);}['_calcUV'](_0x5c3aa3,_0x106ec8){const _0x1cc28e=_0xb93ce;return[+_0x5c3aa3,+_0x106ec8,Math[_0x1cc28e(0x255)](_0x5c3aa3*_0x5c3aa3+_0x106ec8*_0x106ec8)];}['getUVByPoint'](_0x1fdfc0,_0x2c9e11){const _0x1ca0b2=_0xb93ce;if(!this['isInExtent'](_0x1fdfc0,_0x2c9e11))return null;const _0x3d4ac1=this[_0x1ca0b2(0x241)](_0x1fdfc0,_0x2c9e11),_0xe5ce56=this['getUVByXY'](_0x3d4ac1[0x0],_0x3d4ac1[0x1]);return _0xe5ce56;}[_0xb93ce(0x28f)](_0xea4576,_0x281733){const _0x2c945a=_0xb93ce;return _0xea4576>=this[_0x2c945a(0x23c)]&&_0xea4576<=this[_0x2c945a(0x22d)]&&_0x281733>=this['ymin']&&_0x281733<=this['ymax']?!![]:![];}[_0xb93ce(0x283)](){const _0x235846=fRandomByfloat(this['xmin'],this['xmax']),_0x2620a9=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x2620a9,'lng':_0x235846};}['getParticles'](){const _0x23c024=_0xb93ce;let _0x54c524,_0x402b94,_0x46fd34;for(let _0xcf80a6=0x0,_0xf6a07f=this[_0x23c024(0x23a)][_0x23c024(0x254)];_0xcf80a6<_0xf6a07f;_0xcf80a6++){let _0x5af26f=this['particles'][_0xcf80a6];_0x5af26f['age']<=0x0&&(_0x5af26f=this['_randomParticle'](_0x5af26f));if(_0x5af26f['age']>0x0){const _0xc3dc09=_0x5af26f['tlng'],_0x402685=_0x5af26f['tlat'];_0x46fd34=this['getUVByPoint'](_0xc3dc09,_0x402685),_0x46fd34?(_0x54c524=_0xc3dc09+this['_calc_speedRate'][0x0]*_0x46fd34[0x0],_0x402b94=_0x402685+this[_0x23c024(0x1dc)][0x1]*_0x46fd34[0x1],_0x5af26f[_0x23c024(0x275)]=_0xc3dc09,_0x5af26f['lat']=_0x402685,_0x5af26f['tlng']=_0x54c524,_0x5af26f['tlat']=_0x402b94,_0x5af26f[_0x23c024(0x243)]--):_0x5af26f['age']=0x0;}}return this['particles'];}[_0xb93ce(0x1e0)](_0x52716d){const _0x221292=_0xb93ce;let _0x3ea6ce,_0x3668f9;for(let _0x17041b=0x0;_0x17041b<0x1e;_0x17041b++){_0x3ea6ce=this[_0x221292(0x283)](),_0x3668f9=this[_0x221292(0x229)](_0x3ea6ce['lng'],_0x3ea6ce[_0x221292(0x270)]);if(_0x3668f9&&_0x3668f9[0x2]>0x0)break;}if(!_0x3668f9)return _0x52716d;const _0xce19c5=_0x3ea6ce[_0x221292(0x275)]+this['_calc_speedRate'][0x0]*_0x3668f9[0x0],_0x4c2adf=_0x3ea6ce['lat']+this['_calc_speedRate'][0x1]*_0x3668f9[0x1];return _0x52716d['lng']=_0x3ea6ce['lng'],_0x52716d[_0x221292(0x270)]=_0x3ea6ce['lat'],_0x52716d['tlng']=_0xce19c5,_0x52716d['tlat']=_0x4c2adf,_0x52716d['age']=Math[_0x221292(0x21b)](Math['random']()*this['maxAge']),_0x52716d;}['destroy'](){for(const _0x2cf761 in this){delete this[_0x2cf761];}}}function _0x354a(){const _0x1b9c23=['globalAlpha','pixelSize','push','postProcessingPosition','pow','length','sqrt','30563951gCSTQt','context','getUVByXY','createTexture','container','ZERO','abs','sin','clearFramebuffers','_setOptionsHook','17403669DceTaP','screen','bindEvent','dropRate','fadeOpacity','maxAge','pointerEvents','applyViewerParameters','once','get','15506sVvzYh','mouseHidden','Math','PrimitiveType','data','particlesRendering','lat','Geometry','max','//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x,\x20360.0);\x0a\x20\x20\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20-90.0,\x2090.0);\x0a\x0a\x20\x20\x20\x20vec3\x20index3D\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20index3D.z\x20=\x20(lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z;\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205],\x20width\x20=\x203,\x20height\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x203\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x202\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWind(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20\x20\x20float\x20result\x20=\x20texture(windTexture,\x20normalizedIndex2D).r;\x0a\x20\x20\x20\x20return\x20result;\x0a}\x0a\x0aconst\x20mat4\x20kernelMatrix\x20=\x20mat4(\x0a\x20\x20\x20\x200.0,\x20-1.0,\x202.0,\x20-1.0,\x20//\x20first\x20column\x0a\x20\x20\x20\x202.0,\x200.0,\x20-5.0,\x203.0,\x20//\x20second\x20column\x0a\x20\x20\x20\x200.0,\x201.0,\x204.0,\x20-3.0,\x20//\x20third\x20column\x0a\x20\x20\x20\x200.0,\x200.0,\x20-1.0,\x201.0\x20//\x20fourth\x20column\x0a);\x0afloat\x20oneDimensionInterpolation(float\x20t,\x20float\x20p0,\x20float\x20p1,\x20float\x20p2,\x20float\x20p3)\x20{\x0a\x20\x20\x20\x20vec4\x20tVec4\x20=\x20vec4(1.0,\x20t,\x20t\x20*\x20t,\x20t\x20*\x20t\x20*\x20t);\x0a\x20\x20\x20\x20tVec4\x20=\x20tVec4\x20/\x202.0;\x0a\x20\x20\x20\x20vec4\x20pVec4\x20=\x20vec4(p0,\x20p1,\x20p2,\x20p3);\x0a\x20\x20\x20\x20return\x20dot((tVec4\x20*\x20kernelMatrix),\x20pVec4);\x0a}\x0a\x0afloat\x20calculateB(sampler2D\x20windTexture,\x20float\x20t,\x20float\x20lon,\x20float\x20lat,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20float\x20lon0\x20=\x20floor(lon)\x20-\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon1\x20=\x20floor(lon);\x0a\x20\x20\x20\x20float\x20lon2\x20=\x20floor(lon)\x20+\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon3\x20=\x20floor(lon)\x20+\x202.0\x20*\x20interval.x;\x0a\x0a\x20\x20\x20\x20float\x20p0\x20=\x20getWind(windTexture,\x20vec3(lon0,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p1\x20=\x20getWind(windTexture,\x20vec3(lon1,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p2\x20=\x20getWind(windTexture,\x20vec3(lon2,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p3\x20=\x20getWind(windTexture,\x20vec3(lon3,\x20lat,\x20lev));\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(t,\x20p0,\x20p1,\x20p2,\x20p3);\x0a}\x0a\x0afloat\x20interpolateOneTexture(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20\x20\x20float\x20lat0\x20=\x20floor(lat)\x20-\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat1\x20=\x20floor(lat);\x0a\x20\x20\x20\x20float\x20lat2\x20=\x20floor(lat)\x20+\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat3\x20=\x20floor(lat)\x20+\x202.0\x20*\x20interval.y;\x0a\x0a\x20\x20\x20\x20vec2\x20coefficient\x20=\x20lonLatLev.xy\x20-\x20floor(lonLatLev.xy);\x0a\x20\x20\x20\x20float\x20b0\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat0,\x20lev);\x0a\x20\x20\x20\x20float\x20b1\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat1,\x20lev);\x0a\x20\x20\x20\x20float\x20b2\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat2,\x20lev);\x0a\x20\x20\x20\x20float\x20b3\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat3,\x20lev);\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(coefficient.y,\x20b0,\x20b1,\x20b2,\x20b3);\x0a}\x0a\x0avec3\x20bicubic(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm\x0a\x20\x20\x20\x20float\x20u\x20=\x20interpolateOneTexture(U,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20v\x20=\x20interpolateOneTexture(V,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}\x0a','defineProperty','lng','dropRateBump','clear','log','134hzwqfL','position','grid','Cartesian3','layer','clampToLatitudeRange','rawRenderState','GeometryAttribute','refreshTimer','dimensions','getRandomLatLng','removeAll','particlesNumber','speedRate','DEPTH_COMPONENT','vertexShaderSource','CanvasWindLayer','LUMINANCE','cols','canvasResize','outputTexture','#ffffff','isInExtent','mouseUp','_createCanvas','unbindEvent','mode','worker','randomBetween','umax','CanvasWindField','geometry','uniformMap','viewerParameters','min','canvasContext','OPAQUE','_onMouseDownEvent','6uJmigj','forEach','show','currentParticlesPosition','particleSystem','BaseLayer','fromGeometry','_maxAge','canvasWidth','IDENTITY','commandToExecute','nextTrailsColor','_onMouseUpEvent','height','PI_OVER_THREE','commandType','camera','vdata','init','trails','options','none','_showHook','remove','nextParticlesSpeed','createParticlesTextures','lon','style','atan2','ClearCommand','array','setOptions','now','_onMap_preRenderEvent','particlesComputing','resize','FLOAT','west','_calc_speedRate','NEAREST','_mountedHook','commandList','_randomParticle','scene','windField','isDestroyed','preExecute','updatePosition','_drawLines','destination-in','frameTime','particlesTextures','updateViewerParameters','_speedRate','particlesWind','Color','THREE_PI_OVER_TWO','updateSpeed','postProcessingSpeed','_data','vertexArray','setDate','all','animateFrame','latRange','visibility','TRIANGLES','nextTrailsDepth','windTextures','segmentsColor','mouse_down','VertexArray','ALWAYS','clearCommand','_onMapWhellEvent','mod','computeViewRectangle','visible','getColorTexture','width','ShaderSource','reverseY','destroyParticlesTextures','1239mSRaQe','redraw','GeometryAttributes','pointer-events','toDegrees','nextTrails','SceneMode','colorTable','framebuffers','Draw','BufferUsage','preRender','color','getOptions','rows','_onMouseMoveEvent','Cesium','ymin','round','TWO_PI','clientWidth','primitives','umin','PixelDatatype','EllipsoidalOccluder','_map','ymax','segments','createRenderingFramebuffers','bind','colors','STATIC_DRAW','getUVByPoint','wheel','add','addEventListener','xmax','refreshParticles','lev','off','EventType','PixelFormat','createCommand','fragmentShaderSource','clientHeight','SCENE3D','shaderProgram','initWorker','create','particles','3489941dBUiYS','xmin','mouseMove','LINEAR','3108145Ecktao','8452WyNvlx','toGridXY','windData','age','destroy','particlesTextureSize','depthTexture','mouse_move','PI_OVER_TWO','canvas','8QalAjF','textures','keys','attributeLocations','18633520sDVzcQ'];_0x354a=function(){return _0x1b9c23;};return _0x354a();}function fRandomByfloat(_0x4a902c,_0x5a79ce){return _0x4a902c+Math['random']()*(_0x5a79ce-_0x4a902c);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer'][_0xb93ce(0x2a4)];class CanvasWindLayer extends BaseLayer{constructor(_0x4f996b={}){const _0x2ab08c=_0xb93ce;super(_0x4f996b),this[_0x2ab08c(0x25f)](_0x4f996b),this['canvas']=null;}['_setOptionsHook'](_0x493ee9,_0x24fc69){const _0x4726f0=_0xb93ce;this['frameTime']=0x3e8/(_0x493ee9['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x493ee9[_0x4726f0(0x215)]||_0x4726f0(0x28e),this['lineWidth']=_0x493ee9['lineWidth']||0x1,this['fixedHeight']=_0x493ee9['fixedHeight']??0x0,this[_0x4726f0(0x207)]=_0x493ee9[_0x4726f0(0x207)]??![],this['windField']&&this['windField']['setOptions'](_0x493ee9);}get['layer'](){return this['canvas'];}get['canvasWidth'](){const _0x175082=_0xb93ce;return this['_map']['scene'][_0x175082(0x249)]['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set[_0xb93ce(0x266)](_0x2223ec){const _0x3fd622=_0xb93ce;this['_pointerEvents']=_0x2223ec;if(!this['canvas'])return;_0x2223ec?this['canvas']['style'][_0x3fd622(0x20c)]=_0x3fd622(0x1f4):this['canvas']['style']['pointer-events']='none';}get['particlesNumber'](){return this['options']['particlesNumber'];}set[_0xb93ce(0x285)](_0x251018){const _0x518fcd=_0xb93ce;this[_0x518fcd(0x2b3)]['particlesNumber']=_0x251018,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){const _0x32ab52=_0xb93ce;return this[_0x32ab52(0x2b3)]['speedRate'];}set['speedRate'](_0x3fb2f9){const _0x55e907=_0xb93ce;this[_0x55e907(0x2b3)][_0x55e907(0x286)]=_0x3fb2f9,this['windField']&&(this['windField']['speedRate']=_0x3fb2f9);}get[_0xb93ce(0x265)](){const _0x578a67=_0xb93ce;return this['options'][_0x578a67(0x265)];}set['maxAge'](_0x91d3d0){const _0x1f3126=_0xb93ce;this['options'][_0x1f3126(0x265)]=_0x91d3d0,this['windField']&&(this['windField'][_0x1f3126(0x265)]=_0x91d3d0);}get['data'](){return this['windData'];}set['data'](_0x398f54){this['setData'](_0x398f54);}[_0xb93ce(0x2b5)](_0x3ca4d2){const _0x372c71=_0xb93ce;_0x3ca4d2?this['_addedHook']():(this[_0x372c71(0x242)]&&(this['options']['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){const _0x24a44c=_0xb93ce;this[_0x24a44c(0x2b3)]['worker']?this['initWorker']():this['windField']=new CanvasWindField(this[_0x24a44c(0x2b3)]);}['_addedHook'](){const _0x64b37c=_0xb93ce;this['canvas']=this[_0x64b37c(0x291)](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this[_0x64b37c(0x262)](),this['options'][_0x64b37c(0x26e)]&&this['setData'](this['options'][_0x64b37c(0x26e)]);}['_removedHook'](){const _0x57f488=_0xb93ce;this['clear'](),this[_0x57f488(0x292)](),this['canvas']&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x4b3b04=_0xb93ce,_0x5bc367=mars3d__namespace['DomUtil'][_0x4b3b04(0x239)]('canvas','mars3d-canvasWind',this['_map'][_0x4b3b04(0x25a)]);return _0x5bc367[_0x4b3b04(0x2ba)][_0x4b3b04(0x27a)]='absolute',_0x5bc367[_0x4b3b04(0x2ba)]['top']='0px',_0x5bc367['style']['left']='0px',_0x5bc367['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',_0x5bc367[_0x4b3b04(0x2ba)]['height']=this['_map'][_0x4b3b04(0x1e1)]['canvas'][_0x4b3b04(0x235)]+'px',_0x5bc367[_0x4b3b04(0x2ba)]['pointerEvents']=this['_pointerEvents']?'auto':_0x4b3b04(0x2b4),_0x5bc367[_0x4b3b04(0x2ba)]['zIndex']=this[_0x4b3b04(0x2b3)]['zIndex']??0x9,_0x5bc367['width']=this['_map'][_0x4b3b04(0x1e1)][_0x4b3b04(0x249)]['clientWidth'],_0x5bc367['height']=this['_map']['scene'][_0x4b3b04(0x249)]['clientHeight'],_0x5bc367;}['resize'](){const _0x43c0f4=_0xb93ce;this['canvas']&&(this['canvas']['style']['width']=this['_map'][_0x43c0f4(0x1e1)]['canvas'][_0x43c0f4(0x21d)]+'px',this['canvas']['style'][_0x43c0f4(0x2ac)]=this['_map']['scene']['canvas'][_0x43c0f4(0x235)]+'px',this[_0x43c0f4(0x249)][_0x43c0f4(0x205)]=this['_map']['scene']['canvas'][_0x43c0f4(0x21d)],this[_0x43c0f4(0x249)]['height']=this['_map'][_0x43c0f4(0x1e1)][_0x43c0f4(0x249)][_0x43c0f4(0x235)]);}['bindEvent'](){const _0x31be5f=_0xb93ce,_0x160d81=this;let _0x2b5a6c=Date[_0x31be5f(0x2bf)]();(function _0x2c1353(){const _0x506122=_0x31be5f;_0x160d81[_0x506122(0x1f5)]=window['requestAnimationFrame'](_0x2c1353);if(_0x160d81['show']&&_0x160d81['windField']){const _0x583298=Date['now'](),_0x4fee85=_0x583298-_0x2b5a6c;_0x4fee85>_0x160d81[_0x506122(0x1e8)]&&(_0x2b5a6c=_0x583298-_0x4fee85%_0x160d81['frameTime'],_0x160d81['update']());}}(),window['addEventListener'](_0x31be5f(0x2c2),this['resize'][_0x31be5f(0x226)](this),![]),this['mouse_down']=![],this[_0x31be5f(0x247)]=![],this[_0x31be5f(0x2b3)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace[_0x31be5f(0x231)]['wheel'],this[_0x31be5f(0x200)],this),this['_map']['on'](mars3d__namespace[_0x31be5f(0x231)]['mouseDown'],this['_onMouseDownEvent'],this),this[_0x31be5f(0x222)]['on'](mars3d__namespace[_0x31be5f(0x231)]['mouseUp'],this[_0x31be5f(0x2ab)],this)));}['unbindEvent'](){const _0x1a018d=_0xb93ce;window['cancelAnimationFrame'](this['animateFrame']),delete this[_0x1a018d(0x1f5)],window['removeEventListener'](_0x1a018d(0x2c2),this[_0x1a018d(0x2c2)]),this['options'][_0x1a018d(0x26b)]&&(this['_map']['off'](mars3d__namespace['EventType'][_0x1a018d(0x22a)],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this[_0x1a018d(0x29e)],this),this['_map']['off'](mars3d__namespace['EventType'][_0x1a018d(0x290)],this['_onMouseUpEvent'],this),this['_map'][_0x1a018d(0x230)](mars3d__namespace['EventType'][_0x1a018d(0x23d)],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x346fc3){const _0x58f8c2=_0xb93ce;clearTimeout(this[_0x58f8c2(0x281)]);if(!this[_0x58f8c2(0x2a1)]||!this['canvas'])return;this['canvas']['style'][_0x58f8c2(0x1f7)]='hidden',this['refreshTimer']=setTimeout(()=>{const _0x3f092c=_0x58f8c2;if(!this['show'])return;this['redraw'](),this['canvas']['style']['visibility']=_0x3f092c(0x203);},0xc8);}['_onMouseDownEvent'](_0xe3ffbc){const _0x47ec3a=_0xb93ce;this['mouse_down']=!![],this['_map']['off'](mars3d__namespace[_0x47ec3a(0x231)]['mouseMove'],this[_0x47ec3a(0x218)],this),this['_map']['on'](mars3d__namespace[_0x47ec3a(0x231)]['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x4d9955){const _0x1acf13=_0xb93ce;if(!this['show']||!this[_0x1acf13(0x249)])return;this['mouse_down']&&(this['canvas'][_0x1acf13(0x2ba)]['visibility']='hidden',this['mouse_move']=!![]);}[_0xb93ce(0x2ab)](_0x5230b2){const _0x4fd1f0=_0xb93ce;if(!this['show']||!this['canvas'])return;this['_map'][_0x4fd1f0(0x230)](mars3d__namespace['EventType'][_0x4fd1f0(0x23d)],this[_0x4fd1f0(0x218)],this),this['mouse_down']&&this[_0x4fd1f0(0x247)]&&this['redraw'](),this['canvas']['style']['visibility']='visible',this[_0x4fd1f0(0x1fc)]=![],this['mouse_move']=![];}['setData'](_0x5c9462){const _0x3faf4a=_0xb93ce;this[_0x3faf4a(0x277)](),this['windData']=_0x5c9462,this['windField']['setDate'](_0x5c9462),this['redraw']();}['redraw'](){const _0x415c48=_0xb93ce;if(!this['show'])return;this[_0x415c48(0x1e2)]['setOptions'](this[_0x415c48(0x2b3)]),this['update']();}['update'](){const _0x3b66eb=_0xb93ce;if(this['_updateIng'])return;this['_updateIng']=!![];if(this['worker'])this['windField']['update']();else{const _0x1986f1=this['windField']['getParticles']();this[_0x3b66eb(0x1e6)](_0x1986f1);}this['_updateIng']=![];}['_drawLines'](_0x429a70){const _0x1c9fbf=_0xb93ce;this['canvasContext']['globalCompositeOperation']=_0x1c9fbf(0x1e7),this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter',this['canvasContext'][_0x1c9fbf(0x24f)]=0.9,this[_0x1c9fbf(0x29c)]['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this[_0x1c9fbf(0x215)];const _0x535336=this[_0x1c9fbf(0x222)]['scene'][_0x1c9fbf(0x293)]!==Cesium[_0x1c9fbf(0x20f)][_0x1c9fbf(0x236)],_0x47e018=this[_0x1c9fbf(0x2a7)]*0.25;for(let _0x26635b=0x0,_0x3b38d3=_0x429a70['length'];_0x26635b<_0x3b38d3;_0x26635b++){const _0x33974b=_0x429a70[_0x26635b],_0x1b41d8=this['_tomap'](_0x33974b['lng'],_0x33974b[_0x1c9fbf(0x270)],_0x33974b),_0x41e19=this['_tomap'](_0x33974b['tlng'],_0x33974b['tlat'],_0x33974b);if(!_0x1b41d8||!_0x41e19)continue;if(_0x535336&&Math[_0x1c9fbf(0x25c)](_0x1b41d8[0x0]-_0x41e19[0x0])>=_0x47e018)continue;this['canvasContext']['moveTo'](_0x1b41d8[0x0],_0x1b41d8[0x1]),this[_0x1c9fbf(0x29c)]['lineTo'](_0x41e19[0x0],_0x41e19[0x1]);}this['canvasContext']['stroke']();}['_tomap'](_0x2b949c,_0x2ce290,_0x40709d){const _0x352538=_0xb93ce,_0x105226=Cesium['Cartesian3']['fromDegrees'](_0x2b949c,_0x2ce290,this['fixedHeight']),_0x19690c=this[_0x352538(0x222)][_0x352538(0x1e1)];if(_0x19690c[_0x352538(0x293)]===Cesium['SceneMode'][_0x352538(0x236)]){const _0x31e7f8=new Cesium[(_0x352538(0x221))](_0x19690c['globe']['ellipsoid'],_0x19690c['camera']['positionWC']),_0x4014b6=_0x31e7f8['isPointVisible'](_0x105226);if(!_0x4014b6)return _0x40709d[_0x352538(0x243)]=0x0,null;}const _0xef1fb4=Cesium['SceneTransforms']['wgs84ToWindowCoordinates'](this[_0x352538(0x222)][_0x352538(0x1e1)],_0x105226);return _0xef1fb4?[_0xef1fb4['x'],_0xef1fb4['y']]:null;}['clear'](){this['windField']['clear'](),delete this['windData'];}[_0xb93ce(0x238)](){const _0x77804e=_0xb93ce;this['worker']=new Worker(this[_0x77804e(0x2b3)]['worker']),this['worker']['onmessage']=_0x5e5e7c=>{const _0x37857e=_0x77804e;this[_0x37857e(0x1e6)](_0x5e5e7c['data'][_0x37857e(0x23a)]),this['_updateIng2']=![];},this['windField']={'init':_0x491aa6=>{const _0x3a46bb=_0x77804e;this[_0x3a46bb(0x294)]['postMessage']({'type':_0x3a46bb(0x2b1),'options':_0x491aa6});},'setOptions':_0x57f422=>{this['worker']['postMessage']({'type':'setOptions','options':_0x57f422});},'setDate':_0x398864=>{this['worker']['postMessage']({'type':'setDate','data':_0x398864});},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![],this['worker']['postMessage']({'type':'update'});},'clear':()=>{const _0x21b371=_0x77804e;this[_0x21b371(0x294)]['postMessage']({'type':'clear'});}},this['windField']['init'](this['options']);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace[_0xb93ce(0x27d)][_0xb93ce(0x289)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports[_0xb93ce(0x297)]=CanvasWindField,exports[_0xb93ce(0x289)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
15
15
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.5.14",
3
+ "version": "3.5.15",
4
4
  "description": "Mars3D平台插件,支持气象 风向图 功能插件",
5
5
  "main": "dist/mars3d-wind.js",
6
6
  "files": [
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "peerDependencies": {},
10
10
  "devDependencies": {
11
- "mars3d": "~3.5.14"
11
+ "mars3d": "~3.5.15"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"