mars3d-wind 3.7.3 → 3.7.4

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.7.3
5
- * 编译日期:2024-02-05 15:49:39
4
+ * 版本信息:v3.7.4
5
+ * 编译日期:2024-02-23 17:33:51
6
6
  * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
7
  * 使用单位:免费公开版 ,2024-01-15
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 _0x413c5a=_0x4567;(function(_0x28ea2a,_0x78b1f0){const _0xa203cf=_0x4567,_0x4212a9=_0x28ea2a();while(!![]){try{const _0x8a16f9=parseInt(_0xa203cf(0x196))/0x1*(parseInt(_0xa203cf(0x123))/0x2)+parseInt(_0xa203cf(0x17c))/0x3*(parseInt(_0xa203cf(0x194))/0x4)+parseInt(_0xa203cf(0x188))/0x5*(parseInt(_0xa203cf(0x1c1))/0x6)+-parseInt(_0xa203cf(0x113))/0x7+-parseInt(_0xa203cf(0x13f))/0x8*(parseInt(_0xa203cf(0x1a1))/0x9)+parseInt(_0xa203cf(0x18e))/0xa+parseInt(_0xa203cf(0x112))/0xb;if(_0x8a16f9===_0x78b1f0)break;else _0x4212a9['push'](_0x4212a9['shift']());}catch(_0x29cae2){_0x4212a9['push'](_0x4212a9['shift']());}}}(_0x8f02,0xce592));function _interopNamespace(_0x209f7d){const _0x1d0043=_0x4567;if(_0x209f7d&&_0x209f7d['__esModule'])return _0x209f7d;var _0x485496=Object[_0x1d0043(0x15a)](null);return _0x209f7d&&Object['keys'](_0x209f7d)['forEach'](function(_0x2b24c7){const _0x5c29a0=_0x1d0043;if(_0x2b24c7!==_0x5c29a0(0x1ce)){var _0x5d40b5=Object['getOwnPropertyDescriptor'](_0x209f7d,_0x2b24c7);Object['defineProperty'](_0x485496,_0x2b24c7,_0x5d40b5['get']?_0x5d40b5:{'enumerable':!![],'get':function(){return _0x209f7d[_0x2b24c7];}});}}),_0x485496['default']=_0x209f7d,_0x485496;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace[_0x413c5a(0x19f)];function _0x8f02(){const _0x16ab66=['update','screen','clearFramebuffers','_onMouseMoveEvent','commandToExecute','cols','Cesium','height','15507mfvTfr','isPointVisible','visibility','max','destroyParticlesTextures','Math','top','bind','unbindEvent','onmessage','maxParticles','addEventListener','randomBetween','particlesComputing','west','ComponentDatatype','createSegmentsGeometry','mouseDown','context','TRIANGLES','lineWidth','mouseHidden','createFramebuffer','BoundingSphere','VertexArray','DEPTH_COMPONENT','primitives','latRange','addPrimitives','pointer-events','attributeLocations','updatePosition','36jqMrGs','viewerParameters','wind','nextTrails','createRenderingTextures','colors','canvas','segments','removeEventListener','_addedHook','wheel','scene','ellipsoid','default','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','bindEvent','destroy','tlat','speedFactor','frameTime','canvasContext','dimensions','uniformMap','postProcessingPosition','defined','FLOAT','random','rows','lng','commandType','xmin','ClearCommand','setOptions','createTexture','hidden','absolute','particlesNumber','fromCssColorString','toRadians','initWorker','speedRate','preExecute','DrawCommand','globeBoundingSphere','resize','depthMask','SceneMode','fromGeometry','nextParticlesSpeed','green','refreshParticles','particlesWind','fadeOpacity','options','19472398JOpBoe','8602930GVbMcO','setData','autoClear','currentTrails','colorTable','wgs84ToWindowCoordinates','refreshTimer','clientHeight','_speedRate','strokeStyle','lon','ymax','currentParticlesPosition','data','ShaderProgram','particleSystem','329948yLgSII','_data','tlng','redraw','outputTexture','_setOptionsHook','IDENTITY','windData','add','_onMouseDownEvent','_map','worker','pixelSize','BufferUsage','Sampler','GeometryAttributes','currentTrailsColor','PixelFormat','TWO_PI','auto','_drawLines','geometry','camera','globalCompositeOperation','getColorTexture','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','ShaderSource','xmax','3032AWQfni','getOptions','drawingBufferWidth','reverseY','drawingBufferHeight','TextureMagnificationFilter','off','particlesTextures','age','fromDegrees','udata','currentParticlesSpeed','style','postProcessingSpeed','getUVByPoint','_updateIng2','NEAREST','mouseUp','EventType','levmax','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','isDestroyed','array','clearCommand','Framebuffer','PrimitiveCollection','_onMouseUpEvent','create','floor','particlesTextureSize','vertexArray','lat','min','windField','mouse_down','moveTo','color','mouse_move','ymin','framebuffers','#ffffff','RGBA','setDate','Cartesian3','Color','framebuffer','maxAge','remove','dropRate','left','lev','Matrix4','length','_updateIng','Cartesian2','show','particlesRendering','Pass','pointerEvents','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','nextParticlesPosition','2808nRGHTg','particles','init','layer','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','fixedHeight','STATIC_DRAW','textures','fragmentShaderSource','globe','Compute','vdata','157255LYkjco','_maxAge','LINEAR','DISABLE_GL_POSITION_LOG_DEPTH','canvasHeight','push','3590150lOkBrq','canvasWidth','forEach','WindUtil','_onMapWhellEvent','fill','1044UnaIQJ','keys','1Xawpzs','mouseMove','sqrt'];_0x8f02=function(){return _0x16ab66;};return _0x8f02();}function getU(_0x3d72ea,_0xb01b64){const _0x39761c=_0x413c5a,_0x40290d=_0x3d72ea*Math['cos'](Cesium$7['Math'][_0x39761c(0x102)](_0xb01b64));return _0x40290d;}function getV(_0x3a1888,_0x2f909f){const _0x3e84eb=_0x3a1888*Math['sin'](Cesium$7['Math']['toRadians'](_0x2f909f));return _0x3e84eb;}function getSpeed(_0x3ffa16,_0x2495e4){const _0x53e583=Math['sqrt'](Math['pow'](_0x3ffa16,0x2)+Math['pow'](_0x2495e4,0x2));return _0x53e583;}function getDirection(_0x211587,_0x65b76a){let _0x59b1e0=Cesium$7['Math']['toDegrees'](Math['atan2'](_0x65b76a,_0x211587));return _0x59b1e0+=_0x59b1e0<0x0?0x168:0x0,_0x59b1e0;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x53d6cf){const _0x11a432=_0x413c5a;this[_0x11a432(0xf9)]=_0x53d6cf['commandType'],this['geometry']=_0x53d6cf[_0x11a432(0x138)],this['attributeLocations']=_0x53d6cf['attributeLocations'],this['primitiveType']=_0x53d6cf['primitiveType'],this[_0x11a432(0x1d7)]=_0x53d6cf['uniformMap'],this['vertexShaderSource']=_0x53d6cf['vertexShaderSource'],this['fragmentShaderSource']=_0x53d6cf[_0x11a432(0x184)],this['rawRenderState']=_0x53d6cf['rawRenderState'],this[_0x11a432(0x16c)]=_0x53d6cf['framebuffer'],this['outputTexture']=_0x53d6cf['outputTexture'],this['autoClear']=_0x53d6cf[_0x11a432(0x115)]??![],this['preExecute']=_0x53d6cf['preExecute'],this['show']=!![],this[_0x11a432(0x19d)]=undefined,this['clearCommand']=undefined,this[_0x11a432(0x115)]&&(this['clearCommand']=new Cesium$6['ClearCommand']({'color':new Cesium$6[(_0x11a432(0x16b))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x11a432(0x178)]['OPAQUE']}));}['createCommand'](_0x1dbed7){const _0x55c791=_0x413c5a;switch(this['commandType']){case'Draw':{const _0x4350b5=Cesium$6['VertexArray'][_0x55c791(0x10b)]({'context':_0x1dbed7,'geometry':this['geometry'],'attributeLocations':this[_0x55c791(0x1bf)],'bufferUsage':Cesium$6[_0x55c791(0x130)][_0x55c791(0x182)]}),_0x5503a2=Cesium$6[_0x55c791(0x121)]['fromCache']({'context':_0x1dbed7,'attributeLocations':this[_0x55c791(0x1bf)],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this[_0x55c791(0x184)]}),_0x35de09=Cesium$6['RenderState']['fromCache'](this['rawRenderState']);return new Cesium$6[(_0x55c791(0x106))]({'primitiveType':this['primitiveType'],'shaderProgram':_0x5503a2,'vertexArray':_0x4350b5,'modelMatrix':Cesium$6[_0x55c791(0x172)][_0x55c791(0x129)],'renderState':_0x35de09,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE'],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this['outputTexture'],'persists':!![]});}}}['setGeometry'](_0x986ebb,_0x531f8f){const _0xbf1b5a=_0x413c5a;this['geometry']=_0x531f8f;const _0x5b8ddf=Cesium$6[_0xbf1b5a(0x1b9)]['fromGeometry']({'context':_0x986ebb,'geometry':this[_0xbf1b5a(0x138)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6[_0xbf1b5a(0x130)]['STATIC_DRAW']});this[_0xbf1b5a(0x19d)]['vertexArray']=_0x5b8ddf;}['update'](_0x3b2e79){const _0x105899=_0x413c5a;if(!this['show'])return;if(_0x3b2e79['mode']!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6[_0x105899(0xf4)](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x3b2e79[_0x105899(0x1b3)])),Cesium$6[_0x105899(0xf4)](this[_0x105899(0x105)])&&this['preExecute'](),Cesium$6['defined'](this['clearCommand'])&&_0x3b2e79['commandList'][_0x105899(0x18d)](this['clearCommand']),_0x3b2e79['commandList']['push'](this['commandToExecute']);}[_0x413c5a(0x154)](){return![];}['destroy'](){const _0x3beb56=_0x413c5a;if(this['clearCommand']){var _0x3ea28a,_0x4e6cca;(_0x3ea28a=this['clearCommand'])!==null&&_0x3ea28a!==void 0x0&&_0x3ea28a['vertexArray']&&this['clearCommand']['vertexArray'][_0x3beb56(0x1d1)](),(_0x4e6cca=this['clearCommand'])!==null&&_0x4e6cca!==void 0x0&&_0x4e6cca['shaderProgram']&&this[_0x3beb56(0x156)]['shaderProgram'][_0x3beb56(0x1d1)](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this['commandToExecute']['shaderProgram']&&this['commandToExecute']['shaderProgram'][_0x3beb56(0x1d1)](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x4f6295=function(){const _0x4c09da=_0x4567,_0x25978f=new Cesium$5['Geometry']({'attributes':new Cesium$5[(_0x4c09da(0x132))]({'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[_0x4c09da(0x1b0)]['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x25978f;},_0xac0d06=function(_0xebb1b4,_0x52e161){if(Cesium$5['defined'](_0x52e161)){const _0x2fc240={};_0x2fc240['arrayBufferView']=_0x52e161,_0xebb1b4['source']=_0x2fc240;}const _0x42c220=new Cesium$5['Texture'](_0xebb1b4);return _0x42c220;},_0x2e6cb8=function(_0x241a94,_0xf00603,_0x3b2078){const _0x4d18d6=_0x4567,_0x474911=new Cesium$5[(_0x4d18d6(0x157))]({'context':_0x241a94,'colorTextures':[_0xf00603],'depthTexture':_0x3b2078});return _0x474911;},_0x318b77=function(_0x132d67){const _0x33bcc9=_0x4567,_0x1abbab=!![],_0x43bf6e=![],_0x378d1d={'viewport':_0x132d67['viewport'],'depthTest':_0x132d67['depthTest'],'depthMask':_0x132d67[_0x33bcc9(0x109)],'blending':_0x132d67['blending']},_0x49111d=Cesium$5['Appearance']['getDefaultRenderState'](_0x1abbab,_0x43bf6e,_0x378d1d);return _0x49111d;},_0x3fe9f3=function(_0x5e6b2d){const _0x150c54=_0x4567,_0xb4a50c={},_0x225f63=Cesium$5['Math']['mod'](_0x5e6b2d[_0x150c54(0x1af)],Cesium$5['Math']['TWO_PI']),_0x560301=Cesium$5['Math']['mod'](_0x5e6b2d['east'],Cesium$5[_0x150c54(0x1a6)][_0x150c54(0x135)]),_0x3121ea=_0x5e6b2d['width'];let _0x257c06,_0x5b40c4;_0x3121ea>Cesium$5[_0x150c54(0x1a6)]['THREE_PI_OVER_TWO']?(_0x257c06=0x0,_0x5b40c4=Cesium$5[_0x150c54(0x1a6)][_0x150c54(0x135)]):_0x560301-_0x225f63<_0x3121ea?(_0x257c06=_0x225f63,_0x5b40c4=_0x225f63+_0x3121ea):(_0x257c06=_0x225f63,_0x5b40c4=_0x560301);_0xb4a50c[_0x150c54(0x11d)]={'min':Cesium$5['Math']['toDegrees'](_0x257c06),'max':Cesium$5['Math']['toDegrees'](_0x5b40c4)};const _0x3c7921=_0x5e6b2d['south'],_0x498276=_0x5e6b2d['north'],_0x123cc6=_0x5e6b2d['height'],_0x320dd3=_0x123cc6>Cesium$5['Math']['PI']/0xc?_0x123cc6/0x2:0x0;let _0x5c43e5=Cesium$5[_0x150c54(0x1a6)]['clampToLatitudeRange'](_0x3c7921-_0x320dd3),_0x30970c=Cesium$5['Math']['clampToLatitudeRange'](_0x498276+_0x320dd3);return _0x5c43e5<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x5c43e5=-Cesium$5['Math']['PI_OVER_TWO']),_0x30970c>Cesium$5['Math']['PI_OVER_THREE']&&(_0x30970c=Cesium$5['Math']['PI_OVER_TWO']),_0xb4a50c['lat']={'min':Cesium$5[_0x150c54(0x1a6)]['toDegrees'](_0x5c43e5),'max':Cesium$5['Math']['toDegrees'](_0x30970c)},_0xb4a50c;};return{'getFullscreenQuad':_0x4f6295,'createTexture':_0xac0d06,'createFramebuffer':_0x2e6cb8,'createRawRenderState':_0x318b77,'viewRectangleToLonLatRange':_0x3fe9f3};}());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=_0x413c5a(0x13c),trailDraw_frag=_0x413c5a(0x153),screenDraw_frag=_0x413c5a(0x180);const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x16662f,_0x1bc162,_0xf10c3d,_0x123b95,_0x20ebc8){const _0x2b0760=_0x413c5a;this['createRenderingTextures'](_0x16662f,_0x1bc162,_0xf10c3d[_0x2b0760(0x1c6)]),this['createRenderingFramebuffers'](_0x16662f),this['createRenderingPrimitives'](_0x16662f,_0xf10c3d,_0x123b95,_0x20ebc8);}[_0x413c5a(0x1c5)](_0xc93f2b,_0x56bfde,_0x1f6bd9){const _0xa0f197=_0x413c5a,_0x252ff3={'context':_0xc93f2b,'width':_0xc93f2b['drawingBufferWidth'],'height':_0xc93f2b[_0xa0f197(0x143)],'pixelFormat':Cesium$4['PixelFormat'][_0xa0f197(0x168)],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_BYTE']},_0x432002={'context':_0xc93f2b,'width':_0xc93f2b['drawingBufferWidth'],'height':_0xc93f2b[_0xa0f197(0x143)],'pixelFormat':Cesium$4['PixelFormat'][_0xa0f197(0x1ba)],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x30d81d=_0x1f6bd9[_0xa0f197(0x173)],_0x4db9cf=new Float32Array(_0x30d81d*0x3);for(let _0x1276e2=0x0;_0x1276e2<_0x30d81d;_0x1276e2++){const _0x7ac276=Cesium$4['Color'][_0xa0f197(0x101)](_0x1f6bd9[_0x1276e2]);_0x4db9cf[0x3*_0x1276e2]=_0x7ac276['red'],_0x4db9cf[0x3*_0x1276e2+0x1]=_0x7ac276[_0xa0f197(0x10d)],_0x4db9cf[0x3*_0x1276e2+0x2]=_0x7ac276['blue'];}const _0x5e80bd={'context':_0xc93f2b,'width':_0x30d81d,'height':0x1,'pixelFormat':Cesium$4[_0xa0f197(0x134)]['RGB'],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4[(_0xa0f197(0x131))]({'minificationFilter':Cesium$4['TextureMinificationFilter'][_0xa0f197(0x18a)],'magnificationFilter':Cesium$4[_0xa0f197(0x144)]['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x252ff3),'segmentsDepth':Util[_0xa0f197(0xfd)](_0x432002),'currentTrailsColor':Util['createTexture'](_0x252ff3),'currentTrailsDepth':Util['createTexture'](_0x432002),'nextTrailsColor':Util['createTexture'](_0x252ff3),'nextTrailsDepth':Util[_0xa0f197(0xfd)](_0x432002),'colorTable':Util[_0xa0f197(0xfd)](_0x5e80bd,_0x4db9cf)};}['createRenderingFramebuffers'](_0x1252b8){const _0x25f77d=_0x413c5a;this['framebuffers']={'segments':Util[_0x25f77d(0x1b7)](_0x1252b8,this['textures']['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x1252b8,this['textures'][_0x25f77d(0x133)],this['textures']['currentTrailsDepth']),'nextTrails':Util[_0x25f77d(0x1b7)](_0x1252b8,this['textures']['nextTrailsColor'],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x843bea){const _0x4ae6ba=_0x413c5a,_0x3e62a2=0x4;let _0x432f42=[];for(let _0x42ca57=0x0;_0x42ca57<_0x843bea[_0x4ae6ba(0x15c)];_0x42ca57++){for(let _0x2c887a=0x0;_0x2c887a<_0x843bea['particlesTextureSize'];_0x2c887a++){for(let _0x136ab0=0x0;_0x136ab0<_0x3e62a2;_0x136ab0++){_0x432f42['push'](_0x42ca57/_0x843bea['particlesTextureSize']),_0x432f42[_0x4ae6ba(0x18d)](_0x2c887a/_0x843bea['particlesTextureSize']);}}}_0x432f42=new Float32Array(_0x432f42);let _0x1c2a4d=[];const _0x58193c=[-0x1,0x1],_0x50680e=[-0x1,0x1];for(let _0x2c5c4c=0x0;_0x2c5c4c<_0x843bea[_0x4ae6ba(0x1ab)];_0x2c5c4c++){for(let _0x10e2d2=0x0;_0x10e2d2<_0x3e62a2/0x2;_0x10e2d2++){for(let _0x18d6c5=0x0;_0x18d6c5<_0x3e62a2/0x2;_0x18d6c5++){_0x1c2a4d['push'](_0x58193c[_0x10e2d2]),_0x1c2a4d['push'](_0x50680e[_0x18d6c5]),_0x1c2a4d[_0x4ae6ba(0x18d)](0x0);}}}_0x1c2a4d=new Float32Array(_0x1c2a4d);const _0x542633=0x6*_0x843bea['maxParticles'],_0xe266a9=new Uint32Array(_0x542633);for(let _0x278fad=0x0,_0x49a3b6=0x0,_0xa9537d=0x0;_0x278fad<_0x843bea[_0x4ae6ba(0x1ab)];_0x278fad++){_0xe266a9[_0x49a3b6++]=_0xa9537d+0x0,_0xe266a9[_0x49a3b6++]=_0xa9537d+0x1,_0xe266a9[_0x49a3b6++]=_0xa9537d+0x2,_0xe266a9[_0x49a3b6++]=_0xa9537d+0x2,_0xe266a9[_0x49a3b6++]=_0xa9537d+0x1,_0xe266a9[_0x49a3b6++]=_0xa9537d+0x3,_0xa9537d+=0x4;}const _0x306605=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x432f42}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x1c2a4d})}),'indices':_0xe266a9});return _0x306605;}['createRenderingPrimitives'](_0x4fd62c,_0x12d747,_0x34d142,_0x47c542){const _0x1299c4=_0x413c5a,_0x239158=this;this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x1299c4(0x1b1)](_0x12d747),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){const _0x1b6ee7=_0x1299c4;return _0x47c542[_0x1b6ee7(0x146)]['currentParticlesPosition'];},'postProcessingPosition':function(){const _0x3310a7=_0x1299c4;return _0x47c542[_0x3310a7(0x146)]['postProcessingPosition'];},'postProcessingSpeed':function(){const _0x28cd9a=_0x1299c4;return _0x47c542[_0x28cd9a(0x146)][_0x28cd9a(0x14c)];},'colorTable':function(){const _0x91d081=_0x1299c4;return _0x239158['textures'][_0x91d081(0x117)];},'aspect':function(){const _0x12ce06=_0x1299c4;return _0x4fd62c[_0x12ce06(0x141)]/_0x4fd62c[_0x12ce06(0x143)];},'pixelSize':function(){return _0x34d142['pixelSize'];},'lineWidth':function(){return _0x12d747['lineWidth'];},'particleHeight':function(){return _0x12d747['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']['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x239158['textures']['segmentsColor'];},'segmentsDepthTexture':function(){return _0x239158['textures']['segmentsDepth'];},'currentTrailsColor':function(){const _0x494fde=_0x1299c4;return _0x239158['framebuffers']['currentTrails'][_0x494fde(0x13b)](0x0);},'trailsDepthTexture':function(){const _0x5bf762=_0x1299c4;return _0x239158[_0x5bf762(0x166)]['currentTrails']['depthTexture'];},'fadeOpacity':function(){const _0x26c36e=_0x1299c4;return _0x12d747[_0x26c36e(0x110)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x1299c4(0x18b)],'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']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0xd901e8=_0x1299c4,_0x3bf5a4=_0x239158['framebuffers'][_0xd901e8(0x116)];_0x239158['framebuffers'][_0xd901e8(0x116)]=_0x239158['framebuffers'][_0xd901e8(0x1c4)],_0x239158[_0xd901e8(0x166)]['nextTrails']=_0x3bf5a4,_0x239158['primitives']['trails']['commandToExecute']['framebuffer']=_0x239158['framebuffers']['nextTrails'],_0x239158[_0xd901e8(0x1bb)]['trails']['clearCommand']['framebuffer']=_0x239158[_0xd901e8(0x166)]['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType'][_0x1299c4(0x1b4)],'uniformMap':{'trailsColorTexture':function(){const _0x2b849b=_0x1299c4;return _0x239158[_0x2b849b(0x166)][_0x2b849b(0x1c4)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x239158['framebuffers']['nextTrails']['depthTexture'];}},'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':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag='//\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',updateSpeed_frag=_0x413c5a(0x1cf),updatePosition_frag=_0x413c5a(0x17a),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(_0x38b3ee,_0x10b192,_0x4c4cad,_0xd5d5da){const _0x3d0828=_0x413c5a;this[_0x3d0828(0x120)]=_0x10b192,this['createWindTextures'](_0x38b3ee,_0x10b192),this['createParticlesTextures'](_0x38b3ee,_0x4c4cad,_0xd5d5da),this['createComputingPrimitives'](_0x10b192,_0x4c4cad,_0xd5d5da);}['createWindTextures'](_0x2e6c99,_0x3f3c21){const _0x2bcb84=_0x413c5a,_0x5a1db9={'context':_0x2e6c99,'width':_0x3f3c21[_0x2bcb84(0x1d6)]['lon'],'height':_0x3f3c21['dimensions']['lat']*(_0x3f3c21[_0x2bcb84(0x1d6)]['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x2bcb84(0x14f)]})};this['windTextures']={'U':Util[_0x2bcb84(0xfd)](_0x5a1db9,_0x3f3c21['U'][_0x2bcb84(0x155)]),'V':Util['createTexture'](_0x5a1db9,_0x3f3c21['V']['array'])};}['createParticlesTextures'](_0x5b07da,_0x2589fb,_0x5b7e1c){const _0x1e3a23=_0x413c5a,_0x1e05f7={'context':_0x5b07da,'width':_0x2589fb[_0x1e3a23(0x15c)],'height':_0x2589fb['particlesTextureSize'],'pixelFormat':Cesium$3[_0x1e3a23(0x134)]['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype'][_0x1e3a23(0xf5)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3[_0x1e3a23(0x144)]['NEAREST']})},_0x540a49=this['randomizeParticles'](_0x2589fb['maxParticles'],_0x5b7e1c),_0x24a3ee=new Float32Array(0x4*_0x2589fb['maxParticles'])[_0x1e3a23(0x193)](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x1e05f7),'currentParticlesPosition':Util['createTexture'](_0x1e05f7,_0x540a49),'nextParticlesPosition':Util[_0x1e3a23(0xfd)](_0x1e05f7,_0x540a49),'currentParticlesSpeed':Util['createTexture'](_0x1e05f7,_0x24a3ee),'nextParticlesSpeed':Util['createTexture'](_0x1e05f7,_0x24a3ee),'postProcessingPosition':Util['createTexture'](_0x1e05f7,_0x540a49),'postProcessingSpeed':Util['createTexture'](_0x1e05f7,_0x24a3ee)};}['randomizeParticles'](_0x51c620,_0x4dfc73){const _0x48e17b=_0x413c5a,_0x2114d5=new Float32Array(0x4*_0x51c620);for(let _0x3ba687=0x0;_0x3ba687<_0x51c620;_0x3ba687++){_0x2114d5[0x4*_0x3ba687]=Cesium$3['Math']['randomBetween'](_0x4dfc73['lonRange']['x'],_0x4dfc73['lonRange']['y']),_0x2114d5[0x4*_0x3ba687+0x1]=Cesium$3['Math']['randomBetween'](_0x4dfc73['latRange']['x'],_0x4dfc73['latRange']['y']),_0x2114d5[0x4*_0x3ba687+0x2]=Cesium$3['Math'][_0x48e17b(0x1ad)](this['data']['lev']['min'],this[_0x48e17b(0x120)][_0x48e17b(0x171)]['max']),_0x2114d5[0x4*_0x3ba687+0x3]=0x0;}return _0x2114d5;}[_0x413c5a(0x1a5)](){const _0x4ecdc0=_0x413c5a;Object[_0x4ecdc0(0x195)](this['particlesTextures'])[_0x4ecdc0(0x190)](_0x17a229=>{this['particlesTextures'][_0x17a229]['destroy']();});}['createComputingPrimitives'](_0x5bc9cd,_0x1ea1a3,_0x419fab){const _0x1baae3=_0x413c5a,_0x419ad3=new Cesium$3['Cartesian3'](_0x5bc9cd[_0x1baae3(0x1d6)]['lon'],_0x5bc9cd['dimensions'][_0x1baae3(0x15e)],_0x5bc9cd['dimensions']['lev']),_0x9c9742=new Cesium$3[(_0x1baae3(0x16a))](_0x5bc9cd[_0x1baae3(0x11d)][_0x1baae3(0x15f)],_0x5bc9cd['lat'][_0x1baae3(0x15f)],_0x5bc9cd['lev'][_0x1baae3(0x15f)]),_0x10e5e7=new Cesium$3['Cartesian3'](_0x5bc9cd['lon']['max'],_0x5bc9cd['lat']['max'],_0x5bc9cd['lev']['max']),_0x1c71f5=new Cesium$3['Cartesian3']((_0x10e5e7['x']-_0x9c9742['x'])/(_0x419ad3['x']-0x1),(_0x10e5e7['y']-_0x9c9742['y'])/(_0x419ad3['y']-0x1),_0x419ad3['z']>0x1?(_0x10e5e7['z']-_0x9c9742['z'])/(_0x419ad3['z']-0x1):0x1),_0x1f828c=new Cesium$3['Cartesian2'](_0x5bc9cd['U']['min'],_0x5bc9cd['U']['max']),_0x9f00cf=new Cesium$3['Cartesian2'](_0x5bc9cd['V']['min'],_0x5bc9cd['V']['max']),_0x37fce4=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x37fce4['windTextures']['U'];},'V':function(){return _0x37fce4['windTextures']['V'];},'currentParticlesPosition':function(){return _0x37fce4['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x419ad3;},'minimum':function(){return _0x9c9742;},'maximum':function(){return _0x10e5e7;},'interval':function(){return _0x1c71f5;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x52f908=_0x1baae3;_0x37fce4['primitives']['getWind'][_0x52f908(0x19d)]['outputTexture']=_0x37fce4[_0x52f908(0x146)][_0x52f908(0x10f)];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x37fce4['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){return _0x37fce4['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x1f828c;},'vSpeedRange':function(){return _0x9f00cf;},'pixelSize':function(){const _0x2f8d2a=_0x1baae3;return _0x419fab[_0x2f8d2a(0x12f)];},'speedFactor':function(){return _0x1ea1a3['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this[_0x1baae3(0x146)]['nextParticlesSpeed'],'preExecute':function(){const _0x1b5361=_0x1baae3,_0x146916=_0x37fce4['particlesTextures'][_0x1b5361(0x14a)];_0x37fce4[_0x1b5361(0x146)]['currentParticlesSpeed']=_0x37fce4[_0x1b5361(0x146)]['postProcessingSpeed'],_0x37fce4[_0x1b5361(0x146)]['postProcessingSpeed']=_0x146916,_0x37fce4[_0x1b5361(0x1bb)]['updateSpeed']['commandToExecute'][_0x1b5361(0x127)]=_0x37fce4['particlesTextures'][_0x1b5361(0x10c)];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){return _0x37fce4['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function(){return _0x37fce4['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function(){const _0x40a681=_0x1baae3,_0x55921f=_0x37fce4[_0x40a681(0x146)][_0x40a681(0x11f)];_0x37fce4['particlesTextures']['currentParticlesPosition']=_0x37fce4['particlesTextures']['postProcessingPosition'],_0x37fce4['particlesTextures']['postProcessingPosition']=_0x55921f,_0x37fce4['primitives'][_0x40a681(0x1c0)]['commandToExecute']['outputTexture']=_0x37fce4['particlesTextures'][_0x40a681(0x17b)];}}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x1baae3(0x186),'uniformMap':{'nextParticlesPosition':function(){const _0x403bf6=_0x1baae3;return _0x37fce4['particlesTextures'][_0x403bf6(0x17b)];},'nextParticlesSpeed':function(){const _0x5187c9=_0x1baae3;return _0x37fce4[_0x5187c9(0x146)]['nextParticlesSpeed'];},'lonRange':function(){return _0x419fab['lonRange'];},'latRange':function(){const _0x6171f3=_0x1baae3;return _0x419fab[_0x6171f3(0x1bc)];},'randomCoefficient':function(){const _0x27422d=Math['random']();return _0x27422d;},'dropRate':function(){const _0x46286f=_0x1baae3;return _0x1ea1a3[_0x46286f(0x16f)];},'dropRateBump':function(){return _0x1ea1a3['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){const _0x367411=_0x1baae3;_0x37fce4['primitives']['postProcessingPosition']['commandToExecute']['outputTexture']=_0x37fce4['particlesTextures'][_0x367411(0xf3)];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x4f72a5=_0x1baae3;return _0x37fce4['particlesTextures'][_0x4f72a5(0xf3)];},'nextParticlesSpeed':function(){const _0x158270=_0x1baae3;return _0x37fce4['particlesTextures'][_0x158270(0x10c)];}},'fragmentShaderSource':new Cesium$3[(_0x1baae3(0x13d))]({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x1baae3(0x14c)],'preExecute':function(){const _0x1be859=_0x1baae3;_0x37fce4['primitives']['postProcessingSpeed'][_0x1be859(0x19d)]['outputTexture']=_0x37fce4[_0x1be859(0x146)]['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x434fff,_0x59b254,_0x396cd9,_0x483467){const _0x14f64a=_0x413c5a;this['context']=_0x434fff,_0x59b254={..._0x59b254},_0x59b254[_0x14f64a(0x149)]&&_0x59b254['vdata']&&(_0x59b254['dimensions']={},_0x59b254['dimensions']['lon']=_0x59b254['cols'],_0x59b254[_0x14f64a(0x1d6)]['lat']=_0x59b254[_0x14f64a(0xf7)],_0x59b254['dimensions']['lev']=_0x59b254['lev']||0x1,_0x59b254['lon']={},_0x59b254[_0x14f64a(0x11d)]['min']=_0x59b254[_0x14f64a(0xfa)],_0x59b254['lon']['max']=_0x59b254['xmax'],_0x59b254['lat']={},_0x59b254['lat'][_0x14f64a(0x15f)]=_0x59b254['ymin'],_0x59b254['lat']['max']=_0x59b254['ymax'],_0x59b254['lev']={},_0x59b254['lev']['min']=_0x59b254['levmin']??0x1,_0x59b254['lev']['max']=_0x59b254[_0x14f64a(0x152)]??0x1,_0x59b254['U']={},_0x59b254['U'][_0x14f64a(0x155)]=new Float32Array(_0x59b254[_0x14f64a(0x149)]),_0x59b254['U']['min']=_0x59b254['umin']??Math[_0x14f64a(0x15f)](..._0x59b254['udata']),_0x59b254['U']['max']=_0x59b254['umax']??Math['max'](..._0x59b254[_0x14f64a(0x149)]),_0x59b254['V']={},_0x59b254['V'][_0x14f64a(0x155)]=new Float32Array(_0x59b254['vdata']),_0x59b254['V']['min']=_0x59b254['vmin']??Math[_0x14f64a(0x15f)](..._0x59b254[_0x14f64a(0x187)]),_0x59b254['V'][_0x14f64a(0x1a4)]=_0x59b254['vmax']??Math['max'](..._0x59b254['vdata'])),this['data']=_0x59b254,this['options']=_0x396cd9,this['viewerParameters']=_0x483467,this['particlesComputing']=new ParticlesComputing(this[_0x14f64a(0x1b3)],this['data'],this[_0x14f64a(0x111)],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0x14f64a(0x120)],this['options'],this[_0x14f64a(0x1c2)],this['particlesComputing']);}['canvasResize'](_0x4309ab){const _0x50f319=_0x413c5a;this[_0x50f319(0x1ae)]['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x34cc7f=>{const _0x19f9b2=_0x50f319;this[_0x19f9b2(0x1ae)]['windTextures'][_0x34cc7f]['destroy']();}),this['particlesRendering'][_0x50f319(0x183)]['colorTable']['destroy'](),Object[_0x50f319(0x195)](this['particlesRendering']['framebuffers'])['forEach'](_0x540e01=>{const _0x122c3c=_0x50f319;this['particlesRendering'][_0x122c3c(0x166)][_0x540e01]['destroy']();}),this[_0x50f319(0x1b3)]=_0x4309ab,this[_0x50f319(0x1ae)]=new ParticlesComputing(this[_0x50f319(0x1b3)],this['data'],this['options'],this['viewerParameters']),this[_0x50f319(0x177)]=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}[_0x413c5a(0x19b)](){const _0x827493=_0x413c5a,_0x2f1c50=new Cesium$2[(_0x827493(0xfb))]({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x827493(0x178)]['OPAQUE']});Object[_0x827493(0x195)](this['particlesRendering']['framebuffers'])[_0x827493(0x190)](_0x4c8d7c=>{const _0x20653f=_0x827493;_0x2f1c50['framebuffer']=this[_0x20653f(0x177)]['framebuffers'][_0x4c8d7c],_0x2f1c50['execute'](this['context']);});}['refreshParticles'](_0x24c8a1){const _0x1218c6=_0x413c5a;this[_0x1218c6(0x19b)](),this['particlesComputing'][_0x1218c6(0x1a5)](),this['particlesComputing']['createParticlesTextures'](this['context'],this['options'],this['viewerParameters']);if(_0x24c8a1){var _0x3b5bd5;const _0x3663e1=this['particlesRendering']['createSegmentsGeometry'](this['options']);this['particlesRendering']['primitives']['segments'][_0x1218c6(0x138)]=_0x3663e1;const _0x482423=Cesium$2['VertexArray']['fromGeometry']({'context':this['context'],'geometry':_0x3663e1,'attributeLocations':this['particlesRendering']['primitives']['segments']['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x3b5bd5=this['particlesRendering']['primitives'])!==null&&_0x3b5bd5!==void 0x0&&(_0x3b5bd5=_0x3b5bd5['segments'])!==null&&_0x3b5bd5!==void 0x0&&_0x3b5bd5['commandToExecute']&&(this['particlesRendering']['primitives']['segments']['commandToExecute'][_0x1218c6(0x15d)]=_0x482423);}}['setOptions'](_0x48cdf8){const _0x5f1457=_0x413c5a;let _0x1d7d4f=![];this[_0x5f1457(0x111)]['maxParticles']!==_0x48cdf8['maxParticles']&&(_0x1d7d4f=!![]),Object['keys'](_0x48cdf8)[_0x5f1457(0x190)](_0x399155=>{this['options'][_0x399155]=_0x48cdf8[_0x399155];}),this['refreshParticles'](_0x1d7d4f);}['applyViewerParameters'](_0x46afc1){const _0x54e6a5=_0x413c5a;Object['keys'](_0x46afc1)[_0x54e6a5(0x190)](_0x5ed56a=>{const _0x510182=_0x54e6a5;this[_0x510182(0x1c2)][_0x5ed56a]=_0x46afc1[_0x5ed56a];}),this[_0x54e6a5(0x10e)](![]);}['destroy'](){const _0x213908=_0x413c5a;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x2b4b3f=>{this['particlesComputing']['windTextures'][_0x2b4b3f]['destroy']();}),this[_0x213908(0x177)]['textures']['colorTable'][_0x213908(0x1d1)](),Object['keys'](this[_0x213908(0x177)]['framebuffers'])['forEach'](_0x9ff4e1=>{this['particlesRendering']['framebuffers'][_0x9ff4e1]['destroy']();});for(const _0x3838f5 in this){delete this[_0x3838f5];}}}const Cesium$1=mars3d__namespace[_0x413c5a(0x19f)],BaseLayer$1=mars3d__namespace[_0x413c5a(0x17f)]['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)']};function _0x4567(_0x3cf4b2,_0x505205){const _0x8f02a0=_0x8f02();return _0x4567=function(_0x4567e1,_0x34143b){_0x4567e1=_0x4567e1-0xf3;let _0x533bcb=_0x8f02a0[_0x4567e1];return _0x533bcb;},_0x4567(_0x3cf4b2,_0x505205);}class WindLayer extends BaseLayer$1{constructor(_0x16c6a5={}){_0x16c6a5={...DEF_OPTIONS,..._0x16c6a5},super(_0x16c6a5),this['_setOptionsHook'](_0x16c6a5);}get[_0x413c5a(0x17f)](){return this['primitives'];}get['data'](){return this['_data'];}set['data'](_0x5b48dd){this['setData'](_0x5b48dd);}get['colors'](){const _0x34ade5=_0x413c5a;return this[_0x34ade5(0x111)]['colors'];}set[_0x413c5a(0x1c6)](_0x52502f){const _0xa9f8e7=_0x413c5a;this['options']['colors']=_0x52502f,this[_0xa9f8e7(0x122)]&&this['particleSystem']['setOptions']({'colors':_0x52502f}),this['resize']();}['_mountedHook'](){}['_addedHook'](){const _0x10022b=_0x413c5a;this[_0x10022b(0x1cc)]=this['_map']['scene'],this['camera']=this[_0x10022b(0x12d)]['camera'],this['primitives']=new Cesium$1[(_0x10022b(0x158))](),this[_0x10022b(0x12d)][_0x10022b(0x1cc)][_0x10022b(0x1bb)]['add'](this[_0x10022b(0x1bb)]),this['viewerParameters']={'lonRange':new Cesium$1[(_0x10022b(0x175))](),'latRange':new Cesium$1[(_0x10022b(0x175))](),'pixelSize':0x0},this[_0x10022b(0x107)]=new Cesium$1[(_0x10022b(0x1b8))](Cesium$1[_0x10022b(0x16a)]['ZERO'],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this['resize'][_0x10022b(0x1a8)](this),![]),this[_0x10022b(0x161)]=![],this['mouse_move']=![],this[_0x10022b(0x12d)]['on'](mars3d__namespace['EventType'][_0x10022b(0x1cb)],this[_0x10022b(0x192)],this),this[_0x10022b(0x12d)]['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x10022b(0x12c)],this),this['_map']['on'](mars3d__namespace['EventType'][_0x10022b(0x150)],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x10022b(0x197)],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x10022b(0x114)](this[_0x10022b(0x124)]);}['_removedHook'](){const _0x57c58f=_0x413c5a;window['removeEventListener']('resize',this['resize']),this['_map']['off'](mars3d__namespace[_0x57c58f(0x151)]['preRender'],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map'][_0x57c58f(0x145)](mars3d__namespace['EventType'][_0x57c58f(0x1b2)],this[_0x57c58f(0x12c)],this),this['_map']['off'](mars3d__namespace['EventType'][_0x57c58f(0x150)],this[_0x57c58f(0x159)],this),this[_0x57c58f(0x12d)]['off'](mars3d__namespace['EventType'][_0x57c58f(0x197)],this[_0x57c58f(0x19c)],this),this['primitives']['removeAll'](),this[_0x57c58f(0x12d)][_0x57c58f(0x1cc)]['primitives'][_0x57c58f(0x16e)](this[_0x57c58f(0x1bb)]);}['resize'](){const _0xe1f04c=_0x413c5a;if(!this[_0xe1f04c(0x176)]||!this['particleSystem'])return;this[_0xe1f04c(0x1bb)]['show']=![],this['primitives']['removeAll'](),this['_map']['once'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this);}['_onMap_preRenderEvent'](_0x491e37){const _0x266e1f=_0x413c5a;this['particleSystem']['canvasResize'](this[_0x266e1f(0x1cc)]['context']),this[_0x266e1f(0x1bd)](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x5e7f12){const _0x11bb9b=_0x413c5a;clearTimeout(this[_0x11bb9b(0x119)]);if(!this[_0x11bb9b(0x176)]||!this['particleSystem'])return;this[_0x11bb9b(0x1bb)]['show']=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x32d1b2){const _0x1183a9=_0x413c5a;this[_0x1183a9(0x161)]=!![];}['_onMouseMoveEvent'](_0x114f43){const _0x2e2bb3=_0x413c5a;if(!this['show']||!this['particleSystem'])return;this[_0x2e2bb3(0x161)]&&(this['primitives'][_0x2e2bb3(0x176)]=![],this[_0x2e2bb3(0x164)]=!![]);}['_onMouseUpEvent'](_0x4a4a68){const _0x1c9c3e=_0x413c5a;if(!this[_0x1c9c3e(0x176)]||!this['particleSystem'])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['primitives'][_0x1c9c3e(0x176)]=!![],this[_0x1c9c3e(0x161)]=![],this['mouse_move']=![];}['redraw'](){if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this['primitives']['show']=!![];}['setData'](_0x5b124d){const _0x124089=_0x413c5a;this['_data']=_0x5b124d,this['particleSystem']&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this[_0x124089(0x1cc)]['context'],_0x5b124d,this['getOptions'](),this[_0x124089(0x1c2)]),this['addPrimitives']();}[_0x413c5a(0x128)](_0x302df0,_0x1223f5){const _0x3cf6c9=_0x413c5a;if(_0x302df0)for(const _0x1c1d5c in _0x302df0){this[_0x1c1d5c]=_0x302df0[_0x1c1d5c];}this['particleSystem']&&this['particleSystem']['setOptions'](this[_0x3cf6c9(0x140)]());}['getOptions'](){const _0x3a07fa=_0x413c5a,_0x5a9068=Math['ceil'](Math[_0x3a07fa(0x198)](this[_0x3a07fa(0x100)]));return this[_0x3a07fa(0x100)]=_0x5a9068*_0x5a9068,{'particlesTextureSize':_0x5a9068,'maxParticles':this['particlesNumber'],'particleHeight':this[_0x3a07fa(0x181)],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this[_0x3a07fa(0x1d3)],'lineWidth':this['lineWidth'],'colors':this['colors']};}[_0x413c5a(0x1bd)](){const _0x9e896=_0x413c5a;this[_0x9e896(0x1bb)]['add'](this[_0x9e896(0x122)]['particlesComputing'][_0x9e896(0x1bb)]['getWind']),this[_0x9e896(0x1bb)]['add'](this['particleSystem']['particlesComputing'][_0x9e896(0x1bb)]['updateSpeed']),this['primitives']['add'](this['particleSystem'][_0x9e896(0x1ae)][_0x9e896(0x1bb)]['updatePosition']),this['primitives']['add'](this[_0x9e896(0x122)]['particlesComputing'][_0x9e896(0x1bb)]['postProcessingPosition']),this['primitives']['add'](this[_0x9e896(0x122)]['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives'][_0x9e896(0x1c8)]),this['primitives'][_0x9e896(0x12b)](this['particleSystem']['particlesRendering'][_0x9e896(0x1bb)]['trails']),this['primitives']['add'](this['particleSystem'][_0x9e896(0x177)]['primitives'][_0x9e896(0x19a)]);}['updateViewerParameters'](){const _0x88f815=_0x413c5a;let _0x45a991=this[_0x88f815(0x139)]['computeViewRectangle'](this['scene'][_0x88f815(0x185)][_0x88f815(0x1cd)]);if(!_0x45a991){const _0xfa7438=this['_map']['getExtent']();_0x45a991=Cesium$1['Rectangle'][_0x88f815(0x148)](_0xfa7438[_0x88f815(0xfa)],_0xfa7438[_0x88f815(0x165)],_0xfa7438[_0x88f815(0x13e)],_0xfa7438['ymax']);}const _0x1f9c14=Util['viewRectangleToLonLatRange'](_0x45a991);this[_0x88f815(0x1c2)]['lonRange']['x']=_0x1f9c14['lon']['min'],this['viewerParameters']['lonRange']['y']=_0x1f9c14['lon'][_0x88f815(0x1a4)],this['viewerParameters'][_0x88f815(0x1bc)]['x']=_0x1f9c14[_0x88f815(0x15e)]['min'],this['viewerParameters']['latRange']['y']=_0x1f9c14['lat']['max'];const _0xbeee6d=this['camera']['getPixelSize'](this[_0x88f815(0x107)],this['scene']['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0xbeee6d>0x0&&(this[_0x88f815(0x1c2)][_0x88f815(0x12f)]=_0xbeee6d);}}mars3d__namespace['LayerUtil']['register'](_0x413c5a(0x1c3),WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0x140d59=_0x413c5a;this['lng']=null,this['lat']=null,this[_0x140d59(0x125)]=null,this['tlat']=null,this[_0x140d59(0x147)]=null,this['speed']=null;}['destroy'](){for(const _0x2f0fb8 in this){delete this[_0x2f0fb8];}}}class CanvasWindField{constructor(_0x5f0266){this['setOptions'](_0x5f0266);}get['speedRate'](){return this['_speedRate'];}set['speedRate'](_0x24b367){const _0xd594c5=_0x413c5a;this['_speedRate']=(0x64-(_0x24b367>0x63?0x63:_0x24b367))*0x64,this['_calc_speedRate']=[(this[_0xd594c5(0x13e)]-this[_0xd594c5(0xfa)])/this['_speedRate'],(this[_0xd594c5(0x11e)]-this[_0xd594c5(0x165)])/this[_0xd594c5(0x11b)]];}get['maxAge'](){const _0xedc2dd=_0x413c5a;return this[_0xedc2dd(0x189)];}set['maxAge'](_0x652401){const _0x18ef9d=_0x413c5a;this[_0x18ef9d(0x189)]=_0x652401;}[_0x413c5a(0xfc)](_0x4fb0a7){const _0x4a6315=_0x413c5a;this['options']=_0x4fb0a7,this['maxAge']=_0x4fb0a7['maxAge']||0x78,this[_0x4a6315(0x104)]=_0x4fb0a7[_0x4a6315(0x104)]||0x32,this[_0x4a6315(0x17d)]=[];const _0x572855=_0x4fb0a7[_0x4a6315(0x100)]||0x1000;for(let _0x2bfa16=0x0;_0x2bfa16<_0x572855;_0x2bfa16++){const _0x4ef2c7=this['_randomParticle'](new CanvasParticle());this[_0x4a6315(0x17d)]['push'](_0x4ef2c7);}}[_0x413c5a(0x169)](_0x55c35e){const _0x2db672=_0x413c5a;this[_0x2db672(0xf7)]=_0x55c35e['rows'],this['cols']=_0x55c35e[_0x2db672(0x19e)],this['xmin']=_0x55c35e['xmin'],this['xmax']=_0x55c35e['xmax'],this['ymin']=_0x55c35e['ymin'],this['ymax']=_0x55c35e['ymax'],this['grid']=[];const _0x69e23b=_0x55c35e[_0x2db672(0x149)],_0x59e405=_0x55c35e['vdata'];let _0x58927a=![];_0x69e23b['length']===this[_0x2db672(0xf7)]&&_0x69e23b[0x0]['length']===this[_0x2db672(0x19e)]&&(_0x58927a=!![]);let _0x3d60ef=0x0,_0x47b81d=null,_0x4e6384=null;for(let _0x794b19=0x0;_0x794b19<this['rows'];_0x794b19++){_0x47b81d=[];for(let _0x2145b1=0x0;_0x2145b1<this['cols'];_0x2145b1++,_0x3d60ef++){_0x58927a?_0x4e6384=this['_calcUV'](_0x69e23b[_0x794b19][_0x2145b1],_0x59e405[_0x794b19][_0x2145b1]):_0x4e6384=this['_calcUV'](_0x69e23b[_0x3d60ef],_0x59e405[_0x3d60ef]),_0x47b81d['push'](_0x4e6384);}this['grid']['push'](_0x47b81d);}this['options']['reverseY']&&this['grid']['reverse']();}['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'](_0x1107fb,_0x301954){const _0x3c6ec4=_0x413c5a,_0x4ee1ba=(_0x1107fb-this['xmin'])/(this['xmax']-this['xmin'])*(this['cols']-0x1),_0x179cf9=(this['ymax']-_0x301954)/(this[_0x3c6ec4(0x11e)]-this['ymin'])*(this[_0x3c6ec4(0xf7)]-0x1);return[_0x4ee1ba,_0x179cf9];}['getUVByXY'](_0x7225ba,_0x562f14){const _0x1970a2=_0x413c5a;if(_0x7225ba<0x0||_0x7225ba>=this[_0x1970a2(0x19e)]||_0x562f14>=this['rows'])return[0x0,0x0,0x0];const _0x2c5f8e=Math['floor'](_0x7225ba),_0x551c8f=Math[_0x1970a2(0x15b)](_0x562f14);if(_0x2c5f8e===_0x7225ba&&_0x551c8f===_0x562f14)return this['grid'][_0x562f14][_0x7225ba];const _0x25799f=_0x2c5f8e+0x1,_0x4e0aca=_0x551c8f+0x1,_0x8abf1f=this['getUVByXY'](_0x2c5f8e,_0x551c8f),_0x173a95=this['getUVByXY'](_0x25799f,_0x551c8f),_0x1813a4=this['getUVByXY'](_0x2c5f8e,_0x4e0aca),_0x5e28e9=this['getUVByXY'](_0x25799f,_0x4e0aca);let _0x3084c7=null;try{_0x3084c7=this['_bilinearInterpolation'](_0x7225ba-_0x2c5f8e,_0x562f14-_0x551c8f,_0x8abf1f,_0x173a95,_0x1813a4,_0x5e28e9);}catch(_0x319dc8){console['log'](_0x7225ba,_0x562f14);}return _0x3084c7;}['_bilinearInterpolation'](_0x52bc99,_0x4c2426,_0x2eec24,_0x89c0e1,_0x2e0785,_0x2c83a0){const _0x3076d4=0x1-_0x52bc99,_0x279ec7=0x1-_0x4c2426,_0x38bd33=_0x3076d4*_0x279ec7,_0x4c5455=_0x52bc99*_0x279ec7,_0x5b9b1c=_0x3076d4*_0x4c2426,_0x5c6189=_0x52bc99*_0x4c2426,_0x2c5f83=_0x2eec24[0x0]*_0x38bd33+_0x89c0e1[0x0]*_0x4c5455+_0x2e0785[0x0]*_0x5b9b1c+_0x2c83a0[0x0]*_0x5c6189,_0x24f90a=_0x2eec24[0x1]*_0x38bd33+_0x89c0e1[0x1]*_0x4c5455+_0x2e0785[0x1]*_0x5b9b1c+_0x2c83a0[0x1]*_0x5c6189;return this['_calcUV'](_0x2c5f83,_0x24f90a);}['_calcUV'](_0x2cd2bd,_0x9f6782){const _0x2785de=_0x413c5a;return[+_0x2cd2bd,+_0x9f6782,Math[_0x2785de(0x198)](_0x2cd2bd*_0x2cd2bd+_0x9f6782*_0x9f6782)];}['getUVByPoint'](_0x3dd1eb,_0x22e621){if(!this['isInExtent'](_0x3dd1eb,_0x22e621))return null;const _0x39c9d4=this['toGridXY'](_0x3dd1eb,_0x22e621),_0x1fbd0a=this['getUVByXY'](_0x39c9d4[0x0],_0x39c9d4[0x1]);return _0x1fbd0a;}['isInExtent'](_0x2be6f3,_0x5921c5){const _0x1469a4=_0x413c5a;return _0x2be6f3>=this['xmin']&&_0x2be6f3<=this[_0x1469a4(0x13e)]&&_0x5921c5>=this['ymin']&&_0x5921c5<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x2dc037=_0x413c5a,_0x1a3f9c=fRandomByfloat(this['xmin'],this['xmax']),_0x275b31=fRandomByfloat(this['ymin'],this[_0x2dc037(0x11e)]);return{'lat':_0x275b31,'lng':_0x1a3f9c};}['getParticles'](){const _0x30e27c=_0x413c5a;let _0x35766e,_0x231231,_0x87c0ef;for(let _0x2fada8=0x0,_0x391df3=this['particles']['length'];_0x2fada8<_0x391df3;_0x2fada8++){let _0x26fcb4=this[_0x30e27c(0x17d)][_0x2fada8];_0x26fcb4['age']<=0x0&&(_0x26fcb4=this['_randomParticle'](_0x26fcb4));if(_0x26fcb4['age']>0x0){const _0x6f454d=_0x26fcb4['tlng'],_0x3a3a4c=_0x26fcb4['tlat'];_0x87c0ef=this[_0x30e27c(0x14d)](_0x6f454d,_0x3a3a4c),_0x87c0ef?(_0x35766e=_0x6f454d+this['_calc_speedRate'][0x0]*_0x87c0ef[0x0],_0x231231=_0x3a3a4c+this['_calc_speedRate'][0x1]*_0x87c0ef[0x1],_0x26fcb4['lng']=_0x6f454d,_0x26fcb4[_0x30e27c(0x15e)]=_0x3a3a4c,_0x26fcb4['tlng']=_0x35766e,_0x26fcb4[_0x30e27c(0x1d2)]=_0x231231,_0x26fcb4['speed']=_0x87c0ef[0x2],_0x26fcb4['age']--):_0x26fcb4['age']=0x0;}}return this['particles'];}['_randomParticle'](_0x30b942){const _0x3dfe28=_0x413c5a;let _0x286340,_0x4a897c;for(let _0x907e99=0x0;_0x907e99<0x1e;_0x907e99++){_0x286340=this['getRandomLatLng'](),_0x4a897c=this['getUVByPoint'](_0x286340['lng'],_0x286340['lat']);if(_0x4a897c&&_0x4a897c[0x2]>0x0)break;}if(!_0x4a897c)return _0x30b942;const _0x1e750a=_0x286340['lng']+this['_calc_speedRate'][0x0]*_0x4a897c[0x0],_0x209367=_0x286340['lat']+this['_calc_speedRate'][0x1]*_0x4a897c[0x1];return _0x30b942[_0x3dfe28(0xf8)]=_0x286340['lng'],_0x30b942['lat']=_0x286340['lat'],_0x30b942['tlng']=_0x1e750a,_0x30b942['tlat']=_0x209367,_0x30b942[_0x3dfe28(0x147)]=Math['round'](Math['random']()*this['maxAge']),_0x30b942['speed']=_0x4a897c[0x2],_0x30b942;}[_0x413c5a(0x1d1)](){for(const _0x15a31a in this){delete this[_0x15a31a];}}}function fRandomByfloat(_0x4fa43f,_0xd4c11c){const _0x2bb33b=_0x413c5a;return _0x4fa43f+Math[_0x2bb33b(0xf6)]()*(_0xd4c11c-_0x4fa43f);}const Cesium=mars3d__namespace[_0x413c5a(0x19f)],BaseLayer=mars3d__namespace[_0x413c5a(0x17f)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x113aeb={}){super(_0x113aeb),this['_setOptionsHook'](_0x113aeb),this['canvas']=null,_0x113aeb['colors']&&_0x113aeb['steps']&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x113aeb));}['_setOptionsHook'](_0x307d1e,_0x42fc60){const _0x222a4e=_0x413c5a;this['frameTime']=0x3e8/(_0x307d1e['frameRate']||0xa),this['_pointerEvents']=this['options'][_0x222a4e(0x179)]??![],this[_0x222a4e(0x163)]=_0x307d1e['color']||_0x222a4e(0x167),this[_0x222a4e(0x1b5)]=_0x307d1e['lineWidth']||0x1,this['fixedHeight']=_0x307d1e['fixedHeight']??0x0,this['reverseY']=_0x307d1e[_0x222a4e(0x142)]??![],this['windField']&&this['windField'][_0x222a4e(0xfc)](_0x307d1e);}get['layer'](){return this['canvas'];}get[_0x413c5a(0x18f)](){return this['_map']['scene']['canvas']['clientWidth'];}get['canvasHeight'](){const _0x2d91e3=_0x413c5a;return this['_map'][_0x2d91e3(0x1cc)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set[_0x413c5a(0x179)](_0x38aaa2){const _0x3290e4=_0x413c5a;this['_pointerEvents']=_0x38aaa2;if(!this['canvas'])return;_0x38aaa2?this['canvas']['style']['pointer-events']='all':this[_0x3290e4(0x1c7)]['style'][_0x3290e4(0x1be)]='none';}get[_0x413c5a(0x100)](){const _0x2d5b25=_0x413c5a;return this['options'][_0x2d5b25(0x100)];}set[_0x413c5a(0x100)](_0x5e2cef){const _0x102286=_0x413c5a;this['options'][_0x102286(0x100)]=_0x5e2cef,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{const _0x3ec95b=_0x102286;this[_0x3ec95b(0x126)]();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set['speedRate'](_0x287a4c){const _0x12598c=_0x413c5a;this['options']['speedRate']=_0x287a4c,this['windField']&&(this[_0x12598c(0x160)]['speedRate']=_0x287a4c);}get['maxAge'](){return this['options']['maxAge'];}set[_0x413c5a(0x16d)](_0x4647cc){const _0x266ac5=_0x413c5a;this['options']['maxAge']=_0x4647cc,this[_0x266ac5(0x160)]&&(this['windField']['maxAge']=_0x4647cc);}get['data'](){return this['windData'];}set['data'](_0x2eaf24){this['setData'](_0x2eaf24);}['_showHook'](_0x17f0de){const _0x5b4f76=_0x413c5a;_0x17f0de?this['_addedHook']():(this[_0x5b4f76(0x12a)]&&(this['options']['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){const _0x3b7479=_0x413c5a;this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this[_0x3b7479(0x111)]);}[_0x413c5a(0x1ca)](){const _0x7e0649=_0x413c5a;this['canvas']=this['_createCanvas'](),this['canvasContext']=this[_0x7e0649(0x1c7)]['getContext']('2d',{'willReadFrequently':!![]}),this[_0x7e0649(0x1d0)](),this['options']['data']&&this['setData'](this['options']['data']);}['_removedHook'](){const _0x415c4b=_0x413c5a;this['clear'](),this['unbindEvent'](),this[_0x415c4b(0x1c7)]&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x2fda94=_0x413c5a,_0x3428b9=mars3d__namespace['DomUtil'][_0x2fda94(0x15a)]('canvas','mars3d-canvasWind',this[_0x2fda94(0x12d)]['container']);return _0x3428b9['style']['position']=_0x2fda94(0xff),_0x3428b9['style'][_0x2fda94(0x1a7)]='0px',_0x3428b9['style'][_0x2fda94(0x170)]='0px',_0x3428b9['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',_0x3428b9['style']['height']=this['_map'][_0x2fda94(0x1cc)][_0x2fda94(0x1c7)][_0x2fda94(0x11a)]+'px',_0x3428b9['style']['pointerEvents']=this['_pointerEvents']?_0x2fda94(0x136):'none',_0x3428b9['style']['zIndex']=this['options']['zIndex']??0x9,_0x3428b9['width']=this['_map']['scene'][_0x2fda94(0x1c7)]['clientWidth'],_0x3428b9[_0x2fda94(0x1a0)]=this[_0x2fda94(0x12d)]['scene'][_0x2fda94(0x1c7)]['clientHeight'],_0x3428b9;}['resize'](){const _0x3c9d8d=_0x413c5a;this['canvas']&&(this['canvas'][_0x3c9d8d(0x14b)]['width']=this['_map'][_0x3c9d8d(0x1cc)][_0x3c9d8d(0x1c7)]['clientWidth']+'px',this['canvas']['style']['height']=this[_0x3c9d8d(0x12d)]['scene']['canvas']['clientHeight']+'px',this['canvas']['width']=this['_map']['scene']['canvas']['clientWidth'],this['canvas']['height']=this['_map']['scene']['canvas']['clientHeight']);}['bindEvent'](){const _0xe1986=_0x413c5a,_0x2ec5ea=this;let _0xeb4e2b=Date['now']();(function _0x272088(){const _0x5662ec=_0x4567;_0x2ec5ea['animateFrame']=window['requestAnimationFrame'](_0x272088);if(_0x2ec5ea['show']&&_0x2ec5ea[_0x5662ec(0x160)]){const _0x1a8db9=Date['now'](),_0x5ebe90=_0x1a8db9-_0xeb4e2b;_0x5ebe90>_0x2ec5ea[_0x5662ec(0x1d4)]&&(_0xeb4e2b=_0x1a8db9-_0x5ebe90%_0x2ec5ea[_0x5662ec(0x1d4)],_0x2ec5ea['update']());}}(),window[_0xe1986(0x1ac)](_0xe1986(0x108),this[_0xe1986(0x108)][_0xe1986(0x1a8)](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options'][_0xe1986(0x1b6)]&&(this['_map']['on'](mars3d__namespace[_0xe1986(0x151)]['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x413c5a(0x1a9)](){const _0x4032a5=_0x413c5a;window['cancelAnimationFrame'](this['animateFrame']),delete this['animateFrame'],window[_0x4032a5(0x1c9)]('resize',this['resize']),this['options']['mouseHidden']&&(this[_0x4032a5(0x12d)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this[_0x4032a5(0x12c)],this),this[_0x4032a5(0x12d)]['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace[_0x4032a5(0x151)]['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x3996a7){const _0xb74a56=_0x413c5a;clearTimeout(this['refreshTimer']);if(!this[_0xb74a56(0x176)]||!this['canvas'])return;this[_0xb74a56(0x1c7)]['style']['visibility']=_0xb74a56(0xfe),this['refreshTimer']=setTimeout(()=>{const _0xad2f03=_0xb74a56;if(!this['show'])return;this['redraw'](),this['canvas']['style'][_0xad2f03(0x1a3)]='visible';},0xc8);}['_onMouseDownEvent'](_0x5010b2){const _0x3abc01=_0x413c5a;this['mouse_down']=!![],this['_map']['off'](mars3d__namespace[_0x3abc01(0x151)]['mouseMove'],this['_onMouseMoveEvent'],this),this[_0x3abc01(0x12d)]['on'](mars3d__namespace[_0x3abc01(0x151)]['mouseMove'],this['_onMouseMoveEvent'],this);}[_0x413c5a(0x19c)](_0x1783b3){const _0x5cfd53=_0x413c5a;if(!this['show']||!this['canvas'])return;this[_0x5cfd53(0x161)]&&(this['canvas']['style']['visibility']=_0x5cfd53(0xfe),this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x166603){const _0x255c6f=_0x413c5a;if(!this['show']||!this['canvas'])return;this['_map'][_0x255c6f(0x145)](mars3d__namespace['EventType'][_0x255c6f(0x197)],this['_onMouseMoveEvent'],this),this[_0x255c6f(0x161)]&&this['mouse_move']&&this[_0x255c6f(0x126)](),this['canvas']['style']['visibility']='visible',this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x55839a){const _0x50de5d=_0x413c5a;this['clear'](),this['windData']=_0x55839a,this[_0x50de5d(0x160)][_0x50de5d(0x169)](_0x55839a),this['redraw']();}['redraw'](){const _0x6a13a2=_0x413c5a;if(!this['show'])return;this['windField']['setOptions'](this[_0x6a13a2(0x111)]),this['update']();}[_0x413c5a(0x199)](){const _0x99b92d=_0x413c5a;if(this['_updateIng'])return;this[_0x99b92d(0x174)]=!![];if(this['worker'])this['windField']['update']();else{const _0x595fb3=this['windField']['getParticles']();this['_drawLines'](_0x595fb3);}this['_updateIng']=![];}['_drawLines'](_0x591f44){const _0x31ecfa=_0x413c5a;this[_0x31ecfa(0x1d5)]['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this[_0x31ecfa(0x18c)]),this[_0x31ecfa(0x1d5)][_0x31ecfa(0x13a)]='lighter',this['canvasContext']['globalAlpha']=0.9;const _0x5601a7=this['_map']['scene']['mode']!==Cesium[_0x31ecfa(0x10a)]['SCENE3D'],_0x2a4457=this[_0x31ecfa(0x18f)]*0.25;if(this['_colorRamp'])for(let _0x5e1ebd=0x0,_0x40b452=_0x591f44['length'];_0x5e1ebd<_0x40b452;_0x5e1ebd++){const _0x1f9b9c=_0x591f44[_0x5e1ebd],_0x4d3ac0=this['_tomap'](_0x1f9b9c[_0x31ecfa(0xf8)],_0x1f9b9c['lat'],_0x1f9b9c),_0x2c98cb=this['_tomap'](_0x1f9b9c['tlng'],_0x1f9b9c['tlat'],_0x1f9b9c);if(!_0x4d3ac0||!_0x2c98cb)continue;if(_0x5601a7&&Math['abs'](_0x4d3ac0[0x0]-_0x2c98cb[0x0])>=_0x2a4457)continue;this['canvasContext']['beginPath'](),this[_0x31ecfa(0x1d5)]['lineWidth']=this['lineWidth'],this['canvasContext'][_0x31ecfa(0x11c)]=this['_colorRamp']['getColor'](_0x1f9b9c['speed']),this['canvasContext']['moveTo'](_0x4d3ac0[0x0],_0x4d3ac0[0x1]),this[_0x31ecfa(0x1d5)]['lineTo'](_0x2c98cb[0x0],_0x2c98cb[0x1]),this['canvasContext']['stroke']();}else{this[_0x31ecfa(0x1d5)]['beginPath'](),this[_0x31ecfa(0x1d5)]['lineWidth']=this['lineWidth'],this[_0x31ecfa(0x1d5)]['strokeStyle']=this['color'];for(let _0xb8e2cc=0x0,_0x3cd7b9=_0x591f44['length'];_0xb8e2cc<_0x3cd7b9;_0xb8e2cc++){const _0x26563f=_0x591f44[_0xb8e2cc],_0x536529=this['_tomap'](_0x26563f['lng'],_0x26563f[_0x31ecfa(0x15e)],_0x26563f),_0x4a429c=this['_tomap'](_0x26563f['tlng'],_0x26563f['tlat'],_0x26563f);if(!_0x536529||!_0x4a429c)continue;if(_0x5601a7&&Math['abs'](_0x536529[0x0]-_0x4a429c[0x0])>=_0x2a4457)continue;this[_0x31ecfa(0x1d5)][_0x31ecfa(0x162)](_0x536529[0x0],_0x536529[0x1]),this['canvasContext']['lineTo'](_0x4a429c[0x0],_0x4a429c[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x52cdb2,_0x51b127,_0x2e863c){const _0x4b2bac=_0x413c5a,_0x20dc25=Cesium['Cartesian3'][_0x4b2bac(0x148)](_0x52cdb2,_0x51b127,this[_0x4b2bac(0x181)]),_0x1c6a07=this['_map'][_0x4b2bac(0x1cc)];if(_0x1c6a07['mode']===Cesium[_0x4b2bac(0x10a)]['SCENE3D']){const _0x1e0fb6=new Cesium['EllipsoidalOccluder'](_0x1c6a07['globe']['ellipsoid'],_0x1c6a07['camera']['positionWC']),_0x4a4415=_0x1e0fb6[_0x4b2bac(0x1a2)](_0x20dc25);if(!_0x4a4415)return _0x2e863c[_0x4b2bac(0x147)]=0x0,null;}const _0x523fac=Cesium['SceneTransforms'][_0x4b2bac(0x118)](this[_0x4b2bac(0x12d)]['scene'],_0x20dc25);return _0x523fac?[_0x523fac['x'],_0x523fac['y']]:null;}['clear'](){this['windField']['clear'](),delete this['windData'];}[_0x413c5a(0x103)](){const _0x3e8289=_0x413c5a;this['worker']=new Worker(this[_0x3e8289(0x111)]['worker']),this[_0x3e8289(0x12e)][_0x3e8289(0x1aa)]=_0x475e3f=>{const _0x59d520=_0x3e8289;this[_0x59d520(0x137)](_0x475e3f['data']['particles']),this[_0x59d520(0x14e)]=![];},this['windField']={'init':_0x3ef880=>{const _0x2a4900=_0x3e8289;this['worker']['postMessage']({'type':_0x2a4900(0x17e),'options':_0x3ef880});},'setOptions':_0x3b92e9=>{const _0x958412=_0x3e8289;this['worker']['postMessage']({'type':_0x958412(0xfc),'options':_0x3b92e9});},'setDate':_0x4eb3fe=>{this['worker']['postMessage']({'type':'setDate','data':_0x4eb3fe});},'update':()=>{const _0x23055d=_0x3e8289;if(this['_updateIng2'])return;this['_updateIng2']=!![],this[_0x23055d(0x12e)]['postMessage']({'type':_0x23055d(0x199)});},'clear':()=>{this['worker']['postMessage']({'type':'clear'});}},this[_0x3e8289(0x160)][_0x3e8289(0x17e)](this['options']);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x413c5a(0x191)]=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
14
+ 'use strict';const _0x4a841f=_0x4431;(function(_0x69e2ce,_0x1f787c){const _0x269c9c=_0x4431,_0xe4683d=_0x69e2ce();while(!![]){try{const _0x15b295=-parseInt(_0x269c9c(0x1de))/0x1+parseInt(_0x269c9c(0x240))/0x2*(-parseInt(_0x269c9c(0x1b0))/0x3)+-parseInt(_0x269c9c(0x1ef))/0x4*(-parseInt(_0x269c9c(0x224))/0x5)+-parseInt(_0x269c9c(0x186))/0x6+-parseInt(_0x269c9c(0x1ec))/0x7+parseInt(_0x269c9c(0x18e))/0x8*(-parseInt(_0x269c9c(0x1a6))/0x9)+parseInt(_0x269c9c(0x1a2))/0xa;if(_0x15b295===_0x1f787c)break;else _0xe4683d['push'](_0xe4683d['shift']());}catch(_0x293fa3){_0xe4683d['push'](_0xe4683d['shift']());}}}(_0x3b19,0x23ee0));function _interopNamespace(_0x10df26){const _0x2beaef=_0x4431;if(_0x10df26&&_0x10df26['__esModule'])return _0x10df26;var _0x17a8e4=Object['create'](null);return _0x10df26&&Object[_0x2beaef(0x222)](_0x10df26)[_0x2beaef(0x23b)](function(_0x20a91f){const _0x40c3c6=_0x2beaef;if(_0x20a91f!=='default'){var _0x91da31=Object[_0x40c3c6(0x195)](_0x10df26,_0x20a91f);Object['defineProperty'](_0x17a8e4,_0x20a91f,_0x91da31['get']?_0x91da31:{'enumerable':!![],'get':function(){return _0x10df26[_0x20a91f];}});}}),_0x17a8e4['default']=_0x10df26,_0x17a8e4;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x3d085a,_0x417e58){const _0x5751db=_0x4431,_0x52f324=_0x3d085a*Math['cos'](Cesium$7[_0x5751db(0x20e)][_0x5751db(0x252)](_0x417e58));return _0x52f324;}function getV(_0x3edb3d,_0x469a19){const _0x4e0382=_0x4431,_0x2924b2=_0x3edb3d*Math['sin'](Cesium$7[_0x4e0382(0x20e)]['toRadians'](_0x469a19));return _0x2924b2;}function getSpeed(_0x1220ee,_0x3afd0b){const _0x37ac67=Math['sqrt'](Math['pow'](_0x1220ee,0x2)+Math['pow'](_0x3afd0b,0x2));return _0x37ac67;}function getDirection(_0x52342a,_0x535ea2){const _0x2fbc31=_0x4431;let _0x16af69=Cesium$7['Math'][_0x2fbc31(0x1df)](Math['atan2'](_0x535ea2,_0x52342a));return _0x16af69+=_0x16af69<0x0?0x168:0x0,_0x16af69;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0xd35e4){const _0x10c4db=_0x4431;this['commandType']=_0xd35e4['commandType'],this['geometry']=_0xd35e4['geometry'],this[_0x10c4db(0x234)]=_0xd35e4['attributeLocations'],this['primitiveType']=_0xd35e4[_0x10c4db(0x268)],this[_0x10c4db(0x1cc)]=_0xd35e4[_0x10c4db(0x1cc)],this['vertexShaderSource']=_0xd35e4[_0x10c4db(0x1d3)],this['fragmentShaderSource']=_0xd35e4['fragmentShaderSource'],this['rawRenderState']=_0xd35e4['rawRenderState'],this['framebuffer']=_0xd35e4[_0x10c4db(0x183)],this['outputTexture']=_0xd35e4[_0x10c4db(0x19d)],this['autoClear']=_0xd35e4['autoClear']??![],this['preExecute']=_0xd35e4['preExecute'],this[_0x10c4db(0x26a)]=!![],this['commandToExecute']=undefined,this[_0x10c4db(0x246)]=undefined,this[_0x10c4db(0x237)]&&(this['clearCommand']=new Cesium$6['ClearCommand']({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE']}));}['createCommand'](_0x2f864b){const _0x53e2b9=_0x4431;switch(this['commandType']){case'Draw':{const _0x51fa88=Cesium$6['VertexArray']['fromGeometry']({'context':_0x2f864b,'geometry':this['geometry'],'attributeLocations':this[_0x53e2b9(0x234)],'bufferUsage':Cesium$6[_0x53e2b9(0x25b)]['STATIC_DRAW']}),_0x27b7bd=Cesium$6['ShaderProgram'][_0x53e2b9(0x1fb)]({'context':_0x2f864b,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x514896=Cesium$6[_0x53e2b9(0x211)][_0x53e2b9(0x1fb)](this[_0x53e2b9(0x1a1)]);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x27b7bd,'vertexArray':_0x51fa88,'modelMatrix':Cesium$6['Matrix4'][_0x53e2b9(0x26b)],'renderState':_0x514896,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE'],'pickOnly':!![],'owner':this});}case _0x53e2b9(0x20a):{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this[_0x53e2b9(0x270)],'uniformMap':this[_0x53e2b9(0x1cc)],'outputTexture':this['outputTexture'],'persists':!![]});}}}['setGeometry'](_0x156813,_0x1bc1e8){const _0x1dad42=_0x4431;this['geometry']=_0x1bc1e8;const _0x1fd169=Cesium$6[_0x1dad42(0x1ff)]['fromGeometry']({'context':_0x156813,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this[_0x1dad42(0x24a)]['vertexArray']=_0x1fd169;}[_0x4a841f(0x259)](_0x4fbbc5){const _0x3b9889=_0x4a841f;if(!this['show'])return;if(_0x4fbbc5['mode']!==Cesium$6['SceneMode'][_0x3b9889(0x1f1)])return;!Cesium$6['defined'](this['commandToExecute'])&&(this[_0x3b9889(0x24a)]=this[_0x3b9889(0x200)](_0x4fbbc5['context'])),Cesium$6['defined'](this['preExecute'])&&this[_0x3b9889(0x196)](),Cesium$6[_0x3b9889(0x214)](this['clearCommand'])&&_0x4fbbc5['commandList']['push'](this['clearCommand']),_0x4fbbc5['commandList'][_0x3b9889(0x1e0)](this['commandToExecute']);}[_0x4a841f(0x1f7)](){return![];}[_0x4a841f(0x197)](){const _0x53fab6=_0x4a841f;if(this['clearCommand']){var _0x56b0af,_0x119921;(_0x56b0af=this['clearCommand'])!==null&&_0x56b0af!==void 0x0&&_0x56b0af[_0x53fab6(0x218)]&&this[_0x53fab6(0x246)]['vertexArray']['destroy'](),(_0x119921=this['clearCommand'])!==null&&_0x119921!==void 0x0&&_0x119921[_0x53fab6(0x1ea)]&&this['clearCommand'][_0x53fab6(0x1ea)][_0x53fab6(0x197)](),delete this[_0x53fab6(0x246)];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this[_0x53fab6(0x24a)]['shaderProgram']&&this['commandToExecute']['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x19e00c=function(){const _0x284f59=_0x4431,_0x1aa4ae=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype'][_0x284f59(0x1e9)],'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[_0x284f59(0x19a)]['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x1aa4ae;},_0x3a8fb9=function(_0x47b0ce,_0x455dc6){const _0x57c73d=_0x4431;if(Cesium$5['defined'](_0x455dc6)){const _0x34b815={};_0x34b815[_0x57c73d(0x1a4)]=_0x455dc6,_0x47b0ce[_0x57c73d(0x190)]=_0x34b815;}const _0x31b5a8=new Cesium$5['Texture'](_0x47b0ce);return _0x31b5a8;},_0x59cb11=function(_0xb9574e,_0x2d5022,_0x226e96){const _0x9c4791=new Cesium$5['Framebuffer']({'context':_0xb9574e,'colorTextures':[_0x2d5022],'depthTexture':_0x226e96});return _0x9c4791;},_0xe51a59=function(_0x273a2b){const _0x306e06=_0x4431,_0x10db70=!![],_0x22e6c5=![],_0x57542e={'viewport':_0x273a2b[_0x306e06(0x20b)],'depthTest':_0x273a2b['depthTest'],'depthMask':_0x273a2b['depthMask'],'blending':_0x273a2b['blending']},_0x4de6b1=Cesium$5[_0x306e06(0x233)]['getDefaultRenderState'](_0x10db70,_0x22e6c5,_0x57542e);return _0x4de6b1;},_0x21066c=function(_0x4ed70c){const _0x45e703=_0x4431,_0x3bd979={},_0x40a370=Cesium$5['Math']['mod'](_0x4ed70c['west'],Cesium$5['Math']['TWO_PI']),_0x5cfbbd=Cesium$5['Math']['mod'](_0x4ed70c['east'],Cesium$5['Math']['TWO_PI']),_0x2615de=_0x4ed70c['width'];let _0x33edac,_0x480c2e;_0x2615de>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x33edac=0x0,_0x480c2e=Cesium$5['Math']['TWO_PI']):_0x5cfbbd-_0x40a370<_0x2615de?(_0x33edac=_0x40a370,_0x480c2e=_0x40a370+_0x2615de):(_0x33edac=_0x40a370,_0x480c2e=_0x5cfbbd);_0x3bd979[_0x45e703(0x21a)]={'min':Cesium$5[_0x45e703(0x20e)]['toDegrees'](_0x33edac),'max':Cesium$5['Math']['toDegrees'](_0x480c2e)};const _0x3cf4f6=_0x4ed70c['south'],_0x4f7ad4=_0x4ed70c['north'],_0x466bab=_0x4ed70c['height'],_0x3c6a0e=_0x466bab>Cesium$5['Math']['PI']/0xc?_0x466bab/0x2:0x0;let _0x338a56=Cesium$5['Math']['clampToLatitudeRange'](_0x3cf4f6-_0x3c6a0e),_0x28e4ef=Cesium$5['Math'][_0x45e703(0x1d6)](_0x4f7ad4+_0x3c6a0e);return _0x338a56<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x338a56=-Cesium$5['Math'][_0x45e703(0x18d)]),_0x28e4ef>Cesium$5[_0x45e703(0x20e)][_0x45e703(0x1c7)]&&(_0x28e4ef=Cesium$5[_0x45e703(0x20e)]['PI_OVER_TWO']),_0x3bd979['lat']={'min':Cesium$5['Math']['toDegrees'](_0x338a56),'max':Cesium$5['Math'][_0x45e703(0x1df)](_0x28e4ef)},_0x3bd979;};return{'getFullscreenQuad':_0x19e00c,'createTexture':_0x3a8fb9,'createFramebuffer':_0x59cb11,'createRawRenderState':_0xe51a59,'viewRectangleToLonLatRange':_0x21066c};}());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[_0x4a841f(0x22e)];class ParticlesRendering{constructor(_0x25abe2,_0x5de995,_0x5be32d,_0x19256b,_0x42aad9){const _0x27d884=_0x4a841f;this['createRenderingTextures'](_0x25abe2,_0x5de995,_0x5be32d[_0x27d884(0x188)]),this['createRenderingFramebuffers'](_0x25abe2),this[_0x27d884(0x1a9)](_0x25abe2,_0x5be32d,_0x19256b,_0x42aad9);}[_0x4a841f(0x1ad)](_0x5040c3,_0x504f8,_0x39dee6){const _0x178ade=_0x4a841f,_0x1ae630={'context':_0x5040c3,'width':_0x5040c3['drawingBufferWidth'],'height':_0x5040c3[_0x178ade(0x193)],'pixelFormat':Cesium$4['PixelFormat'][_0x178ade(0x230)],'pixelDatatype':Cesium$4[_0x178ade(0x23f)]['UNSIGNED_BYTE']},_0x28b92f={'context':_0x5040c3,'width':_0x5040c3['drawingBufferWidth'],'height':_0x5040c3[_0x178ade(0x193)],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4[_0x178ade(0x23f)][_0x178ade(0x1a8)]},_0x4c1aae=_0x39dee6['length'],_0x3731e7=new Float32Array(_0x4c1aae*0x3);for(let _0x519f1d=0x0;_0x519f1d<_0x4c1aae;_0x519f1d++){const _0x290153=Cesium$4['Color'][_0x178ade(0x1ce)](_0x39dee6[_0x519f1d]);_0x3731e7[0x3*_0x519f1d]=_0x290153['red'],_0x3731e7[0x3*_0x519f1d+0x1]=_0x290153[_0x178ade(0x210)],_0x3731e7[0x3*_0x519f1d+0x2]=_0x290153[_0x178ade(0x1b6)];}const _0xb1a0f3={'context':_0x5040c3,'width':_0x4c1aae,'height':0x1,'pixelFormat':Cesium$4['PixelFormat'][_0x178ade(0x1a0)],'pixelDatatype':Cesium$4[_0x178ade(0x23f)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this[_0x178ade(0x258)]={'segmentsColor':Util['createTexture'](_0x1ae630),'segmentsDepth':Util[_0x178ade(0x1c8)](_0x28b92f),'currentTrailsColor':Util['createTexture'](_0x1ae630),'currentTrailsDepth':Util['createTexture'](_0x28b92f),'nextTrailsColor':Util[_0x178ade(0x1c8)](_0x1ae630),'nextTrailsDepth':Util['createTexture'](_0x28b92f),'colorTable':Util['createTexture'](_0xb1a0f3,_0x3731e7)};}['createRenderingFramebuffers'](_0x26b2de){const _0x54441d=_0x4a841f;this['framebuffers']={'segments':Util['createFramebuffer'](_0x26b2de,this['textures']['segmentsColor'],this[_0x54441d(0x258)][_0x54441d(0x1c1)]),'currentTrails':Util[_0x54441d(0x192)](_0x26b2de,this['textures']['currentTrailsColor'],this['textures']['currentTrailsDepth']),'nextTrails':Util[_0x54441d(0x192)](_0x26b2de,this[_0x54441d(0x258)]['nextTrailsColor'],this['textures']['nextTrailsDepth'])};}[_0x4a841f(0x1f9)](_0x2b02a6){const _0x587233=_0x4a841f,_0x486da9=0x4;let _0x233116=[];for(let _0x410ae7=0x0;_0x410ae7<_0x2b02a6['particlesTextureSize'];_0x410ae7++){for(let _0x5346c9=0x0;_0x5346c9<_0x2b02a6[_0x587233(0x18b)];_0x5346c9++){for(let _0x2fae6c=0x0;_0x2fae6c<_0x486da9;_0x2fae6c++){_0x233116['push'](_0x410ae7/_0x2b02a6['particlesTextureSize']),_0x233116['push'](_0x5346c9/_0x2b02a6[_0x587233(0x18b)]);}}}_0x233116=new Float32Array(_0x233116);let _0x32c3f3=[];const _0x32c8af=[-0x1,0x1],_0xd51bf5=[-0x1,0x1];for(let _0x2af1a3=0x0;_0x2af1a3<_0x2b02a6['maxParticles'];_0x2af1a3++){for(let _0x3ac60c=0x0;_0x3ac60c<_0x486da9/0x2;_0x3ac60c++){for(let _0x134e4f=0x0;_0x134e4f<_0x486da9/0x2;_0x134e4f++){_0x32c3f3['push'](_0x32c8af[_0x3ac60c]),_0x32c3f3['push'](_0xd51bf5[_0x134e4f]),_0x32c3f3[_0x587233(0x1e0)](0x0);}}}_0x32c3f3=new Float32Array(_0x32c3f3);const _0x379a11=0x6*_0x2b02a6['maxParticles'],_0x3e60fa=new Uint32Array(_0x379a11);for(let _0xc73dbd=0x0,_0x1f17ba=0x0,_0x2e5e94=0x0;_0xc73dbd<_0x2b02a6[_0x587233(0x18c)];_0xc73dbd++){_0x3e60fa[_0x1f17ba++]=_0x2e5e94+0x0,_0x3e60fa[_0x1f17ba++]=_0x2e5e94+0x1,_0x3e60fa[_0x1f17ba++]=_0x2e5e94+0x2,_0x3e60fa[_0x1f17ba++]=_0x2e5e94+0x2,_0x3e60fa[_0x1f17ba++]=_0x2e5e94+0x1,_0x3e60fa[_0x1f17ba++]=_0x2e5e94+0x3,_0x2e5e94+=0x4;}const _0x23cae6=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4[(_0x587233(0x1fa))]({'componentDatatype':Cesium$4[_0x587233(0x19a)]['FLOAT'],'componentsPerAttribute':0x2,'values':_0x233116}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4[_0x587233(0x19a)]['FLOAT'],'componentsPerAttribute':0x3,'values':_0x32c3f3})}),'indices':_0x3e60fa});return _0x23cae6;}[_0x4a841f(0x1a9)](_0x47f35a,_0x5f3dc8,_0x296b39,_0x2f49d0){const _0x34b802=_0x4a841f,_0x29faa3=this;this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x5f3dc8),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){const _0x501631=_0x4431;return _0x2f49d0[_0x501631(0x1e4)][_0x501631(0x1e2)];},'postProcessingPosition':function(){return _0x2f49d0['particlesTextures']['postProcessingPosition'];},'postProcessingSpeed':function(){return _0x2f49d0['particlesTextures']['postProcessingSpeed'];},'colorTable':function(){const _0x8d0a91=_0x4431;return _0x29faa3['textures'][_0x8d0a91(0x191)];},'aspect':function(){return _0x47f35a['drawingBufferWidth']/_0x47f35a['drawingBufferHeight'];},'pixelSize':function(){return _0x296b39['pixelSize'];},'lineWidth':function(){return _0x5f3dc8['lineWidth'];},'particleHeight':function(){return _0x5f3dc8['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'][_0x34b802(0x1d4)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x29faa3['textures']['segmentsColor'];},'segmentsDepthTexture':function(){return _0x29faa3['textures']['segmentsDepth'];},'currentTrailsColor':function(){return _0x29faa3['framebuffers']['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x209bdb=_0x34b802;return _0x29faa3[_0x209bdb(0x182)]['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0x5f3dc8['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x34b802(0x257)],'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[_0x34b802(0x1aa)]['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x33a7e5=_0x34b802,_0x113f7f=_0x29faa3['framebuffers'][_0x33a7e5(0x239)];_0x29faa3[_0x33a7e5(0x182)]['currentTrails']=_0x29faa3[_0x33a7e5(0x182)][_0x33a7e5(0x248)],_0x29faa3[_0x33a7e5(0x182)]['nextTrails']=_0x113f7f,_0x29faa3['primitives']['trails']['commandToExecute'][_0x33a7e5(0x183)]=_0x29faa3['framebuffers'][_0x33a7e5(0x248)],_0x29faa3['primitives'][_0x33a7e5(0x242)]['clearCommand'][_0x33a7e5(0x183)]=_0x29faa3['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0x34b802(0x1a5),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0x34b802(0x24e)](),'primitiveType':Cesium$4['PrimitiveType'][_0x34b802(0x1cd)],'uniformMap':{'trailsColorTexture':function(){return _0x29faa3['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x29faa3['framebuffers']['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x34b802(0x257)],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0x34b802(0x1f5))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag='//\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',updateSpeed_frag=_0x4a841f(0x216),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=_0x4a841f(0x1ae),postProcessingSpeed_frag=_0x4a841f(0x23e);function _0x3b19(){const _0x3f2e48=['max','1370775nCydWj','umin','pixelSize','21572OdgTbw','updateViewerParameters','SCENE3D','position','mouse_down','Cartesian3','ShaderSource','visibility','isDestroyed','canvasHeight','createSegmentsGeometry','GeometryAttribute','fromCache','postProcessingSpeed','clientHeight','nextParticlesSpeed','VertexArray','createCommand','top','reverseY','EventType','ceil','fromGeometry','udata','_onMap_preRenderEvent','preRender','redraw','Compute','viewport','layer','_maxAge','Math','Cartesian2','green','RenderState','particlesComputing','canvasWidth','defined','add','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','getUVByPoint','vertexArray','now','lon','array','EllipsoidalOccluder','mode','clear','canvasContext','mouseMove','mouseUp','keys','frameRate','170qZgLeD','clearFramebuffers','drawingBufferWidth','sqrt','mouse_move','particleSystem','viewerParameters','_createCanvas','_speedRate','isPointVisible','Cesium','setData','RGBA','data','length','Appearance','attributeLocations','windField','style','autoClear','min','currentTrails','round','forEach','once','particlesRendering','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','PixelDatatype','85940QcjOxF','camera','trails','abs','windTextures','_map','clearCommand','bindEvent','nextTrails','canvasWind','commandToExecute','resize','grid','windData','getFullscreenQuad','rows','globalAlpha','options','toRadians','lng','xmax','createParticlesTextures','Pass','DISABLE_GL_POSITION_LOG_DEPTH','textures','update','currentParticlesSpeed','BufferUsage','_calc_speedRate','randomBetween','vdata','cols','latRange','ymax','color','clientWidth','addPrimitives','PixelFormat','particlesNumber','beginPath','primitiveType','globalCompositeOperation','show','IDENTITY','CanvasWindField','fixedHeight','NEAREST','worker','fragmentShaderSource','animateFrame','framebuffers','framebuffer','dimensions','requestAnimationFrame','212658RZzLiY','_onMouseMoveEvent','colors','lev','OPAQUE','particlesTextureSize','maxParticles','PI_OVER_TWO','299952xfvEgb','frameTime','source','colorTable','createFramebuffer','drawingBufferHeight','register','getOwnPropertyDescriptor','preExecute','destroy','SceneTransforms','ymin','ComponentDatatype','speedRate','lat','outputTexture','visible','_bilinearInterpolation','RGB','rawRenderState','4093350FABjvt','_updateIng','arrayBufferView','Draw','9udSkzf','mouseDown','UNSIGNED_INT','createRenderingPrimitives','DepthFunction','getUVByXY','_randomParticle','createRenderingTextures','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','umax','6IQlshg','setOptions','maxAge','_calcUV','reverse','lineTo','blue','speed','_colorRamp','getPixelSize','context','primitives','screen','random','_canrefresh','lineWidth','moveTo','segmentsDepth','Sampler','lonRange','postMessage','scene','floor','PI_OVER_THREE','createTexture','TextureMinificationFilter','globe','DomUtil','uniformMap','TRIANGLES','fromCssColorString','refreshTimer','xmin','tlng','_pointerEvents','vertexShaderSource','segments','particles','clampToLatitudeRange','tlat','updateSpeed','postProcessingPosition','nextParticlesPosition','age','off','lighter','90827nqMkge','toDegrees','push','_onMouseUpEvent','currentParticlesPosition','getRandomLatLng','particlesTextures','canvas','log','_setOptionsHook','unbindEvent','FLOAT','shaderProgram'];_0x3b19=function(){return _0x3f2e48;};return _0x3b19();}const Cesium$3=mars3d__namespace[_0x4a841f(0x22e)];class ParticlesComputing{constructor(_0x13fd0a,_0x3fe56b,_0x3acd6b,_0x12358c){this['data']=_0x3fe56b,this['createWindTextures'](_0x13fd0a,_0x3fe56b),this['createParticlesTextures'](_0x13fd0a,_0x3acd6b,_0x12358c),this['createComputingPrimitives'](_0x3fe56b,_0x3acd6b,_0x12358c);}['createWindTextures'](_0x49ef3c,_0xdbd617){const _0x5f519d=_0x4a841f,_0x1c5d7d={'context':_0x49ef3c,'width':_0xdbd617['dimensions'][_0x5f519d(0x21a)],'height':_0xdbd617['dimensions']['lat']*(_0xdbd617['dimensions']['lev']||0x1),'pixelFormat':Cesium$3[_0x5f519d(0x265)]['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x5f519d(0x1c2))]({'minificationFilter':Cesium$3[_0x5f519d(0x1c9)]['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this[_0x5f519d(0x244)]={'U':Util[_0x5f519d(0x1c8)](_0x1c5d7d,_0xdbd617['U']['array']),'V':Util['createTexture'](_0x1c5d7d,_0xdbd617['V']['array'])};}['createParticlesTextures'](_0x3afccc,_0x4ba308,_0x27b5ea){const _0x49d49f=_0x4a841f,_0x4ca47d={'context':_0x3afccc,'width':_0x4ba308['particlesTextureSize'],'height':_0x4ba308['particlesTextureSize'],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x49d49f(0x1c2))]({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x49d49f(0x26e)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x8a177=this['randomizeParticles'](_0x4ba308['maxParticles'],_0x27b5ea),_0x5bb996=new Float32Array(0x4*_0x4ba308['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x4ca47d),'currentParticlesPosition':Util[_0x49d49f(0x1c8)](_0x4ca47d,_0x8a177),'nextParticlesPosition':Util[_0x49d49f(0x1c8)](_0x4ca47d,_0x8a177),'currentParticlesSpeed':Util['createTexture'](_0x4ca47d,_0x5bb996),'nextParticlesSpeed':Util['createTexture'](_0x4ca47d,_0x5bb996),'postProcessingPosition':Util[_0x49d49f(0x1c8)](_0x4ca47d,_0x8a177),'postProcessingSpeed':Util['createTexture'](_0x4ca47d,_0x5bb996)};}['randomizeParticles'](_0x1e2c35,_0x14b701){const _0x59939a=_0x4a841f,_0xc0a71d=new Float32Array(0x4*_0x1e2c35);for(let _0x164f7b=0x0;_0x164f7b<_0x1e2c35;_0x164f7b++){_0xc0a71d[0x4*_0x164f7b]=Cesium$3['Math']['randomBetween'](_0x14b701['lonRange']['x'],_0x14b701[_0x59939a(0x1c3)]['y']),_0xc0a71d[0x4*_0x164f7b+0x1]=Cesium$3[_0x59939a(0x20e)][_0x59939a(0x25d)](_0x14b701[_0x59939a(0x260)]['x'],_0x14b701['latRange']['y']),_0xc0a71d[0x4*_0x164f7b+0x2]=Cesium$3['Math']['randomBetween'](this['data']['lev']['min'],this['data']['lev']['max']),_0xc0a71d[0x4*_0x164f7b+0x3]=0x0;}return _0xc0a71d;}['destroyParticlesTextures'](){Object['keys'](this['particlesTextures'])['forEach'](_0x2ad50d=>{const _0x37b16f=_0x4431;this[_0x37b16f(0x1e4)][_0x2ad50d][_0x37b16f(0x197)]();});}['createComputingPrimitives'](_0x29ee8c,_0x5b6063,_0x4fba25){const _0x2ef7a2=_0x4a841f,_0x2c2cec=new Cesium$3['Cartesian3'](_0x29ee8c['dimensions'][_0x2ef7a2(0x21a)],_0x29ee8c[_0x2ef7a2(0x184)]['lat'],_0x29ee8c['dimensions']['lev']),_0x2ab3a4=new Cesium$3[(_0x2ef7a2(0x1f4))](_0x29ee8c[_0x2ef7a2(0x21a)][_0x2ef7a2(0x238)],_0x29ee8c['lat'][_0x2ef7a2(0x238)],_0x29ee8c[_0x2ef7a2(0x189)][_0x2ef7a2(0x238)]),_0x45e74e=new Cesium$3['Cartesian3'](_0x29ee8c['lon']['max'],_0x29ee8c[_0x2ef7a2(0x19c)]['max'],_0x29ee8c[_0x2ef7a2(0x189)][_0x2ef7a2(0x1eb)]),_0x58346f=new Cesium$3[(_0x2ef7a2(0x1f4))]((_0x45e74e['x']-_0x2ab3a4['x'])/(_0x2c2cec['x']-0x1),(_0x45e74e['y']-_0x2ab3a4['y'])/(_0x2c2cec['y']-0x1),_0x2c2cec['z']>0x1?(_0x45e74e['z']-_0x2ab3a4['z'])/(_0x2c2cec['z']-0x1):0x1),_0x1ddfbd=new Cesium$3[(_0x2ef7a2(0x20f))](_0x29ee8c['U'][_0x2ef7a2(0x238)],_0x29ee8c['U'][_0x2ef7a2(0x1eb)]),_0xeefb8=new Cesium$3['Cartesian2'](_0x29ee8c['V']['min'],_0x29ee8c['V'][_0x2ef7a2(0x1eb)]),_0x5b6e10=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':_0x2ef7a2(0x20a),'uniformMap':{'U':function(){const _0x39de65=_0x2ef7a2;return _0x5b6e10[_0x39de65(0x244)]['U'];},'V':function(){return _0x5b6e10['windTextures']['V'];},'currentParticlesPosition':function(){const _0x4418cc=_0x2ef7a2;return _0x5b6e10['particlesTextures'][_0x4418cc(0x1e2)];},'dimension':function(){return _0x2c2cec;},'minimum':function(){return _0x2ab3a4;},'maximum':function(){return _0x45e74e;},'interval':function(){return _0x58346f;}},'fragmentShaderSource':new Cesium$3[(_0x2ef7a2(0x1f5))]({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){_0x5b6e10['primitives']['getWind']['commandToExecute']['outputTexture']=_0x5b6e10['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x5b6e10['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){return _0x5b6e10['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x1ddfbd;},'vSpeedRange':function(){return _0xeefb8;},'pixelSize':function(){const _0x2caba6=_0x2ef7a2;return _0x4fba25[_0x2caba6(0x1ee)];},'speedFactor':function(){return _0x5b6063['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function(){const _0x35cfc7=_0x2ef7a2,_0x1ae5b8=_0x5b6e10[_0x35cfc7(0x1e4)][_0x35cfc7(0x25a)];_0x5b6e10[_0x35cfc7(0x1e4)]['currentParticlesSpeed']=_0x5b6e10['particlesTextures']['postProcessingSpeed'],_0x5b6e10[_0x35cfc7(0x1e4)]['postProcessingSpeed']=_0x1ae5b8,_0x5b6e10[_0x35cfc7(0x1bb)]['updateSpeed'][_0x35cfc7(0x24a)][_0x35cfc7(0x19d)]=_0x5b6e10['particlesTextures'][_0x35cfc7(0x1fe)];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){return _0x5b6e10['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function(){const _0x5884c8=_0x2ef7a2;return _0x5b6e10[_0x5884c8(0x1e4)][_0x5884c8(0x25a)];}},'fragmentShaderSource':new Cesium$3[(_0x2ef7a2(0x1f5))]({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures'][_0x2ef7a2(0x1da)],'preExecute':function(){const _0x563adc=_0x2ef7a2,_0xce77a8=_0x5b6e10['particlesTextures'][_0x563adc(0x1e2)];_0x5b6e10['particlesTextures']['currentParticlesPosition']=_0x5b6e10['particlesTextures']['postProcessingPosition'],_0x5b6e10['particlesTextures'][_0x563adc(0x1d9)]=_0xce77a8,_0x5b6e10['primitives']['updatePosition'][_0x563adc(0x24a)][_0x563adc(0x19d)]=_0x5b6e10['particlesTextures'][_0x563adc(0x1da)];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){return _0x5b6e10['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){return _0x5b6e10['particlesTextures']['nextParticlesSpeed'];},'lonRange':function(){const _0x43c215=_0x2ef7a2;return _0x4fba25[_0x43c215(0x1c3)];},'latRange':function(){return _0x4fba25['latRange'];},'randomCoefficient':function(){const _0x276c1a=Math['random']();return _0x276c1a;},'dropRate':function(){return _0x5b6063['dropRate'];},'dropRateBump':function(){return _0x5b6063['dropRateBump'];}},'fragmentShaderSource':new Cesium$3[(_0x2ef7a2(0x1f5))]({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){const _0x1c316f=_0x2ef7a2;_0x5b6e10[_0x1c316f(0x1bb)]['postProcessingPosition'][_0x1c316f(0x24a)][_0x1c316f(0x19d)]=_0x5b6e10[_0x1c316f(0x1e4)]['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x2ef7a2(0x20a),'uniformMap':{'postProcessingPosition':function(){return _0x5b6e10['particlesTextures']['postProcessingPosition'];},'nextParticlesSpeed':function(){return _0x5b6e10['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){const _0x50d720=_0x2ef7a2;_0x5b6e10['primitives']['postProcessingSpeed']['commandToExecute'][_0x50d720(0x19d)]=_0x5b6e10[_0x50d720(0x1e4)][_0x50d720(0x1fc)];}})};}}const Cesium$2=mars3d__namespace['Cesium'];function _0x4431(_0x1b397b,_0x3a934a){const _0x3b19ad=_0x3b19();return _0x4431=function(_0x443140,_0x467ddd){_0x443140=_0x443140-0x182;let _0x505491=_0x3b19ad[_0x443140];return _0x505491;},_0x4431(_0x1b397b,_0x3a934a);}class ParticleSystem{constructor(_0x1a3468,_0x4bb669,_0x16dddd,_0x5aecf1){const _0x2d2715=_0x4a841f;this['context']=_0x1a3468,_0x4bb669={..._0x4bb669},_0x4bb669[_0x2d2715(0x206)]&&_0x4bb669[_0x2d2715(0x25e)]&&(_0x4bb669['dimensions']={},_0x4bb669[_0x2d2715(0x184)]['lon']=_0x4bb669[_0x2d2715(0x25f)],_0x4bb669[_0x2d2715(0x184)]['lat']=_0x4bb669['rows'],_0x4bb669['dimensions']['lev']=_0x4bb669['lev']||0x1,_0x4bb669[_0x2d2715(0x21a)]={},_0x4bb669['lon']['min']=_0x4bb669['xmin'],_0x4bb669['lon']['max']=_0x4bb669[_0x2d2715(0x254)],_0x4bb669['lat']={},_0x4bb669[_0x2d2715(0x19c)]['min']=_0x4bb669['ymin'],_0x4bb669['lat']['max']=_0x4bb669['ymax'],_0x4bb669['lev']={},_0x4bb669[_0x2d2715(0x189)][_0x2d2715(0x238)]=_0x4bb669['levmin']??0x1,_0x4bb669['lev']['max']=_0x4bb669['levmax']??0x1,_0x4bb669['U']={},_0x4bb669['U'][_0x2d2715(0x21b)]=new Float32Array(_0x4bb669[_0x2d2715(0x206)]),_0x4bb669['U']['min']=_0x4bb669[_0x2d2715(0x1ed)]??Math['min'](..._0x4bb669[_0x2d2715(0x206)]),_0x4bb669['U']['max']=_0x4bb669[_0x2d2715(0x1af)]??Math[_0x2d2715(0x1eb)](..._0x4bb669['udata']),_0x4bb669['V']={},_0x4bb669['V'][_0x2d2715(0x21b)]=new Float32Array(_0x4bb669['vdata']),_0x4bb669['V'][_0x2d2715(0x238)]=_0x4bb669['vmin']??Math['min'](..._0x4bb669[_0x2d2715(0x25e)]),_0x4bb669['V']['max']=_0x4bb669['vmax']??Math['max'](..._0x4bb669[_0x2d2715(0x25e)])),this['data']=_0x4bb669,this['options']=_0x16dddd,this['viewerParameters']=_0x5aecf1,this[_0x2d2715(0x212)]=new ParticlesComputing(this[_0x2d2715(0x1ba)],this['data'],this['options'],this['viewerParameters']),this[_0x2d2715(0x23d)]=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this[_0x2d2715(0x212)]);}['canvasResize'](_0x1096ac){const _0x52beeb=_0x4a841f;this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this[_0x52beeb(0x212)]['windTextures'])['forEach'](_0x2462bc=>{this['particlesComputing']['windTextures'][_0x2462bc]['destroy']();}),this['particlesRendering'][_0x52beeb(0x258)]['colorTable']['destroy'](),Object[_0x52beeb(0x222)](this['particlesRendering']['framebuffers'])['forEach'](_0x2f992a=>{this['particlesRendering']['framebuffers'][_0x2f992a]['destroy']();}),this['context']=_0x1096ac,this['particlesComputing']=new ParticlesComputing(this[_0x52beeb(0x1ba)],this[_0x52beeb(0x231)],this['options'],this[_0x52beeb(0x22a)]),this[_0x52beeb(0x23d)]=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}[_0x4a841f(0x225)](){const _0x3e54a4=_0x4a841f,_0xd61495=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x3e54a4(0x256)][_0x3e54a4(0x18a)]});Object['keys'](this[_0x3e54a4(0x23d)]['framebuffers'])['forEach'](_0x40bfc6=>{_0xd61495['framebuffer']=this['particlesRendering']['framebuffers'][_0x40bfc6],_0xd61495['execute'](this['context']);});}['refreshParticles'](_0x4a0d24){const _0x40f29f=_0x4a841f;this['clearFramebuffers'](),this['particlesComputing']['destroyParticlesTextures'](),this['particlesComputing'][_0x40f29f(0x255)](this['context'],this['options'],this[_0x40f29f(0x22a)]);if(_0x4a0d24){var _0x39d4de;const _0x221e0f=this['particlesRendering'][_0x40f29f(0x1f9)](this['options']);this['particlesRendering']['primitives']['segments']['geometry']=_0x221e0f;const _0x55371d=Cesium$2['VertexArray'][_0x40f29f(0x205)]({'context':this['context'],'geometry':_0x221e0f,'attributeLocations':this['particlesRendering']['primitives'][_0x40f29f(0x1d4)]['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x39d4de=this['particlesRendering'][_0x40f29f(0x1bb)])!==null&&_0x39d4de!==void 0x0&&(_0x39d4de=_0x39d4de['segments'])!==null&&_0x39d4de!==void 0x0&&_0x39d4de[_0x40f29f(0x24a)]&&(this[_0x40f29f(0x23d)][_0x40f29f(0x1bb)][_0x40f29f(0x1d4)]['commandToExecute'][_0x40f29f(0x218)]=_0x55371d);}}['setOptions'](_0x542707){const _0xea1d1b=_0x4a841f;let _0x5f12f1=![];this['options']['maxParticles']!==_0x542707['maxParticles']&&(_0x5f12f1=!![]),Object['keys'](_0x542707)[_0xea1d1b(0x23b)](_0x5c7fbd=>{this['options'][_0x5c7fbd]=_0x542707[_0x5c7fbd];}),this['refreshParticles'](_0x5f12f1);}['applyViewerParameters'](_0x5d0bbb){Object['keys'](_0x5d0bbb)['forEach'](_0x510eb2=>{this['viewerParameters'][_0x510eb2]=_0x5d0bbb[_0x510eb2];}),this['refreshParticles'](![]);}['destroy'](){const _0x2ca77e=_0x4a841f;clearTimeout(this['canrefresh']),this[_0x2ca77e(0x212)]['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x3ee5cf=>{this['particlesComputing']['windTextures'][_0x3ee5cf]['destroy']();}),this['particlesRendering']['textures']['colorTable'][_0x2ca77e(0x197)](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x3ffa43=>{const _0x563ed4=_0x2ca77e;this['particlesRendering'][_0x563ed4(0x182)][_0x3ffa43]['destroy']();});for(const _0x3218c7 in this){delete this[_0x3218c7];}}}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(_0x25d44e={}){_0x25d44e={...DEF_OPTIONS,..._0x25d44e},super(_0x25d44e),this['_setOptionsHook'](_0x25d44e);}get['layer'](){return this['primitives'];}get['data'](){return this['_data'];}set[_0x4a841f(0x231)](_0x5c5613){this['setData'](_0x5c5613);}get[_0x4a841f(0x188)](){const _0x90d1b5=_0x4a841f;return this[_0x90d1b5(0x251)]['colors'];}set[_0x4a841f(0x188)](_0x15859f){const _0x3ae491=_0x4a841f;this['options'][_0x3ae491(0x188)]=_0x15859f,this['particleSystem']&&this[_0x3ae491(0x229)]['setOptions']({'colors':_0x15859f}),this[_0x3ae491(0x24b)]();}['_mountedHook'](){}['_addedHook'](){const _0x1137f6=_0x4a841f;this['scene']=this[_0x1137f6(0x245)][_0x1137f6(0x1c5)],this[_0x1137f6(0x241)]=this[_0x1137f6(0x245)][_0x1137f6(0x241)],this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map']['scene']['primitives'][_0x1137f6(0x215)](this['primitives']),this[_0x1137f6(0x22a)]={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1['BoundingSphere'](Cesium$1[_0x1137f6(0x1f4)]['ZERO'],0.99*0x615299),this[_0x1137f6(0x1f0)](),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x1137f6(0x1a7)],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x1137f6(0x221)],this['_onMouseUpEvent'],this),this[_0x1137f6(0x245)]['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x1137f6(0x187)],this),this['_data']&&this['setData'](this['_data']);}['_removedHook'](){const _0x2512ac=_0x4a841f;window['removeEventListener'](_0x2512ac(0x24b),this['resize']),this[_0x2512ac(0x245)][_0x2512ac(0x1dc)](mars3d__namespace['EventType'][_0x2512ac(0x208)],this[_0x2512ac(0x207)],this),this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x2512ac(0x245)]['off'](mars3d__namespace[_0x2512ac(0x203)]['mouseUp'],this[_0x2512ac(0x1e1)],this),this[_0x2512ac(0x245)][_0x2512ac(0x1dc)](mars3d__namespace['EventType'][_0x2512ac(0x220)],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this[_0x2512ac(0x245)][_0x2512ac(0x1c5)][_0x2512ac(0x1bb)]['remove'](this[_0x2512ac(0x1bb)]);}['resize'](){const _0x58e053=_0x4a841f;if(!this[_0x58e053(0x26a)]||!this['particleSystem'])return;this['primitives']['show']=![],this[_0x58e053(0x1bb)]['removeAll'](),this['_map'][_0x58e053(0x23c)](mars3d__namespace[_0x58e053(0x203)][_0x58e053(0x208)],this[_0x58e053(0x207)],this);}['_onMap_preRenderEvent'](_0x5a30d1){const _0x2cd7df=_0x4a841f;this['particleSystem']['canvasResize'](this[_0x2cd7df(0x1c5)]['context']),this['addPrimitives'](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x10eb91){const _0x1eae2f=_0x4a841f;clearTimeout(this[_0x1eae2f(0x1cf)]);if(!this['show']||!this['particleSystem'])return;this[_0x1eae2f(0x1bb)][_0x1eae2f(0x26a)]=![],this['refreshTimer']=setTimeout(()=>{const _0x55d616=_0x1eae2f;if(!this['show'])return;this[_0x55d616(0x209)]();},0xc8);}['_onMouseDownEvent'](_0x3181af){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x1e6102){if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this['primitives']['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x5ce429){const _0x531a5a=_0x4a841f;if(!this['show']||!this[_0x531a5a(0x229)])return;this[_0x531a5a(0x1f3)]&&this['mouse_move']&&this['redraw'](),this['primitives']['show']=!![],this['mouse_down']=![],this[_0x531a5a(0x228)]=![];}['redraw'](){const _0x1e18dc=_0x4a841f;if(!this['_map']||!this['show'])return;this[_0x1e18dc(0x1f0)](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this['primitives'][_0x1e18dc(0x26a)]=!![];}['setData'](_0x2a75f9){const _0x4c58e5=_0x4a841f;this['_data']=_0x2a75f9,this['particleSystem']&&this[_0x4c58e5(0x229)]['destroy'](),this['particleSystem']=new ParticleSystem(this[_0x4c58e5(0x1c5)][_0x4c58e5(0x1ba)],_0x2a75f9,this['getOptions'](),this[_0x4c58e5(0x22a)]),this['addPrimitives']();}[_0x4a841f(0x1e7)](_0x2a55da,_0x2a9825){const _0x2a5d82=_0x4a841f;if(_0x2a55da)for(const _0x4601fd in _0x2a55da){this[_0x4601fd]=_0x2a55da[_0x4601fd];}this['particleSystem']&&this[_0x2a5d82(0x229)]['setOptions'](this['getOptions']());}['getOptions'](){const _0x5c367a=_0x4a841f,_0x2f71a0=Math[_0x5c367a(0x204)](Math['sqrt'](this[_0x5c367a(0x266)]));return this['particlesNumber']=_0x2f71a0*_0x2f71a0,{'particlesTextureSize':_0x2f71a0,'maxParticles':this['particlesNumber'],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this['colors']};}[_0x4a841f(0x264)](){const _0x35b4e9=_0x4a841f;this['primitives']['add'](this['particleSystem'][_0x35b4e9(0x212)]['primitives']['getWind']),this['primitives'][_0x35b4e9(0x215)](this['particleSystem']['particlesComputing']['primitives'][_0x35b4e9(0x1d8)]),this['primitives']['add'](this['particleSystem']['particlesComputing'][_0x35b4e9(0x1bb)]['updatePosition']),this[_0x35b4e9(0x1bb)]['add'](this[_0x35b4e9(0x229)][_0x35b4e9(0x212)]['primitives']['postProcessingPosition']),this['primitives'][_0x35b4e9(0x215)](this[_0x35b4e9(0x229)]['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives']['add'](this[_0x35b4e9(0x229)]['particlesRendering']['primitives'][_0x35b4e9(0x1d4)]),this['primitives'][_0x35b4e9(0x215)](this['particleSystem']['particlesRendering'][_0x35b4e9(0x1bb)]['trails']),this['primitives']['add'](this[_0x35b4e9(0x229)][_0x35b4e9(0x23d)][_0x35b4e9(0x1bb)][_0x35b4e9(0x1bc)]);}[_0x4a841f(0x1f0)](){const _0x35a672=_0x4a841f;let _0x3535ff=this['camera']['computeViewRectangle'](this['scene']['globe']['ellipsoid']);if(!_0x3535ff){const _0x24ed3b=this[_0x35a672(0x245)]['getExtent']();_0x3535ff=Cesium$1['Rectangle']['fromDegrees'](_0x24ed3b['xmin'],_0x24ed3b['ymin'],_0x24ed3b['xmax'],_0x24ed3b['ymax']);}const _0x34c89a=Util['viewRectangleToLonLatRange'](_0x3535ff);this['viewerParameters'][_0x35a672(0x1c3)]['x']=_0x34c89a['lon']['min'],this['viewerParameters'][_0x35a672(0x1c3)]['y']=_0x34c89a['lon']['max'],this[_0x35a672(0x22a)]['latRange']['x']=_0x34c89a[_0x35a672(0x19c)]['min'],this['viewerParameters']['latRange']['y']=_0x34c89a['lat'][_0x35a672(0x1eb)];const _0x37f543=this['camera'][_0x35a672(0x1b9)](this['globeBoundingSphere'],this['scene'][_0x35a672(0x226)],this[_0x35a672(0x1c5)]['drawingBufferHeight']);_0x37f543>0x0&&(this[_0x35a672(0x22a)][_0x35a672(0x1ee)]=_0x37f543);}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace[_0x4a841f(0x20c)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this['age']=null,this['speed']=null;}['destroy'](){for(const _0xd5b2be in this){delete this[_0xd5b2be];}}}class CanvasWindField{constructor(_0x2cac83){const _0x208241=_0x4a841f;this[_0x208241(0x1b1)](_0x2cac83);}get['speedRate'](){return this['_speedRate'];}set['speedRate'](_0x19bea6){const _0x55a517=_0x4a841f;this[_0x55a517(0x22c)]=(0x64-(_0x19bea6>0x63?0x63:_0x19bea6))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set['maxAge'](_0xd9b666){const _0x11e7d6=_0x4a841f;this[_0x11e7d6(0x20d)]=_0xd9b666;}['setOptions'](_0x43e89b){const _0x59f3ec=_0x4a841f;this['options']=_0x43e89b,this[_0x59f3ec(0x1b2)]=_0x43e89b[_0x59f3ec(0x1b2)]||0x78,this['speedRate']=_0x43e89b['speedRate']||0x32,this['particles']=[];const _0x227ec2=_0x43e89b['particlesNumber']||0x1000;for(let _0x30e185=0x0;_0x30e185<_0x227ec2;_0x30e185++){const _0x387deb=this[_0x59f3ec(0x1ac)](new CanvasParticle());this['particles']['push'](_0x387deb);}}['setDate'](_0x579994){const _0x4ce555=_0x4a841f;this['rows']=_0x579994[_0x4ce555(0x24f)],this['cols']=_0x579994[_0x4ce555(0x25f)],this[_0x4ce555(0x1d0)]=_0x579994[_0x4ce555(0x1d0)],this[_0x4ce555(0x254)]=_0x579994[_0x4ce555(0x254)],this['ymin']=_0x579994['ymin'],this['ymax']=_0x579994[_0x4ce555(0x261)],this[_0x4ce555(0x24c)]=[];const _0x4120c1=_0x579994[_0x4ce555(0x206)],_0x3e7eea=_0x579994[_0x4ce555(0x25e)];let _0x1431ae=![];_0x4120c1[_0x4ce555(0x232)]===this['rows']&&_0x4120c1[0x0][_0x4ce555(0x232)]===this['cols']&&(_0x1431ae=!![]);let _0x21772e=0x0,_0x3e2368=null,_0x1e170b=null;for(let _0x199421=0x0;_0x199421<this[_0x4ce555(0x24f)];_0x199421++){_0x3e2368=[];for(let _0x31709d=0x0;_0x31709d<this[_0x4ce555(0x25f)];_0x31709d++,_0x21772e++){_0x1431ae?_0x1e170b=this[_0x4ce555(0x1b3)](_0x4120c1[_0x199421][_0x31709d],_0x3e7eea[_0x199421][_0x31709d]):_0x1e170b=this['_calcUV'](_0x4120c1[_0x21772e],_0x3e7eea[_0x21772e]),_0x3e2368['push'](_0x1e170b);}this[_0x4ce555(0x24c)]['push'](_0x3e2368);}this['options']['reverseY']&&this['grid'][_0x4ce555(0x1b4)]();}['clear'](){const _0x1363ed=_0x4a841f;delete this['rows'],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this['ymax'],delete this[_0x1363ed(0x24c)],delete this[_0x1363ed(0x1d5)];}['toGridXY'](_0xc23a0d,_0x135db5){const _0x57b1a6=_0x4a841f,_0x55c6b0=(_0xc23a0d-this['xmin'])/(this[_0x57b1a6(0x254)]-this['xmin'])*(this['cols']-0x1),_0xade83d=(this[_0x57b1a6(0x261)]-_0x135db5)/(this['ymax']-this['ymin'])*(this[_0x57b1a6(0x24f)]-0x1);return[_0x55c6b0,_0xade83d];}['getUVByXY'](_0x2b666c,_0x5aeab4){const _0x5030e5=_0x4a841f;if(_0x2b666c<0x0||_0x2b666c>=this[_0x5030e5(0x25f)]||_0x5aeab4>=this['rows'])return[0x0,0x0,0x0];const _0x413202=Math[_0x5030e5(0x1c6)](_0x2b666c),_0x177326=Math['floor'](_0x5aeab4);if(_0x413202===_0x2b666c&&_0x177326===_0x5aeab4)return this['grid'][_0x5aeab4][_0x2b666c];const _0x4a45e1=_0x413202+0x1,_0x3a7dfc=_0x177326+0x1,_0x2afaad=this['getUVByXY'](_0x413202,_0x177326),_0x35183a=this[_0x5030e5(0x1ab)](_0x4a45e1,_0x177326),_0x46c9ba=this['getUVByXY'](_0x413202,_0x3a7dfc),_0x431e66=this['getUVByXY'](_0x4a45e1,_0x3a7dfc);let _0x45e7f9=null;try{_0x45e7f9=this['_bilinearInterpolation'](_0x2b666c-_0x413202,_0x5aeab4-_0x177326,_0x2afaad,_0x35183a,_0x46c9ba,_0x431e66);}catch(_0x9ff15c){console[_0x5030e5(0x1e6)](_0x2b666c,_0x5aeab4);}return _0x45e7f9;}[_0x4a841f(0x19f)](_0x5ce1de,_0x14a00c,_0x3d650a,_0x3583fc,_0x445a19,_0x5e9f0a){const _0x4c9828=0x1-_0x5ce1de,_0x307151=0x1-_0x14a00c,_0x309977=_0x4c9828*_0x307151,_0x3d55d2=_0x5ce1de*_0x307151,_0x2d3efe=_0x4c9828*_0x14a00c,_0x59cddb=_0x5ce1de*_0x14a00c,_0x2ad679=_0x3d650a[0x0]*_0x309977+_0x3583fc[0x0]*_0x3d55d2+_0x445a19[0x0]*_0x2d3efe+_0x5e9f0a[0x0]*_0x59cddb,_0x16545f=_0x3d650a[0x1]*_0x309977+_0x3583fc[0x1]*_0x3d55d2+_0x445a19[0x1]*_0x2d3efe+_0x5e9f0a[0x1]*_0x59cddb;return this['_calcUV'](_0x2ad679,_0x16545f);}[_0x4a841f(0x1b3)](_0x3802af,_0x34f394){const _0x51260d=_0x4a841f;return[+_0x3802af,+_0x34f394,Math[_0x51260d(0x227)](_0x3802af*_0x3802af+_0x34f394*_0x34f394)];}['getUVByPoint'](_0xb49cdd,_0x3e6da3){if(!this['isInExtent'](_0xb49cdd,_0x3e6da3))return null;const _0x23312e=this['toGridXY'](_0xb49cdd,_0x3e6da3),_0x50a2ce=this['getUVByXY'](_0x23312e[0x0],_0x23312e[0x1]);return _0x50a2ce;}['isInExtent'](_0x5e9777,_0x1103c8){const _0x420f17=_0x4a841f;return _0x5e9777>=this['xmin']&&_0x5e9777<=this['xmax']&&_0x1103c8>=this['ymin']&&_0x1103c8<=this[_0x420f17(0x261)]?!![]:![];}['getRandomLatLng'](){const _0xd32b8f=_0x4a841f,_0x251d38=fRandomByfloat(this[_0xd32b8f(0x1d0)],this['xmax']),_0x3aaa95=fRandomByfloat(this[_0xd32b8f(0x199)],this['ymax']);return{'lat':_0x3aaa95,'lng':_0x251d38};}['getParticles'](){const _0x2915e6=_0x4a841f;let _0x8c4639,_0x12af44,_0x59411b;for(let _0x2e5d16=0x0,_0x2cfbd5=this['particles']['length'];_0x2e5d16<_0x2cfbd5;_0x2e5d16++){let _0x5bcc56=this[_0x2915e6(0x1d5)][_0x2e5d16];_0x5bcc56[_0x2915e6(0x1db)]<=0x0&&(_0x5bcc56=this['_randomParticle'](_0x5bcc56));if(_0x5bcc56[_0x2915e6(0x1db)]>0x0){const _0x2d6667=_0x5bcc56[_0x2915e6(0x1d1)],_0x165be1=_0x5bcc56['tlat'];_0x59411b=this[_0x2915e6(0x217)](_0x2d6667,_0x165be1),_0x59411b?(_0x8c4639=_0x2d6667+this['_calc_speedRate'][0x0]*_0x59411b[0x0],_0x12af44=_0x165be1+this['_calc_speedRate'][0x1]*_0x59411b[0x1],_0x5bcc56['lng']=_0x2d6667,_0x5bcc56['lat']=_0x165be1,_0x5bcc56['tlng']=_0x8c4639,_0x5bcc56['tlat']=_0x12af44,_0x5bcc56[_0x2915e6(0x1b7)]=_0x59411b[0x2],_0x5bcc56['age']--):_0x5bcc56[_0x2915e6(0x1db)]=0x0;}}return this[_0x2915e6(0x1d5)];}['_randomParticle'](_0x54e503){const _0x379c23=_0x4a841f;let _0x31fe39,_0x488e9c;for(let _0x540306=0x0;_0x540306<0x1e;_0x540306++){_0x31fe39=this[_0x379c23(0x1e3)](),_0x488e9c=this['getUVByPoint'](_0x31fe39['lng'],_0x31fe39['lat']);if(_0x488e9c&&_0x488e9c[0x2]>0x0)break;}if(!_0x488e9c)return _0x54e503;const _0x12de4d=_0x31fe39['lng']+this[_0x379c23(0x25c)][0x0]*_0x488e9c[0x0],_0x47c7ec=_0x31fe39['lat']+this['_calc_speedRate'][0x1]*_0x488e9c[0x1];return _0x54e503['lng']=_0x31fe39[_0x379c23(0x253)],_0x54e503[_0x379c23(0x19c)]=_0x31fe39['lat'],_0x54e503['tlng']=_0x12de4d,_0x54e503[_0x379c23(0x1d7)]=_0x47c7ec,_0x54e503[_0x379c23(0x1db)]=Math[_0x379c23(0x23a)](Math[_0x379c23(0x1bd)]()*this['maxAge']),_0x54e503[_0x379c23(0x1b7)]=_0x488e9c[0x2],_0x54e503;}['destroy'](){for(const _0x28d5fa in this){delete this[_0x28d5fa];}}}function fRandomByfloat(_0x178d42,_0x55fa53){return _0x178d42+Math['random']()*(_0x55fa53-_0x178d42);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x231a75={}){const _0x41bf79=_0x4a841f;super(_0x231a75),this['_setOptionsHook'](_0x231a75),this[_0x41bf79(0x1e5)]=null,_0x231a75[_0x41bf79(0x188)]&&_0x231a75['steps']&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x231a75));}['_setOptionsHook'](_0x5b9c77,_0x2292e2){const _0x3543e0=_0x4a841f;this['frameTime']=0x3e8/(_0x5b9c77[_0x3543e0(0x223)]||0xa),this[_0x3543e0(0x1d2)]=this['options']['pointerEvents']??![],this['color']=_0x5b9c77[_0x3543e0(0x262)]||'#ffffff',this['lineWidth']=_0x5b9c77['lineWidth']||0x1,this['fixedHeight']=_0x5b9c77[_0x3543e0(0x26d)]??0x0,this[_0x3543e0(0x202)]=_0x5b9c77['reverseY']??![],this['windField']&&this['windField']['setOptions'](_0x5b9c77);}get[_0x4a841f(0x20c)](){return this['canvas'];}get['canvasWidth'](){const _0x90626a=_0x4a841f;return this['_map'][_0x90626a(0x1c5)]['canvas'][_0x90626a(0x263)];}get['canvasHeight'](){const _0x49ea99=_0x4a841f;return this[_0x49ea99(0x245)]['scene']['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x301d1a){const _0x4adbd7=_0x4a841f;this['_pointerEvents']=_0x301d1a;if(!this[_0x4adbd7(0x1e5)])return;_0x301d1a?this[_0x4adbd7(0x1e5)][_0x4adbd7(0x236)]['pointer-events']='all':this[_0x4adbd7(0x1e5)]['style']['pointer-events']='none';}get['particlesNumber'](){const _0x2e792f=_0x4a841f;return this['options'][_0x2e792f(0x266)];}set['particlesNumber'](_0x195c3e){const _0x23b125=_0x4a841f;this['options']['particlesNumber']=_0x195c3e,clearTimeout(this[_0x23b125(0x1be)]),this[_0x23b125(0x1be)]=setTimeout(()=>{const _0x13007b=_0x23b125;this[_0x13007b(0x209)]();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set[_0x4a841f(0x19b)](_0x606db3){const _0x1afe21=_0x4a841f;this[_0x1afe21(0x251)]['speedRate']=_0x606db3,this['windField']&&(this['windField']['speedRate']=_0x606db3);}get['maxAge'](){const _0xb1c7d9=_0x4a841f;return this[_0xb1c7d9(0x251)]['maxAge'];}set['maxAge'](_0x26eaa3){const _0x173a85=_0x4a841f;this['options']['maxAge']=_0x26eaa3,this[_0x173a85(0x235)]&&(this['windField'][_0x173a85(0x1b2)]=_0x26eaa3);}get[_0x4a841f(0x231)](){return this['windData'];}set[_0x4a841f(0x231)](_0x2d3312){const _0x1de04f=_0x4a841f;this[_0x1de04f(0x22f)](_0x2d3312);}['_showHook'](_0x891b2a){_0x891b2a?this['_addedHook']():(this['windData']&&(this['options']['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){const _0x2ae3b2=_0x4a841f;this['canvas']=this[_0x2ae3b2(0x22b)](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this[_0x2ae3b2(0x247)](),this['options']['data']&&this['setData'](this[_0x2ae3b2(0x251)][_0x2ae3b2(0x231)]);}['_removedHook'](){const _0x172e0a=_0x4a841f;this['clear'](),this['unbindEvent'](),this[_0x172e0a(0x1e5)]&&(this[_0x172e0a(0x245)]['container']['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x4e6f1a=_0x4a841f,_0x49e8a4=mars3d__namespace[_0x4e6f1a(0x1cb)]['create']('canvas','mars3d-canvasWind',this['_map']['container']);return _0x49e8a4[_0x4e6f1a(0x236)][_0x4e6f1a(0x1f2)]='absolute',_0x49e8a4['style'][_0x4e6f1a(0x201)]='0px',_0x49e8a4['style']['left']='0px',_0x49e8a4['style']['width']=this['_map'][_0x4e6f1a(0x1c5)]['canvas']['clientWidth']+'px',_0x49e8a4['style']['height']=this[_0x4e6f1a(0x245)]['scene'][_0x4e6f1a(0x1e5)]['clientHeight']+'px',_0x49e8a4[_0x4e6f1a(0x236)]['pointerEvents']=this['_pointerEvents']?'auto':'none',_0x49e8a4[_0x4e6f1a(0x236)]['zIndex']=this['options']['zIndex']??0x9,_0x49e8a4['width']=this['_map']['scene']['canvas']['clientWidth'],_0x49e8a4['height']=this['_map']['scene']['canvas']['clientHeight'],_0x49e8a4;}[_0x4a841f(0x24b)](){const _0x1ca67f=_0x4a841f;this['canvas']&&(this['canvas']['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',this['canvas']['style']['height']=this['_map']['scene']['canvas'][_0x1ca67f(0x1fd)]+'px',this['canvas']['width']=this['_map'][_0x1ca67f(0x1c5)][_0x1ca67f(0x1e5)]['clientWidth'],this['canvas']['height']=this['_map']['scene']['canvas'][_0x1ca67f(0x1fd)]);}[_0x4a841f(0x247)](){const _0x302dd5=_0x4a841f,_0x29d1d5=this;let _0x408055=Date['now']();(function _0x40efb2(){const _0x2d1eaa=_0x4431;_0x29d1d5['animateFrame']=window[_0x2d1eaa(0x185)](_0x40efb2);if(_0x29d1d5['show']&&_0x29d1d5['windField']){const _0x394b70=Date[_0x2d1eaa(0x219)](),_0x3a4f2a=_0x394b70-_0x408055;_0x3a4f2a>_0x29d1d5['frameTime']&&(_0x408055=_0x394b70-_0x3a4f2a%_0x29d1d5[_0x2d1eaa(0x18f)],_0x29d1d5[_0x2d1eaa(0x259)]());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this[_0x302dd5(0x251)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x302dd5(0x1a7)],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x302dd5(0x203)]['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x4a841f(0x1e8)](){const _0xee34b0=_0x4a841f;window['cancelAnimationFrame'](this[_0xee34b0(0x271)]),delete this['animateFrame'],window['removeEventListener']('resize',this['resize']),this['options']['mouseHidden']&&(this['_map'][_0xee34b0(0x1dc)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this[_0xee34b0(0x1e1)],this),this[_0xee34b0(0x245)]['off'](mars3d__namespace[_0xee34b0(0x203)][_0xee34b0(0x220)],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x5caa0b){const _0x36a9e9=_0x4a841f;clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;this[_0x36a9e9(0x1e5)]['style']['visibility']='hidden',this['refreshTimer']=setTimeout(()=>{const _0x5e7502=_0x36a9e9;if(!this[_0x5e7502(0x26a)])return;this[_0x5e7502(0x209)](),this['canvas']['style']['visibility']=_0x5e7502(0x19e);},0xc8);}['_onMouseDownEvent'](_0x19f071){const _0x509941=_0x4a841f;this['mouse_down']=!![],this['_map'][_0x509941(0x1dc)](mars3d__namespace[_0x509941(0x203)]['mouseMove'],this[_0x509941(0x187)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0xe15c1c){const _0x27638=_0x4a841f;if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this[_0x27638(0x1e5)][_0x27638(0x236)][_0x27638(0x1f6)]='hidden',this[_0x27638(0x228)]=!![]);}[_0x4a841f(0x1e1)](_0x3dbe88){const _0x3a0be3=_0x4a841f;if(!this['show']||!this[_0x3a0be3(0x1e5)])return;this['_map'][_0x3a0be3(0x1dc)](mars3d__namespace['EventType'][_0x3a0be3(0x220)],this['_onMouseMoveEvent'],this),this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['canvas']['style'][_0x3a0be3(0x1f6)]='visible',this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x2f0e77){const _0x5ae349=_0x4a841f;this['clear'](),this[_0x5ae349(0x24d)]=_0x2f0e77,this['windField']['setDate'](_0x2f0e77),this['redraw']();}['redraw'](){const _0x292bb6=_0x4a841f;if(!this['show'])return;this['windField']['setOptions'](this[_0x292bb6(0x251)]),this[_0x292bb6(0x259)]();}[_0x4a841f(0x259)](){const _0x13be57=_0x4a841f;if(this['_updateIng'])return;this[_0x13be57(0x1a3)]=!![];if(this['worker'])this['windField']['update']();else{const _0x5f5a57=this['windField']['getParticles']();this['_drawLines'](_0x5f5a57);}this[_0x13be57(0x1a3)]=![];}['_drawLines'](_0x5060ec){const _0x44184e=_0x4a841f;this['canvasContext'][_0x44184e(0x269)]='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this[_0x44184e(0x1f8)]),this['canvasContext']['globalCompositeOperation']=_0x44184e(0x1dd),this[_0x44184e(0x21f)][_0x44184e(0x250)]=0.9;const _0x2873f7=this['_map']['scene'][_0x44184e(0x21d)]!==Cesium['SceneMode']['SCENE3D'],_0x59252b=this[_0x44184e(0x213)]*0.25;if(this['_colorRamp'])for(let _0xe4b803=0x0,_0x4c4a5a=_0x5060ec['length'];_0xe4b803<_0x4c4a5a;_0xe4b803++){const _0x2f718c=_0x5060ec[_0xe4b803],_0x29d052=this['_tomap'](_0x2f718c['lng'],_0x2f718c['lat'],_0x2f718c),_0x42e223=this['_tomap'](_0x2f718c['tlng'],_0x2f718c['tlat'],_0x2f718c);if(!_0x29d052||!_0x42e223)continue;if(_0x2873f7&&Math[_0x44184e(0x243)](_0x29d052[0x0]-_0x42e223[0x0])>=_0x59252b)continue;this['canvasContext']['beginPath'](),this['canvasContext'][_0x44184e(0x1bf)]=this[_0x44184e(0x1bf)],this[_0x44184e(0x21f)]['strokeStyle']=this[_0x44184e(0x1b8)]['getColor'](_0x2f718c[_0x44184e(0x1b7)]),this['canvasContext']['moveTo'](_0x29d052[0x0],_0x29d052[0x1]),this['canvasContext'][_0x44184e(0x1b5)](_0x42e223[0x0],_0x42e223[0x1]),this['canvasContext']['stroke']();}else{this['canvasContext'][_0x44184e(0x267)](),this['canvasContext']['lineWidth']=this[_0x44184e(0x1bf)],this['canvasContext']['strokeStyle']=this['color'];for(let _0x32a83d=0x0,_0xd06162=_0x5060ec['length'];_0x32a83d<_0xd06162;_0x32a83d++){const _0x3e4021=_0x5060ec[_0x32a83d],_0x2b4273=this['_tomap'](_0x3e4021[_0x44184e(0x253)],_0x3e4021['lat'],_0x3e4021),_0x245dd0=this['_tomap'](_0x3e4021['tlng'],_0x3e4021['tlat'],_0x3e4021);if(!_0x2b4273||!_0x245dd0)continue;if(_0x2873f7&&Math['abs'](_0x2b4273[0x0]-_0x245dd0[0x0])>=_0x59252b)continue;this[_0x44184e(0x21f)][_0x44184e(0x1c0)](_0x2b4273[0x0],_0x2b4273[0x1]),this['canvasContext']['lineTo'](_0x245dd0[0x0],_0x245dd0[0x1]);}this[_0x44184e(0x21f)]['stroke']();}}['_tomap'](_0x2e83a0,_0x502188,_0x28a23a){const _0x17aafe=_0x4a841f,_0x267d9e=Cesium['Cartesian3']['fromDegrees'](_0x2e83a0,_0x502188,this[_0x17aafe(0x26d)]),_0x4153e4=this[_0x17aafe(0x245)]['scene'];if(_0x4153e4['mode']===Cesium['SceneMode']['SCENE3D']){const _0x21e9b9=new Cesium[(_0x17aafe(0x21c))](_0x4153e4[_0x17aafe(0x1ca)]['ellipsoid'],_0x4153e4[_0x17aafe(0x241)]['positionWC']),_0x226765=_0x21e9b9[_0x17aafe(0x22d)](_0x267d9e);if(!_0x226765)return _0x28a23a['age']=0x0,null;}const _0x7a6ef2=Cesium[_0x17aafe(0x198)]['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x267d9e);return _0x7a6ef2?[_0x7a6ef2['x'],_0x7a6ef2['y']]:null;}[_0x4a841f(0x21e)](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){const _0x5b710f=_0x4a841f;this['worker']=new Worker(this['options']['worker']),this['worker']['onmessage']=_0x20f0ca=>{this['_drawLines'](_0x20f0ca['data']['particles']),this['_updateIng2']=![];},this['windField']={'init':_0x23ec71=>{const _0x2a1590=_0x4431;this[_0x2a1590(0x26f)][_0x2a1590(0x1c4)]({'type':'init','options':_0x23ec71});},'setOptions':_0xb9de98=>{this['worker']['postMessage']({'type':'setOptions','options':_0xb9de98});},'setDate':_0x331417=>{this['worker']['postMessage']({'type':'setDate','data':_0x331417});},'update':()=>{const _0x426782=_0x4431;if(this['_updateIng2'])return;this['_updateIng2']=!![],this['worker'][_0x426782(0x1c4)]({'type':_0x426782(0x259)});},'clear':()=>{this['worker']['postMessage']({'type':'clear'});}},this[_0x5b710f(0x235)]['init'](this['options']);}}mars3d__namespace['LayerUtil'][_0x4a841f(0x194)](_0x4a841f(0x249),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports[_0x4a841f(0x26c)]=CanvasWindField,exports['CanvasWindLayer']=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.7.3",
3
+ "version": "3.7.4",
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.7.3"
11
+ "mars3d": "~3.7.4"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"