mars3d-wind 3.6.14 → 3.6.16

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.6.14
5
- * 编译日期:2023-11-27 22:14:11
4
+ * 版本信息:v3.6.16
5
+ * 编译日期:2023-12-12 14:26:55
6
6
  * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
7
  * 使用单位:免费公开版 ,2023-03-17
8
8
  */
@@ -11,5 +11,5 @@
11
11
  typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
12
12
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
13
13
  })(this, (function (exports, mars3d) {
14
- 'use strict';const _0x36b94b=_0x5a58;(function(_0x5df716,_0x19b17b){const _0x372556=_0x5a58,_0x25b6c1=_0x5df716();while(!![]){try{const _0x5858d9=-parseInt(_0x372556(0x289))/0x1*(-parseInt(_0x372556(0x2c3))/0x2)+parseInt(_0x372556(0x202))/0x3*(-parseInt(_0x372556(0x285))/0x4)+-parseInt(_0x372556(0x262))/0x5+parseInt(_0x372556(0x2da))/0x6+parseInt(_0x372556(0x24d))/0x7+-parseInt(_0x372556(0x1ef))/0x8*(-parseInt(_0x372556(0x209))/0x9)+-parseInt(_0x372556(0x29c))/0xa*(parseInt(_0x372556(0x27a))/0xb);if(_0x5858d9===_0x19b17b)break;else _0x25b6c1['push'](_0x25b6c1['shift']());}catch(_0x125dc7){_0x25b6c1['push'](_0x25b6c1['shift']());}}}(_0x3fed,0x4207b));function _interopNamespace(_0xf88c29){const _0x2f3727=_0x5a58;if(_0xf88c29&&_0xf88c29['__esModule'])return _0xf88c29;var _0x4cc491=Object[_0x2f3727(0x298)](null);return _0xf88c29&&Object['keys'](_0xf88c29)['forEach'](function(_0x51731a){const _0x4fb581=_0x2f3727;if(_0x51731a!=='default'){var _0x50dd7f=Object['getOwnPropertyDescriptor'](_0xf88c29,_0x51731a);Object['defineProperty'](_0x4cc491,_0x51731a,_0x50dd7f[_0x4fb581(0x1eb)]?_0x50dd7f:{'enumerable':!![],'get':function(){return _0xf88c29[_0x51731a];}});}}),_0x4cc491[_0x2f3727(0x28d)]=_0xf88c29,_0x4cc491;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x245016,_0x1703b5){const _0x46cf44=_0x5a58,_0x2fef65=_0x245016*Math['cos'](Cesium$7[_0x46cf44(0x1ed)][_0x46cf44(0x2d1)](_0x1703b5));return _0x2fef65;}function getV(_0x3ec232,_0x55205){const _0x169896=_0x5a58,_0x15a7b9=_0x3ec232*Math[_0x169896(0x26f)](Cesium$7['Math']['toRadians'](_0x55205));return _0x15a7b9;}function getSpeed(_0x300f0e,_0x1462af){const _0x44560a=_0x5a58,_0xb0ed9f=Math['sqrt'](Math[_0x44560a(0x2a8)](_0x300f0e,0x2)+Math['pow'](_0x1462af,0x2));return _0xb0ed9f;}function getDirection(_0x57aff3,_0x337c83){let _0xd3a9fc=Cesium$7['Math']['toDegrees'](Math['atan2'](_0x337c83,_0x57aff3));return _0xd3a9fc+=_0xd3a9fc<0x0?0x168:0x0,_0xd3a9fc;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x12c607){const _0x4d53ee=_0x5a58;this['commandType']=_0x12c607['commandType'],this['geometry']=_0x12c607['geometry'],this[_0x4d53ee(0x276)]=_0x12c607['attributeLocations'],this[_0x4d53ee(0x23a)]=_0x12c607['primitiveType'],this['uniformMap']=_0x12c607[_0x4d53ee(0x21c)],this[_0x4d53ee(0x252)]=_0x12c607['vertexShaderSource'],this['fragmentShaderSource']=_0x12c607['fragmentShaderSource'],this[_0x4d53ee(0x22a)]=_0x12c607[_0x4d53ee(0x22a)],this['framebuffer']=_0x12c607['framebuffer'],this['outputTexture']=_0x12c607[_0x4d53ee(0x26a)],this['autoClear']=_0x12c607['autoClear']??![],this['preExecute']=_0x12c607['preExecute'],this['show']=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this[_0x4d53ee(0x2a5)]&&(this['clearCommand']=new Cesium$6[(_0x4d53ee(0x291))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x4d53ee(0x2c1)][_0x4d53ee(0x1ee)]}));}[_0x36b94b(0x229)](_0x3e7957){const _0x22e3b6=_0x36b94b;switch(this[_0x22e3b6(0x28e)]){case'Draw':{const _0x9d922e=Cesium$6['VertexArray'][_0x22e3b6(0x207)]({'context':_0x3e7957,'geometry':this['geometry'],'attributeLocations':this[_0x22e3b6(0x276)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x1da617=Cesium$6[_0x22e3b6(0x2ab)][_0x22e3b6(0x2c2)]({'context':_0x3e7957,'attributeLocations':this[_0x22e3b6(0x276)],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x2bb0ba=Cesium$6['RenderState']['fromCache'](this[_0x22e3b6(0x22a)]);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x1da617,'vertexArray':_0x9d922e,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x2bb0ba,'uniformMap':this[_0x22e3b6(0x21c)],'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[_0x22e3b6(0x21c)],'outputTexture':this['outputTexture'],'persists':!![]});}}}['setGeometry'](_0x24f514,_0x5bc3eb){const _0x882ce8=_0x36b94b;this['geometry']=_0x5bc3eb;const _0x18a569=Cesium$6['VertexArray']['fromGeometry']({'context':_0x24f514,'geometry':this[_0x882ce8(0x1f6)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage'][_0x882ce8(0x2ca)]});this['commandToExecute']['vertexArray']=_0x18a569;}['update'](_0x50c836){const _0x166f81=_0x36b94b;if(!this['show'])return;if(_0x50c836['mode']!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6['defined'](this['commandToExecute'])&&(this['commandToExecute']=this[_0x166f81(0x229)](_0x50c836['context'])),Cesium$6['defined'](this['preExecute'])&&this[_0x166f81(0x296)](),Cesium$6['defined'](this['clearCommand'])&&_0x50c836[_0x166f81(0x260)]['push'](this['clearCommand']),_0x50c836['commandList'][_0x166f81(0x2b7)](this['commandToExecute']);}[_0x36b94b(0x2ce)](){return![];}[_0x36b94b(0x2c0)](){const _0x3e5de8=_0x36b94b;if(this[_0x3e5de8(0x2d2)]){var _0x2a9af1,_0x5ab326;(_0x2a9af1=this['clearCommand'])!==null&&_0x2a9af1!==void 0x0&&_0x2a9af1['vertexArray']&&this['clearCommand'][_0x3e5de8(0x24b)]['destroy'](),(_0x5ab326=this['clearCommand'])!==null&&_0x5ab326!==void 0x0&&_0x5ab326['shaderProgram']&&this[_0x3e5de8(0x2d2)]['shaderProgram']['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this['commandToExecute'][_0x3e5de8(0x27f)]&&this['commandToExecute']['shaderProgram']['destroy'](),delete this[_0x3e5de8(0x226)]),Cesium$6[_0x3e5de8(0x24e)](this);}}function _0x5a58(_0x56b4de,_0x3b6fdf){const _0x3fed3d=_0x3fed();return _0x5a58=function(_0x5a586f,_0x58d528){_0x5a586f=_0x5a586f-0x1e5;let _0x36644f=_0x3fed3d[_0x5a586f];return _0x36644f;},_0x5a58(_0x56b4de,_0x3b6fdf);}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x4c7c8d=function(){const _0x608528=_0x5a58,_0x4bd04b=new Cesium$5[(_0x608528(0x22d))]({'attributes':new Cesium$5[(_0x608528(0x27b))]({'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[(_0x608528(0x2ac))]({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x4bd04b;},_0x430f7c=function(_0x53262f,_0x3c5fef){if(Cesium$5['defined'](_0x3c5fef)){const _0x5cd1ce={};_0x5cd1ce['arrayBufferView']=_0x3c5fef,_0x53262f['source']=_0x5cd1ce;}const _0x526d15=new Cesium$5['Texture'](_0x53262f);return _0x526d15;},_0x763c5d=function(_0x439ded,_0x2130af,_0x5357f0){const _0xbd54e7=_0x5a58,_0x2407b1=new Cesium$5[(_0xbd54e7(0x2b3))]({'context':_0x439ded,'colorTextures':[_0x2130af],'depthTexture':_0x5357f0});return _0x2407b1;},_0x3e731a=function(_0x3e5f2d){const _0x1a3a7f=!![],_0x17001e=![],_0x1d18e1={'viewport':_0x3e5f2d['viewport'],'depthTest':_0x3e5f2d['depthTest'],'depthMask':_0x3e5f2d['depthMask'],'blending':_0x3e5f2d['blending']},_0x9a5f3=Cesium$5['Appearance']['getDefaultRenderState'](_0x1a3a7f,_0x17001e,_0x1d18e1);return _0x9a5f3;},_0x30486c=function(_0x1dbb74){const _0x18ff9f=_0x5a58,_0x39cc91={},_0x3fbb7c=Cesium$5['Math']['mod'](_0x1dbb74[_0x18ff9f(0x237)],Cesium$5['Math']['TWO_PI']),_0x91b360=Cesium$5[_0x18ff9f(0x1ed)][_0x18ff9f(0x2aa)](_0x1dbb74['east'],Cesium$5[_0x18ff9f(0x1ed)]['TWO_PI']),_0x3889c5=_0x1dbb74['width'];let _0x383641,_0x3cdb79;_0x3889c5>Cesium$5['Math'][_0x18ff9f(0x27d)]?(_0x383641=0x0,_0x3cdb79=Cesium$5['Math']['TWO_PI']):_0x91b360-_0x3fbb7c<_0x3889c5?(_0x383641=_0x3fbb7c,_0x3cdb79=_0x3fbb7c+_0x3889c5):(_0x383641=_0x3fbb7c,_0x3cdb79=_0x91b360);_0x39cc91['lon']={'min':Cesium$5['Math']['toDegrees'](_0x383641),'max':Cesium$5[_0x18ff9f(0x1ed)][_0x18ff9f(0x214)](_0x3cdb79)};const _0x4d3c49=_0x1dbb74['south'],_0x534c4e=_0x1dbb74[_0x18ff9f(0x24c)],_0x38b03a=_0x1dbb74[_0x18ff9f(0x292)],_0x4ca3f0=_0x38b03a>Cesium$5['Math']['PI']/0xc?_0x38b03a/0x2:0x0;let _0x3d39e3=Cesium$5[_0x18ff9f(0x1ed)]['clampToLatitudeRange'](_0x4d3c49-_0x4ca3f0),_0x39ebcf=Cesium$5['Math'][_0x18ff9f(0x2c5)](_0x534c4e+_0x4ca3f0);return _0x3d39e3<-Cesium$5['Math'][_0x18ff9f(0x267)]&&(_0x3d39e3=-Cesium$5['Math'][_0x18ff9f(0x2cc)]),_0x39ebcf>Cesium$5['Math']['PI_OVER_THREE']&&(_0x39ebcf=Cesium$5['Math'][_0x18ff9f(0x2cc)]),_0x39cc91['lat']={'min':Cesium$5['Math']['toDegrees'](_0x3d39e3),'max':Cesium$5[_0x18ff9f(0x1ed)][_0x18ff9f(0x214)](_0x39ebcf)},_0x39cc91;};return{'getFullscreenQuad':_0x4c7c8d,'createTexture':_0x430f7c,'createFramebuffer':_0x763c5d,'createRawRenderState':_0x3e731a,'viewRectangleToLonLatRange':_0x30486c};}());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=_0x36b94b(0x244),trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20trailsColor;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x2810ed,_0x4e9b8d,_0x51075e,_0x397243,_0x59a89f){const _0x18c628=_0x36b94b;this['createRenderingTextures'](_0x2810ed,_0x4e9b8d,_0x51075e['colors']),this[_0x18c628(0x2b1)](_0x2810ed),this['createRenderingPrimitives'](_0x2810ed,_0x51075e,_0x397243,_0x59a89f);}['createRenderingTextures'](_0x374929,_0x41c5d1,_0x3ddb33){const _0x16be71=_0x36b94b,_0x182cbf={'context':_0x374929,'width':_0x374929['drawingBufferWidth'],'height':_0x374929['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['RGBA'],'pixelDatatype':Cesium$4[_0x16be71(0x20f)]['UNSIGNED_BYTE']},_0x2f46c3={'context':_0x374929,'width':_0x374929[_0x16be71(0x248)],'height':_0x374929['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x16be71(0x279)]['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x4c90c4=_0x3ddb33['length'],_0x262644=new Float32Array(_0x4c90c4*0x3);for(let _0x3f8292=0x0;_0x3f8292<_0x4c90c4;_0x3f8292++){const _0x2ba2cc=Cesium$4[_0x16be71(0x2c7)]['fromCssColorString'](_0x3ddb33[_0x3f8292]);_0x262644[0x3*_0x3f8292]=_0x2ba2cc[_0x16be71(0x235)],_0x262644[0x3*_0x3f8292+0x1]=_0x2ba2cc[_0x16be71(0x2d7)],_0x262644[0x3*_0x3f8292+0x2]=_0x2ba2cc['blue'];}const _0xa42b79={'context':_0x374929,'width':_0x4c90c4,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter'][_0x16be71(0x223)]})};this[_0x16be71(0x2a3)]={'segmentsColor':Util['createTexture'](_0x182cbf),'segmentsDepth':Util['createTexture'](_0x2f46c3),'currentTrailsColor':Util['createTexture'](_0x182cbf),'currentTrailsDepth':Util['createTexture'](_0x2f46c3),'nextTrailsColor':Util['createTexture'](_0x182cbf),'nextTrailsDepth':Util[_0x16be71(0x25c)](_0x2f46c3),'colorTable':Util['createTexture'](_0xa42b79,_0x262644)};}[_0x36b94b(0x2b1)](_0x3e9aa7){const _0x2074c9=_0x36b94b;this['framebuffers']={'segments':Util['createFramebuffer'](_0x3e9aa7,this['textures']['segmentsColor'],this['textures'][_0x2074c9(0x20e)]),'currentTrails':Util[_0x2074c9(0x232)](_0x3e9aa7,this[_0x2074c9(0x2a3)]['currentTrailsColor'],this['textures']['currentTrailsDepth']),'nextTrails':Util[_0x2074c9(0x232)](_0x3e9aa7,this['textures'][_0x2074c9(0x22e)],this['textures']['nextTrailsDepth'])};}[_0x36b94b(0x2bc)](_0x57aa0c){const _0x575e7c=_0x36b94b,_0x43082e=0x4;let _0x582af4=[];for(let _0x39b0f4=0x0;_0x39b0f4<_0x57aa0c[_0x575e7c(0x269)];_0x39b0f4++){for(let _0x402104=0x0;_0x402104<_0x57aa0c['particlesTextureSize'];_0x402104++){for(let _0x2070fc=0x0;_0x2070fc<_0x43082e;_0x2070fc++){_0x582af4['push'](_0x39b0f4/_0x57aa0c['particlesTextureSize']),_0x582af4[_0x575e7c(0x2b7)](_0x402104/_0x57aa0c['particlesTextureSize']);}}}_0x582af4=new Float32Array(_0x582af4);let _0x12cf08=[];const _0x18f0d5=[-0x1,0x1],_0x355235=[-0x1,0x1];for(let _0x4cd21f=0x0;_0x4cd21f<_0x57aa0c['maxParticles'];_0x4cd21f++){for(let _0x9be4a8=0x0;_0x9be4a8<_0x43082e/0x2;_0x9be4a8++){for(let _0x517896=0x0;_0x517896<_0x43082e/0x2;_0x517896++){_0x12cf08['push'](_0x18f0d5[_0x9be4a8]),_0x12cf08['push'](_0x355235[_0x517896]),_0x12cf08['push'](0x0);}}}_0x12cf08=new Float32Array(_0x12cf08);const _0x4ab66e=0x6*_0x57aa0c['maxParticles'],_0x5db7db=new Uint32Array(_0x4ab66e);for(let _0x2b1342=0x0,_0xe98b1c=0x0,_0x497ab5=0x0;_0x2b1342<_0x57aa0c['maxParticles'];_0x2b1342++){_0x5db7db[_0xe98b1c++]=_0x497ab5+0x0,_0x5db7db[_0xe98b1c++]=_0x497ab5+0x1,_0x5db7db[_0xe98b1c++]=_0x497ab5+0x2,_0x5db7db[_0xe98b1c++]=_0x497ab5+0x2,_0x5db7db[_0xe98b1c++]=_0x497ab5+0x1,_0x5db7db[_0xe98b1c++]=_0x497ab5+0x3,_0x497ab5+=0x4;}const _0x2e6ad7=new Cesium$4[(_0x575e7c(0x22d))]({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4[_0x575e7c(0x2dc)][_0x575e7c(0x2b4)],'componentsPerAttribute':0x2,'values':_0x582af4}),'normal':new Cesium$4[(_0x575e7c(0x2ac))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x12cf08})}),'indices':_0x5db7db});return _0x2e6ad7;}['createRenderingPrimitives'](_0x5eeeee,_0xd2184e,_0x196604,_0x3f387c){const _0x25d116=_0x36b94b,_0x4036d7=this;this[_0x25d116(0x1e8)]={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x25d116(0x2bc)](_0xd2184e),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){return _0x3f387c['particlesTextures']['currentParticlesPosition'];},'postProcessingPosition':function(){const _0x4c74ac=_0x25d116;return _0x3f387c[_0x4c74ac(0x228)]['postProcessingPosition'];},'postProcessingSpeed':function(){const _0x5a7d28=_0x25d116;return _0x3f387c[_0x5a7d28(0x228)]['postProcessingSpeed'];},'colorTable':function(){const _0x3bbc9f=_0x25d116;return _0x4036d7[_0x3bbc9f(0x2a3)][_0x3bbc9f(0x2b8)];},'aspect':function(){const _0x3e4292=_0x25d116;return _0x5eeeee['drawingBufferWidth']/_0x5eeeee[_0x3e4292(0x28b)];},'pixelSize':function(){return _0x196604['pixelSize'];},'lineWidth':function(){return _0xd2184e['lineWidth'];},'particleHeight':function(){return _0xd2184e['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'][_0x25d116(0x272)],'uniformMap':{'segmentsColorTexture':function(){const _0x4b671=_0x25d116;return _0x4036d7[_0x4b671(0x2a3)][_0x4b671(0x2a6)];},'segmentsDepthTexture':function(){const _0x19c622=_0x25d116;return _0x4036d7[_0x19c622(0x2a3)][_0x19c622(0x20e)];},'currentTrailsColor':function(){return _0x4036d7['framebuffers']['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x4036d7['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){const _0x4ecc7a=_0x25d116;return _0xd2184e[_0x4ecc7a(0x294)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[trailDraw_frag]}),'rawRenderState':Util[_0x25d116(0x29f)]({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x25d116(0x28f)][_0x25d116(0x2d5)]},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x3770ab=_0x25d116,_0x2d5100=_0x4036d7['framebuffers']['currentTrails'];_0x4036d7['framebuffers']['currentTrails']=_0x4036d7['framebuffers']['nextTrails'],_0x4036d7['framebuffers']['nextTrails']=_0x2d5100,_0x4036d7['primitives']['trails']['commandToExecute'][_0x3770ab(0x299)]=_0x4036d7['framebuffers'][_0x3770ab(0x29d)],_0x4036d7['primitives']['trails']['clearCommand'][_0x3770ab(0x299)]=_0x4036d7[_0x3770ab(0x2a1)]['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){const _0x458e92=_0x25d116;return _0x4036d7['framebuffers'][_0x458e92(0x29d)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x34057b=_0x25d116;return _0x4036d7['framebuffers']['nextTrails'][_0x34057b(0x230)];}},'vertexShaderSource':new Cesium$4[(_0x25d116(0x2a0))]({'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=_0x36b94b(0x243),updateSpeed_frag='uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec3\x20percent\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20\x20\x20float\x20normalization\x20=\x20length(percent);\x0a\x0a\x20\x20\x20\x20return\x20normalization;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20//\x20vec3\x20currentSpeed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20out_FragColor\x20=\x20nextSpeed;\x0a}\x0a',updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a',postProcessingPosition_frag='uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a',postProcessingSpeed_frag=_0x36b94b(0x23d);function _0x3fed(){const _0x51d216=['GeometryAttribute','dimensions','_onMouseMoveEvent','random','ZERO','createRenderingFramebuffers','_calcUV','Framebuffer','FLOAT','computeViewRectangle','defineProperty','push','colorTable','getUVByPoint','RGBA','SCENE3D','createSegmentsGeometry','currentParticlesPosition','position','getUVByXY','destroy','Pass','fromCache','150058kchuta','windField','clampToLatitudeRange','setOptions','Color','mars3d-canvasWind','forEach','STATIC_DRAW','length','PI_OVER_TWO','trails','isDestroyed','maxParticles','rows','toRadians','clearCommand','zIndex','NEAREST','ALWAYS','visible','green','canvasContext','mode','3042414GshfWY','layer','ComponentDatatype','getPixelSize','fromDegrees','postProcessingPosition','show','sqrt','primitives','canvasWind','currentParticlesSpeed','get','vdata','Math','OPAQUE','8JzpWQQ','style','resize','register','_mountedHook','_maxAge','update','geometry','_onMap_preRenderEvent','off','removeEventListener','_pointerEvents','cancelAnimationFrame','ymin','canvas','speed','container','particlesRendering','_colorRamp','351201UutfgR','getExtent','_onMouseDownEvent','globalCompositeOperation','redraw','fromGeometry','Cesium','3844710yTxBFw','windData','grid','updateSpeed','keys','segmentsDepth','PixelDatatype','lon','dropRateBump','_onMapWhellEvent','_randomParticle','toDegrees','PrimitiveCollection','max','lng','stroke','xmax','particlesNumber','lineTo','uniformMap','age','particles','randomBetween','execute','_createCanvas','now','LINEAR','viewerParameters','particlesWind','commandToExecute','maxAge','particlesTextures','createCommand','rawRenderState','latRange','speedRate','Geometry','nextTrailsColor','animateFrame','depthTexture','levmax','createFramebuffer','fixedHeight','VertexArray','red','nextParticlesSpeed','west','SceneMode','_setOptionsHook','primitiveType','lonRange','top','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','setDate','clientWidth','Compute','add','umin','//\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','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','_addedHook','preRender','auto','drawingBufferWidth','worker','pointerEvents','vertexArray','north','3476326pXCqBT','destroyObject','particlesComputing','windTextures','colors','vertexShaderSource','options','EventType','hidden','removeAll','mouseDown','getOptions','mouseMove','steps','_updateIng','createTexture','BoundingSphere','lineWidth','ymax','commandList','getContext','2576570gWQCfW','data','_calc_speedRate','all','_map','PI_OVER_THREE','DomUtil','particlesTextureSize','outputTexture','_data','cols','mouse_down','TextureMinificationFilter','sin','Cartesian3','_speedRate','TRIANGLES','lat','min','xmin','attributeLocations','particleSystem','globe','PixelFormat','6534209gDjiVc','GeometryAttributes','pixelSize','THREE_PI_OVER_TWO','unbindEvent','shaderProgram','refreshTimer','levmin','_updateIng2','canvasHeight','scene','12UTepjR','postMessage','tlat','mouse_move','4bPaMob','canvasResize','drawingBufferHeight','tlng','default','commandType','DepthFunction','reverse','ClearCommand','height','clear','fadeOpacity','array','preExecute','dropRate','create','framebuffer','postProcessingSpeed','clearFramebuffers','10oqxqNb','nextTrails','context','createRawRenderState','ShaderSource','framebuffers','setData','textures','camera','autoClear','segmentsColor','segments','pow','_bilinearInterpolation','mod','ShaderProgram'];_0x3fed=function(){return _0x51d216;};return _0x3fed();}const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x160fa5,_0x547f54,_0x2f2226,_0x393679){this['data']=_0x547f54,this['createWindTextures'](_0x160fa5,_0x547f54),this['createParticlesTextures'](_0x160fa5,_0x2f2226,_0x393679),this['createComputingPrimitives'](_0x547f54,_0x2f2226,_0x393679);}['createWindTextures'](_0x534050,_0xc6f216){const _0x85a15d=_0x36b94b,_0xa8a6ca={'context':_0x534050,'width':_0xc6f216['dimensions'][_0x85a15d(0x210)],'height':_0xc6f216['dimensions'][_0x85a15d(0x273)]*(_0xc6f216['dimensions']['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3[_0x85a15d(0x26e)][_0x85a15d(0x2d4)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x85a15d(0x2d4)]})};this['windTextures']={'U':Util[_0x85a15d(0x25c)](_0xa8a6ca,_0xc6f216['U']['array']),'V':Util[_0x85a15d(0x25c)](_0xa8a6ca,_0xc6f216['V']['array'])};}['createParticlesTextures'](_0x3373ce,_0x35f8af,_0x320a51){const _0x1d375a=_0x36b94b,_0x180cfe={'context':_0x3373ce,'width':_0x35f8af['particlesTextureSize'],'height':_0x35f8af[_0x1d375a(0x269)],'pixelFormat':Cesium$3['PixelFormat'][_0x1d375a(0x2ba)],'pixelDatatype':Cesium$3['PixelDatatype'][_0x1d375a(0x2b4)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x3bee68=this['randomizeParticles'](_0x35f8af['maxParticles'],_0x320a51),_0x400598=new Float32Array(0x4*_0x35f8af['maxParticles'])['fill'](0x0);this[_0x1d375a(0x228)]={'particlesWind':Util[_0x1d375a(0x25c)](_0x180cfe),'currentParticlesPosition':Util['createTexture'](_0x180cfe,_0x3bee68),'nextParticlesPosition':Util['createTexture'](_0x180cfe,_0x3bee68),'currentParticlesSpeed':Util['createTexture'](_0x180cfe,_0x400598),'nextParticlesSpeed':Util['createTexture'](_0x180cfe,_0x400598),'postProcessingPosition':Util['createTexture'](_0x180cfe,_0x3bee68),'postProcessingSpeed':Util['createTexture'](_0x180cfe,_0x400598)};}['randomizeParticles'](_0x139e8b,_0x25739f){const _0x5d2abd=_0x36b94b,_0x6c7f82=new Float32Array(0x4*_0x139e8b);for(let _0x2c425d=0x0;_0x2c425d<_0x139e8b;_0x2c425d++){_0x6c7f82[0x4*_0x2c425d]=Cesium$3['Math']['randomBetween'](_0x25739f['lonRange']['x'],_0x25739f[_0x5d2abd(0x23b)]['y']),_0x6c7f82[0x4*_0x2c425d+0x1]=Cesium$3['Math']['randomBetween'](_0x25739f['latRange']['x'],_0x25739f['latRange']['y']),_0x6c7f82[0x4*_0x2c425d+0x2]=Cesium$3['Math'][_0x5d2abd(0x21f)](this['data']['lev'][_0x5d2abd(0x274)],this[_0x5d2abd(0x263)]['lev']['max']),_0x6c7f82[0x4*_0x2c425d+0x3]=0x0;}return _0x6c7f82;}['destroyParticlesTextures'](){Object['keys'](this['particlesTextures'])['forEach'](_0x1f1985=>{const _0x44d1d2=_0x5a58;this['particlesTextures'][_0x1f1985][_0x44d1d2(0x2c0)]();});}['createComputingPrimitives'](_0x4e7bda,_0x13956d,_0x400be5){const _0x8b2824=_0x36b94b,_0x2e9f42=new Cesium$3['Cartesian3'](_0x4e7bda[_0x8b2824(0x2ad)]['lon'],_0x4e7bda['dimensions']['lat'],_0x4e7bda[_0x8b2824(0x2ad)]['lev']),_0x2ab3c8=new Cesium$3['Cartesian3'](_0x4e7bda['lon'][_0x8b2824(0x274)],_0x4e7bda['lat']['min'],_0x4e7bda['lev'][_0x8b2824(0x274)]),_0x9cab50=new Cesium$3['Cartesian3'](_0x4e7bda['lon']['max'],_0x4e7bda['lat']['max'],_0x4e7bda['lev']['max']),_0x51542b=new Cesium$3[(_0x8b2824(0x270))]((_0x9cab50['x']-_0x2ab3c8['x'])/(_0x2e9f42['x']-0x1),(_0x9cab50['y']-_0x2ab3c8['y'])/(_0x2e9f42['y']-0x1),_0x2e9f42['z']>0x1?(_0x9cab50['z']-_0x2ab3c8['z'])/(_0x2e9f42['z']-0x1):0x1),_0x2a2247=new Cesium$3['Cartesian2'](_0x4e7bda['U']['min'],_0x4e7bda['U'][_0x8b2824(0x216)]),_0x53c834=new Cesium$3['Cartesian2'](_0x4e7bda['V']['min'],_0x4e7bda['V'][_0x8b2824(0x216)]),_0x5b0991=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x5b0991['windTextures']['U'];},'V':function(){return _0x5b0991['windTextures']['V'];},'currentParticlesPosition':function(){const _0x388fce=_0x8b2824;return _0x5b0991[_0x388fce(0x228)]['currentParticlesPosition'];},'dimension':function(){return _0x2e9f42;},'minimum':function(){return _0x2ab3c8;},'maximum':function(){return _0x9cab50;},'interval':function(){return _0x51542b;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this[_0x8b2824(0x228)]['particlesWind'],'preExecute':function(){const _0x5622ed=_0x8b2824;_0x5b0991[_0x5622ed(0x1e8)]['getWind']['commandToExecute'][_0x5622ed(0x26a)]=_0x5b0991['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':_0x8b2824(0x240),'uniformMap':{'currentParticlesSpeed':function(){const _0x44b2f1=_0x8b2824;return _0x5b0991['particlesTextures'][_0x44b2f1(0x1ea)];},'particlesWind':function(){const _0x320fc0=_0x8b2824;return _0x5b0991['particlesTextures'][_0x320fc0(0x225)];},'uSpeedRange':function(){return _0x2a2247;},'vSpeedRange':function(){return _0x53c834;},'pixelSize':function(){const _0xe87cd6=_0x8b2824;return _0x400be5[_0xe87cd6(0x27c)];},'speedFactor':function(){return _0x13956d['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this[_0x8b2824(0x228)]['nextParticlesSpeed'],'preExecute':function(){const _0x37d24e=_0x8b2824,_0x3ce320=_0x5b0991['particlesTextures'][_0x37d24e(0x1ea)];_0x5b0991['particlesTextures']['currentParticlesSpeed']=_0x5b0991['particlesTextures']['postProcessingSpeed'],_0x5b0991['particlesTextures']['postProcessingSpeed']=_0x3ce320,_0x5b0991['primitives']['updateSpeed'][_0x37d24e(0x226)][_0x37d24e(0x26a)]=_0x5b0991['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x7393af=_0x8b2824;return _0x5b0991['particlesTextures'][_0x7393af(0x2bd)];},'currentParticlesSpeed':function(){return _0x5b0991['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x8b2824(0x2a0))]({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function(){const _0x5e9f76=_0x8b2824,_0x1afdba=_0x5b0991['particlesTextures']['currentParticlesPosition'];_0x5b0991['particlesTextures']['currentParticlesPosition']=_0x5b0991['particlesTextures']['postProcessingPosition'],_0x5b0991['particlesTextures'][_0x5e9f76(0x1e5)]=_0x1afdba,_0x5b0991['primitives']['updatePosition']['commandToExecute']['outputTexture']=_0x5b0991[_0x5e9f76(0x228)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x8b2824(0x240),'uniformMap':{'nextParticlesPosition':function(){return _0x5b0991['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){const _0x17a82b=_0x8b2824;return _0x5b0991['particlesTextures'][_0x17a82b(0x236)];},'lonRange':function(){return _0x400be5['lonRange'];},'latRange':function(){const _0x6198b9=_0x8b2824;return _0x400be5[_0x6198b9(0x22b)];},'randomCoefficient':function(){const _0x2d9233=Math['random']();return _0x2d9233;},'dropRate':function(){return _0x13956d['dropRate'];},'dropRateBump':function(){return _0x13956d['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this[_0x8b2824(0x228)]['postProcessingPosition'],'preExecute':function(){const _0x3bdaf9=_0x8b2824;_0x5b0991[_0x3bdaf9(0x1e8)]['postProcessingPosition']['commandToExecute']['outputTexture']=_0x5b0991['particlesTextures']['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){return _0x5b0991['particlesTextures']['postProcessingPosition'];},'nextParticlesSpeed':function(){const _0x25305e=_0x8b2824;return _0x5b0991[_0x25305e(0x228)][_0x25305e(0x236)];}},'fragmentShaderSource':new Cesium$3[(_0x8b2824(0x2a0))]({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){_0x5b0991['primitives']['postProcessingSpeed']['commandToExecute']['outputTexture']=_0x5b0991['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace[_0x36b94b(0x208)];class ParticleSystem{constructor(_0x473ecc,_0x1e1206,_0x4952c4,_0x136852){const _0x1d9708=_0x36b94b;this['context']=_0x473ecc,_0x1e1206={..._0x1e1206},_0x1e1206['udata']&&_0x1e1206['vdata']&&(_0x1e1206['dimensions']={},_0x1e1206['dimensions'][_0x1d9708(0x210)]=_0x1e1206[_0x1d9708(0x26c)],_0x1e1206['dimensions']['lat']=_0x1e1206['rows'],_0x1e1206['dimensions']['lev']=_0x1e1206['lev']||0x1,_0x1e1206['lon']={},_0x1e1206['lon']['min']=_0x1e1206[_0x1d9708(0x275)],_0x1e1206[_0x1d9708(0x210)]['max']=_0x1e1206['xmax'],_0x1e1206['lat']={},_0x1e1206['lat']['min']=_0x1e1206['ymin'],_0x1e1206[_0x1d9708(0x273)]['max']=_0x1e1206[_0x1d9708(0x25f)],_0x1e1206['lev']={},_0x1e1206['lev']['min']=_0x1e1206[_0x1d9708(0x281)]??0x1,_0x1e1206['lev']['max']=_0x1e1206[_0x1d9708(0x231)]??0x1,_0x1e1206['U']={},_0x1e1206['U']['array']=new Float32Array(_0x1e1206['udata']),_0x1e1206['U'][_0x1d9708(0x274)]=_0x1e1206[_0x1d9708(0x242)]??Math['min'](..._0x1e1206['udata']),_0x1e1206['U'][_0x1d9708(0x216)]=_0x1e1206['umax']??Math[_0x1d9708(0x216)](..._0x1e1206['udata']),_0x1e1206['V']={},_0x1e1206['V'][_0x1d9708(0x295)]=new Float32Array(_0x1e1206[_0x1d9708(0x1ec)]),_0x1e1206['V']['min']=_0x1e1206['vmin']??Math[_0x1d9708(0x274)](..._0x1e1206['vdata']),_0x1e1206['V']['max']=_0x1e1206['vmax']??Math['max'](..._0x1e1206[_0x1d9708(0x1ec)])),this['data']=_0x1e1206,this['options']=_0x4952c4,this[_0x1d9708(0x224)]=_0x136852,this['particlesComputing']=new ParticlesComputing(this['context'],this[_0x1d9708(0x263)],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0x1d9708(0x263)],this['options'],this['viewerParameters'],this['particlesComputing']);}['canvasResize'](_0x4772d4){const _0x2ec607=_0x36b94b;this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this[_0x2ec607(0x24f)]['windTextures'])['forEach'](_0x2f27de=>{const _0x4ae4d4=_0x2ec607;this[_0x4ae4d4(0x24f)][_0x4ae4d4(0x250)][_0x2f27de][_0x4ae4d4(0x2c0)]();}),this['particlesRendering'][_0x2ec607(0x2a3)][_0x2ec607(0x2b8)]['destroy'](),Object['keys'](this[_0x2ec607(0x200)]['framebuffers'])['forEach'](_0x4918f5=>{const _0x45dee7=_0x2ec607;this[_0x45dee7(0x200)][_0x45dee7(0x2a1)][_0x4918f5]['destroy']();}),this[_0x2ec607(0x29e)]=_0x4772d4,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this[_0x2ec607(0x224)]),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0x175ecd=_0x36b94b,_0x46b229=new Cesium$2['ClearCommand']({'color':new Cesium$2[(_0x175ecd(0x2c7))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x175ecd(0x2c1)]['OPAQUE']});Object['keys'](this['particlesRendering'][_0x175ecd(0x2a1)])[_0x175ecd(0x2c9)](_0x1bc3db=>{const _0x437061=_0x175ecd;_0x46b229['framebuffer']=this['particlesRendering'][_0x437061(0x2a1)][_0x1bc3db],_0x46b229[_0x437061(0x220)](this['context']);});}['refreshParticles'](_0x4bd8ea){const _0x4e8965=_0x36b94b;this[_0x4e8965(0x29b)](),this['particlesComputing']['destroyParticlesTextures'](),this[_0x4e8965(0x24f)]['createParticlesTextures'](this[_0x4e8965(0x29e)],this['options'],this['viewerParameters']);if(_0x4bd8ea){var _0x423a29;const _0x4bed48=this['particlesRendering']['createSegmentsGeometry'](this['options']);this['particlesRendering']['primitives'][_0x4e8965(0x2a7)][_0x4e8965(0x1f6)]=_0x4bed48;const _0x5b88f2=Cesium$2[_0x4e8965(0x234)]['fromGeometry']({'context':this[_0x4e8965(0x29e)],'geometry':_0x4bed48,'attributeLocations':this['particlesRendering']['primitives']['segments'][_0x4e8965(0x276)],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x423a29=this['particlesRendering']['primitives'])!==null&&_0x423a29!==void 0x0&&(_0x423a29=_0x423a29['segments'])!==null&&_0x423a29!==void 0x0&&_0x423a29[_0x4e8965(0x226)]&&(this['particlesRendering'][_0x4e8965(0x1e8)][_0x4e8965(0x2a7)]['commandToExecute']['vertexArray']=_0x5b88f2);}}['setOptions'](_0x3e8a91){const _0x3161c4=_0x36b94b;let _0x1c9f19=![];this['options'][_0x3161c4(0x2cf)]!==_0x3e8a91['maxParticles']&&(_0x1c9f19=!![]),Object[_0x3161c4(0x20d)](_0x3e8a91)['forEach'](_0x36ba89=>{const _0x5c3563=_0x3161c4;this[_0x5c3563(0x253)][_0x36ba89]=_0x3e8a91[_0x36ba89];}),this['refreshParticles'](_0x1c9f19);}['applyViewerParameters'](_0x4d5ca7){const _0x12467a=_0x36b94b;Object[_0x12467a(0x20d)](_0x4d5ca7)['forEach'](_0x4ef4e0=>{const _0x699300=_0x12467a;this[_0x699300(0x224)][_0x4ef4e0]=_0x4d5ca7[_0x4ef4e0];}),this['refreshParticles'](![]);}['destroy'](){const _0xc552f8=_0x36b94b;clearTimeout(this['canrefresh']),this[_0xc552f8(0x24f)]['destroyParticlesTextures'](),Object[_0xc552f8(0x20d)](this[_0xc552f8(0x24f)]['windTextures'])['forEach'](_0x38f991=>{this['particlesComputing']['windTextures'][_0x38f991]['destroy']();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x44ebfe=>{this['particlesRendering']['framebuffers'][_0x44ebfe]['destroy']();});for(const _0x4ce19e in this){delete this[_0x4ce19e];}}}const Cesium$1=mars3d__namespace[_0x36b94b(0x208)],BaseLayer$1=mars3d__namespace[_0x36b94b(0x2db)]['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(_0x4452b4={}){const _0x17ec5c=_0x36b94b;_0x4452b4={...DEF_OPTIONS,..._0x4452b4},super(_0x4452b4),this[_0x17ec5c(0x239)](_0x4452b4);}get[_0x36b94b(0x2db)](){return this['primitives'];}get[_0x36b94b(0x263)](){const _0x16a86d=_0x36b94b;return this[_0x16a86d(0x26b)];}set['data'](_0x459506){this['setData'](_0x459506);}get['colors'](){const _0x582359=_0x36b94b;return this['options'][_0x582359(0x251)];}set[_0x36b94b(0x251)](_0x3e9c71){const _0x3c97ba=_0x36b94b;this['options']['colors']=_0x3e9c71,this[_0x3c97ba(0x277)]&&this['particleSystem']['setOptions']({'colors':_0x3e9c71}),this['resize']();}[_0x36b94b(0x1f3)](){}['_addedHook'](){const _0x1e60d5=_0x36b94b;this[_0x1e60d5(0x284)]=this['_map'][_0x1e60d5(0x284)],this[_0x1e60d5(0x2a4)]=this[_0x1e60d5(0x266)]['camera'],this['primitives']=new Cesium$1[(_0x1e60d5(0x215))](),this['_map']['scene']['primitives']['add'](this[_0x1e60d5(0x1e8)]),this[_0x1e60d5(0x224)]={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1[(_0x1e60d5(0x25d))](Cesium$1['Cartesian3'][_0x1e60d5(0x2b0)],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener'](_0x1e60d5(0x1f1),this['resize']['bind'](this),![]),this[_0x1e60d5(0x26d)]=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace[_0x1e60d5(0x254)]['wheel'],this[_0x1e60d5(0x212)],this),this[_0x1e60d5(0x266)]['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x1e60d5(0x204)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this[_0x1e60d5(0x26b)]&&this['setData'](this[_0x1e60d5(0x26b)]);}['_removedHook'](){const _0x5a7262=_0x36b94b;window['removeEventListener'](_0x5a7262(0x1f1),this['resize']),this[_0x5a7262(0x266)]['off'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this['_map'][_0x5a7262(0x1f8)](mars3d__namespace['EventType']['wheel'],this[_0x5a7262(0x212)],this),this['_map'][_0x5a7262(0x1f8)](mars3d__namespace['EventType']['mouseDown'],this[_0x5a7262(0x204)],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map'][_0x5a7262(0x1f8)](mars3d__namespace[_0x5a7262(0x254)]['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives'][_0x5a7262(0x256)](),this['_map'][_0x5a7262(0x284)]['primitives']['remove'](this[_0x5a7262(0x1e8)]);}['resize'](){const _0x13e393=_0x36b94b;if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this[_0x13e393(0x1e8)]['removeAll'](),this['_map']['once'](mars3d__namespace['EventType'][_0x13e393(0x246)],this[_0x13e393(0x1f7)],this);}['_onMap_preRenderEvent'](_0x3764cc){const _0x5dc1ef=_0x36b94b;this['particleSystem'][_0x5dc1ef(0x28a)](this['scene']['context']),this['addPrimitives'](),this['primitives'][_0x5dc1ef(0x1e6)]=!![];}[_0x36b94b(0x212)](_0x108dbb){const _0x2d43f=_0x36b94b;clearTimeout(this['refreshTimer']);if(!this['show']||!this[_0x2d43f(0x277)])return;this['primitives'][_0x2d43f(0x1e6)]=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}[_0x36b94b(0x204)](_0x48e54f){this['mouse_down']=!![];}[_0x36b94b(0x2ae)](_0x42f230){if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this['primitives']['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x38461c){const _0x14291f=_0x36b94b;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&this[_0x14291f(0x288)]&&this[_0x14291f(0x206)](),this[_0x14291f(0x1e8)][_0x14291f(0x1e6)]=!![],this[_0x14291f(0x26d)]=![],this['mouse_move']=![];}['redraw'](){const _0x14e205=_0x36b94b;if(!this[_0x14e205(0x266)]||!this['show'])return;this['updateViewerParameters'](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this['primitives'][_0x14e205(0x1e6)]=!![];}['setData'](_0xef295e){const _0x10fa20=_0x36b94b;this['_data']=_0xef295e,this['particleSystem']&&this['particleSystem'][_0x10fa20(0x2c0)](),this['particleSystem']=new ParticleSystem(this['scene']['context'],_0xef295e,this['getOptions'](),this['viewerParameters']),this['addPrimitives']();}[_0x36b94b(0x239)](_0x305655,_0x567ae5){const _0x1814fc=_0x36b94b;if(_0x305655)for(const _0x17846a in _0x305655){this[_0x17846a]=_0x305655[_0x17846a];}this['particleSystem']&&this['particleSystem'][_0x1814fc(0x2c6)](this['getOptions']());}[_0x36b94b(0x258)](){const _0x3568c0=_0x36b94b,_0x33d332=Math['ceil'](Math[_0x3568c0(0x1e7)](this['particlesNumber']));return this[_0x3568c0(0x21a)]=_0x33d332*_0x33d332,{'particlesTextureSize':_0x33d332,'maxParticles':this['particlesNumber'],'particleHeight':this[_0x3568c0(0x233)],'fadeOpacity':this['fadeOpacity'],'dropRate':this[_0x3568c0(0x297)],'dropRateBump':this[_0x3568c0(0x211)],'speedFactor':this['speedFactor'],'lineWidth':this[_0x3568c0(0x25e)],'colors':this['colors']};}['addPrimitives'](){const _0x4cf22c=_0x36b94b;this['primitives'][_0x4cf22c(0x241)](this[_0x4cf22c(0x277)]['particlesComputing']['primitives']['getWind']),this[_0x4cf22c(0x1e8)][_0x4cf22c(0x241)](this['particleSystem']['particlesComputing']['primitives'][_0x4cf22c(0x20c)]),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives']['updatePosition']),this['primitives'][_0x4cf22c(0x241)](this['particleSystem']['particlesComputing'][_0x4cf22c(0x1e8)]['postProcessingPosition']),this['primitives'][_0x4cf22c(0x241)](this['particleSystem'][_0x4cf22c(0x24f)]['primitives'][_0x4cf22c(0x29a)]),this[_0x4cf22c(0x1e8)]['add'](this['particleSystem']['particlesRendering']['primitives'][_0x4cf22c(0x2a7)]),this['primitives']['add'](this[_0x4cf22c(0x277)]['particlesRendering'][_0x4cf22c(0x1e8)][_0x4cf22c(0x2cd)]),this['primitives']['add'](this[_0x4cf22c(0x277)]['particlesRendering'][_0x4cf22c(0x1e8)]['screen']);}['updateViewerParameters'](){const _0x1d606e=_0x36b94b;let _0x27ac8d=this['camera'][_0x1d606e(0x2b5)](this[_0x1d606e(0x284)]['globe']['ellipsoid']);if(!_0x27ac8d){const _0x4bf5a1=this['_map'][_0x1d606e(0x203)]();_0x27ac8d=Cesium$1['Rectangle'][_0x1d606e(0x2de)](_0x4bf5a1[_0x1d606e(0x275)],_0x4bf5a1['ymin'],_0x4bf5a1['xmax'],_0x4bf5a1['ymax']);}const _0x37a08e=Util['viewRectangleToLonLatRange'](_0x27ac8d);this['viewerParameters']['lonRange']['x']=_0x37a08e['lon']['min'],this[_0x1d606e(0x224)]['lonRange']['y']=_0x37a08e[_0x1d606e(0x210)][_0x1d606e(0x216)],this['viewerParameters'][_0x1d606e(0x22b)]['x']=_0x37a08e['lat']['min'],this['viewerParameters']['latRange']['y']=_0x37a08e['lat']['max'];const _0x47d4bd=this['camera'][_0x1d606e(0x2dd)](this['globeBoundingSphere'],this['scene']['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0x47d4bd>0x0&&(this[_0x1d606e(0x224)][_0x1d606e(0x27c)]=_0x47d4bd);}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace[_0x36b94b(0x2db)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0xc01a60=_0x36b94b;this['lng']=null,this['lat']=null,this[_0xc01a60(0x28c)]=null,this['tlat']=null,this['age']=null,this[_0xc01a60(0x1fe)]=null;}[_0x36b94b(0x2c0)](){for(const _0x57514f in this){delete this[_0x57514f];}}}class CanvasWindField{constructor(_0x4ff30d){this['setOptions'](_0x4ff30d);}get[_0x36b94b(0x22c)](){const _0x2e76ab=_0x36b94b;return this[_0x2e76ab(0x271)];}set['speedRate'](_0x1680c2){const _0x568a69=_0x36b94b;this[_0x568a69(0x271)]=(0x64-(_0x1680c2>0x63?0x63:_0x1680c2))*0x64,this[_0x568a69(0x264)]=[(this[_0x568a69(0x219)]-this['xmin'])/this['_speedRate'],(this[_0x568a69(0x25f)]-this[_0x568a69(0x1fc)])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set['maxAge'](_0x4462a5){const _0x3e1088=_0x36b94b;this[_0x3e1088(0x1f4)]=_0x4462a5;}[_0x36b94b(0x2c6)](_0x4f5082){const _0x45087d=_0x36b94b;this['options']=_0x4f5082,this['maxAge']=_0x4f5082['maxAge']||0x78,this['speedRate']=_0x4f5082[_0x45087d(0x22c)]||0x32,this['particles']=[];const _0x6233ae=_0x4f5082['particlesNumber']||0x1000;for(let _0x4a15be=0x0;_0x4a15be<_0x6233ae;_0x4a15be++){const _0x41783d=this[_0x45087d(0x213)](new CanvasParticle());this[_0x45087d(0x21e)][_0x45087d(0x2b7)](_0x41783d);}}['setDate'](_0x4c17ed){const _0xdb91c9=_0x36b94b;this[_0xdb91c9(0x2d0)]=_0x4c17ed['rows'],this[_0xdb91c9(0x26c)]=_0x4c17ed['cols'],this[_0xdb91c9(0x275)]=_0x4c17ed['xmin'],this[_0xdb91c9(0x219)]=_0x4c17ed[_0xdb91c9(0x219)],this['ymin']=_0x4c17ed[_0xdb91c9(0x1fc)],this['ymax']=_0x4c17ed['ymax'],this[_0xdb91c9(0x20b)]=[];const _0x696cc8=_0x4c17ed['udata'],_0x5f1376=_0x4c17ed[_0xdb91c9(0x1ec)];let _0x2e5936=![];_0x696cc8['length']===this['rows']&&_0x696cc8[0x0]['length']===this['cols']&&(_0x2e5936=!![]);let _0x5c6fb1=0x0,_0x2ebfe7=null,_0x40e749=null;for(let _0x5cddd9=0x0;_0x5cddd9<this['rows'];_0x5cddd9++){_0x2ebfe7=[];for(let _0x49afd0=0x0;_0x49afd0<this['cols'];_0x49afd0++,_0x5c6fb1++){_0x2e5936?_0x40e749=this['_calcUV'](_0x696cc8[_0x5cddd9][_0x49afd0],_0x5f1376[_0x5cddd9][_0x49afd0]):_0x40e749=this[_0xdb91c9(0x2b2)](_0x696cc8[_0x5c6fb1],_0x5f1376[_0x5c6fb1]),_0x2ebfe7[_0xdb91c9(0x2b7)](_0x40e749);}this['grid']['push'](_0x2ebfe7);}this[_0xdb91c9(0x253)]['reverseY']&&this['grid'][_0xdb91c9(0x290)]();}['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'](_0x405940,_0x39fa9a){const _0x23def1=_0x36b94b,_0x594990=(_0x405940-this[_0x23def1(0x275)])/(this[_0x23def1(0x219)]-this['xmin'])*(this['cols']-0x1),_0x37bfd6=(this[_0x23def1(0x25f)]-_0x39fa9a)/(this['ymax']-this['ymin'])*(this['rows']-0x1);return[_0x594990,_0x37bfd6];}['getUVByXY'](_0x424059,_0x572d94){const _0x4dd547=_0x36b94b;if(_0x424059<0x0||_0x424059>=this[_0x4dd547(0x26c)]||_0x572d94>=this['rows'])return[0x0,0x0,0x0];const _0x510c8e=Math['floor'](_0x424059),_0x247784=Math['floor'](_0x572d94);if(_0x510c8e===_0x424059&&_0x247784===_0x572d94)return this['grid'][_0x572d94][_0x424059];const _0x3bc645=_0x510c8e+0x1,_0x8434e0=_0x247784+0x1,_0x138256=this['getUVByXY'](_0x510c8e,_0x247784),_0x2258de=this['getUVByXY'](_0x3bc645,_0x247784),_0x31bde4=this[_0x4dd547(0x2bf)](_0x510c8e,_0x8434e0),_0x3ba6d9=this['getUVByXY'](_0x3bc645,_0x8434e0);let _0x4cc5d9=null;try{_0x4cc5d9=this[_0x4dd547(0x2a9)](_0x424059-_0x510c8e,_0x572d94-_0x247784,_0x138256,_0x2258de,_0x31bde4,_0x3ba6d9);}catch(_0x52ad84){console['log'](_0x424059,_0x572d94);}return _0x4cc5d9;}['_bilinearInterpolation'](_0x3f7545,_0x35dfd9,_0x72c72f,_0x4981f4,_0x37dd79,_0xfbe480){const _0x12238f=0x1-_0x3f7545,_0x2f8d08=0x1-_0x35dfd9,_0x7bb649=_0x12238f*_0x2f8d08,_0x33d756=_0x3f7545*_0x2f8d08,_0x306bb9=_0x12238f*_0x35dfd9,_0x34dd4c=_0x3f7545*_0x35dfd9,_0x552a74=_0x72c72f[0x0]*_0x7bb649+_0x4981f4[0x0]*_0x33d756+_0x37dd79[0x0]*_0x306bb9+_0xfbe480[0x0]*_0x34dd4c,_0x42c2b9=_0x72c72f[0x1]*_0x7bb649+_0x4981f4[0x1]*_0x33d756+_0x37dd79[0x1]*_0x306bb9+_0xfbe480[0x1]*_0x34dd4c;return this['_calcUV'](_0x552a74,_0x42c2b9);}['_calcUV'](_0x486c2a,_0xb929cf){const _0x44eb5c=_0x36b94b;return[+_0x486c2a,+_0xb929cf,Math[_0x44eb5c(0x1e7)](_0x486c2a*_0x486c2a+_0xb929cf*_0xb929cf)];}['getUVByPoint'](_0x226080,_0x9e58f9){if(!this['isInExtent'](_0x226080,_0x9e58f9))return null;const _0x2f2209=this['toGridXY'](_0x226080,_0x9e58f9),_0x429434=this['getUVByXY'](_0x2f2209[0x0],_0x2f2209[0x1]);return _0x429434;}['isInExtent'](_0x5dc327,_0x3362b6){const _0x593f5b=_0x36b94b;return _0x5dc327>=this['xmin']&&_0x5dc327<=this['xmax']&&_0x3362b6>=this[_0x593f5b(0x1fc)]&&_0x3362b6<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x548243=_0x36b94b,_0x3635ae=fRandomByfloat(this[_0x548243(0x275)],this['xmax']),_0x3a8f2a=fRandomByfloat(this['ymin'],this[_0x548243(0x25f)]);return{'lat':_0x3a8f2a,'lng':_0x3635ae};}['getParticles'](){const _0x45c5d6=_0x36b94b;let _0x384d5a,_0x5e2021,_0x3cd201;for(let _0x36d1cc=0x0,_0x392333=this[_0x45c5d6(0x21e)][_0x45c5d6(0x2cb)];_0x36d1cc<_0x392333;_0x36d1cc++){let _0x1228c7=this[_0x45c5d6(0x21e)][_0x36d1cc];_0x1228c7['age']<=0x0&&(_0x1228c7=this[_0x45c5d6(0x213)](_0x1228c7));if(_0x1228c7[_0x45c5d6(0x21d)]>0x0){const _0x5a7f49=_0x1228c7[_0x45c5d6(0x28c)],_0x1ed155=_0x1228c7['tlat'];_0x3cd201=this[_0x45c5d6(0x2b9)](_0x5a7f49,_0x1ed155),_0x3cd201?(_0x384d5a=_0x5a7f49+this[_0x45c5d6(0x264)][0x0]*_0x3cd201[0x0],_0x5e2021=_0x1ed155+this[_0x45c5d6(0x264)][0x1]*_0x3cd201[0x1],_0x1228c7[_0x45c5d6(0x217)]=_0x5a7f49,_0x1228c7['lat']=_0x1ed155,_0x1228c7[_0x45c5d6(0x28c)]=_0x384d5a,_0x1228c7['tlat']=_0x5e2021,_0x1228c7[_0x45c5d6(0x1fe)]=_0x3cd201[0x2],_0x1228c7[_0x45c5d6(0x21d)]--):_0x1228c7['age']=0x0;}}return this['particles'];}['_randomParticle'](_0x246c1a){const _0x4740a1=_0x36b94b;let _0xd84fe6,_0x24902c;for(let _0x1d6bb9=0x0;_0x1d6bb9<0x1e;_0x1d6bb9++){_0xd84fe6=this['getRandomLatLng'](),_0x24902c=this['getUVByPoint'](_0xd84fe6['lng'],_0xd84fe6[_0x4740a1(0x273)]);if(_0x24902c&&_0x24902c[0x2]>0x0)break;}if(!_0x24902c)return _0x246c1a;const _0x49b3af=_0xd84fe6['lng']+this[_0x4740a1(0x264)][0x0]*_0x24902c[0x0],_0x8742c1=_0xd84fe6['lat']+this['_calc_speedRate'][0x1]*_0x24902c[0x1];return _0x246c1a[_0x4740a1(0x217)]=_0xd84fe6['lng'],_0x246c1a[_0x4740a1(0x273)]=_0xd84fe6['lat'],_0x246c1a['tlng']=_0x49b3af,_0x246c1a['tlat']=_0x8742c1,_0x246c1a[_0x4740a1(0x21d)]=Math['round'](Math['random']()*this['maxAge']),_0x246c1a['speed']=_0x24902c[0x2],_0x246c1a;}['destroy'](){for(const _0x335fc3 in this){delete this[_0x335fc3];}}}function fRandomByfloat(_0x532979,_0x3c142d){const _0x43a975=_0x36b94b;return _0x532979+Math[_0x43a975(0x2af)]()*(_0x3c142d-_0x532979);}const Cesium=mars3d__namespace[_0x36b94b(0x208)],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x1ae517={}){const _0x558fc0=_0x36b94b;super(_0x1ae517),this['_setOptionsHook'](_0x1ae517),this['canvas']=null,_0x1ae517['colors']&&_0x1ae517[_0x558fc0(0x25a)]&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x1ae517));}['_setOptionsHook'](_0x47c5e5,_0x2c3be7){const _0x1e0161=_0x36b94b;this['frameTime']=0x3e8/(_0x47c5e5['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x47c5e5['color']||'#ffffff',this['lineWidth']=_0x47c5e5['lineWidth']||0x1,this['fixedHeight']=_0x47c5e5['fixedHeight']??0x0,this['reverseY']=_0x47c5e5['reverseY']??![],this[_0x1e0161(0x2c4)]&&this['windField']['setOptions'](_0x47c5e5);}get[_0x36b94b(0x2db)](){return this['canvas'];}get['canvasWidth'](){return this['_map']['scene']['canvas']['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set[_0x36b94b(0x24a)](_0x4a4eb8){const _0x3a31d9=_0x36b94b;this['_pointerEvents']=_0x4a4eb8;if(!this['canvas'])return;_0x4a4eb8?this['canvas']['style']['pointer-events']=_0x3a31d9(0x265):this['canvas']['style']['pointer-events']='none';}get['particlesNumber'](){return this['options']['particlesNumber'];}set['particlesNumber'](_0x5162e5){const _0x25e374=_0x36b94b;this['options'][_0x25e374(0x21a)]=_0x5162e5,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x36b94b(0x22c)](){return this['options']['speedRate'];}set['speedRate'](_0x43403c){const _0x2fe5ca=_0x36b94b;this[_0x2fe5ca(0x253)][_0x2fe5ca(0x22c)]=_0x43403c,this['windField']&&(this[_0x2fe5ca(0x2c4)]['speedRate']=_0x43403c);}get[_0x36b94b(0x227)](){const _0x449391=_0x36b94b;return this[_0x449391(0x253)]['maxAge'];}set[_0x36b94b(0x227)](_0x2d17d9){const _0x20b943=_0x36b94b;this[_0x20b943(0x253)][_0x20b943(0x227)]=_0x2d17d9,this['windField']&&(this['windField'][_0x20b943(0x227)]=_0x2d17d9);}get['data'](){return this['windData'];}set['data'](_0x4d5a20){const _0x10bc62=_0x36b94b;this[_0x10bc62(0x2a2)](_0x4d5a20);}['_showHook'](_0x16d81b){const _0x3e812b=_0x36b94b;_0x16d81b?this[_0x3e812b(0x245)]():(this[_0x3e812b(0x20a)]&&(this[_0x3e812b(0x253)]['data']=this[_0x3e812b(0x20a)]),this['_removedHook']());}['_mountedHook'](){const _0x4a6d32=_0x36b94b;this['options']['worker']?this['initWorker']():this[_0x4a6d32(0x2c4)]=new CanvasWindField(this[_0x4a6d32(0x253)]);}[_0x36b94b(0x245)](){const _0x2d951b=_0x36b94b;this['canvas']=this[_0x2d951b(0x221)](),this['canvasContext']=this['canvas'][_0x2d951b(0x261)]('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options']['data']&&this['setData'](this[_0x2d951b(0x253)]['data']);}['_removedHook'](){const _0x47c970=_0x36b94b;this['clear'](),this[_0x47c970(0x27e)](),this['canvas']&&(this['_map'][_0x47c970(0x1ff)]['removeChild'](this[_0x47c970(0x1fd)]),delete this['canvas']);}[_0x36b94b(0x221)](){const _0x49929c=_0x36b94b,_0x219458=mars3d__namespace[_0x49929c(0x268)]['create'](_0x49929c(0x1fd),_0x49929c(0x2c8),this['_map']['container']);return _0x219458[_0x49929c(0x1f0)][_0x49929c(0x2be)]='absolute',_0x219458['style'][_0x49929c(0x23c)]='0px',_0x219458[_0x49929c(0x1f0)]['left']='0px',_0x219458['style']['width']=this['_map'][_0x49929c(0x284)]['canvas']['clientWidth']+'px',_0x219458['style']['height']=this['_map']['scene']['canvas']['clientHeight']+'px',_0x219458[_0x49929c(0x1f0)][_0x49929c(0x24a)]=this[_0x49929c(0x1fa)]?_0x49929c(0x247):'none',_0x219458[_0x49929c(0x1f0)][_0x49929c(0x2d3)]=this['options']['zIndex']??0x9,_0x219458['width']=this[_0x49929c(0x266)]['scene']['canvas'][_0x49929c(0x23f)],_0x219458['height']=this['_map']['scene']['canvas']['clientHeight'],_0x219458;}['resize'](){const _0x5effb2=_0x36b94b;this['canvas']&&(this['canvas']['style']['width']=this[_0x5effb2(0x266)]['scene']['canvas']['clientWidth']+'px',this[_0x5effb2(0x1fd)]['style']['height']=this['_map'][_0x5effb2(0x284)]['canvas']['clientHeight']+'px',this[_0x5effb2(0x1fd)]['width']=this['_map']['scene']['canvas']['clientWidth'],this['canvas']['height']=this[_0x5effb2(0x266)]['scene']['canvas']['clientHeight']);}['bindEvent'](){const _0x255a89=_0x36b94b,_0x14d311=this;let _0x35a347=Date['now']();(function _0x3e9a2e(){const _0x19334a=_0x5a58;_0x14d311['animateFrame']=window['requestAnimationFrame'](_0x3e9a2e);if(_0x14d311[_0x19334a(0x1e6)]&&_0x14d311['windField']){const _0x5299de=Date[_0x19334a(0x222)](),_0x48690f=_0x5299de-_0x35a347;_0x48690f>_0x14d311['frameTime']&&(_0x35a347=_0x5299de-_0x48690f%_0x14d311['frameTime'],_0x14d311['update']());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this[_0x255a89(0x26d)]=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this[_0x255a89(0x266)]['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x255a89(0x266)]['on'](mars3d__namespace[_0x255a89(0x254)]['mouseDown'],this[_0x255a89(0x204)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){const _0xe792ae=_0x36b94b;window[_0xe792ae(0x1fb)](this['animateFrame']),delete this[_0xe792ae(0x22f)],window[_0xe792ae(0x1f9)](_0xe792ae(0x1f1),this['resize']),this['options']['mouseHidden']&&(this[_0xe792ae(0x266)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0xe792ae(0x257)],this[_0xe792ae(0x204)],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x3a0dda){const _0x381a91=_0x36b94b;clearTimeout(this[_0x381a91(0x280)]);if(!this['show']||!this['canvas'])return;this['canvas'][_0x381a91(0x1f0)]['visibility']='hidden',this[_0x381a91(0x280)]=setTimeout(()=>{const _0x418fad=_0x381a91;if(!this['show'])return;this['redraw'](),this['canvas'][_0x418fad(0x1f0)]['visibility']=_0x418fad(0x2d6);},0xc8);}['_onMouseDownEvent'](_0x4dfac0){const _0x580985=_0x36b94b;this[_0x580985(0x26d)]=!![],this[_0x580985(0x266)]['off'](mars3d__namespace['EventType'][_0x580985(0x259)],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace[_0x580985(0x254)]['mouseMove'],this['_onMouseMoveEvent'],this);}[_0x36b94b(0x2ae)](_0x2c4f89){const _0xe4f4f8=_0x36b94b;if(!this[_0xe4f4f8(0x1e6)]||!this['canvas'])return;this[_0xe4f4f8(0x26d)]&&(this['canvas']['style']['visibility']=_0xe4f4f8(0x255),this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x3aac1c){const _0x3391f3=_0x36b94b;if(!this[_0x3391f3(0x1e6)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace[_0x3391f3(0x254)]['mouseMove'],this[_0x3391f3(0x2ae)],this),this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['canvas'][_0x3391f3(0x1f0)]['visibility']=_0x3391f3(0x2d6),this['mouse_down']=![],this[_0x3391f3(0x288)]=![];}[_0x36b94b(0x2a2)](_0x5e4812){const _0xa75a4=_0x36b94b;this['clear'](),this[_0xa75a4(0x20a)]=_0x5e4812,this['windField']['setDate'](_0x5e4812),this['redraw']();}['redraw'](){const _0x560f67=_0x36b94b;if(!this[_0x560f67(0x1e6)])return;this['windField'][_0x560f67(0x2c6)](this[_0x560f67(0x253)]),this[_0x560f67(0x1f5)]();}['update'](){const _0xb13a54=_0x36b94b;if(this[_0xb13a54(0x25b)])return;this['_updateIng']=!![];if(this[_0xb13a54(0x249)])this[_0xb13a54(0x2c4)]['update']();else{const _0x31f55f=this['windField']['getParticles']();this['_drawLines'](_0x31f55f);}this[_0xb13a54(0x25b)]=![];}['_drawLines'](_0x31f40e){const _0x90a4a8=_0x36b94b;this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this[_0x90a4a8(0x283)]),this['canvasContext'][_0x90a4a8(0x205)]='lighter',this[_0x90a4a8(0x2d8)]['globalAlpha']=0.9;const _0x4bece5=this[_0x90a4a8(0x266)]['scene'][_0x90a4a8(0x2d9)]!==Cesium[_0x90a4a8(0x238)]['SCENE3D'],_0x2f54f9=this['canvasWidth']*0.25;if(this[_0x90a4a8(0x201)])for(let _0x1d02fe=0x0,_0x53b703=_0x31f40e['length'];_0x1d02fe<_0x53b703;_0x1d02fe++){const _0x50d15e=_0x31f40e[_0x1d02fe],_0x2df99f=this['_tomap'](_0x50d15e['lng'],_0x50d15e['lat'],_0x50d15e),_0x598f50=this['_tomap'](_0x50d15e['tlng'],_0x50d15e[_0x90a4a8(0x287)],_0x50d15e);if(!_0x2df99f||!_0x598f50)continue;if(_0x4bece5&&Math['abs'](_0x2df99f[0x0]-_0x598f50[0x0])>=_0x2f54f9)continue;this[_0x90a4a8(0x2d8)]['beginPath'](),this['canvasContext']['lineWidth']=this[_0x90a4a8(0x25e)],this['canvasContext']['strokeStyle']=this['_colorRamp']['getColor'](_0x50d15e['speed']),this['canvasContext']['moveTo'](_0x2df99f[0x0],_0x2df99f[0x1]),this[_0x90a4a8(0x2d8)][_0x90a4a8(0x21b)](_0x598f50[0x0],_0x598f50[0x1]),this['canvasContext'][_0x90a4a8(0x218)]();}else{this[_0x90a4a8(0x2d8)]['beginPath'](),this[_0x90a4a8(0x2d8)]['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this['color'];for(let _0x1d5752=0x0,_0x1807a0=_0x31f40e[_0x90a4a8(0x2cb)];_0x1d5752<_0x1807a0;_0x1d5752++){const _0xd96821=_0x31f40e[_0x1d5752],_0x23fc5a=this['_tomap'](_0xd96821['lng'],_0xd96821[_0x90a4a8(0x273)],_0xd96821),_0x57b7c4=this['_tomap'](_0xd96821[_0x90a4a8(0x28c)],_0xd96821['tlat'],_0xd96821);if(!_0x23fc5a||!_0x57b7c4)continue;if(_0x4bece5&&Math['abs'](_0x23fc5a[0x0]-_0x57b7c4[0x0])>=_0x2f54f9)continue;this['canvasContext']['moveTo'](_0x23fc5a[0x0],_0x23fc5a[0x1]),this['canvasContext']['lineTo'](_0x57b7c4[0x0],_0x57b7c4[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x5c15c8,_0x18d29d,_0x2924b9){const _0x5895e1=_0x36b94b,_0x2e06a9=Cesium['Cartesian3']['fromDegrees'](_0x5c15c8,_0x18d29d,this['fixedHeight']),_0x256344=this['_map']['scene'];if(_0x256344[_0x5895e1(0x2d9)]===Cesium[_0x5895e1(0x238)][_0x5895e1(0x2bb)]){const _0x31e114=new Cesium['EllipsoidalOccluder'](_0x256344[_0x5895e1(0x278)]['ellipsoid'],_0x256344['camera']['positionWC']),_0x7ef2c3=_0x31e114['isPointVisible'](_0x2e06a9);if(!_0x7ef2c3)return _0x2924b9['age']=0x0,null;}const _0x3d8e06=Cesium['SceneTransforms']['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x2e06a9);return _0x3d8e06?[_0x3d8e06['x'],_0x3d8e06['y']]:null;}['clear'](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){const _0x87366a=_0x36b94b;this[_0x87366a(0x249)]=new Worker(this[_0x87366a(0x253)]['worker']),this['worker']['onmessage']=_0xe85a2b=>{const _0xe2475e=_0x87366a;this['_drawLines'](_0xe85a2b[_0xe2475e(0x263)]['particles']),this[_0xe2475e(0x282)]=![];},this['windField']={'init':_0x144724=>{const _0x312f02=_0x87366a;this['worker'][_0x312f02(0x286)]({'type':'init','options':_0x144724});},'setOptions':_0x453fc8=>{const _0xbaaae=_0x87366a;this['worker'][_0xbaaae(0x286)]({'type':'setOptions','options':_0x453fc8});},'setDate':_0x19e9db=>{const _0xadf272=_0x87366a;this['worker']['postMessage']({'type':_0xadf272(0x23e),'data':_0x19e9db});},'update':()=>{const _0x3b31be=_0x87366a;if(this[_0x3b31be(0x282)])return;this['_updateIng2']=!![],this[_0x3b31be(0x249)]['postMessage']({'type':_0x3b31be(0x1f5)});},'clear':()=>{const _0x2cc025=_0x87366a;this['worker'][_0x2cc025(0x286)]({'type':_0x2cc025(0x293)});}},this[_0x87366a(0x2c4)]['init'](this['options']);}}mars3d__namespace['LayerUtil'][_0x36b94b(0x1f2)](_0x36b94b(0x1e9),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil,Object[_0x36b94b(0x2b6)](exports,'__esModule',{'value':!![]});
14
+ 'use strict';const _0x5abd34=_0x411b;(function(_0x1a60fb,_0x18408f){const _0xf06133=_0x411b,_0x51ca88=_0x1a60fb();while(!![]){try{const _0x32b27c=-parseInt(_0xf06133(0x1c5))/0x1+-parseInt(_0xf06133(0x2a6))/0x2+parseInt(_0xf06133(0x225))/0x3+-parseInt(_0xf06133(0x2ac))/0x4*(parseInt(_0xf06133(0x294))/0x5)+-parseInt(_0xf06133(0x1e6))/0x6*(-parseInt(_0xf06133(0x235))/0x7)+parseInt(_0xf06133(0x1f0))/0x8*(parseInt(_0xf06133(0x291))/0x9)+parseInt(_0xf06133(0x1e5))/0xa*(parseInt(_0xf06133(0x1d3))/0xb);if(_0x32b27c===_0x18408f)break;else _0x51ca88['push'](_0x51ca88['shift']());}catch(_0x8e00d8){_0x51ca88['push'](_0x51ca88['shift']());}}}(_0x1b0e,0x8695e));function _interopNamespace(_0x41d2b2){const _0x357bfc=_0x411b;if(_0x41d2b2&&_0x41d2b2['__esModule'])return _0x41d2b2;var _0x1ba9e2=Object['create'](null);return _0x41d2b2&&Object[_0x357bfc(0x238)](_0x41d2b2)['forEach'](function(_0x37ce0f){if(_0x37ce0f!=='default'){var _0x215176=Object['getOwnPropertyDescriptor'](_0x41d2b2,_0x37ce0f);Object['defineProperty'](_0x1ba9e2,_0x37ce0f,_0x215176['get']?_0x215176:{'enumerable':!![],'get':function(){return _0x41d2b2[_0x37ce0f];}});}}),_0x1ba9e2['default']=_0x41d2b2,_0x1ba9e2;}var mars3d__namespace=_interopNamespace(mars3d);function _0x1b0e(){const _0x222133=['EventType','lineTo','fromGeometry','canvasHeight','off','width','addEventListener','lev','_calcUV','lineWidth','resize','dropRate','Compute','ComputeCommand','postProcessingSpeed','16464610GLegFV','26304nlSqpL','toDegrees','_onMouseUpEvent','postMessage','fillRect','SceneTransforms','fixedHeight','Draw','viewerParameters','postProcessingPosition','232myAPTc','xmin','_maxAge','fadeOpacity','LINEAR','ShaderSource','getOptions','mouse_down','_tomap','shaderProgram','getUVByPoint','forEach','arrayBufferView','WindUtil','strokeStyle','TRIANGLES','ClearCommand','Cartesian3','steps','createParticlesTextures','latRange','removeAll','particlesTextures','_drawLines','preExecute','context','style','segments','framebuffers','Math','_removedHook','options','particlesRendering','length','createSegmentsGeometry','PI_OVER_TWO','clear','clearCommand','lat','NEAREST','Geometry','Cesium','getParticles','SceneMode','setDate','nextParticlesSpeed','lonRange','windTextures','random','min','sqrt','viewRectangleToLonLatRange','register','58842fwbjoD','colors','bindEvent','createRenderingPrimitives','outputTexture','FLOAT','primitiveType','_data','_onMouseDownEvent','_map','age','_createCanvas','fragmentShaderSource','canvasContext','mouseHidden','cols','427wMXGjf','setGeometry','camera','keys','BaseLayer','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','cancelAnimationFrame','speedRate','ymin','commandToExecute','speedFactor','particleSystem','umax','setOptions','ellipsoid','preRender','_randomParticle','lng','particlesWind','pow','tlat','Cartesian2','Framebuffer','worker','now','createTexture','west','particlesComputing','ceil','mars3d-canvasWind','BoundingSphere','_updateIng','mouse_move','createComputingPrimitives','ALWAYS','Color','OPAQUE','max','getRandomLatLng','currentTrails','getWind','setData','create','udata','umin','rows','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','ymax','windField','destroyParticlesTextures','createCommand','height','currentParticlesSpeed','dropRateBump','PixelFormat','_setOptionsHook','lon','autoClear','getUVByXY','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','tlng','clientHeight','scene','_onMouseMoveEvent','framebuffer','Rectangle','east','canvas','data','color','primitives','TextureMinificationFilter','layer','vmax','CanvasWindField','_calc_speedRate','_addedHook','add','visibility','PrimitiveType','updateViewerParameters','windData','maxParticles','colorTable','computeViewRectangle','mod','vertexArray','ComponentDatatype','initWorker','__esModule','reverse','fromCache','185427yKAJYk','clientWidth','currentTrailsColor','275oEZjwr','SCENE3D','unbindEvent','clearFramebuffers','refreshTimer','destroyObject','updatePosition','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','grid','defined','wheel','TextureMagnificationFilter','UNSIGNED_INT','currentParticlesPosition','addPrimitives','globeBoundingSphere','uniformMap','beginPath','1232452kptYVC','isInExtent','levmax','getDefaultRenderState','Sampler','redraw','75404cYKNct','particles','reverseY','randomizeParticles','_canrefresh','south','speed','GeometryAttribute','particlesTextureSize','update','DepthFunction','randomBetween','updateSpeed','createRenderingTextures','DrawCommand','326693siFtGT','canvasResize','canvasWidth','attributeLocations','xmax','particlesNumber','nextTrails','toRadians','_onMapWhellEvent','maxAge','push','mouseDown','destroy','textures','11sbhTLe','dimensions','show'];_0x1b0e=function(){return _0x222133;};return _0x1b0e();}const Cesium$7=mars3d__namespace[_0x5abd34(0x219)];function getU(_0x12a79b,_0x389912){const _0x4f2ce7=_0x5abd34,_0x420561=_0x12a79b*Math['cos'](Cesium$7[_0x4f2ce7(0x20d)][_0x4f2ce7(0x1cc)](_0x389912));return _0x420561;}function getV(_0x4f0087,_0xb64ad2){const _0x1e11c0=_0x4f0087*Math['sin'](Cesium$7['Math']['toRadians'](_0xb64ad2));return _0x1e11c0;}function getSpeed(_0x42aecc,_0xec05ef){const _0x125cc4=_0x5abd34,_0x56ada9=Math['sqrt'](Math[_0x125cc4(0x248)](_0x42aecc,0x2)+Math[_0x125cc4(0x248)](_0xec05ef,0x2));return _0x56ada9;}function getDirection(_0x1923eb,_0x5814d6){const _0x3757c8=_0x5abd34;let _0x4e66c8=Cesium$7['Math'][_0x3757c8(0x1e7)](Math['atan2'](_0x5814d6,_0x1923eb));return _0x4e66c8+=_0x4e66c8<0x0?0x168:0x0,_0x4e66c8;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x4adcda){const _0x47bd0b=_0x5abd34;this['commandType']=_0x4adcda['commandType'],this['geometry']=_0x4adcda['geometry'],this[_0x47bd0b(0x1c8)]=_0x4adcda[_0x47bd0b(0x1c8)],this['primitiveType']=_0x4adcda[_0x47bd0b(0x22b)],this['uniformMap']=_0x4adcda['uniformMap'],this['vertexShaderSource']=_0x4adcda['vertexShaderSource'],this['fragmentShaderSource']=_0x4adcda[_0x47bd0b(0x231)],this['rawRenderState']=_0x4adcda['rawRenderState'],this['framebuffer']=_0x4adcda[_0x47bd0b(0x275)],this['outputTexture']=_0x4adcda['outputTexture'],this['autoClear']=_0x4adcda[_0x47bd0b(0x26e)]??![],this['preExecute']=_0x4adcda['preExecute'],this[_0x47bd0b(0x1d5)]=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6['ClearCommand']({'color':new Cesium$6[(_0x47bd0b(0x258))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x47bd0b(0x275)],'pass':Cesium$6['Pass']['OPAQUE']}));}[_0x5abd34(0x267)](_0x28fd70){const _0x1a40a5=_0x5abd34;switch(this['commandType']){case'Draw':{const _0x430b56=Cesium$6['VertexArray']['fromGeometry']({'context':_0x28fd70,'geometry':this['geometry'],'attributeLocations':this[_0x1a40a5(0x1c8)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x32af61=Cesium$6['ShaderProgram']['fromCache']({'context':_0x28fd70,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x2e85f5=Cesium$6['RenderState'][_0x1a40a5(0x290)](this['rawRenderState']);return new Cesium$6[(_0x1a40a5(0x1c4))]({'primitiveType':this['primitiveType'],'shaderProgram':_0x32af61,'vertexArray':_0x430b56,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x2e85f5,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass'][_0x1a40a5(0x259)],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6[(_0x1a40a5(0x1e3))]({'owner':this,'fragmentShaderSource':this[_0x1a40a5(0x231)],'uniformMap':this[_0x1a40a5(0x2a4)],'outputTexture':this['outputTexture'],'persists':!![]});}}}[_0x5abd34(0x236)](_0x5a8eb4,_0x2aec02){const _0x26468b=_0x5abd34;this['geometry']=_0x2aec02;const _0x45ce39=Cesium$6['VertexArray'][_0x26468b(0x1d8)]({'context':_0x5a8eb4,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute'][_0x26468b(0x28b)]=_0x45ce39;}['update'](_0x1aab1e){const _0x338906=_0x5abd34;if(!this['show'])return;if(_0x1aab1e['mode']!==Cesium$6['SceneMode'][_0x338906(0x295)])return;!Cesium$6[_0x338906(0x29d)](this[_0x338906(0x23e)])&&(this['commandToExecute']=this[_0x338906(0x267)](_0x1aab1e['context'])),Cesium$6['defined'](this['preExecute'])&&this[_0x338906(0x208)](),Cesium$6['defined'](this['clearCommand'])&&_0x1aab1e['commandList']['push'](this[_0x338906(0x215)]),_0x1aab1e['commandList']['push'](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){const _0x1fd27a=_0x5abd34;if(this[_0x1fd27a(0x215)]){var _0x26e91f,_0x4d4d2c;(_0x26e91f=this[_0x1fd27a(0x215)])!==null&&_0x26e91f!==void 0x0&&_0x26e91f['vertexArray']&&this['clearCommand']['vertexArray']['destroy'](),(_0x4d4d2c=this[_0x1fd27a(0x215)])!==null&&_0x4d4d2c!==void 0x0&&_0x4d4d2c[_0x1fd27a(0x1f9)]&&this['clearCommand']['shaderProgram'][_0x1fd27a(0x1d1)](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray'][_0x1fd27a(0x1d1)](),this['commandToExecute']['shaderProgram']&&this['commandToExecute']['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6[_0x1fd27a(0x299)](this);}}const Cesium$5=mars3d__namespace[_0x5abd34(0x219)],Util=(function(){const _0x13de70=function(){const _0x1a7955=_0x411b,_0x59d468=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5[_0x1a7955(0x28c)][_0x1a7955(0x22a)],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5[(_0x1a7955(0x1bd))]({'componentDatatype':Cesium$5['ComponentDatatype'][_0x1a7955(0x22a)],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x59d468;},_0x31aff7=function(_0x288fb4,_0x11e88e){const _0x2ec41f=_0x411b;if(Cesium$5[_0x2ec41f(0x29d)](_0x11e88e)){const _0x4f07e7={};_0x4f07e7[_0x2ec41f(0x1fc)]=_0x11e88e,_0x288fb4['source']=_0x4f07e7;}const _0x3e7758=new Cesium$5['Texture'](_0x288fb4);return _0x3e7758;},_0x282808=function(_0x462854,_0x316035,_0x1f681e){const _0x340bba=_0x411b,_0x16efb7=new Cesium$5[(_0x340bba(0x24b))]({'context':_0x462854,'colorTextures':[_0x316035],'depthTexture':_0x1f681e});return _0x16efb7;},_0x298c79=function(_0x1eb403){const _0x49ab4a=_0x411b,_0x427fa3=!![],_0x458435=![],_0xde2ad2={'viewport':_0x1eb403['viewport'],'depthTest':_0x1eb403['depthTest'],'depthMask':_0x1eb403['depthMask'],'blending':_0x1eb403['blending']},_0x4504c8=Cesium$5['Appearance'][_0x49ab4a(0x2a9)](_0x427fa3,_0x458435,_0xde2ad2);return _0x4504c8;},_0xdd6ecf=function(_0x7ee5e6){const _0x49660e=_0x411b,_0x41e06d={},_0x16886a=Cesium$5['Math'][_0x49660e(0x28a)](_0x7ee5e6[_0x49660e(0x24f)],Cesium$5['Math']['TWO_PI']),_0x2ace70=Cesium$5[_0x49660e(0x20d)]['mod'](_0x7ee5e6[_0x49660e(0x277)],Cesium$5['Math']['TWO_PI']),_0x10e331=_0x7ee5e6['width'];let _0x41db26,_0x2bf5e0;_0x10e331>Cesium$5[_0x49660e(0x20d)]['THREE_PI_OVER_TWO']?(_0x41db26=0x0,_0x2bf5e0=Cesium$5[_0x49660e(0x20d)]['TWO_PI']):_0x2ace70-_0x16886a<_0x10e331?(_0x41db26=_0x16886a,_0x2bf5e0=_0x16886a+_0x10e331):(_0x41db26=_0x16886a,_0x2bf5e0=_0x2ace70);_0x41e06d['lon']={'min':Cesium$5['Math']['toDegrees'](_0x41db26),'max':Cesium$5['Math'][_0x49660e(0x1e7)](_0x2bf5e0)};const _0x3d43a4=_0x7ee5e6[_0x49660e(0x2b1)],_0x4a6146=_0x7ee5e6['north'],_0x5d5931=_0x7ee5e6['height'],_0x4f5014=_0x5d5931>Cesium$5['Math']['PI']/0xc?_0x5d5931/0x2:0x0;let _0x222ede=Cesium$5['Math']['clampToLatitudeRange'](_0x3d43a4-_0x4f5014),_0x29a326=Cesium$5['Math']['clampToLatitudeRange'](_0x4a6146+_0x4f5014);return _0x222ede<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x222ede=-Cesium$5['Math']['PI_OVER_TWO']),_0x29a326>Cesium$5['Math']['PI_OVER_THREE']&&(_0x29a326=Cesium$5['Math'][_0x49660e(0x213)]),_0x41e06d['lat']={'min':Cesium$5['Math']['toDegrees'](_0x222ede),'max':Cesium$5['Math']['toDegrees'](_0x29a326)},_0x41e06d;};return{'getFullscreenQuad':_0x13de70,'createTexture':_0x31aff7,'createFramebuffer':_0x282808,'createRawRenderState':_0x298c79,'viewRectangleToLonLatRange':_0xdd6ecf};}());var segmentDraw_vert=_0x5abd34(0x29b),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=_0x5abd34(0x23a);const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x4e2600,_0x286d30,_0xfc054d,_0x27f366,_0x3298ae){const _0x24027f=_0x5abd34;this[_0x24027f(0x1c3)](_0x4e2600,_0x286d30,_0xfc054d[_0x24027f(0x226)]),this['createRenderingFramebuffers'](_0x4e2600),this['createRenderingPrimitives'](_0x4e2600,_0xfc054d,_0x27f366,_0x3298ae);}['createRenderingTextures'](_0x583bd2,_0x1008ad,_0x5ddd09){const _0x24d0a4=_0x5abd34,_0x3fe722={'context':_0x583bd2,'width':_0x583bd2['drawingBufferWidth'],'height':_0x583bd2['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x24d0a4(0x26b)]['RGBA'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_BYTE']},_0x31237e={'context':_0x583bd2,'width':_0x583bd2['drawingBufferWidth'],'height':_0x583bd2['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype'][_0x24d0a4(0x2a0)]},_0xbf5bbb=_0x5ddd09[_0x24d0a4(0x211)],_0x4ce848=new Float32Array(_0xbf5bbb*0x3);for(let _0x2eb089=0x0;_0x2eb089<_0xbf5bbb;_0x2eb089++){const _0x363368=Cesium$4[_0x24d0a4(0x258)]['fromCssColorString'](_0x5ddd09[_0x2eb089]);_0x4ce848[0x3*_0x2eb089]=_0x363368['red'],_0x4ce848[0x3*_0x2eb089+0x1]=_0x363368['green'],_0x4ce848[0x3*_0x2eb089+0x2]=_0x363368['blue'];}const _0x2b0af8={'context':_0x583bd2,'width':_0xbf5bbb,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype'][_0x24d0a4(0x22a)],'sampler':new Cesium$4[(_0x24d0a4(0x2aa))]({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4[_0x24d0a4(0x29f)][_0x24d0a4(0x1f4)]})};this['textures']={'segmentsColor':Util['createTexture'](_0x3fe722),'segmentsDepth':Util['createTexture'](_0x31237e),'currentTrailsColor':Util['createTexture'](_0x3fe722),'currentTrailsDepth':Util[_0x24d0a4(0x24e)](_0x31237e),'nextTrailsColor':Util['createTexture'](_0x3fe722),'nextTrailsDepth':Util['createTexture'](_0x31237e),'colorTable':Util['createTexture'](_0x2b0af8,_0x4ce848)};}['createRenderingFramebuffers'](_0x52d481){const _0xc54fc=_0x5abd34;this['framebuffers']={'segments':Util['createFramebuffer'](_0x52d481,this['textures']['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x52d481,this[_0xc54fc(0x1d2)][_0xc54fc(0x293)],this['textures']['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x52d481,this['textures']['nextTrailsColor'],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x1e1303){const _0x58b3c5=_0x5abd34,_0x83f521=0x4;let _0x15fe82=[];for(let _0x5056b4=0x0;_0x5056b4<_0x1e1303['particlesTextureSize'];_0x5056b4++){for(let _0x3e740f=0x0;_0x3e740f<_0x1e1303['particlesTextureSize'];_0x3e740f++){for(let _0x5d683a=0x0;_0x5d683a<_0x83f521;_0x5d683a++){_0x15fe82[_0x58b3c5(0x1cf)](_0x5056b4/_0x1e1303[_0x58b3c5(0x1be)]),_0x15fe82['push'](_0x3e740f/_0x1e1303['particlesTextureSize']);}}}_0x15fe82=new Float32Array(_0x15fe82);let _0x31077b=[];const _0xd2c71b=[-0x1,0x1],_0x11a623=[-0x1,0x1];for(let _0x14af76=0x0;_0x14af76<_0x1e1303[_0x58b3c5(0x287)];_0x14af76++){for(let _0x301998=0x0;_0x301998<_0x83f521/0x2;_0x301998++){for(let _0xfed863=0x0;_0xfed863<_0x83f521/0x2;_0xfed863++){_0x31077b['push'](_0xd2c71b[_0x301998]),_0x31077b['push'](_0x11a623[_0xfed863]),_0x31077b['push'](0x0);}}}_0x31077b=new Float32Array(_0x31077b);const _0x52c716=0x6*_0x1e1303['maxParticles'],_0xde4b39=new Uint32Array(_0x52c716);for(let _0x2d9d0e=0x0,_0x50bc7b=0x0,_0x5e2493=0x0;_0x2d9d0e<_0x1e1303[_0x58b3c5(0x287)];_0x2d9d0e++){_0xde4b39[_0x50bc7b++]=_0x5e2493+0x0,_0xde4b39[_0x50bc7b++]=_0x5e2493+0x1,_0xde4b39[_0x50bc7b++]=_0x5e2493+0x2,_0xde4b39[_0x50bc7b++]=_0x5e2493+0x2,_0xde4b39[_0x50bc7b++]=_0x5e2493+0x1,_0xde4b39[_0x50bc7b++]=_0x5e2493+0x3,_0x5e2493+=0x4;}const _0x10b77a=new Cesium$4[(_0x58b3c5(0x218))]({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x15fe82}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x31077b})}),'indices':_0xde4b39});return _0x10b77a;}[_0x5abd34(0x228)](_0x3374c2,_0x2bf895,_0x34552b,_0x7ec0ec){const _0x432da6=_0x5abd34,_0x2ceb83=this;this['primitives']={'segments':new CustomPrimitive({'commandType':_0x432da6(0x1ed),'attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x432da6(0x212)](_0x2bf895),'primitiveType':Cesium$4[_0x432da6(0x284)]['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){return _0x7ec0ec['particlesTextures']['currentParticlesPosition'];},'postProcessingPosition':function(){const _0x18c0c8=_0x432da6;return _0x7ec0ec[_0x18c0c8(0x206)]['postProcessingPosition'];},'postProcessingSpeed':function(){const _0x20281e=_0x432da6;return _0x7ec0ec['particlesTextures'][_0x20281e(0x1e4)];},'colorTable':function(){return _0x2ceb83['textures']['colorTable'];},'aspect':function(){return _0x3374c2['drawingBufferWidth']/_0x3374c2['drawingBufferHeight'];},'pixelSize':function(){return _0x34552b['pixelSize'];},'lineWidth':function(){return _0x2bf895['lineWidth'];},'particleHeight':function(){return _0x2bf895['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'][_0x432da6(0x1ff)],'uniformMap':{'segmentsColorTexture':function(){const _0x21ad54=_0x432da6;return _0x2ceb83[_0x21ad54(0x1d2)]['segmentsColor'];},'segmentsDepthTexture':function(){const _0x30d768=_0x432da6;return _0x2ceb83[_0x30d768(0x1d2)]['segmentsDepth'];},'currentTrailsColor':function(){return _0x2ceb83['framebuffers']['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x2ceb83['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){const _0x8d6d3e=_0x432da6;return _0x2bf895[_0x8d6d3e(0x1f3)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x432da6(0x270)],'sources':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x432da6(0x1c0)][_0x432da6(0x257)]},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x432da6(0x1cb)],'autoClear':!![],'preExecute':function(){const _0x5e73db=_0x432da6,_0x198c68=_0x2ceb83['framebuffers'][_0x5e73db(0x25c)];_0x2ceb83[_0x5e73db(0x20c)]['currentTrails']=_0x2ceb83['framebuffers']['nextTrails'],_0x2ceb83['framebuffers']['nextTrails']=_0x198c68,_0x2ceb83['primitives']['trails']['commandToExecute'][_0x5e73db(0x275)]=_0x2ceb83['framebuffers'][_0x5e73db(0x1cb)],_0x2ceb83['primitives']['trails']['clearCommand'][_0x5e73db(0x275)]=_0x2ceb83['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){return _0x2ceb83['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x2ceb83['framebuffers']['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x432da6(0x270)],'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=_0x5abd34(0x263),updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a',postProcessingPosition_frag='uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a',postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x35ad96,_0x58fc27,_0x9269d3,_0x2627dd){this['data']=_0x58fc27,this['createWindTextures'](_0x35ad96,_0x58fc27),this['createParticlesTextures'](_0x35ad96,_0x9269d3,_0x2627dd),this['createComputingPrimitives'](_0x58fc27,_0x9269d3,_0x2627dd);}['createWindTextures'](_0x7a5bcb,_0xde6a08){const _0x33edd0=_0x5abd34,_0x3aed08={'context':_0x7a5bcb,'width':_0xde6a08['dimensions']['lon'],'height':_0xde6a08[_0x33edd0(0x1d4)][_0x33edd0(0x216)]*(_0xde6a08['dimensions'][_0x33edd0(0x1dd)]||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype'][_0x33edd0(0x22a)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this['windTextures']={'U':Util['createTexture'](_0x3aed08,_0xde6a08['U']['array']),'V':Util['createTexture'](_0x3aed08,_0xde6a08['V']['array'])};}['createParticlesTextures'](_0x3fe1bb,_0x5c18eb,_0x420f81){const _0x2fadc1=_0x5abd34,_0x103c11={'context':_0x3fe1bb,'width':_0x5c18eb['particlesTextureSize'],'height':_0x5c18eb['particlesTextureSize'],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x2fadc1(0x2aa))]({'minificationFilter':Cesium$3[_0x2fadc1(0x27c)][_0x2fadc1(0x217)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x5160a2=this[_0x2fadc1(0x2af)](_0x5c18eb['maxParticles'],_0x420f81),_0x3476b9=new Float32Array(0x4*_0x5c18eb['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x103c11),'currentParticlesPosition':Util['createTexture'](_0x103c11,_0x5160a2),'nextParticlesPosition':Util['createTexture'](_0x103c11,_0x5160a2),'currentParticlesSpeed':Util['createTexture'](_0x103c11,_0x3476b9),'nextParticlesSpeed':Util['createTexture'](_0x103c11,_0x3476b9),'postProcessingPosition':Util['createTexture'](_0x103c11,_0x5160a2),'postProcessingSpeed':Util['createTexture'](_0x103c11,_0x3476b9)};}[_0x5abd34(0x2af)](_0x1a7e3b,_0x34cb4c){const _0x2ca6a0=_0x5abd34,_0x156333=new Float32Array(0x4*_0x1a7e3b);for(let _0x162854=0x0;_0x162854<_0x1a7e3b;_0x162854++){_0x156333[0x4*_0x162854]=Cesium$3[_0x2ca6a0(0x20d)]['randomBetween'](_0x34cb4c['lonRange']['x'],_0x34cb4c['lonRange']['y']),_0x156333[0x4*_0x162854+0x1]=Cesium$3[_0x2ca6a0(0x20d)]['randomBetween'](_0x34cb4c['latRange']['x'],_0x34cb4c[_0x2ca6a0(0x204)]['y']),_0x156333[0x4*_0x162854+0x2]=Cesium$3['Math'][_0x2ca6a0(0x1c1)](this['data']['lev']['min'],this[_0x2ca6a0(0x279)][_0x2ca6a0(0x1dd)]['max']),_0x156333[0x4*_0x162854+0x3]=0x0;}return _0x156333;}[_0x5abd34(0x266)](){Object['keys'](this['particlesTextures'])['forEach'](_0x234d8c=>{this['particlesTextures'][_0x234d8c]['destroy']();});}[_0x5abd34(0x256)](_0x24dfa7,_0x229845,_0x594618){const _0xd3f233=_0x5abd34,_0x447e3f=new Cesium$3['Cartesian3'](_0x24dfa7['dimensions']['lon'],_0x24dfa7['dimensions'][_0xd3f233(0x216)],_0x24dfa7[_0xd3f233(0x1d4)][_0xd3f233(0x1dd)]),_0x1f71a9=new Cesium$3['Cartesian3'](_0x24dfa7['lon'][_0xd3f233(0x221)],_0x24dfa7['lat']['min'],_0x24dfa7[_0xd3f233(0x1dd)][_0xd3f233(0x221)]),_0xe35f66=new Cesium$3['Cartesian3'](_0x24dfa7[_0xd3f233(0x26d)]['max'],_0x24dfa7['lat']['max'],_0x24dfa7['lev'][_0xd3f233(0x25a)]),_0x1be843=new Cesium$3['Cartesian3']((_0xe35f66['x']-_0x1f71a9['x'])/(_0x447e3f['x']-0x1),(_0xe35f66['y']-_0x1f71a9['y'])/(_0x447e3f['y']-0x1),_0x447e3f['z']>0x1?(_0xe35f66['z']-_0x1f71a9['z'])/(_0x447e3f['z']-0x1):0x1),_0x2f131d=new Cesium$3['Cartesian2'](_0x24dfa7['U']['min'],_0x24dfa7['U']['max']),_0x30c66c=new Cesium$3['Cartesian2'](_0x24dfa7['V']['min'],_0x24dfa7['V']['max']),_0x556d35=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x556d35['windTextures']['U'];},'V':function(){return _0x556d35['windTextures']['V'];},'currentParticlesPosition':function(){return _0x556d35['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x447e3f;},'minimum':function(){return _0x1f71a9;},'maximum':function(){return _0xe35f66;},'interval':function(){return _0x1be843;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x244d84=_0xd3f233;_0x556d35['primitives'][_0x244d84(0x25d)]['commandToExecute']['outputTexture']=_0x556d35['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':_0xd3f233(0x1e2),'uniformMap':{'currentParticlesSpeed':function(){const _0x74823f=_0xd3f233;return _0x556d35[_0x74823f(0x206)][_0x74823f(0x269)];},'particlesWind':function(){const _0x25709b=_0xd3f233;return _0x556d35['particlesTextures'][_0x25709b(0x247)];},'uSpeedRange':function(){return _0x2f131d;},'vSpeedRange':function(){return _0x30c66c;},'pixelSize':function(){return _0x594618['pixelSize'];},'speedFactor':function(){const _0x5d38bf=_0xd3f233;return _0x229845[_0x5d38bf(0x23f)];}},'fragmentShaderSource':new Cesium$3[(_0xd3f233(0x1f5))]({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function(){const _0x47dced=_0xd3f233,_0x5c5520=_0x556d35[_0x47dced(0x206)][_0x47dced(0x269)];_0x556d35[_0x47dced(0x206)][_0x47dced(0x269)]=_0x556d35['particlesTextures'][_0x47dced(0x1e4)],_0x556d35[_0x47dced(0x206)][_0x47dced(0x1e4)]=_0x5c5520,_0x556d35[_0x47dced(0x27b)]['updateSpeed']['commandToExecute']['outputTexture']=_0x556d35[_0x47dced(0x206)]['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x3046bb=_0xd3f233;return _0x556d35['particlesTextures'][_0x3046bb(0x2a1)];},'currentParticlesSpeed':function(){return _0x556d35['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function(){const _0x433cab=_0xd3f233,_0x2262f8=_0x556d35['particlesTextures'][_0x433cab(0x2a1)];_0x556d35['particlesTextures'][_0x433cab(0x2a1)]=_0x556d35[_0x433cab(0x206)]['postProcessingPosition'],_0x556d35['particlesTextures'][_0x433cab(0x1ef)]=_0x2262f8,_0x556d35['primitives'][_0x433cab(0x29a)]['commandToExecute'][_0x433cab(0x229)]=_0x556d35[_0x433cab(0x206)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){return _0x556d35['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){const _0x17fdc8=_0xd3f233;return _0x556d35['particlesTextures'][_0x17fdc8(0x21d)];},'lonRange':function(){const _0x34a54f=_0xd3f233;return _0x594618[_0x34a54f(0x21e)];},'latRange':function(){return _0x594618['latRange'];},'randomCoefficient':function(){const _0x1b7115=Math['random']();return _0x1b7115;},'dropRate':function(){const _0x1c2405=_0xd3f233;return _0x229845[_0x1c2405(0x1e1)];},'dropRateBump':function(){const _0x4aee32=_0xd3f233;return _0x229845[_0x4aee32(0x26a)];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this[_0xd3f233(0x206)][_0xd3f233(0x1ef)],'preExecute':function(){const _0x2b1416=_0xd3f233;_0x556d35['primitives'][_0x2b1416(0x1ef)]['commandToExecute']['outputTexture']=_0x556d35[_0x2b1416(0x206)]['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x3e8fb7=_0xd3f233;return _0x556d35['particlesTextures'][_0x3e8fb7(0x1ef)];},'nextParticlesSpeed':function(){const _0x86098f=_0xd3f233;return _0x556d35[_0x86098f(0x206)][_0x86098f(0x21d)];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){const _0x3980bf=_0xd3f233;_0x556d35['primitives'][_0x3980bf(0x1e4)]['commandToExecute']['outputTexture']=_0x556d35['particlesTextures'][_0x3980bf(0x1e4)];}})};}}const Cesium$2=mars3d__namespace[_0x5abd34(0x219)];class ParticleSystem{constructor(_0xfa98ea,_0x1b4d57,_0x2aed25,_0x3338a3){const _0x250f57=_0x5abd34;this[_0x250f57(0x209)]=_0xfa98ea,_0x1b4d57={..._0x1b4d57},_0x1b4d57['udata']&&_0x1b4d57['vdata']&&(_0x1b4d57['dimensions']={},_0x1b4d57['dimensions'][_0x250f57(0x26d)]=_0x1b4d57['cols'],_0x1b4d57['dimensions'][_0x250f57(0x216)]=_0x1b4d57[_0x250f57(0x262)],_0x1b4d57['dimensions']['lev']=_0x1b4d57[_0x250f57(0x1dd)]||0x1,_0x1b4d57[_0x250f57(0x26d)]={},_0x1b4d57[_0x250f57(0x26d)][_0x250f57(0x221)]=_0x1b4d57['xmin'],_0x1b4d57[_0x250f57(0x26d)][_0x250f57(0x25a)]=_0x1b4d57[_0x250f57(0x1c9)],_0x1b4d57['lat']={},_0x1b4d57['lat']['min']=_0x1b4d57['ymin'],_0x1b4d57[_0x250f57(0x216)]['max']=_0x1b4d57['ymax'],_0x1b4d57['lev']={},_0x1b4d57[_0x250f57(0x1dd)]['min']=_0x1b4d57['levmin']??0x1,_0x1b4d57[_0x250f57(0x1dd)]['max']=_0x1b4d57[_0x250f57(0x2a8)]??0x1,_0x1b4d57['U']={},_0x1b4d57['U']['array']=new Float32Array(_0x1b4d57[_0x250f57(0x260)]),_0x1b4d57['U'][_0x250f57(0x221)]=_0x1b4d57[_0x250f57(0x261)]??Math['min'](..._0x1b4d57['udata']),_0x1b4d57['U']['max']=_0x1b4d57[_0x250f57(0x241)]??Math[_0x250f57(0x25a)](..._0x1b4d57['udata']),_0x1b4d57['V']={},_0x1b4d57['V']['array']=new Float32Array(_0x1b4d57['vdata']),_0x1b4d57['V']['min']=_0x1b4d57['vmin']??Math['min'](..._0x1b4d57['vdata']),_0x1b4d57['V']['max']=_0x1b4d57[_0x250f57(0x27e)]??Math[_0x250f57(0x25a)](..._0x1b4d57['vdata'])),this[_0x250f57(0x279)]=_0x1b4d57,this['options']=_0x2aed25,this[_0x250f57(0x1ee)]=_0x3338a3,this[_0x250f57(0x250)]=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this[_0x250f57(0x209)],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}[_0x5abd34(0x1c6)](_0x4fb835){const _0x3ec7=_0x5abd34;this[_0x3ec7(0x250)]['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x420477=>{this['particlesComputing']['windTextures'][_0x420477]['destroy']();}),this[_0x3ec7(0x210)]['textures'][_0x3ec7(0x288)]['destroy'](),Object['keys'](this[_0x3ec7(0x210)]['framebuffers'])['forEach'](_0x5e1f04=>{const _0x1410e7=_0x3ec7;this[_0x1410e7(0x210)]['framebuffers'][_0x5e1f04]['destroy']();}),this['context']=_0x4fb835,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0x3ec7(0x20f)],this[_0x3ec7(0x1ee)]),this[_0x3ec7(0x210)]=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this[_0x3ec7(0x250)]);}['clearFramebuffers'](){const _0x442db7=_0x5abd34,_0x128402=new Cesium$2[(_0x442db7(0x200))]({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});Object['keys'](this['particlesRendering']['framebuffers'])[_0x442db7(0x1fb)](_0x547497=>{const _0x90740c=_0x442db7;_0x128402['framebuffer']=this['particlesRendering']['framebuffers'][_0x547497],_0x128402['execute'](this[_0x90740c(0x209)]);});}['refreshParticles'](_0x427fbb){const _0x59daf7=_0x5abd34;this[_0x59daf7(0x297)](),this['particlesComputing'][_0x59daf7(0x266)](),this['particlesComputing'][_0x59daf7(0x203)](this['context'],this['options'],this['viewerParameters']);if(_0x427fbb){var _0x26137d;const _0x5cec58=this['particlesRendering']['createSegmentsGeometry'](this['options']);this[_0x59daf7(0x210)][_0x59daf7(0x27b)]['segments']['geometry']=_0x5cec58;const _0x1643b9=Cesium$2['VertexArray'][_0x59daf7(0x1d8)]({'context':this[_0x59daf7(0x209)],'geometry':_0x5cec58,'attributeLocations':this[_0x59daf7(0x210)][_0x59daf7(0x27b)]['segments']['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x26137d=this['particlesRendering']['primitives'])!==null&&_0x26137d!==void 0x0&&(_0x26137d=_0x26137d[_0x59daf7(0x20b)])!==null&&_0x26137d!==void 0x0&&_0x26137d[_0x59daf7(0x23e)]&&(this['particlesRendering']['primitives']['segments']['commandToExecute']['vertexArray']=_0x1643b9);}}[_0x5abd34(0x242)](_0x349530){let _0x280501=![];this['options']['maxParticles']!==_0x349530['maxParticles']&&(_0x280501=!![]),Object['keys'](_0x349530)['forEach'](_0xbe6fe=>{const _0x354c3c=_0x411b;this[_0x354c3c(0x20f)][_0xbe6fe]=_0x349530[_0xbe6fe];}),this['refreshParticles'](_0x280501);}['applyViewerParameters'](_0x48c4d0){Object['keys'](_0x48c4d0)['forEach'](_0xf3cce9=>{this['viewerParameters'][_0xf3cce9]=_0x48c4d0[_0xf3cce9];}),this['refreshParticles'](![]);}['destroy'](){const _0xa5547a=_0x5abd34;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing'][_0xa5547a(0x21f)])[_0xa5547a(0x1fb)](_0xaf34b1=>{const _0x106f1d=_0xa5547a;this['particlesComputing'][_0x106f1d(0x21f)][_0xaf34b1]['destroy']();}),this['particlesRendering'][_0xa5547a(0x1d2)]['colorTable']['destroy'](),Object['keys'](this['particlesRendering']['framebuffers'])[_0xa5547a(0x1fb)](_0x3ebf23=>{const _0x4620c5=_0xa5547a;this[_0x4620c5(0x210)]['framebuffers'][_0x3ebf23]['destroy']();});for(const _0x45e2c2 in this){delete this[_0x45e2c2];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x5abd34(0x27d)]['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(_0x319482={}){_0x319482={...DEF_OPTIONS,..._0x319482},super(_0x319482),this['_setOptionsHook'](_0x319482);}get['layer'](){return this['primitives'];}get[_0x5abd34(0x279)](){const _0x52fffc=_0x5abd34;return this[_0x52fffc(0x22c)];}set[_0x5abd34(0x279)](_0x2c29da){const _0x2c7f2a=_0x5abd34;this[_0x2c7f2a(0x25e)](_0x2c29da);}get[_0x5abd34(0x226)](){const _0x24b07a=_0x5abd34;return this[_0x24b07a(0x20f)][_0x24b07a(0x226)];}set['colors'](_0x4aeeba){const _0x659ff0=_0x5abd34;this['options']['colors']=_0x4aeeba,this[_0x659ff0(0x240)]&&this[_0x659ff0(0x240)][_0x659ff0(0x242)]({'colors':_0x4aeeba}),this[_0x659ff0(0x1e0)]();}['_mountedHook'](){}['_addedHook'](){const _0x4f5a17=_0x5abd34;this['scene']=this[_0x4f5a17(0x22e)]['scene'],this['camera']=this['_map'][_0x4f5a17(0x237)],this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map'][_0x4f5a17(0x273)]['primitives']['add'](this['primitives']),this[_0x4f5a17(0x1ee)]={'lonRange':new Cesium$1[(_0x4f5a17(0x24a))](),'latRange':new Cesium$1[(_0x4f5a17(0x24a))](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1[(_0x4f5a17(0x253))](Cesium$1[_0x4f5a17(0x201)]['ZERO'],0.99*0x615299),this[_0x4f5a17(0x285)](),window['addEventListener']('resize',this['resize']['bind'](this),![]),this[_0x4f5a17(0x1f7)]=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace['EventType'][_0x4f5a17(0x29e)],this['_onMapWhellEvent'],this),this[_0x4f5a17(0x22e)]['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace[_0x4f5a17(0x1d6)]['mouseMove'],this[_0x4f5a17(0x274)],this),this['_data']&&this[_0x4f5a17(0x25e)](this[_0x4f5a17(0x22c)]);}[_0x5abd34(0x20e)](){const _0x6fa66d=_0x5abd34;window['removeEventListener']('resize',this['resize']),this[_0x6fa66d(0x22e)]['off'](mars3d__namespace[_0x6fa66d(0x1d6)][_0x6fa66d(0x244)],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map'][_0x6fa66d(0x1da)](mars3d__namespace['EventType'][_0x6fa66d(0x1d0)],this[_0x6fa66d(0x22d)],this),this['_map'][_0x6fa66d(0x1da)](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this[_0x6fa66d(0x22e)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this['_map']['scene'][_0x6fa66d(0x27b)]['remove'](this['primitives']);}['resize'](){const _0x24338e=_0x5abd34;if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this[_0x24338e(0x27b)][_0x24338e(0x205)](),this['_map']['once'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this);}['_onMap_preRenderEvent'](_0x4c8a5b){const _0x1e5269=_0x5abd34;this['particleSystem']['canvasResize'](this[_0x1e5269(0x273)][_0x1e5269(0x209)]),this[_0x1e5269(0x2a2)](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x46c96f){const _0x42d7da=_0x5abd34;clearTimeout(this['refreshTimer']);if(!this['show']||!this['particleSystem'])return;this[_0x42d7da(0x27b)][_0x42d7da(0x1d5)]=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x2cbfc4){const _0x5beffe=_0x5abd34;this[_0x5beffe(0x1f7)]=!![];}[_0x5abd34(0x274)](_0x4eb19a){const _0x110fa7=_0x5abd34;if(!this['show']||!this['particleSystem'])return;this[_0x110fa7(0x1f7)]&&(this[_0x110fa7(0x27b)]['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x38f482){const _0x24fbbe=_0x5abd34;if(!this[_0x24fbbe(0x1d5)]||!this['particleSystem'])return;this[_0x24fbbe(0x1f7)]&&this['mouse_move']&&this['redraw'](),this['primitives']['show']=!![],this['mouse_down']=![],this['mouse_move']=![];}[_0x5abd34(0x2ab)](){const _0x53791c=_0x5abd34;if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this[_0x53791c(0x27b)]['show']=!![];}['setData'](_0x52366d){const _0x52e8dd=_0x5abd34;this['_data']=_0x52366d,this[_0x52e8dd(0x240)]&&this[_0x52e8dd(0x240)]['destroy'](),this['particleSystem']=new ParticleSystem(this['scene'][_0x52e8dd(0x209)],_0x52366d,this['getOptions'](),this[_0x52e8dd(0x1ee)]),this['addPrimitives']();}['_setOptionsHook'](_0x155376,_0x2f1559){const _0x56f044=_0x5abd34;if(_0x155376)for(const _0xcb8552 in _0x155376){this[_0xcb8552]=_0x155376[_0xcb8552];}this['particleSystem']&&this['particleSystem']['setOptions'](this[_0x56f044(0x1f6)]());}['getOptions'](){const _0x5790c7=_0x5abd34,_0x57e083=Math[_0x5790c7(0x251)](Math[_0x5790c7(0x222)](this['particlesNumber']));return this['particlesNumber']=_0x57e083*_0x57e083,{'particlesTextureSize':_0x57e083,'maxParticles':this['particlesNumber'],'particleHeight':this['fixedHeight'],'fadeOpacity':this[_0x5790c7(0x1f3)],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this['colors']};}['addPrimitives'](){const _0x42128b=_0x5abd34;this['primitives'][_0x42128b(0x282)](this['particleSystem']['particlesComputing'][_0x42128b(0x27b)]['getWind']),this['primitives']['add'](this[_0x42128b(0x240)][_0x42128b(0x250)]['primitives'][_0x42128b(0x1c2)]),this['primitives'][_0x42128b(0x282)](this['particleSystem']['particlesComputing']['primitives'][_0x42128b(0x29a)]),this[_0x42128b(0x27b)]['add'](this['particleSystem'][_0x42128b(0x250)]['primitives']['postProcessingPosition']),this[_0x42128b(0x27b)]['add'](this['particleSystem'][_0x42128b(0x250)][_0x42128b(0x27b)]['postProcessingSpeed']),this['primitives']['add'](this['particleSystem'][_0x42128b(0x210)]['primitives']['segments']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['trails']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['screen']);}['updateViewerParameters'](){const _0x51d14a=_0x5abd34;let _0x5c7124=this[_0x51d14a(0x237)][_0x51d14a(0x289)](this['scene']['globe']['ellipsoid']);if(!_0x5c7124){const _0x2fe3b5=this['_map']['getExtent']();_0x5c7124=Cesium$1[_0x51d14a(0x276)]['fromDegrees'](_0x2fe3b5['xmin'],_0x2fe3b5['ymin'],_0x2fe3b5[_0x51d14a(0x1c9)],_0x2fe3b5[_0x51d14a(0x264)]);}const _0x4af1ca=Util[_0x51d14a(0x223)](_0x5c7124);this[_0x51d14a(0x1ee)]['lonRange']['x']=_0x4af1ca[_0x51d14a(0x26d)]['min'],this[_0x51d14a(0x1ee)][_0x51d14a(0x21e)]['y']=_0x4af1ca['lon']['max'],this[_0x51d14a(0x1ee)]['latRange']['x']=_0x4af1ca[_0x51d14a(0x216)]['min'],this['viewerParameters']['latRange']['y']=_0x4af1ca['lat']['max'];const _0x176bea=this[_0x51d14a(0x237)]['getPixelSize'](this[_0x51d14a(0x2a3)],this['scene']['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0x176bea>0x0&&(this['viewerParameters']['pixelSize']=_0x176bea);}}function _0x411b(_0x2f5a37,_0x96e927){const _0x1b0e85=_0x1b0e();return _0x411b=function(_0x411b62,_0x1c9c61){_0x411b62=_0x411b62-0x1bd;let _0x12a729=_0x1b0e85[_0x411b62];return _0x12a729;},_0x411b(_0x2f5a37,_0x96e927);}mars3d__namespace['LayerUtil'][_0x5abd34(0x224)]('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0x22f9e7=_0x5abd34;this[_0x22f9e7(0x246)]=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this['age']=null,this[_0x22f9e7(0x2b2)]=null;}['destroy'](){for(const _0x2bc84f in this){delete this[_0x2bc84f];}}}class CanvasWindField{constructor(_0x223ba4){this['setOptions'](_0x223ba4);}get['speedRate'](){return this['_speedRate'];}set[_0x5abd34(0x23c)](_0x5783ed){const _0x568cfd=_0x5abd34;this['_speedRate']=(0x64-(_0x5783ed>0x63?0x63:_0x5783ed))*0x64,this[_0x568cfd(0x280)]=[(this['xmax']-this['xmin'])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}get['maxAge'](){const _0x568253=_0x5abd34;return this[_0x568253(0x1f2)];}set[_0x5abd34(0x1ce)](_0xbd84b9){const _0x3a27c2=_0x5abd34;this[_0x3a27c2(0x1f2)]=_0xbd84b9;}['setOptions'](_0x278102){const _0x593a3c=_0x5abd34;this['options']=_0x278102,this['maxAge']=_0x278102[_0x593a3c(0x1ce)]||0x78,this['speedRate']=_0x278102[_0x593a3c(0x23c)]||0x32,this['particles']=[];const _0x1da546=_0x278102['particlesNumber']||0x1000;for(let _0x45ad05=0x0;_0x45ad05<_0x1da546;_0x45ad05++){const _0x6484f8=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x6484f8);}}['setDate'](_0x4c621a){const _0x3b135c=_0x5abd34;this['rows']=_0x4c621a[_0x3b135c(0x262)],this['cols']=_0x4c621a['cols'],this[_0x3b135c(0x1f1)]=_0x4c621a['xmin'],this['xmax']=_0x4c621a['xmax'],this['ymin']=_0x4c621a['ymin'],this['ymax']=_0x4c621a['ymax'],this['grid']=[];const _0x3fa6e0=_0x4c621a['udata'],_0x319c15=_0x4c621a['vdata'];let _0x549a01=![];_0x3fa6e0['length']===this[_0x3b135c(0x262)]&&_0x3fa6e0[0x0]['length']===this[_0x3b135c(0x234)]&&(_0x549a01=!![]);let _0x4f13a4=0x0,_0x5aed59=null,_0x3d3579=null;for(let _0x5080fb=0x0;_0x5080fb<this['rows'];_0x5080fb++){_0x5aed59=[];for(let _0x3a416a=0x0;_0x3a416a<this[_0x3b135c(0x234)];_0x3a416a++,_0x4f13a4++){_0x549a01?_0x3d3579=this[_0x3b135c(0x1de)](_0x3fa6e0[_0x5080fb][_0x3a416a],_0x319c15[_0x5080fb][_0x3a416a]):_0x3d3579=this['_calcUV'](_0x3fa6e0[_0x4f13a4],_0x319c15[_0x4f13a4]),_0x5aed59[_0x3b135c(0x1cf)](_0x3d3579);}this[_0x3b135c(0x29c)][_0x3b135c(0x1cf)](_0x5aed59);}this[_0x3b135c(0x20f)]['reverseY']&&this['grid'][_0x3b135c(0x28f)]();}['clear'](){const _0x4c0e0f=_0x5abd34;delete this[_0x4c0e0f(0x262)],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this[_0x4c0e0f(0x264)],delete this['grid'],delete this['particles'];}['toGridXY'](_0x9ae399,_0x9d4f21){const _0x2d85e2=_0x5abd34,_0x2508e3=(_0x9ae399-this[_0x2d85e2(0x1f1)])/(this['xmax']-this['xmin'])*(this['cols']-0x1),_0x238446=(this['ymax']-_0x9d4f21)/(this['ymax']-this['ymin'])*(this['rows']-0x1);return[_0x2508e3,_0x238446];}['getUVByXY'](_0x1a28e3,_0x34589f){const _0x31bdde=_0x5abd34;if(_0x1a28e3<0x0||_0x1a28e3>=this[_0x31bdde(0x234)]||_0x34589f>=this['rows'])return[0x0,0x0,0x0];const _0x2ccca5=Math['floor'](_0x1a28e3),_0x4f0bf1=Math['floor'](_0x34589f);if(_0x2ccca5===_0x1a28e3&&_0x4f0bf1===_0x34589f)return this['grid'][_0x34589f][_0x1a28e3];const _0x11ff45=_0x2ccca5+0x1,_0x4b50cb=_0x4f0bf1+0x1,_0x9c8dc2=this[_0x31bdde(0x26f)](_0x2ccca5,_0x4f0bf1),_0x1c017a=this['getUVByXY'](_0x11ff45,_0x4f0bf1),_0x3b3cc8=this[_0x31bdde(0x26f)](_0x2ccca5,_0x4b50cb),_0x5a047c=this[_0x31bdde(0x26f)](_0x11ff45,_0x4b50cb);let _0x486aa5=null;try{_0x486aa5=this['_bilinearInterpolation'](_0x1a28e3-_0x2ccca5,_0x34589f-_0x4f0bf1,_0x9c8dc2,_0x1c017a,_0x3b3cc8,_0x5a047c);}catch(_0x3ca714){console['log'](_0x1a28e3,_0x34589f);}return _0x486aa5;}['_bilinearInterpolation'](_0x2926ca,_0xbfe93c,_0xa79775,_0x1cf556,_0x141542,_0x31d917){const _0x35a5cf=0x1-_0x2926ca,_0x1d5f0f=0x1-_0xbfe93c,_0x221a37=_0x35a5cf*_0x1d5f0f,_0x45de0b=_0x2926ca*_0x1d5f0f,_0x6e14e2=_0x35a5cf*_0xbfe93c,_0x40b318=_0x2926ca*_0xbfe93c,_0x448e4c=_0xa79775[0x0]*_0x221a37+_0x1cf556[0x0]*_0x45de0b+_0x141542[0x0]*_0x6e14e2+_0x31d917[0x0]*_0x40b318,_0x1990bf=_0xa79775[0x1]*_0x221a37+_0x1cf556[0x1]*_0x45de0b+_0x141542[0x1]*_0x6e14e2+_0x31d917[0x1]*_0x40b318;return this['_calcUV'](_0x448e4c,_0x1990bf);}['_calcUV'](_0x4c86a0,_0x1a6959){const _0x433f34=_0x5abd34;return[+_0x4c86a0,+_0x1a6959,Math[_0x433f34(0x222)](_0x4c86a0*_0x4c86a0+_0x1a6959*_0x1a6959)];}['getUVByPoint'](_0x62981,_0x4a25fd){const _0x257759=_0x5abd34;if(!this[_0x257759(0x2a7)](_0x62981,_0x4a25fd))return null;const _0x136d0f=this['toGridXY'](_0x62981,_0x4a25fd),_0x439630=this['getUVByXY'](_0x136d0f[0x0],_0x136d0f[0x1]);return _0x439630;}[_0x5abd34(0x2a7)](_0x2812f4,_0x4839a2){const _0x42b15e=_0x5abd34;return _0x2812f4>=this['xmin']&&_0x2812f4<=this[_0x42b15e(0x1c9)]&&_0x4839a2>=this[_0x42b15e(0x23d)]&&_0x4839a2<=this['ymax']?!![]:![];}[_0x5abd34(0x25b)](){const _0x714284=_0x5abd34,_0x176ade=fRandomByfloat(this[_0x714284(0x1f1)],this['xmax']),_0x19f5c4=fRandomByfloat(this[_0x714284(0x23d)],this[_0x714284(0x264)]);return{'lat':_0x19f5c4,'lng':_0x176ade};}['getParticles'](){const _0x233d5e=_0x5abd34;let _0x8e0aff,_0xe690f5,_0x1d396c;for(let _0x4e496c=0x0,_0x11d303=this[_0x233d5e(0x2ad)][_0x233d5e(0x211)];_0x4e496c<_0x11d303;_0x4e496c++){let _0x127753=this['particles'][_0x4e496c];_0x127753['age']<=0x0&&(_0x127753=this['_randomParticle'](_0x127753));if(_0x127753[_0x233d5e(0x22f)]>0x0){const _0x2407a1=_0x127753['tlng'],_0x4920bc=_0x127753[_0x233d5e(0x249)];_0x1d396c=this[_0x233d5e(0x1fa)](_0x2407a1,_0x4920bc),_0x1d396c?(_0x8e0aff=_0x2407a1+this['_calc_speedRate'][0x0]*_0x1d396c[0x0],_0xe690f5=_0x4920bc+this['_calc_speedRate'][0x1]*_0x1d396c[0x1],_0x127753[_0x233d5e(0x246)]=_0x2407a1,_0x127753['lat']=_0x4920bc,_0x127753[_0x233d5e(0x271)]=_0x8e0aff,_0x127753['tlat']=_0xe690f5,_0x127753['speed']=_0x1d396c[0x2],_0x127753['age']--):_0x127753['age']=0x0;}}return this[_0x233d5e(0x2ad)];}[_0x5abd34(0x245)](_0x374947){const _0x26a141=_0x5abd34;let _0x11c2d5,_0x283d91;for(let _0x1a498e=0x0;_0x1a498e<0x1e;_0x1a498e++){_0x11c2d5=this['getRandomLatLng'](),_0x283d91=this['getUVByPoint'](_0x11c2d5['lng'],_0x11c2d5['lat']);if(_0x283d91&&_0x283d91[0x2]>0x0)break;}if(!_0x283d91)return _0x374947;const _0x44f363=_0x11c2d5['lng']+this[_0x26a141(0x280)][0x0]*_0x283d91[0x0],_0x506f39=_0x11c2d5['lat']+this[_0x26a141(0x280)][0x1]*_0x283d91[0x1];return _0x374947[_0x26a141(0x246)]=_0x11c2d5[_0x26a141(0x246)],_0x374947['lat']=_0x11c2d5['lat'],_0x374947[_0x26a141(0x271)]=_0x44f363,_0x374947['tlat']=_0x506f39,_0x374947[_0x26a141(0x22f)]=Math['round'](Math['random']()*this['maxAge']),_0x374947[_0x26a141(0x2b2)]=_0x283d91[0x2],_0x374947;}['destroy'](){for(const _0x4dd5f9 in this){delete this[_0x4dd5f9];}}}function fRandomByfloat(_0x599fd4,_0x1afb10){const _0x35c6af=_0x5abd34;return _0x599fd4+Math[_0x35c6af(0x220)]()*(_0x1afb10-_0x599fd4);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer'][_0x5abd34(0x239)];class CanvasWindLayer extends BaseLayer{constructor(_0x59221f={}){const _0x4bb6ce=_0x5abd34;super(_0x59221f),this[_0x4bb6ce(0x26c)](_0x59221f),this['canvas']=null,_0x59221f[_0x4bb6ce(0x226)]&&_0x59221f[_0x4bb6ce(0x202)]&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x59221f));}['_setOptionsHook'](_0x150f13,_0x1f983d){const _0x11ed96=_0x5abd34;this['frameTime']=0x3e8/(_0x150f13['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x150f13['color']||'#ffffff',this['lineWidth']=_0x150f13[_0x11ed96(0x1df)]||0x1,this[_0x11ed96(0x1ec)]=_0x150f13[_0x11ed96(0x1ec)]??0x0,this['reverseY']=_0x150f13[_0x11ed96(0x2ae)]??![],this['windField']&&this['windField']['setOptions'](_0x150f13);}get['layer'](){return this['canvas'];}get['canvasWidth'](){const _0x5d525f=_0x5abd34;return this['_map']['scene']['canvas'][_0x5d525f(0x292)];}get[_0x5abd34(0x1d9)](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x42f8d9){this['_pointerEvents']=_0x42f8d9;if(!this['canvas'])return;_0x42f8d9?this['canvas']['style']['pointer-events']='all':this['canvas']['style']['pointer-events']='none';}get['particlesNumber'](){return this['options']['particlesNumber'];}set[_0x5abd34(0x1ca)](_0x453adf){const _0x38bbc1=_0x5abd34;this['options']['particlesNumber']=_0x453adf,clearTimeout(this['_canrefresh']),this[_0x38bbc1(0x2b0)]=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x5abd34(0x23c)](){return this['options']['speedRate'];}set[_0x5abd34(0x23c)](_0x8e645){const _0x76fe89=_0x5abd34;this['options'][_0x76fe89(0x23c)]=_0x8e645,this[_0x76fe89(0x265)]&&(this['windField']['speedRate']=_0x8e645);}get['maxAge'](){const _0x4d7521=_0x5abd34;return this[_0x4d7521(0x20f)]['maxAge'];}set['maxAge'](_0x13a0cd){this['options']['maxAge']=_0x13a0cd,this['windField']&&(this['windField']['maxAge']=_0x13a0cd);}get['data'](){const _0x5e0e0f=_0x5abd34;return this[_0x5e0e0f(0x286)];}set['data'](_0x1702d0){this['setData'](_0x1702d0);}['_showHook'](_0x2ed942){const _0x20a88a=_0x5abd34;_0x2ed942?this['_addedHook']():(this[_0x20a88a(0x286)]&&(this['options'][_0x20a88a(0x279)]=this[_0x20a88a(0x286)]),this['_removedHook']());}['_mountedHook'](){const _0x1096e2=_0x5abd34;this[_0x1096e2(0x20f)]['worker']?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}[_0x5abd34(0x281)](){const _0x3353e4=_0x5abd34;this['canvas']=this['_createCanvas'](),this['canvasContext']=this[_0x3353e4(0x278)]['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options'][_0x3353e4(0x279)]&&this['setData'](this['options'][_0x3353e4(0x279)]);}['_removedHook'](){const _0x1e5f59=_0x5abd34;this['clear'](),this[_0x1e5f59(0x296)](),this[_0x1e5f59(0x278)]&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}[_0x5abd34(0x230)](){const _0x5170b1=_0x5abd34,_0x37fc22=mars3d__namespace['DomUtil'][_0x5170b1(0x25f)]('canvas',_0x5170b1(0x252),this[_0x5170b1(0x22e)]['container']);return _0x37fc22['style']['position']='absolute',_0x37fc22['style']['top']='0px',_0x37fc22['style']['left']='0px',_0x37fc22['style']['width']=this[_0x5170b1(0x22e)]['scene'][_0x5170b1(0x278)][_0x5170b1(0x292)]+'px',_0x37fc22[_0x5170b1(0x20a)]['height']=this[_0x5170b1(0x22e)]['scene']['canvas'][_0x5170b1(0x272)]+'px',_0x37fc22['style']['pointerEvents']=this['_pointerEvents']?'auto':'none',_0x37fc22[_0x5170b1(0x20a)]['zIndex']=this['options']['zIndex']??0x9,_0x37fc22[_0x5170b1(0x1db)]=this[_0x5170b1(0x22e)]['scene']['canvas']['clientWidth'],_0x37fc22['height']=this['_map']['scene']['canvas']['clientHeight'],_0x37fc22;}['resize'](){const _0x39e41f=_0x5abd34;this['canvas']&&(this['canvas'][_0x39e41f(0x20a)]['width']=this['_map']['scene'][_0x39e41f(0x278)][_0x39e41f(0x292)]+'px',this['canvas'][_0x39e41f(0x20a)]['height']=this[_0x39e41f(0x22e)][_0x39e41f(0x273)][_0x39e41f(0x278)][_0x39e41f(0x272)]+'px',this[_0x39e41f(0x278)]['width']=this['_map'][_0x39e41f(0x273)]['canvas']['clientWidth'],this['canvas'][_0x39e41f(0x268)]=this[_0x39e41f(0x22e)][_0x39e41f(0x273)]['canvas'][_0x39e41f(0x272)]);}[_0x5abd34(0x227)](){const _0x5661fa=_0x5abd34,_0x3d90df=this;let _0x300ee1=Date['now']();(function _0x5578c6(){const _0xcf9dc6=_0x411b;_0x3d90df['animateFrame']=window['requestAnimationFrame'](_0x5578c6);if(_0x3d90df['show']&&_0x3d90df['windField']){const _0x51f1de=Date[_0xcf9dc6(0x24d)](),_0x32a3c9=_0x51f1de-_0x300ee1;_0x32a3c9>_0x3d90df['frameTime']&&(_0x300ee1=_0x51f1de-_0x32a3c9%_0x3d90df['frameTime'],_0x3d90df['update']());}}(),window[_0x5661fa(0x1dc)](_0x5661fa(0x1e0),this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options'][_0x5661fa(0x233)]&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x5abd34(0x296)](){const _0x302987=_0x5abd34;window[_0x302987(0x23b)](this['animateFrame']),delete this['animateFrame'],window['removeEventListener']('resize',this[_0x302987(0x1e0)]),this[_0x302987(0x20f)]['mouseHidden']&&(this[_0x302987(0x22e)]['off'](mars3d__namespace['EventType']['wheel'],this[_0x302987(0x1cd)],this),this['_map']['off'](mars3d__namespace[_0x302987(0x1d6)]['mouseDown'],this['_onMouseDownEvent'],this),this['_map'][_0x302987(0x1da)](mars3d__namespace[_0x302987(0x1d6)]['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace[_0x302987(0x1d6)]['mouseMove'],this['_onMouseMoveEvent'],this));}[_0x5abd34(0x1cd)](_0x4cf8be){const _0x1a010d=_0x5abd34;clearTimeout(this[_0x1a010d(0x298)]);if(!this['show']||!this['canvas'])return;this['canvas']['style'][_0x1a010d(0x283)]='hidden',this['refreshTimer']=setTimeout(()=>{const _0x2b4a2a=_0x1a010d;if(!this['show'])return;this['redraw'](),this['canvas'][_0x2b4a2a(0x20a)]['visibility']='visible';},0xc8);}['_onMouseDownEvent'](_0x317321){const _0xd83643=_0x5abd34;this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace[_0xd83643(0x1d6)]['mouseMove'],this[_0xd83643(0x274)],this);}['_onMouseMoveEvent'](_0x8e1751){const _0x13035d=_0x5abd34;if(!this['show']||!this['canvas'])return;this[_0x13035d(0x1f7)]&&(this['canvas']['style']['visibility']='hidden',this['mouse_move']=!![]);}[_0x5abd34(0x1e8)](_0x21366a){const _0x3420a3=_0x5abd34;if(!this['show']||!this[_0x3420a3(0x278)])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x3420a3(0x274)],this),this[_0x3420a3(0x1f7)]&&this['mouse_move']&&this[_0x3420a3(0x2ab)](),this[_0x3420a3(0x278)]['style']['visibility']='visible',this['mouse_down']=![],this[_0x3420a3(0x255)]=![];}['setData'](_0x50d82a){const _0x43c8aa=_0x5abd34;this['clear'](),this[_0x43c8aa(0x286)]=_0x50d82a,this['windField']['setDate'](_0x50d82a),this[_0x43c8aa(0x2ab)]();}[_0x5abd34(0x2ab)](){const _0xa7bd0=_0x5abd34;if(!this[_0xa7bd0(0x1d5)])return;this[_0xa7bd0(0x265)]['setOptions'](this['options']),this['update']();}[_0x5abd34(0x1bf)](){const _0x3277e6=_0x5abd34;if(this['_updateIng'])return;this[_0x3277e6(0x254)]=!![];if(this[_0x3277e6(0x24c)])this['windField'][_0x3277e6(0x1bf)]();else{const _0x18b9cd=this['windField'][_0x3277e6(0x21a)]();this[_0x3277e6(0x207)](_0x18b9cd);}this['_updateIng']=![];}['_drawLines'](_0x5d8c84){const _0x214fac=_0x5abd34;this[_0x214fac(0x232)]['globalCompositeOperation']='destination-in',this['canvasContext'][_0x214fac(0x1ea)](0x0,0x0,this[_0x214fac(0x1c7)],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter',this[_0x214fac(0x232)]['globalAlpha']=0.9;const _0x5aa6db=this['_map']['scene']['mode']!==Cesium[_0x214fac(0x21b)]['SCENE3D'],_0xd66089=this[_0x214fac(0x1c7)]*0.25;if(this['_colorRamp'])for(let _0x539e3a=0x0,_0x338fdd=_0x5d8c84['length'];_0x539e3a<_0x338fdd;_0x539e3a++){const _0x2a8478=_0x5d8c84[_0x539e3a],_0x1fdcda=this['_tomap'](_0x2a8478['lng'],_0x2a8478['lat'],_0x2a8478),_0x33bbc6=this[_0x214fac(0x1f8)](_0x2a8478['tlng'],_0x2a8478[_0x214fac(0x249)],_0x2a8478);if(!_0x1fdcda||!_0x33bbc6)continue;if(_0x5aa6db&&Math['abs'](_0x1fdcda[0x0]-_0x33bbc6[0x0])>=_0xd66089)continue;this[_0x214fac(0x232)][_0x214fac(0x2a5)](),this['canvasContext'][_0x214fac(0x1df)]=this[_0x214fac(0x1df)],this['canvasContext'][_0x214fac(0x1fe)]=this['_colorRamp']['getColor'](_0x2a8478['speed']),this['canvasContext']['moveTo'](_0x1fdcda[0x0],_0x1fdcda[0x1]),this[_0x214fac(0x232)]['lineTo'](_0x33bbc6[0x0],_0x33bbc6[0x1]),this['canvasContext']['stroke']();}else{this['canvasContext']['beginPath'](),this[_0x214fac(0x232)][_0x214fac(0x1df)]=this['lineWidth'],this['canvasContext']['strokeStyle']=this[_0x214fac(0x27a)];for(let _0x45e0ad=0x0,_0x48a6b2=_0x5d8c84['length'];_0x45e0ad<_0x48a6b2;_0x45e0ad++){const _0x590d24=_0x5d8c84[_0x45e0ad],_0x2bd0ad=this['_tomap'](_0x590d24['lng'],_0x590d24['lat'],_0x590d24),_0x510a6b=this[_0x214fac(0x1f8)](_0x590d24['tlng'],_0x590d24['tlat'],_0x590d24);if(!_0x2bd0ad||!_0x510a6b)continue;if(_0x5aa6db&&Math['abs'](_0x2bd0ad[0x0]-_0x510a6b[0x0])>=_0xd66089)continue;this['canvasContext']['moveTo'](_0x2bd0ad[0x0],_0x2bd0ad[0x1]),this[_0x214fac(0x232)][_0x214fac(0x1d7)](_0x510a6b[0x0],_0x510a6b[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x5b4a7d,_0x1ce4df,_0x2cfed5){const _0x39c4ec=_0x5abd34,_0x59344c=Cesium[_0x39c4ec(0x201)]['fromDegrees'](_0x5b4a7d,_0x1ce4df,this['fixedHeight']),_0x405e3a=this[_0x39c4ec(0x22e)]['scene'];if(_0x405e3a['mode']===Cesium['SceneMode']['SCENE3D']){const _0x100684=new Cesium['EllipsoidalOccluder'](_0x405e3a['globe'][_0x39c4ec(0x243)],_0x405e3a['camera']['positionWC']),_0x4b542f=_0x100684['isPointVisible'](_0x59344c);if(!_0x4b542f)return _0x2cfed5['age']=0x0,null;}const _0x500d60=Cesium[_0x39c4ec(0x1eb)]['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x59344c);return _0x500d60?[_0x500d60['x'],_0x500d60['y']]:null;}[_0x5abd34(0x214)](){const _0x1f0986=_0x5abd34;this['windField'][_0x1f0986(0x214)](),delete this[_0x1f0986(0x286)];}[_0x5abd34(0x28d)](){const _0x373e0e=_0x5abd34;this['worker']=new Worker(this['options']['worker']),this['worker']['onmessage']=_0x18adf8=>{const _0x107365=_0x411b;this[_0x107365(0x207)](_0x18adf8['data']['particles']),this['_updateIng2']=![];},this['windField']={'init':_0x5b90bc=>{const _0x2529e1=_0x411b;this[_0x2529e1(0x24c)][_0x2529e1(0x1e9)]({'type':'init','options':_0x5b90bc});},'setOptions':_0x4bd8bd=>{this['worker']['postMessage']({'type':'setOptions','options':_0x4bd8bd});},'setDate':_0x19ad11=>{const _0x584c07=_0x411b;this['worker']['postMessage']({'type':_0x584c07(0x21c),'data':_0x19ad11});},'update':()=>{const _0xa3f5c3=_0x411b;if(this['_updateIng2'])return;this['_updateIng2']=!![],this['worker'][_0xa3f5c3(0x1e9)]({'type':_0xa3f5c3(0x1bf)});},'clear':()=>{this['worker']['postMessage']({'type':'clear'});}},this['windField']['init'](this[_0x373e0e(0x20f)]);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace[_0x5abd34(0x27f)]=CanvasWindField,mars3d__namespace[_0x5abd34(0x1fd)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x5abd34(0x1fd)]=WindUtil,Object['defineProperty'](exports,_0x5abd34(0x28e),{'value':!![]});
15
15
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.6.14",
3
+ "version": "3.6.16",
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.6.14"
11
+ "mars3d": "~3.6.16"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"