mars3d-wind 3.5.17 → 3.5.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
3
3
  *
4
- * 版本信息:v3.5.17
5
- * 编译日期:2023-07-24 22:20:49
4
+ * 版本信息:v3.5.18
5
+ * 编译日期:2023-07-31 17:54:06
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 _0x3a9b9d=_0x45fc;(function(_0x6d9316,_0x280b30){const _0x39a9ba=_0x45fc,_0x4d4a02=_0x6d9316();while(!![]){try{const _0x12c288=-parseInt(_0x39a9ba(0x1e2))/0x1+-parseInt(_0x39a9ba(0x1f2))/0x2*(-parseInt(_0x39a9ba(0x27f))/0x3)+parseInt(_0x39a9ba(0x236))/0x4*(parseInt(_0x39a9ba(0x232))/0x5)+-parseInt(_0x39a9ba(0x29e))/0x6+-parseInt(_0x39a9ba(0x269))/0x7+parseInt(_0x39a9ba(0x1ff))/0x8+-parseInt(_0x39a9ba(0x28d))/0x9;if(_0x12c288===_0x280b30)break;else _0x4d4a02['push'](_0x4d4a02['shift']());}catch(_0x384866){_0x4d4a02['push'](_0x4d4a02['shift']());}}}(_0x1b8c,0x40bef));function _interopNamespace(_0x5bc815){const _0x5244c4=_0x45fc;if(_0x5bc815&&_0x5bc815[_0x5244c4(0x2aa)])return _0x5bc815;var _0x327fbd=Object['create'](null);return _0x5bc815&&Object[_0x5244c4(0x26f)](_0x5bc815)['forEach'](function(_0x935254){const _0x31d491=_0x5244c4;if(_0x935254!==_0x31d491(0x23e)){var _0x26942e=Object['getOwnPropertyDescriptor'](_0x5bc815,_0x935254);Object['defineProperty'](_0x327fbd,_0x935254,_0x26942e['get']?_0x26942e:{'enumerable':!![],'get':function(){return _0x5bc815[_0x935254];}});}}),_0x327fbd['default']=_0x5bc815,_0x327fbd;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x4d6b5e,_0x1b9254){const _0xd1b130=_0x45fc,_0x3d2376=_0x4d6b5e*Math[_0xd1b130(0x1e6)](Cesium$7['Math'][_0xd1b130(0x243)](_0x1b9254));return _0x3d2376;}function getV(_0x121930,_0x1e965c){const _0x5001b2=_0x45fc,_0x414ae4=_0x121930*Math[_0x5001b2(0x250)](Cesium$7['Math']['toRadians'](_0x1e965c));return _0x414ae4;}function getSpeed(_0x3529a6,_0x5397a3){const _0x575cff=_0x45fc,_0x510134=Math['sqrt'](Math[_0x575cff(0x27d)](_0x3529a6,0x2)+Math['pow'](_0x5397a3,0x2));return _0x510134;}function _0x45fc(_0x3b249a,_0x222aea){const _0x1b8c37=_0x1b8c();return _0x45fc=function(_0x45fc36,_0x1fc749){_0x45fc36=_0x45fc36-0x1df;let _0x5d4886=_0x1b8c37[_0x45fc36];return _0x5d4886;},_0x45fc(_0x3b249a,_0x222aea);}function getDirection(_0x268e54,_0xf38bff){const _0x27cc9f=_0x45fc;let _0x7a8eb9=Cesium$7['Math']['toDegrees'](Math[_0x27cc9f(0x1e8)](_0xf38bff,_0x268e54));return _0x7a8eb9+=_0x7a8eb9<0x0?0x168:0x0,_0x7a8eb9;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x241f61){const _0x2f0089=_0x45fc;this[_0x2f0089(0x2bf)]=_0x241f61['commandType'],this['geometry']=_0x241f61['geometry'],this[_0x2f0089(0x1f6)]=_0x241f61[_0x2f0089(0x1f6)],this[_0x2f0089(0x23f)]=_0x241f61['primitiveType'],this[_0x2f0089(0x2a5)]=_0x241f61['uniformMap'],this['vertexShaderSource']=_0x241f61[_0x2f0089(0x28e)],this[_0x2f0089(0x213)]=_0x241f61[_0x2f0089(0x213)],this['rawRenderState']=_0x241f61[_0x2f0089(0x257)],this['framebuffer']=_0x241f61['framebuffer'],this[_0x2f0089(0x1f1)]=_0x241f61['outputTexture'],this['autoClear']=_0x241f61['autoClear']??![],this['preExecute']=_0x241f61['preExecute'],this['show']=!![],this[_0x2f0089(0x271)]=undefined,this[_0x2f0089(0x2a9)]=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6[(_0x2f0089(0x29a))]({'color':new Cesium$6[(_0x2f0089(0x2a4))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x2f0089(0x1fb)]['OPAQUE']}));}[_0x3a9b9d(0x23d)](_0x39c1af){const _0x161de3=_0x3a9b9d;switch(this['commandType']){case _0x161de3(0x274):{const _0x240d26=Cesium$6['VertexArray'][_0x161de3(0x201)]({'context':_0x39c1af,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x37c3a0=Cesium$6['ShaderProgram']['fromCache']({'context':_0x39c1af,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x406072=Cesium$6['RenderState']['fromCache'](this[_0x161de3(0x257)]);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x37c3a0,'vertexArray':_0x240d26,'modelMatrix':Cesium$6[_0x161de3(0x29f)]['IDENTITY'],'renderState':_0x406072,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x161de3(0x1fb)][_0x161de3(0x298)],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6[(_0x161de3(0x279))]({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this['outputTexture'],'persists':!![]});}}}['setGeometry'](_0x554175,_0x40c265){const _0x56c973=_0x3a9b9d;this[_0x56c973(0x21c)]=_0x40c265;const _0x70b510=Cesium$6['VertexArray']['fromGeometry']({'context':_0x554175,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x70b510;}['update'](_0x4fc6fd){const _0x12cb6c=_0x3a9b9d;if(!this['show'])return;if(_0x4fc6fd[_0x12cb6c(0x24f)]!==Cesium$6['SceneMode'][_0x12cb6c(0x229)])return;!Cesium$6['defined'](this[_0x12cb6c(0x271)])&&(this[_0x12cb6c(0x271)]=this['createCommand'](_0x4fc6fd['context'])),Cesium$6[_0x12cb6c(0x231)](this[_0x12cb6c(0x2b4)])&&this[_0x12cb6c(0x2b4)](),Cesium$6[_0x12cb6c(0x231)](this['clearCommand'])&&_0x4fc6fd[_0x12cb6c(0x28b)]['push'](this[_0x12cb6c(0x2a9)]),_0x4fc6fd['commandList']['push'](this['commandToExecute']);}[_0x3a9b9d(0x1e1)](){return![];}['destroy'](){const _0xb52009=_0x3a9b9d;if(this['clearCommand']){var _0x1477d0,_0x4aba2e;(_0x1477d0=this['clearCommand'])!==null&&_0x1477d0!==void 0x0&&_0x1477d0['vertexArray']&&this['clearCommand']['vertexArray'][_0xb52009(0x247)](),(_0x4aba2e=this['clearCommand'])!==null&&_0x4aba2e!==void 0x0&&_0x4aba2e[_0xb52009(0x290)]&&this[_0xb52009(0x2a9)][_0xb52009(0x290)]['destroy'](),delete this[_0xb52009(0x2a9)];}return this[_0xb52009(0x271)]&&(this[_0xb52009(0x271)]['vertexArray']&&this[_0xb52009(0x271)]['vertexArray']['destroy'](),this['commandToExecute']['shaderProgram']&&this['commandToExecute']['shaderProgram'][_0xb52009(0x247)](),delete this['commandToExecute']),Cesium$6[_0xb52009(0x2ad)](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x317635=function(){const _0x472b76=_0x45fc,_0x584d8f=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5[(_0x472b76(0x2b1))]({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5[_0x472b76(0x26e)]['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x584d8f;},_0x4674f1=function(_0x4e3290,_0xd96411){if(Cesium$5['defined'](_0xd96411)){const _0x1a211a={};_0x1a211a['arrayBufferView']=_0xd96411,_0x4e3290['source']=_0x1a211a;}const _0x1495f0=new Cesium$5['Texture'](_0x4e3290);return _0x1495f0;},_0x3772aa=function(_0x3f3c97,_0x45253a,_0x2f4557){const _0x195bf2=_0x45fc,_0x391bef=new Cesium$5[(_0x195bf2(0x287))]({'context':_0x3f3c97,'colorTextures':[_0x45253a],'depthTexture':_0x2f4557});return _0x391bef;},_0x5cde68=function(_0x58dc4a){const _0x5b42f5=_0x45fc,_0x5e74c2=!![],_0x23af0b=![],_0x291c72={'viewport':_0x58dc4a[_0x5b42f5(0x28a)],'depthTest':_0x58dc4a['depthTest'],'depthMask':_0x58dc4a[_0x5b42f5(0x221)],'blending':_0x58dc4a['blending']},_0x6dcc5=Cesium$5['Appearance']['getDefaultRenderState'](_0x5e74c2,_0x23af0b,_0x291c72);return _0x6dcc5;},_0x2cda77=function(_0x241a20){const _0x51f47d=_0x45fc,_0x7bc59c={},_0x4539ca=Cesium$5['Math']['mod'](_0x241a20[_0x51f47d(0x220)],Cesium$5['Math'][_0x51f47d(0x2ce)]),_0x2e0b8c=Cesium$5['Math']['mod'](_0x241a20['east'],Cesium$5['Math']['TWO_PI']),_0x330f15=_0x241a20['width'];let _0x373b42,_0x13e7a4;_0x330f15>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x373b42=0x0,_0x13e7a4=Cesium$5[_0x51f47d(0x24d)]['TWO_PI']):_0x2e0b8c-_0x4539ca<_0x330f15?(_0x373b42=_0x4539ca,_0x13e7a4=_0x4539ca+_0x330f15):(_0x373b42=_0x4539ca,_0x13e7a4=_0x2e0b8c);_0x7bc59c['lon']={'min':Cesium$5['Math']['toDegrees'](_0x373b42),'max':Cesium$5['Math'][_0x51f47d(0x2c2)](_0x13e7a4)};const _0x58448e=_0x241a20['south'],_0x3e3486=_0x241a20['north'],_0xea09a=_0x241a20['height'],_0x37949a=_0xea09a>Cesium$5['Math']['PI']/0xc?_0xea09a/0x2:0x0;let _0x1e9a12=Cesium$5[_0x51f47d(0x24d)][_0x51f47d(0x234)](_0x58448e-_0x37949a),_0x5aa7cd=Cesium$5[_0x51f47d(0x24d)]['clampToLatitudeRange'](_0x3e3486+_0x37949a);return _0x1e9a12<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x1e9a12=-Cesium$5[_0x51f47d(0x24d)][_0x51f47d(0x26b)]),_0x5aa7cd>Cesium$5['Math']['PI_OVER_THREE']&&(_0x5aa7cd=Cesium$5[_0x51f47d(0x24d)][_0x51f47d(0x26b)]),_0x7bc59c['lat']={'min':Cesium$5['Math'][_0x51f47d(0x2c2)](_0x1e9a12),'max':Cesium$5['Math']['toDegrees'](_0x5aa7cd)},_0x7bc59c;};return{'getFullscreenQuad':_0x317635,'createTexture':_0x4674f1,'createFramebuffer':_0x3772aa,'createRawRenderState':_0x5cde68,'viewRectangleToLonLatRange':_0x2cda77};}());var segmentDraw_vert='in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert='in\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0a}\x0a',trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag=_0x3a9b9d(0x1f9);const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x2c82c8,_0x3bdd1d,_0xbb259c,_0x4e9254,_0x3a36d1){const _0x595ce3=_0x3a9b9d;this['createRenderingTextures'](_0x2c82c8,_0x3bdd1d,_0xbb259c[_0x595ce3(0x245)]),this['createRenderingFramebuffers'](_0x2c82c8),this[_0x595ce3(0x24c)](_0x2c82c8,_0xbb259c,_0x4e9254,_0x3a36d1);}['createRenderingTextures'](_0x283943,_0x41e7cc,_0x411162){const _0x306c1c=_0x3a9b9d,_0x5cfb86={'context':_0x283943,'width':_0x283943['drawingBufferWidth'],'height':_0x283943['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x306c1c(0x255)]['RGBA'],'pixelDatatype':Cesium$4[_0x306c1c(0x224)][_0x306c1c(0x2c8)]},_0x2c5ba7={'context':_0x283943,'width':_0x283943['drawingBufferWidth'],'height':_0x283943['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x44748f=_0x411162['length'],_0x862686=new Float32Array(_0x44748f*0x3);for(let _0x50ecd3=0x0;_0x50ecd3<_0x44748f;_0x50ecd3++){const _0x2be906=Cesium$4['Color'][_0x306c1c(0x217)](_0x411162[_0x50ecd3]);_0x862686[0x3*_0x50ecd3]=_0x2be906['red'],_0x862686[0x3*_0x50ecd3+0x1]=_0x2be906['green'],_0x862686[0x3*_0x50ecd3+0x2]=_0x2be906[_0x306c1c(0x2bd)];}const _0x4120df={'context':_0x283943,'width':_0x44748f,'height':0x1,'pixelFormat':Cesium$4[_0x306c1c(0x255)]['RGB'],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4[(_0x306c1c(0x270))]({'minificationFilter':Cesium$4['TextureMinificationFilter'][_0x306c1c(0x1eb)],'magnificationFilter':Cesium$4[_0x306c1c(0x2c6)]['LINEAR']})};this['textures']={'segmentsColor':Util[_0x306c1c(0x20f)](_0x5cfb86),'segmentsDepth':Util['createTexture'](_0x2c5ba7),'currentTrailsColor':Util[_0x306c1c(0x20f)](_0x5cfb86),'currentTrailsDepth':Util[_0x306c1c(0x20f)](_0x2c5ba7),'nextTrailsColor':Util[_0x306c1c(0x20f)](_0x5cfb86),'nextTrailsDepth':Util['createTexture'](_0x2c5ba7),'colorTable':Util[_0x306c1c(0x20f)](_0x4120df,_0x862686)};}['createRenderingFramebuffers'](_0x581bf5){const _0x592ac4=_0x3a9b9d;this['framebuffers']={'segments':Util['createFramebuffer'](_0x581bf5,this['textures']['segmentsColor'],this['textures'][_0x592ac4(0x266)]),'currentTrails':Util['createFramebuffer'](_0x581bf5,this['textures'][_0x592ac4(0x25b)],this['textures']['currentTrailsDepth']),'nextTrails':Util[_0x592ac4(0x1fc)](_0x581bf5,this['textures']['nextTrailsColor'],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x15447e){const _0x20342d=_0x3a9b9d,_0x5ae88e=0x4;let _0x515f02=[];for(let _0x2fc10b=0x0;_0x2fc10b<_0x15447e[_0x20342d(0x286)];_0x2fc10b++){for(let _0x5a2142=0x0;_0x5a2142<_0x15447e[_0x20342d(0x286)];_0x5a2142++){for(let _0x59d31f=0x0;_0x59d31f<_0x5ae88e;_0x59d31f++){_0x515f02[_0x20342d(0x1ea)](_0x2fc10b/_0x15447e['particlesTextureSize']),_0x515f02['push'](_0x5a2142/_0x15447e['particlesTextureSize']);}}}_0x515f02=new Float32Array(_0x515f02);let _0xb6512a=[];const _0xdfdb0c=[-0x1,0x1],_0x3ca635=[-0x1,0x1];for(let _0x25e3c5=0x0;_0x25e3c5<_0x15447e['maxParticles'];_0x25e3c5++){for(let _0x3459ea=0x0;_0x3459ea<_0x5ae88e/0x2;_0x3459ea++){for(let _0x463b80=0x0;_0x463b80<_0x5ae88e/0x2;_0x463b80++){_0xb6512a['push'](_0xdfdb0c[_0x3459ea]),_0xb6512a['push'](_0x3ca635[_0x463b80]),_0xb6512a['push'](0x0);}}}_0xb6512a=new Float32Array(_0xb6512a);const _0x288937=0x6*_0x15447e[_0x20342d(0x251)],_0x393578=new Uint32Array(_0x288937);for(let _0x4175d1=0x0,_0x8256f5=0x0,_0x466098=0x0;_0x4175d1<_0x15447e['maxParticles'];_0x4175d1++){_0x393578[_0x8256f5++]=_0x466098+0x0,_0x393578[_0x8256f5++]=_0x466098+0x1,_0x393578[_0x8256f5++]=_0x466098+0x2,_0x393578[_0x8256f5++]=_0x466098+0x2,_0x393578[_0x8256f5++]=_0x466098+0x1,_0x393578[_0x8256f5++]=_0x466098+0x3,_0x466098+=0x4;}const _0x2b672f=new Cesium$4['Geometry']({'attributes':new Cesium$4[(_0x20342d(0x272))]({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype'][_0x20342d(0x282)],'componentsPerAttribute':0x2,'values':_0x515f02}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype'][_0x20342d(0x282)],'componentsPerAttribute':0x3,'values':_0xb6512a})}),'indices':_0x393578});return _0x2b672f;}[_0x3a9b9d(0x24c)](_0x2e0b01,_0xa45a70,_0x32e614,_0x45878e){const _0x514842=_0x3a9b9d,_0x2a97a4=this;this[_0x514842(0x27a)]={'segments':new CustomPrimitive({'commandType':_0x514842(0x274),'attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x514842(0x233)](_0xa45a70),'primitiveType':Cesium$4['PrimitiveType'][_0x514842(0x276)],'uniformMap':{'currentParticlesPosition':function(){const _0x5c414d=_0x514842;return _0x45878e[_0x5c414d(0x203)]['currentParticlesPosition'];},'postProcessingPosition':function(){const _0x130f9f=_0x514842;return _0x45878e['particlesTextures'][_0x130f9f(0x2a2)];},'postProcessingSpeed':function(){const _0xf7b50f=_0x514842;return _0x45878e[_0xf7b50f(0x203)][_0xf7b50f(0x210)];},'colorTable':function(){const _0x37ce28=_0x514842;return _0x2a97a4['textures'][_0x37ce28(0x1fa)];},'aspect':function(){return _0x2e0b01['drawingBufferWidth']/_0x2e0b01['drawingBufferHeight'];},'pixelSize':function(){return _0x32e614['pixelSize'];},'lineWidth':function(){const _0x497c71=_0x514842;return _0xa45a70[_0x497c71(0x2a0)];},'particleHeight':function(){return _0xa45a70['particleHeight'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4[(_0x514842(0x1ed))]({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x514842(0x248)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0x514842(0x219)](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){const _0xd44d64=_0x514842;return _0x2a97a4[_0xd44d64(0x2bc)]['segmentsColor'];},'segmentsDepthTexture':function(){const _0x1dad68=_0x514842;return _0x2a97a4['textures'][_0x1dad68(0x266)];},'currentTrailsColor':function(){const _0x497714=_0x514842;return _0x2a97a4['framebuffers'][_0x497714(0x230)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x2a97a4['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0xa45a70['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x1eba6e=_0x514842,_0x40a924=_0x2a97a4[_0x1eba6e(0x296)]['currentTrails'];_0x2a97a4['framebuffers']['currentTrails']=_0x2a97a4[_0x1eba6e(0x296)][_0x1eba6e(0x223)],_0x2a97a4['framebuffers']['nextTrails']=_0x40a924,_0x2a97a4[_0x1eba6e(0x27a)]['trails']['commandToExecute']['framebuffer']=_0x2a97a4['framebuffers'][_0x1eba6e(0x223)],_0x2a97a4['primitives']['trails'][_0x1eba6e(0x2a9)]['framebuffer']=_0x2a97a4['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){return _0x2a97a4['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x2a97a4['framebuffers']['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag=_0x3a9b9d(0x263),updateSpeed_frag=_0x3a9b9d(0x295),updatePosition_frag=_0x3a9b9d(0x2c1),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(_0x54dec9,_0x27c976,_0x3343de,_0x142399){const _0x49bbc0=_0x3a9b9d;this['data']=_0x27c976,this[_0x49bbc0(0x218)](_0x54dec9,_0x27c976),this['createParticlesTextures'](_0x54dec9,_0x3343de,_0x142399),this[_0x49bbc0(0x297)](_0x27c976,_0x3343de,_0x142399);}['createWindTextures'](_0x5568ed,_0x379170){const _0x16f9a9=_0x3a9b9d,_0x4e597b={'context':_0x5568ed,'width':_0x379170['dimensions']['lon'],'height':_0x379170['dimensions'][_0x16f9a9(0x22b)]*(_0x379170['dimensions'][_0x16f9a9(0x285)]||0x1),'pixelFormat':Cesium$3['PixelFormat'][_0x16f9a9(0x22f)],'pixelDatatype':Cesium$3['PixelDatatype'][_0x16f9a9(0x282)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x16f9a9(0x281)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this[_0x16f9a9(0x21f)]={'U':Util[_0x16f9a9(0x20f)](_0x4e597b,_0x379170['U'][_0x16f9a9(0x1e4)]),'V':Util['createTexture'](_0x4e597b,_0x379170['V'][_0x16f9a9(0x1e4)])};}[_0x3a9b9d(0x2bb)](_0x212d73,_0x2a703c,_0x21d780){const _0x19a55a=_0x3a9b9d,_0x204d54={'context':_0x212d73,'width':_0x2a703c['particlesTextureSize'],'height':_0x2a703c[_0x19a55a(0x286)],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x19a55a(0x270))]({'minificationFilter':Cesium$3[_0x19a55a(0x278)]['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x549c53=this[_0x19a55a(0x246)](_0x2a703c[_0x19a55a(0x251)],_0x21d780),_0x19e293=new Float32Array(0x4*_0x2a703c['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util[_0x19a55a(0x20f)](_0x204d54),'currentParticlesPosition':Util['createTexture'](_0x204d54,_0x549c53),'nextParticlesPosition':Util['createTexture'](_0x204d54,_0x549c53),'currentParticlesSpeed':Util['createTexture'](_0x204d54,_0x19e293),'nextParticlesSpeed':Util['createTexture'](_0x204d54,_0x19e293),'postProcessingPosition':Util['createTexture'](_0x204d54,_0x549c53),'postProcessingSpeed':Util[_0x19a55a(0x20f)](_0x204d54,_0x19e293)};}['randomizeParticles'](_0x1a5e2e,_0x2207cb){const _0x2b0a25=_0x3a9b9d,_0x11cf8c=new Float32Array(0x4*_0x1a5e2e);for(let _0x1bb471=0x0;_0x1bb471<_0x1a5e2e;_0x1bb471++){_0x11cf8c[0x4*_0x1bb471]=Cesium$3['Math']['randomBetween'](_0x2207cb['lonRange']['x'],_0x2207cb['lonRange']['y']),_0x11cf8c[0x4*_0x1bb471+0x1]=Cesium$3['Math']['randomBetween'](_0x2207cb['latRange']['x'],_0x2207cb['latRange']['y']),_0x11cf8c[0x4*_0x1bb471+0x2]=Cesium$3['Math']['randomBetween'](this[_0x2b0a25(0x262)]['lev'][_0x2b0a25(0x2b7)],this['data']['lev']['max']),_0x11cf8c[0x4*_0x1bb471+0x3]=0x0;}return _0x11cf8c;}[_0x3a9b9d(0x26c)](){const _0x10e2d7=_0x3a9b9d;Object['keys'](this['particlesTextures'])[_0x10e2d7(0x2cd)](_0xf5afd3=>{const _0x11d30f=_0x10e2d7;this[_0x11d30f(0x203)][_0xf5afd3]['destroy']();});}[_0x3a9b9d(0x297)](_0x237e39,_0x2d2740,_0x4fa77d){const _0x17dcf6=_0x3a9b9d,_0x37ea2a=new Cesium$3['Cartesian3'](_0x237e39['dimensions'][_0x17dcf6(0x253)],_0x237e39['dimensions']['lat'],_0x237e39['dimensions']['lev']),_0x27961a=new Cesium$3[(_0x17dcf6(0x235))](_0x237e39['lon'][_0x17dcf6(0x2b7)],_0x237e39['lat'][_0x17dcf6(0x2b7)],_0x237e39['lev']['min']),_0x195832=new Cesium$3['Cartesian3'](_0x237e39[_0x17dcf6(0x253)]['max'],_0x237e39[_0x17dcf6(0x22b)]['max'],_0x237e39['lev']['max']),_0x1f3552=new Cesium$3[(_0x17dcf6(0x235))]((_0x195832['x']-_0x27961a['x'])/(_0x37ea2a['x']-0x1),(_0x195832['y']-_0x27961a['y'])/(_0x37ea2a['y']-0x1),_0x37ea2a['z']>0x1?(_0x195832['z']-_0x27961a['z'])/(_0x37ea2a['z']-0x1):0x1),_0x54cc99=new Cesium$3['Cartesian2'](_0x237e39['U'][_0x17dcf6(0x2b7)],_0x237e39['U'][_0x17dcf6(0x207)]),_0x15b1d4=new Cesium$3['Cartesian2'](_0x237e39['V'][_0x17dcf6(0x2b7)],_0x237e39['V']['max']),_0x4adaed=this;this[_0x17dcf6(0x27a)]={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x4adaed['windTextures']['U'];},'V':function(){return _0x4adaed['windTextures']['V'];},'currentParticlesPosition':function(){return _0x4adaed['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x37ea2a;},'minimum':function(){return _0x27961a;},'maximum':function(){return _0x195832;},'interval':function(){return _0x1f3552;}},'fragmentShaderSource':new Cesium$3[(_0x17dcf6(0x1ed))]({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x55c244=_0x17dcf6;_0x4adaed['primitives']['getWind'][_0x55c244(0x271)]['outputTexture']=_0x4adaed[_0x55c244(0x203)]['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){const _0x43ed4a=_0x17dcf6;return _0x4adaed['particlesTextures'][_0x43ed4a(0x29c)];},'particlesWind':function(){return _0x4adaed['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x54cc99;},'vSpeedRange':function(){return _0x15b1d4;},'pixelSize':function(){const _0x520ff1=_0x17dcf6;return _0x4fa77d[_0x520ff1(0x20a)];},'speedFactor':function(){return _0x2d2740['speedFactor'];}},'fragmentShaderSource':new Cesium$3[(_0x17dcf6(0x1ed))]({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function(){const _0x4d68c9=_0x17dcf6,_0x13c9ff=_0x4adaed[_0x4d68c9(0x203)][_0x4d68c9(0x29c)];_0x4adaed['particlesTextures']['currentParticlesSpeed']=_0x4adaed['particlesTextures']['postProcessingSpeed'],_0x4adaed[_0x4d68c9(0x203)]['postProcessingSpeed']=_0x13c9ff,_0x4adaed['primitives']['updateSpeed']['commandToExecute'][_0x4d68c9(0x1f1)]=_0x4adaed[_0x4d68c9(0x203)][_0x4d68c9(0x23a)];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){return _0x4adaed['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function(){const _0x464231=_0x17dcf6;return _0x4adaed[_0x464231(0x203)][_0x464231(0x29c)];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function(){const _0x3ccca9=_0x17dcf6,_0x3c1ee6=_0x4adaed[_0x3ccca9(0x203)][_0x3ccca9(0x2c9)];_0x4adaed['particlesTextures']['currentParticlesPosition']=_0x4adaed['particlesTextures']['postProcessingPosition'],_0x4adaed['particlesTextures']['postProcessingPosition']=_0x3c1ee6,_0x4adaed['primitives']['updatePosition']['commandToExecute']['outputTexture']=_0x4adaed['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){const _0x5d3106=_0x17dcf6;return _0x4adaed[_0x5d3106(0x203)]['nextParticlesPosition'];},'nextParticlesSpeed':function(){return _0x4adaed['particlesTextures']['nextParticlesSpeed'];},'lonRange':function(){return _0x4fa77d['lonRange'];},'latRange':function(){return _0x4fa77d['latRange'];},'randomCoefficient':function(){const _0x230277=_0x17dcf6,_0x29ef81=Math[_0x230277(0x277)]();return _0x29ef81;},'dropRate':function(){const _0x1e4685=_0x17dcf6;return _0x2d2740[_0x1e4685(0x1e5)];},'dropRateBump':function(){return _0x2d2740['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures'][_0x17dcf6(0x2a2)],'preExecute':function(){const _0x345c51=_0x17dcf6;_0x4adaed['primitives']['postProcessingPosition'][_0x345c51(0x271)]['outputTexture']=_0x4adaed[_0x345c51(0x203)]['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x3592e0=_0x17dcf6;return _0x4adaed['particlesTextures'][_0x3592e0(0x2a2)];},'nextParticlesSpeed':function(){return _0x4adaed['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){const _0x4a9482=_0x17dcf6;_0x4adaed[_0x4a9482(0x27a)][_0x4a9482(0x210)][_0x4a9482(0x271)]['outputTexture']=_0x4adaed['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace[_0x3a9b9d(0x2b0)];class ParticleSystem{constructor(_0x220b8c,_0xff2c8a,_0x387244,_0xd22eb1){const _0x12e7ed=_0x3a9b9d;this['context']=_0x220b8c,_0xff2c8a={..._0xff2c8a},_0xff2c8a[_0x12e7ed(0x20b)]&&_0xff2c8a['vdata']&&(_0xff2c8a['dimensions']={},_0xff2c8a['dimensions']['lon']=_0xff2c8a['cols'],_0xff2c8a['dimensions'][_0x12e7ed(0x22b)]=_0xff2c8a[_0x12e7ed(0x27c)],_0xff2c8a['dimensions']['lev']=_0xff2c8a['lev']||0x1,_0xff2c8a[_0x12e7ed(0x253)]={},_0xff2c8a['lon'][_0x12e7ed(0x2b7)]=_0xff2c8a['xmin'],_0xff2c8a['lon']['max']=_0xff2c8a['xmax'],_0xff2c8a['lat']={},_0xff2c8a['lat'][_0x12e7ed(0x2b7)]=_0xff2c8a['ymin'],_0xff2c8a['lat']['max']=_0xff2c8a[_0x12e7ed(0x227)],_0xff2c8a[_0x12e7ed(0x285)]={},_0xff2c8a['lev']['min']=_0xff2c8a['levmin']??0x1,_0xff2c8a['lev'][_0x12e7ed(0x207)]=_0xff2c8a['levmax']??0x1,_0xff2c8a['U']={},_0xff2c8a['U']['array']=new Float32Array(_0xff2c8a['udata']),_0xff2c8a['U'][_0x12e7ed(0x2b7)]=_0xff2c8a[_0x12e7ed(0x294)]??Math['min'](..._0xff2c8a[_0x12e7ed(0x20b)]),_0xff2c8a['U']['max']=_0xff2c8a['umax']??Math['max'](..._0xff2c8a['udata']),_0xff2c8a['V']={},_0xff2c8a['V'][_0x12e7ed(0x1e4)]=new Float32Array(_0xff2c8a[_0x12e7ed(0x283)]),_0xff2c8a['V'][_0x12e7ed(0x2b7)]=_0xff2c8a['vmin']??Math[_0x12e7ed(0x2b7)](..._0xff2c8a['vdata']),_0xff2c8a['V']['max']=_0xff2c8a[_0x12e7ed(0x280)]??Math[_0x12e7ed(0x207)](..._0xff2c8a['vdata'])),this['data']=_0xff2c8a,this['options']=_0x387244,this['viewerParameters']=_0xd22eb1,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this[_0x12e7ed(0x225)],this['data'],this['options'],this[_0x12e7ed(0x25f)],this['particlesComputing']);}['canvasResize'](_0x346b4a){const _0x3fa414=_0x3a9b9d;this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])[_0x3fa414(0x2cd)](_0x8c57a9=>{this['particlesComputing']['windTextures'][_0x8c57a9]['destroy']();}),this[_0x3fa414(0x2b6)]['textures']['colorTable']['destroy'](),Object['keys'](this[_0x3fa414(0x2b6)]['framebuffers'])['forEach'](_0x224e8d=>{const _0xf0902=_0x3fa414;this[_0xf0902(0x2b6)][_0xf0902(0x296)][_0x224e8d]['destroy']();}),this['context']=_0x346b4a,this['particlesComputing']=new ParticlesComputing(this[_0x3fa414(0x225)],this[_0x3fa414(0x262)],this['options'],this[_0x3fa414(0x25f)]),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0x5c957d=_0x3a9b9d,_0x59a812=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass'][_0x5c957d(0x298)]});Object['keys'](this['particlesRendering']['framebuffers'])[_0x5c957d(0x2cd)](_0x244f02=>{const _0x369766=_0x5c957d;_0x59a812['framebuffer']=this['particlesRendering']['framebuffers'][_0x244f02],_0x59a812[_0x369766(0x25d)](this['context']);});}['refreshParticles'](_0x3f87ee){const _0x244465=_0x3a9b9d;this['clearFramebuffers'](),this[_0x244465(0x289)][_0x244465(0x26c)](),this['particlesComputing']['createParticlesTextures'](this['context'],this['options'],this[_0x244465(0x25f)]);if(_0x3f87ee){const _0x877c2c=this[_0x244465(0x2b6)][_0x244465(0x233)](this[_0x244465(0x1f7)]);this['particlesRendering'][_0x244465(0x27a)]['segments']['geometry']=_0x877c2c;const _0x29f59f=Cesium$2['VertexArray']['fromGeometry']({'context':this['context'],'geometry':_0x877c2c,'attributeLocations':this['particlesRendering']['primitives']['segments']['attributeLocations'],'bufferUsage':Cesium$2[_0x244465(0x27e)]['STATIC_DRAW']});this[_0x244465(0x2b6)][_0x244465(0x27a)]['segments']['commandToExecute']['vertexArray']=_0x29f59f;}}[_0x3a9b9d(0x2b5)](_0xc94127){let _0x2feacf=![];this['options']['maxParticles']!==_0xc94127['maxParticles']&&(_0x2feacf=!![]),Object['keys'](_0xc94127)['forEach'](_0xaef8ab=>{this['options'][_0xaef8ab]=_0xc94127[_0xaef8ab];}),this['refreshParticles'](_0x2feacf);}['applyViewerParameters'](_0x4dee56){const _0xe9e7e7=_0x3a9b9d;Object['keys'](_0x4dee56)[_0xe9e7e7(0x2cd)](_0x10bd3e=>{const _0xcafdb5=_0xe9e7e7;this[_0xcafdb5(0x25f)][_0x10bd3e]=_0x4dee56[_0x10bd3e];}),this['refreshParticles'](![]);}['destroy'](){const _0x2e01cf=_0x3a9b9d;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x25ac13=>{this['particlesComputing']['windTextures'][_0x25ac13]['destroy']();}),this['particlesRendering']['textures'][_0x2e01cf(0x1fa)]['destroy'](),Object['keys'](this[_0x2e01cf(0x2b6)][_0x2e01cf(0x296)])[_0x2e01cf(0x2cd)](_0xdb1d50=>{const _0x1fb496=_0x2e01cf;this[_0x1fb496(0x2b6)][_0x1fb496(0x296)][_0xdb1d50][_0x1fb496(0x247)]();});for(const _0x4ac35f in this){delete this[_0x4ac35f];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer'][_0x3a9b9d(0x293)],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':[_0x3a9b9d(0x21d)]};class WindLayer extends BaseLayer$1{constructor(_0x1aba12={}){const _0x9f5e5d=_0x3a9b9d;_0x1aba12={...DEF_OPTIONS,..._0x1aba12},super(_0x1aba12),this[_0x9f5e5d(0x25c)](_0x1aba12);}get[_0x3a9b9d(0x24b)](){return this['primitives'];}get['data'](){const _0xe5c112=_0x3a9b9d;return this[_0xe5c112(0x25a)];}set['data'](_0x4e7a09){this['setData'](_0x4e7a09);}get['colors'](){const _0x45aa2c=_0x3a9b9d;return this['options'][_0x45aa2c(0x245)];}set['colors'](_0x22545d){const _0x597e04=_0x3a9b9d;this['options'][_0x597e04(0x245)]=_0x22545d,this['particleSystem']&&this['particleSystem']['setOptions']({'colors':_0x22545d}),this[_0x597e04(0x256)]();}['_mountedHook'](){}[_0x3a9b9d(0x24a)](){const _0x3c6f59=_0x3a9b9d;this['scene']=this['_map'][_0x3c6f59(0x216)],this['camera']=this['_map']['camera'],this['primitives']=new Cesium$1[(_0x3c6f59(0x21a))](),this['_map'][_0x3c6f59(0x216)]['primitives']['add'](this['primitives']),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this[_0x3c6f59(0x22d)]=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this[_0x3c6f59(0x2c4)](),window['addEventListener']('resize',this[_0x3c6f59(0x256)]['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],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[_0x3c6f59(0x239)]['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x3c6f59(0x2cc)],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x3c6f59(0x2b2)](this[_0x3c6f59(0x25a)]);}[_0x3a9b9d(0x27b)](){const _0x139415=_0x3a9b9d;window[_0x139415(0x1e0)]('resize',this[_0x139415(0x256)]),this['_map'][_0x139415(0x1ee)](mars3d__namespace[_0x139415(0x239)]['preRender'],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x139415(0x28f)]['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this[_0x139415(0x2ae)],this),this[_0x139415(0x28f)]['off'](mars3d__namespace['EventType'][_0x139415(0x2cc)],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this['_map']['scene']['primitives']['remove'](this[_0x139415(0x27a)]);}['resize'](){const _0x27fc50=_0x3a9b9d;if(!this['show']||!this[_0x27fc50(0x284)])return;this['primitives']['show']=![],this['primitives']['removeAll'](),this[_0x27fc50(0x28f)][_0x27fc50(0x228)](mars3d__namespace['EventType']['preRender'],this[_0x27fc50(0x200)],this);}[_0x3a9b9d(0x200)](_0x18602f){const _0x512d3a=_0x3a9b9d;this['particleSystem'][_0x512d3a(0x268)](this[_0x512d3a(0x216)][_0x512d3a(0x225)]),this[_0x512d3a(0x1f5)](),this[_0x512d3a(0x27a)]['show']=!![];}['_onMapWhellEvent'](_0xb70e7b){const _0x4c46c0=_0x3a9b9d;clearTimeout(this[_0x4c46c0(0x240)]);if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this['refreshTimer']=setTimeout(()=>{const _0x4bc3c4=_0x4c46c0;if(!this['show'])return;this[_0x4bc3c4(0x209)]();},0xc8);}['_onMouseDownEvent'](_0xf7c481){this['mouse_down']=!![];}[_0x3a9b9d(0x205)](_0x18894c){const _0x4f63d5=_0x3a9b9d;if(!this['show']||!this['particleSystem'])return;this[_0x4f63d5(0x1fd)]&&(this[_0x4f63d5(0x27a)]['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x1be239){const _0x4e55a5=_0x3a9b9d;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this[_0x4e55a5(0x27a)][_0x4e55a5(0x267)]=!![],this['mouse_down']=![],this['mouse_move']=![];}['redraw'](){const _0x48d265=_0x3a9b9d;if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this['particleSystem']['applyViewerParameters'](this[_0x48d265(0x25f)]),this[_0x48d265(0x27a)]['show']=!![];}['setData'](_0x30ba14){const _0x4969b1=_0x3a9b9d;this['_data']=_0x30ba14,this['particleSystem']&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this['scene'][_0x4969b1(0x225)],_0x30ba14,this[_0x4969b1(0x2a1)](),this['viewerParameters']),this['addPrimitives']();}['_setOptionsHook'](_0x2b9dc8,_0x13ea67){const _0x181741=_0x3a9b9d;if(_0x2b9dc8)for(const _0x22be04 in _0x2b9dc8){this[_0x22be04]=_0x2b9dc8[_0x22be04];}this['particleSystem']&&this[_0x181741(0x284)]['setOptions'](this['getOptions']());}['getOptions'](){const _0x5610be=_0x3a9b9d,_0x334f0a=Math['ceil'](Math['sqrt'](this['particlesNumber']));return this['particlesNumber']=_0x334f0a*_0x334f0a,{'particlesTextureSize':_0x334f0a,'maxParticles':this[_0x5610be(0x22a)],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this['colors']};}['addPrimitives'](){const _0x453011=_0x3a9b9d;this[_0x453011(0x27a)][_0x453011(0x22e)](this[_0x453011(0x284)]['particlesComputing']['primitives']['getWind']),this['primitives']['add'](this['particleSystem'][_0x453011(0x289)]['primitives']['updateSpeed']),this[_0x453011(0x27a)][_0x453011(0x22e)](this['particleSystem']['particlesComputing'][_0x453011(0x27a)]['updatePosition']),this['primitives']['add'](this[_0x453011(0x284)]['particlesComputing'][_0x453011(0x27a)][_0x453011(0x2a2)]),this['primitives'][_0x453011(0x22e)](this['particleSystem']['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives'][_0x453011(0x22e)](this['particleSystem']['particlesRendering']['primitives']['segments']),this['primitives']['add'](this[_0x453011(0x284)][_0x453011(0x2b6)]['primitives'][_0x453011(0x204)]),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['screen']);}['updateViewerParameters'](){const _0x15fddc=_0x3a9b9d;let _0x718080=this['camera']['computeViewRectangle'](this['scene'][_0x15fddc(0x241)]['ellipsoid']);if(!_0x718080){const _0x40b925=this['_map']['getExtent']();_0x718080=Cesium$1['Rectangle'][_0x15fddc(0x265)](_0x40b925['xmin'],_0x40b925['ymin'],_0x40b925['xmax'],_0x40b925['ymax']);}const _0xf0e638=Util[_0x15fddc(0x23c)](_0x718080);this[_0x15fddc(0x25f)]['lonRange']['x']=_0xf0e638['lon'][_0x15fddc(0x2b7)],this[_0x15fddc(0x25f)]['lonRange']['y']=_0xf0e638[_0x15fddc(0x253)][_0x15fddc(0x207)],this['viewerParameters']['latRange']['x']=_0xf0e638['lat'][_0x15fddc(0x2b7)],this[_0x15fddc(0x25f)]['latRange']['y']=_0xf0e638['lat']['max'];const _0x34b4a2=this[_0x15fddc(0x2b9)]['getPixelSize'](this[_0x15fddc(0x22d)],this[_0x15fddc(0x216)][_0x15fddc(0x292)],this['scene'][_0x15fddc(0x1f3)]);_0x34b4a2>0x0&&(this['viewerParameters']['pixelSize']=_0x34b4a2);}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace[_0x3a9b9d(0x24b)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0x387a9a=_0x3a9b9d;this[_0x387a9a(0x2a8)]=null,this['lat']=null,this[_0x387a9a(0x2a7)]=null,this['tlat']=null,this['age']=null;}['destroy'](){for(const _0x20674b in this){delete this[_0x20674b];}}}class CanvasWindField{constructor(_0x52d5ac){const _0x18c46a=_0x3a9b9d;this[_0x18c46a(0x2b5)](_0x52d5ac);}get['speedRate'](){return this['_speedRate'];}set['speedRate'](_0x2b074c){const _0x535c86=_0x3a9b9d;this[_0x535c86(0x261)]=(0x64-(_0x2b074c>0x63?0x63:_0x2b074c))*0x64,this[_0x535c86(0x212)]=[(this[_0x535c86(0x20e)]-this['xmin'])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set[_0x3a9b9d(0x299)](_0x38a715){this['_maxAge']=_0x38a715;}['setOptions'](_0xa1e02d){const _0x362edb=_0x3a9b9d;this[_0x362edb(0x1f7)]=_0xa1e02d,this['maxAge']=_0xa1e02d['maxAge']||0x78,this['speedRate']=_0xa1e02d['speedRate']||0x32,this['particles']=[];const _0x826eb5=_0xa1e02d['particlesNumber']||0x1000;for(let _0x416629=0x0;_0x416629<_0x826eb5;_0x416629++){const _0x49808d=this[_0x362edb(0x208)](new CanvasParticle());this['particles']['push'](_0x49808d);}}[_0x3a9b9d(0x215)](_0xd31091){const _0x5b48d3=_0x3a9b9d;this['rows']=_0xd31091['rows'],this['cols']=_0xd31091['cols'],this[_0x5b48d3(0x1f0)]=_0xd31091['xmin'],this['xmax']=_0xd31091['xmax'],this['ymin']=_0xd31091['ymin'],this['ymax']=_0xd31091['ymax'],this[_0x5b48d3(0x1f8)]=[];const _0x597d9e=_0xd31091['udata'],_0x47182f=_0xd31091[_0x5b48d3(0x283)];let _0x5cc729=![];_0x597d9e['length']===this['rows']&&_0x597d9e[0x0]['length']===this['cols']&&(_0x5cc729=!![]);let _0x1b37f3=0x0,_0x463268=null,_0x1f1d3e=null;for(let _0x303192=0x0;_0x303192<this['rows'];_0x303192++){_0x463268=[];for(let _0x143efa=0x0;_0x143efa<this['cols'];_0x143efa++,_0x1b37f3++){_0x5cc729?_0x1f1d3e=this[_0x5b48d3(0x1e3)](_0x597d9e[_0x303192][_0x143efa],_0x47182f[_0x303192][_0x143efa]):_0x1f1d3e=this['_calcUV'](_0x597d9e[_0x1b37f3],_0x47182f[_0x1b37f3]),_0x463268[_0x5b48d3(0x1ea)](_0x1f1d3e);}this['grid']['push'](_0x463268);}this[_0x5b48d3(0x1f7)][_0x5b48d3(0x2c0)]&&this['grid']['reverse']();}['clear'](){const _0x137215=_0x3a9b9d;delete this['rows'],delete this[_0x137215(0x26d)],delete this[_0x137215(0x1f0)],delete this[_0x137215(0x20e)],delete this['ymin'],delete this[_0x137215(0x227)],delete this['grid'],delete this['particles'];}['toGridXY'](_0x27729f,_0xb6deac){const _0x351233=_0x3a9b9d,_0x4ce3a8=(_0x27729f-this[_0x351233(0x1f0)])/(this['xmax']-this[_0x351233(0x1f0)])*(this[_0x351233(0x26d)]-0x1),_0x2e1de3=(this['ymax']-_0xb6deac)/(this['ymax']-this['ymin'])*(this['rows']-0x1);return[_0x4ce3a8,_0x2e1de3];}['getUVByXY'](_0xa9f9ab,_0xb94f8b){const _0x3590e=_0x3a9b9d;if(_0xa9f9ab<0x0||_0xa9f9ab>=this['cols']||_0xb94f8b>=this[_0x3590e(0x27c)])return[0x0,0x0,0x0];const _0x4fe699=Math['floor'](_0xa9f9ab),_0x5b2b6b=Math[_0x3590e(0x237)](_0xb94f8b);if(_0x4fe699===_0xa9f9ab&&_0x5b2b6b===_0xb94f8b)return this[_0x3590e(0x1f8)][_0xb94f8b][_0xa9f9ab];const _0x41ed99=_0x4fe699+0x1,_0xd9a63f=_0x5b2b6b+0x1,_0x1f8878=this['getUVByXY'](_0x4fe699,_0x5b2b6b),_0xfa05ae=this['getUVByXY'](_0x41ed99,_0x5b2b6b),_0x40cf51=this[_0x3590e(0x21b)](_0x4fe699,_0xd9a63f),_0xcb3135=this['getUVByXY'](_0x41ed99,_0xd9a63f);let _0x21c45e=null;try{_0x21c45e=this[_0x3590e(0x20c)](_0xa9f9ab-_0x4fe699,_0xb94f8b-_0x5b2b6b,_0x1f8878,_0xfa05ae,_0x40cf51,_0xcb3135);}catch(_0x565ade){console['log'](_0xa9f9ab,_0xb94f8b);}return _0x21c45e;}[_0x3a9b9d(0x20c)](_0x199aa1,_0x562c9a,_0x176d0b,_0x569d09,_0x7fe0d2,_0x47cc05){const _0x32ccb2=0x1-_0x199aa1,_0x50596b=0x1-_0x562c9a,_0xca6ece=_0x32ccb2*_0x50596b,_0x67e9a9=_0x199aa1*_0x50596b,_0x1e2a44=_0x32ccb2*_0x562c9a,_0x52aec8=_0x199aa1*_0x562c9a,_0x4cbe9f=_0x176d0b[0x0]*_0xca6ece+_0x569d09[0x0]*_0x67e9a9+_0x7fe0d2[0x0]*_0x1e2a44+_0x47cc05[0x0]*_0x52aec8,_0x58f2f8=_0x176d0b[0x1]*_0xca6ece+_0x569d09[0x1]*_0x67e9a9+_0x7fe0d2[0x1]*_0x1e2a44+_0x47cc05[0x1]*_0x52aec8;return this['_calcUV'](_0x4cbe9f,_0x58f2f8);}['_calcUV'](_0x36a17c,_0x3dceae){return[+_0x36a17c,+_0x3dceae,Math['sqrt'](_0x36a17c*_0x36a17c+_0x3dceae*_0x3dceae)];}['getUVByPoint'](_0x2a0526,_0x11a28c){const _0x5dea86=_0x3a9b9d;if(!this['isInExtent'](_0x2a0526,_0x11a28c))return null;const _0x5befa7=this[_0x5dea86(0x244)](_0x2a0526,_0x11a28c),_0x4f0b1b=this['getUVByXY'](_0x5befa7[0x0],_0x5befa7[0x1]);return _0x4f0b1b;}['isInExtent'](_0x2c5126,_0x2f15dd){const _0x51ce9c=_0x3a9b9d;return _0x2c5126>=this[_0x51ce9c(0x1f0)]&&_0x2c5126<=this['xmax']&&_0x2f15dd>=this['ymin']&&_0x2f15dd<=this[_0x51ce9c(0x227)]?!![]:![];}['getRandomLatLng'](){const _0x5cfc8e=_0x3a9b9d,_0x176862=fRandomByfloat(this['xmin'],this[_0x5cfc8e(0x20e)]),_0xddbd6b=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0xddbd6b,'lng':_0x176862};}['getParticles'](){const _0xddd09b=_0x3a9b9d;let _0x30e036,_0x36611c,_0x1a1b36;for(let _0xf1b5d3=0x0,_0x506a4f=this['particles'][_0xddd09b(0x211)];_0xf1b5d3<_0x506a4f;_0xf1b5d3++){let _0x2c9199=this['particles'][_0xf1b5d3];_0x2c9199['age']<=0x0&&(_0x2c9199=this['_randomParticle'](_0x2c9199));if(_0x2c9199['age']>0x0){const _0x36652a=_0x2c9199[_0xddd09b(0x2a7)],_0x191cf5=_0x2c9199[_0xddd09b(0x275)];_0x1a1b36=this['getUVByPoint'](_0x36652a,_0x191cf5),_0x1a1b36?(_0x30e036=_0x36652a+this[_0xddd09b(0x212)][0x0]*_0x1a1b36[0x0],_0x36611c=_0x191cf5+this['_calc_speedRate'][0x1]*_0x1a1b36[0x1],_0x2c9199[_0xddd09b(0x2a8)]=_0x36652a,_0x2c9199[_0xddd09b(0x22b)]=_0x191cf5,_0x2c9199[_0xddd09b(0x2a7)]=_0x30e036,_0x2c9199['tlat']=_0x36611c,_0x2c9199[_0xddd09b(0x2a3)]--):_0x2c9199['age']=0x0;}}return this['particles'];}['_randomParticle'](_0x63a489){const _0x3ef179=_0x3a9b9d;let _0x40ca0d,_0x6b8634;for(let _0x431835=0x0;_0x431835<0x1e;_0x431835++){_0x40ca0d=this['getRandomLatLng'](),_0x6b8634=this['getUVByPoint'](_0x40ca0d['lng'],_0x40ca0d['lat']);if(_0x6b8634&&_0x6b8634[0x2]>0x0)break;}if(!_0x6b8634)return _0x63a489;const _0x21c67b=_0x40ca0d['lng']+this[_0x3ef179(0x212)][0x0]*_0x6b8634[0x0],_0x32f582=_0x40ca0d['lat']+this[_0x3ef179(0x212)][0x1]*_0x6b8634[0x1];return _0x63a489[_0x3ef179(0x2a8)]=_0x40ca0d[_0x3ef179(0x2a8)],_0x63a489['lat']=_0x40ca0d[_0x3ef179(0x22b)],_0x63a489[_0x3ef179(0x2a7)]=_0x21c67b,_0x63a489['tlat']=_0x32f582,_0x63a489['age']=Math[_0x3ef179(0x21e)](Math[_0x3ef179(0x277)]()*this[_0x3ef179(0x299)]),_0x63a489;}['destroy'](){for(const _0x38490f in this){delete this[_0x38490f];}}}function fRandomByfloat(_0x2f4a3e,_0xf0f14b){return _0x2f4a3e+Math['random']()*(_0xf0f14b-_0x2f4a3e);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x3a9b9d(0x24b)][_0x3a9b9d(0x293)];class CanvasWindLayer extends BaseLayer{constructor(_0x486ce7={}){super(_0x486ce7),this['_setOptionsHook'](_0x486ce7),this['canvas']=null;}['_setOptionsHook'](_0x2c83ca,_0x5f3f5f){const _0x37a2e1=_0x3a9b9d;this['frameTime']=0x3e8/(_0x2c83ca[_0x37a2e1(0x2be)]||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x2c83ca['color']||'#ffffff',this['lineWidth']=_0x2c83ca[_0x37a2e1(0x2a0)]||0x1,this['fixedHeight']=_0x2c83ca[_0x37a2e1(0x29d)]??0x0,this['reverseY']=_0x2c83ca[_0x37a2e1(0x2c0)]??![],this[_0x37a2e1(0x1e7)]&&this['windField']['setOptions'](_0x2c83ca);}get['layer'](){return this['canvas'];}get[_0x3a9b9d(0x226)](){const _0x1617f0=_0x3a9b9d;return this[_0x1617f0(0x28f)]['scene']['canvas'][_0x1617f0(0x260)];}get['canvasHeight'](){const _0x353ba0=_0x3a9b9d;return this[_0x353ba0(0x28f)][_0x353ba0(0x216)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x9276ef){const _0x2c6ddf=_0x3a9b9d;this['_pointerEvents']=_0x9276ef;if(!this[_0x2c6ddf(0x1e9)])return;_0x9276ef?this['canvas'][_0x2c6ddf(0x2c3)]['pointer-events']=_0x2c6ddf(0x2ba):this['canvas']['style']['pointer-events']='none';}get['particlesNumber'](){const _0xe0dabf=_0x3a9b9d;return this[_0xe0dabf(0x1f7)]['particlesNumber'];}set['particlesNumber'](_0x8aaf36){const _0x29cbc5=_0x3a9b9d;this['options'][_0x29cbc5(0x22a)]=_0x8aaf36,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){const _0x1777ea=_0x3a9b9d;return this[_0x1777ea(0x1f7)]['speedRate'];}set[_0x3a9b9d(0x273)](_0xee6bdb){const _0x14b6ae=_0x3a9b9d;this['options'][_0x14b6ae(0x273)]=_0xee6bdb,this['windField']&&(this['windField']['speedRate']=_0xee6bdb);}get[_0x3a9b9d(0x299)](){const _0x27070f=_0x3a9b9d;return this['options'][_0x27070f(0x299)];}set['maxAge'](_0x548b38){const _0x165074=_0x3a9b9d;this[_0x165074(0x1f7)]['maxAge']=_0x548b38,this['windField']&&(this[_0x165074(0x1e7)]['maxAge']=_0x548b38);}get['data'](){const _0x107e91=_0x3a9b9d;return this[_0x107e91(0x206)];}set['data'](_0x46eac0){this['setData'](_0x46eac0);}['_showHook'](_0x539939){const _0x2cf706=_0x3a9b9d;_0x539939?this['_addedHook']():(this['windData']&&(this['options']['data']=this[_0x2cf706(0x206)]),this[_0x2cf706(0x27b)]());}['_mountedHook'](){const _0x25454e=_0x3a9b9d;this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this[_0x25454e(0x1f7)]);}[_0x3a9b9d(0x24a)](){const _0x571598=_0x3a9b9d;this['canvas']=this[_0x571598(0x258)](),this['canvasContext']=this[_0x571598(0x1e9)]['getContext']('2d',{'willReadFrequently':!![]}),this[_0x571598(0x2af)](),this[_0x571598(0x1f7)]['data']&&this['setData'](this['options']['data']);}[_0x3a9b9d(0x27b)](){this['clear'](),this['unbindEvent'](),this['canvas']&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}[_0x3a9b9d(0x258)](){const _0x2d73e0=_0x3a9b9d,_0xc30a88=mars3d__namespace['DomUtil']['create'](_0x2d73e0(0x1e9),_0x2d73e0(0x2c5),this['_map']['container']);return _0xc30a88[_0x2d73e0(0x2c3)][_0x2d73e0(0x23b)]='absolute',_0xc30a88[_0x2d73e0(0x2c3)]['top']='0px',_0xc30a88[_0x2d73e0(0x2c3)]['left']=_0x2d73e0(0x259),_0xc30a88[_0x2d73e0(0x2c3)]['width']=this['_map']['scene']['canvas']['clientWidth']+'px',_0xc30a88['style']['height']=this['_map'][_0x2d73e0(0x216)]['canvas'][_0x2d73e0(0x29b)]+'px',_0xc30a88[_0x2d73e0(0x2c3)][_0x2d73e0(0x291)]=this['_pointerEvents']?'auto':'none',_0xc30a88['style']['zIndex']=this['options']['zIndex']??0x9,_0xc30a88['width']=this[_0x2d73e0(0x28f)][_0x2d73e0(0x216)]['canvas']['clientWidth'],_0xc30a88['height']=this[_0x2d73e0(0x28f)]['scene']['canvas'][_0x2d73e0(0x29b)],_0xc30a88;}[_0x3a9b9d(0x256)](){const _0x559764=_0x3a9b9d;this['canvas']&&(this['canvas'][_0x559764(0x2c3)][_0x559764(0x249)]=this[_0x559764(0x28f)]['scene']['canvas'][_0x559764(0x260)]+'px',this[_0x559764(0x1e9)]['style'][_0x559764(0x26a)]=this['_map']['scene']['canvas']['clientHeight']+'px',this['canvas'][_0x559764(0x249)]=this[_0x559764(0x28f)][_0x559764(0x216)]['canvas'][_0x559764(0x260)],this['canvas']['height']=this['_map'][_0x559764(0x216)][_0x559764(0x1e9)]['clientHeight']);}['bindEvent'](){const _0x319bd7=_0x3a9b9d,_0x55631f=this;let _0x4cb631=Date['now']();(function _0x4e361c(){const _0x39603a=_0x45fc;_0x55631f['animateFrame']=window['requestAnimationFrame'](_0x4e361c);if(_0x55631f[_0x39603a(0x267)]&&_0x55631f[_0x39603a(0x1e7)]){const _0x517822=Date['now'](),_0xfeb693=_0x517822-_0x4cb631;_0xfeb693>_0x55631f[_0x39603a(0x2cb)]&&(_0x4cb631=_0x517822-_0xfeb693%_0x55631f['frameTime'],_0x55631f[_0x39603a(0x238)]());}}(),window[_0x319bd7(0x1ec)]('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace[_0x319bd7(0x239)]['wheel'],this['_onMapWhellEvent'],this),this[_0x319bd7(0x28f)]['on'](mars3d__namespace['EventType'][_0x319bd7(0x2ac)],this[_0x319bd7(0x20d)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){const _0x1990ea=_0x3a9b9d;window['cancelAnimationFrame'](this['animateFrame']),delete this['animateFrame'],window['removeEventListener']('resize',this['resize']),this['options'][_0x1990ea(0x2c7)]&&(this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x1990ea(0x28f)]['off'](mars3d__namespace['EventType'][_0x1990ea(0x2ac)],this['_onMouseDownEvent'],this),this[_0x1990ea(0x28f)]['off'](mars3d__namespace['EventType']['mouseUp'],this[_0x1990ea(0x2ae)],this),this['_map'][_0x1990ea(0x1ee)](mars3d__namespace['EventType']['mouseMove'],this[_0x1990ea(0x205)],this));}['_onMapWhellEvent'](_0xccac64){const _0x14ac21=_0x3a9b9d;clearTimeout(this['refreshTimer']);if(!this['show']||!this[_0x14ac21(0x1e9)])return;this['canvas']['style']['visibility']=_0x14ac21(0x254),this[_0x14ac21(0x240)]=setTimeout(()=>{const _0x29c1d0=_0x14ac21;if(!this['show'])return;this['redraw'](),this['canvas']['style'][_0x29c1d0(0x288)]=_0x29c1d0(0x222);},0xc8);}['_onMouseDownEvent'](_0x3ceee5){const _0x5d407e=_0x3a9b9d;this['mouse_down']=!![],this['_map'][_0x5d407e(0x1ee)](mars3d__namespace[_0x5d407e(0x239)][_0x5d407e(0x2cc)],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x172b38){const _0x46181f=_0x3a9b9d;if(!this['show']||!this['canvas'])return;this[_0x46181f(0x1fd)]&&(this['canvas']['style']['visibility']='hidden',this[_0x46181f(0x252)]=!![]);}['_onMouseUpEvent'](_0x1fc194){const _0x201d70=_0x3a9b9d;if(!this[_0x201d70(0x267)]||!this['canvas'])return;this[_0x201d70(0x28f)]['off'](mars3d__namespace['EventType'][_0x201d70(0x2cc)],this['_onMouseMoveEvent'],this),this[_0x201d70(0x1fd)]&&this['mouse_move']&&this['redraw'](),this['canvas']['style']['visibility']='visible',this[_0x201d70(0x1fd)]=![],this['mouse_move']=![];}[_0x3a9b9d(0x2b2)](_0x51db00){const _0x5e3505=_0x3a9b9d;this[_0x5e3505(0x2b3)](),this['windData']=_0x51db00,this['windField']['setDate'](_0x51db00),this['redraw']();}[_0x3a9b9d(0x209)](){const _0x584fe4=_0x3a9b9d;if(!this[_0x584fe4(0x267)])return;this['windField']['setOptions'](this['options']),this[_0x584fe4(0x238)]();}['update'](){const _0x46c0df=_0x3a9b9d;if(this['_updateIng'])return;this['_updateIng']=!![];if(this['worker'])this['windField'][_0x46c0df(0x238)]();else{const _0x2d7f5a=this['windField']['getParticles']();this['_drawLines'](_0x2d7f5a);}this['_updateIng']=![];}['_drawLines'](_0xd940d6){const _0x303b3f=_0x3a9b9d;this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this[_0x303b3f(0x1fe)]['globalCompositeOperation']='lighter',this[_0x303b3f(0x1fe)][_0x303b3f(0x25e)]=0.9,this['canvasContext']['beginPath'](),this[_0x303b3f(0x1fe)][_0x303b3f(0x2a0)]=this['lineWidth'],this['canvasContext'][_0x303b3f(0x2ab)]=this['color'];const _0x5d49bf=this['_map']['scene'][_0x303b3f(0x24f)]!==Cesium['SceneMode']['SCENE3D'],_0x192a89=this[_0x303b3f(0x226)]*0.25;for(let _0x50adc0=0x0,_0x486f9b=_0xd940d6['length'];_0x50adc0<_0x486f9b;_0x50adc0++){const _0x4275c4=_0xd940d6[_0x50adc0],_0x207871=this['_tomap'](_0x4275c4['lng'],_0x4275c4[_0x303b3f(0x22b)],_0x4275c4),_0x509b01=this[_0x303b3f(0x1ef)](_0x4275c4['tlng'],_0x4275c4[_0x303b3f(0x275)],_0x4275c4);if(!_0x207871||!_0x509b01)continue;if(_0x5d49bf&&Math['abs'](_0x207871[0x0]-_0x509b01[0x0])>=_0x192a89)continue;this['canvasContext']['moveTo'](_0x207871[0x0],_0x207871[0x1]),this[_0x303b3f(0x1fe)]['lineTo'](_0x509b01[0x0],_0x509b01[0x1]);}this[_0x303b3f(0x1fe)]['stroke']();}['_tomap'](_0x53698d,_0x2faf13,_0xf2511b){const _0x5241c8=_0x3a9b9d,_0x1cd3a5=Cesium[_0x5241c8(0x235)]['fromDegrees'](_0x53698d,_0x2faf13,this['fixedHeight']),_0x35bd2b=this[_0x5241c8(0x28f)]['scene'];if(_0x35bd2b['mode']===Cesium[_0x5241c8(0x264)]['SCENE3D']){const _0x35c33c=new Cesium['EllipsoidalOccluder'](_0x35bd2b['globe'][_0x5241c8(0x242)],_0x35bd2b['camera']['positionWC']),_0x1e4cfc=_0x35c33c['isPointVisible'](_0x1cd3a5);if(!_0x1e4cfc)return _0xf2511b['age']=0x0,null;}const _0x5cd939=Cesium['SceneTransforms'][_0x5241c8(0x214)](this['_map']['scene'],_0x1cd3a5);return _0x5cd939?[_0x5cd939['x'],_0x5cd939['y']]:null;}['clear'](){const _0x36d2bb=_0x3a9b9d;this[_0x36d2bb(0x1e7)]['clear'](),delete this[_0x36d2bb(0x206)];}[_0x3a9b9d(0x1df)](){const _0x5e1190=_0x3a9b9d;this[_0x5e1190(0x2a6)]=new Worker(this[_0x5e1190(0x1f7)]['worker']),this[_0x5e1190(0x2a6)]['onmessage']=_0x5e44b9=>{const _0x46054c=_0x5e1190;this[_0x46054c(0x202)](_0x5e44b9['data']['particles']),this['_updateIng2']=![];},this['windField']={'init':_0x497687=>{const _0x4b40b2=_0x5e1190;this['worker'][_0x4b40b2(0x2b8)]({'type':_0x4b40b2(0x24e),'options':_0x497687});},'setOptions':_0x4721f4=>{const _0xaa7599=_0x5e1190;this['worker'][_0xaa7599(0x2b8)]({'type':'setOptions','options':_0x4721f4});},'setDate':_0x21edb3=>{this['worker']['postMessage']({'type':'setDate','data':_0x21edb3});},'update':()=>{const _0x536dd1=_0x5e1190;if(this['_updateIng2'])return;this['_updateIng2']=!![],this[_0x536dd1(0x2a6)][_0x536dd1(0x2b8)]({'type':_0x536dd1(0x238)});},'clear':()=>{const _0x58ab7e=_0x5e1190;this[_0x58ab7e(0x2a6)]['postMessage']({'type':_0x58ab7e(0x2b3)});}},this['windField']['init'](this[_0x5e1190(0x1f7)]);}}mars3d__namespace['LayerUtil']['register'](_0x3a9b9d(0x28c),CanvasWindLayer),mars3d__namespace[_0x3a9b9d(0x24b)][_0x3a9b9d(0x2ca)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x3a9b9d(0x1f4)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports[_0x3a9b9d(0x22c)]=WindLayer,exports[_0x3a9b9d(0x1f4)]=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});function _0x1b8c(){const _0x8d568e=['toDegrees','style','updateViewerParameters','mars3d-canvasWind','TextureMagnificationFilter','mouseHidden','UNSIGNED_BYTE','currentParticlesPosition','CanvasWindLayer','frameTime','mouseMove','forEach','TWO_PI','initWorker','removeEventListener','isDestroyed','204174UMVDAM','_calcUV','array','dropRate','cos','windField','atan2','canvas','push','LINEAR','addEventListener','ShaderSource','off','_tomap','xmin','outputTexture','10tbpxtl','drawingBufferHeight','WindUtil','addPrimitives','attributeLocations','options','grid','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','colorTable','Pass','createFramebuffer','mouse_down','canvasContext','1415760RLIzZx','_onMap_preRenderEvent','fromGeometry','_drawLines','particlesTextures','trails','_onMouseMoveEvent','windData','max','_randomParticle','redraw','pixelSize','udata','_bilinearInterpolation','_onMouseDownEvent','xmax','createTexture','postProcessingSpeed','length','_calc_speedRate','fragmentShaderSource','wgs84ToWindowCoordinates','setDate','scene','fromCssColorString','createWindTextures','getFullscreenQuad','PrimitiveCollection','getUVByXY','geometry','rgb(206,255,255)','round','windTextures','west','depthMask','visible','nextTrails','PixelDatatype','context','canvasWidth','ymax','once','SCENE3D','particlesNumber','lat','WindLayer','globeBoundingSphere','add','LUMINANCE','currentTrails','defined','697130NZWobK','createSegmentsGeometry','clampToLatitudeRange','Cartesian3','12OGLJkl','floor','update','EventType','nextParticlesSpeed','position','viewRectangleToLonLatRange','createCommand','default','primitiveType','refreshTimer','globe','ellipsoid','toRadians','toGridXY','colors','randomizeParticles','destroy','segments','width','_addedHook','layer','createRenderingPrimitives','Math','init','mode','sin','maxParticles','mouse_move','lon','hidden','PixelFormat','resize','rawRenderState','_createCanvas','0px','_data','currentTrailsColor','_setOptionsHook','execute','globalAlpha','viewerParameters','clientWidth','_speedRate','data','//\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','SceneMode','fromDegrees','segmentsDepth','show','canvasResize','889448RQPKBk','height','PI_OVER_TWO','destroyParticlesTextures','cols','ComponentDatatype','keys','Sampler','commandToExecute','GeometryAttributes','speedRate','Draw','tlat','TRIANGLES','random','TextureMinificationFilter','ComputeCommand','primitives','_removedHook','rows','pow','BufferUsage','271536NYsaWh','vmax','NEAREST','FLOAT','vdata','particleSystem','lev','particlesTextureSize','Framebuffer','visibility','particlesComputing','viewport','commandList','canvasWind','290394VZxcow','vertexShaderSource','_map','shaderProgram','pointerEvents','drawingBufferWidth','BaseLayer','umin','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','framebuffers','createComputingPrimitives','OPAQUE','maxAge','ClearCommand','clientHeight','currentParticlesSpeed','fixedHeight','2514630ieqgky','Matrix4','lineWidth','getOptions','postProcessingPosition','age','Color','uniformMap','worker','tlng','lng','clearCommand','__esModule','strokeStyle','mouseDown','destroyObject','_onMouseUpEvent','bindEvent','Cesium','GeometryAttribute','setData','clear','preExecute','setOptions','particlesRendering','min','postMessage','camera','all','createParticlesTextures','textures','blue','frameRate','commandType','reverseY','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'];_0x1b8c=function(){return _0x8d568e;};return _0x1b8c();}
14
+ 'use strict';const _0x19f4f9=_0x14b2;(function(_0x54cf24,_0x3439df){const _0x4c3c5b=_0x14b2,_0x3ab828=_0x54cf24();while(!![]){try{const _0xc53c7d=parseInt(_0x4c3c5b(0x164))/0x1*(-parseInt(_0x4c3c5b(0xda))/0x2)+parseInt(_0x4c3c5b(0xac))/0x3*(parseInt(_0x4c3c5b(0x135))/0x4)+parseInt(_0x4c3c5b(0x156))/0x5+parseInt(_0x4c3c5b(0x144))/0x6+-parseInt(_0x4c3c5b(0x145))/0x7*(-parseInt(_0x4c3c5b(0xcb))/0x8)+-parseInt(_0x4c3c5b(0x149))/0x9*(parseInt(_0x4c3c5b(0x160))/0xa)+-parseInt(_0x4c3c5b(0x174))/0xb*(-parseInt(_0x4c3c5b(0x12b))/0xc);if(_0xc53c7d===_0x3439df)break;else _0x3ab828['push'](_0x3ab828['shift']());}catch(_0xd3b8ba){_0x3ab828['push'](_0x3ab828['shift']());}}}(_0x55a2,0x49f28));function _interopNamespace(_0x5cd1aa){if(_0x5cd1aa&&_0x5cd1aa['__esModule'])return _0x5cd1aa;var _0x4716b1=Object['create'](null);return _0x5cd1aa&&Object['keys'](_0x5cd1aa)['forEach'](function(_0x3db586){const _0x17f64a=_0x14b2;if(_0x3db586!==_0x17f64a(0x109)){var _0x3ddf8f=Object[_0x17f64a(0x171)](_0x5cd1aa,_0x3db586);Object['defineProperty'](_0x4716b1,_0x3db586,_0x3ddf8f[_0x17f64a(0x11c)]?_0x3ddf8f:{'enumerable':!![],'get':function(){return _0x5cd1aa[_0x3db586];}});}}),_0x4716b1['default']=_0x5cd1aa,_0x4716b1;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x408da3,_0x167024){const _0x27ac9a=_0x408da3*Math['cos'](Cesium$7['Math']['toRadians'](_0x167024));return _0x27ac9a;}function getV(_0x2c1c32,_0xe74089){const _0x57a090=_0x14b2,_0x2c578a=_0x2c1c32*Math['sin'](Cesium$7['Math'][_0x57a090(0xe9)](_0xe74089));return _0x2c578a;}function getSpeed(_0x5f2477,_0x1014f8){const _0x1a3a4c=Math['sqrt'](Math['pow'](_0x5f2477,0x2)+Math['pow'](_0x1014f8,0x2));return _0x1a3a4c;}function getDirection(_0x3b769d,_0x1d5329){let _0x18aff5=Cesium$7['Math']['toDegrees'](Math['atan2'](_0x1d5329,_0x3b769d));return _0x18aff5+=_0x18aff5<0x0?0x168:0x0,_0x18aff5;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x2090fc){const _0x46363c=_0x14b2;this['commandType']=_0x2090fc['commandType'],this['geometry']=_0x2090fc['geometry'],this['attributeLocations']=_0x2090fc[_0x46363c(0x8c)],this['primitiveType']=_0x2090fc[_0x46363c(0x166)],this[_0x46363c(0x116)]=_0x2090fc['uniformMap'],this[_0x46363c(0xbb)]=_0x2090fc[_0x46363c(0xbb)],this['fragmentShaderSource']=_0x2090fc['fragmentShaderSource'],this['rawRenderState']=_0x2090fc['rawRenderState'],this['framebuffer']=_0x2090fc['framebuffer'],this['outputTexture']=_0x2090fc['outputTexture'],this['autoClear']=_0x2090fc[_0x46363c(0x124)]??![],this['preExecute']=_0x2090fc['preExecute'],this['show']=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6['ClearCommand']({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x46363c(0x138)],'pass':Cesium$6[_0x46363c(0x86)]['OPAQUE']}));}['createCommand'](_0x6f0210){const _0x4a6063=_0x14b2;switch(this['commandType']){case'Draw':{const _0x97b33a=Cesium$6['VertexArray']['fromGeometry']({'context':_0x6f0210,'geometry':this[_0x4a6063(0x161)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x223ce4=Cesium$6['ShaderProgram']['fromCache']({'context':_0x6f0210,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this[_0x4a6063(0xfc)]}),_0x3e7160=Cesium$6['RenderState'][_0x4a6063(0xe7)](this['rawRenderState']);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x223ce4,'vertexArray':_0x97b33a,'modelMatrix':Cesium$6[_0x4a6063(0x15b)]['IDENTITY'],'renderState':_0x3e7160,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass'][_0x4a6063(0xab)],'pickOnly':!![],'owner':this});}case _0x4a6063(0xd0):{return new Cesium$6[(_0x4a6063(0xe8))]({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this['outputTexture'],'persists':!![]});}}}[_0x19f4f9(0xb4)](_0x52fe53,_0x48a254){const _0x4d8d34=_0x19f4f9;this[_0x4d8d34(0x161)]=_0x48a254;const _0x3ee20f=Cesium$6[_0x4d8d34(0xce)]['fromGeometry']({'context':_0x52fe53,'geometry':this[_0x4d8d34(0x161)],'attributeLocations':this[_0x4d8d34(0x8c)],'bufferUsage':Cesium$6[_0x4d8d34(0x153)]['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x3ee20f;}['update'](_0x3c6359){const _0x2c1a67=_0x19f4f9;if(!this['show'])return;if(_0x3c6359['mode']!==Cesium$6[_0x2c1a67(0x13f)]['SCENE3D'])return;!Cesium$6['defined'](this[_0x2c1a67(0x9e)])&&(this[_0x2c1a67(0x9e)]=this['createCommand'](_0x3c6359['context'])),Cesium$6[_0x2c1a67(0x163)](this['preExecute'])&&this[_0x2c1a67(0x13e)](),Cesium$6[_0x2c1a67(0x163)](this['clearCommand'])&&_0x3c6359['commandList']['push'](this[_0x2c1a67(0x10e)]),_0x3c6359['commandList']['push'](this['commandToExecute']);}[_0x19f4f9(0x83)](){return![];}['destroy'](){const _0x4f4852=_0x19f4f9;if(this[_0x4f4852(0x10e)]){var _0x595ce6,_0x5f2bc6;(_0x595ce6=this['clearCommand'])!==null&&_0x595ce6!==void 0x0&&_0x595ce6['vertexArray']&&this[_0x4f4852(0x10e)]['vertexArray']['destroy'](),(_0x5f2bc6=this['clearCommand'])!==null&&_0x5f2bc6!==void 0x0&&_0x5f2bc6[_0x4f4852(0x151)]&&this['clearCommand'][_0x4f4852(0x151)]['destroy'](),delete this['clearCommand'];}return this[_0x4f4852(0x9e)]&&(this['commandToExecute']['vertexArray']&&this['commandToExecute'][_0x4f4852(0x10c)]['destroy'](),this[_0x4f4852(0x9e)]['shaderProgram']&&this['commandToExecute']['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6[_0x4f4852(0x119)](this);}}function _0x55a2(){const _0x520d25=['lonRange','1519760bgSoCf','tlat','CanvasWindLayer','segments','getColorTexture','Matrix4','_map','latRange','scene','bind','5841140qabrHn','geometry','ymax','defined','36643enlwcc','canvasContext','primitiveType','height','dimensions','_createCanvas','udata','windTextures','Cesium','setOptions','worker','isPointVisible','ShaderSource','getOwnPropertyDescriptor','getOptions','Framebuffer','3554507HPdsWG','isDestroyed','reverse','colors','Pass','createRenderingPrimitives','particles','getFullscreenQuad','Cartesian3','globe','attributeLocations','removeChild','createSegmentsGeometry','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','Math','particlesTextureSize','Draw','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','data','layer','getUVByXY','init','EventType','left','mouseHidden','_speedRate','primitives','lev','commandToExecute','UNSIGNED_BYTE','lat','unbindEvent','_onMouseDownEvent','particleSystem','particlesComputing','Sampler','options','redraw','viewerParameters','particlesTextures','DISABLE_GL_POSITION_LOG_DEPTH','OPAQUE','1512885JJQXqz','windData','isInExtent','_addedHook','width','Geometry','ymin','trails','setGeometry','age','createRawRenderState','ellipsoid','RGB','now','maxParticles','vertexShaderSource','_bilinearInterpolation','fixedHeight','pixelSize','clearFramebuffers','fill','maxAge','getContext','keys','tlng','destroy','PI_OVER_TWO','TextureMinificationFilter','min','outputTexture','postMessage','1816uPHAPZ','clear','color','VertexArray','canvasWidth','Compute','mouseMove','currentParticlesSpeed','vmax','once','toGridXY','grid','_onMapWhellEvent','xmin','colorTable','30vARUHc','windField','destination-in','setData','off','_randomParticle','array','getUVByPoint','currentTrailsDepth','WindUtil','mouseDown','refreshTimer','clampToLatitudeRange','fromCache','ComputeCommand','toRadians','refreshParticles','clientHeight','xmax','rgb(206,255,255)','camera','initWorker','FLOAT','fromDegrees','max','createParticlesTextures','arrayBufferView','postProcessingSpeed','segmentsDepth','abs','nextTrailsColor','_onMouseMoveEvent','nextTrails','textures','fragmentShaderSource','mode','_drawLines','LUMINANCE','_tomap','setDate','random','removeEventListener','postProcessingPosition','vdata','Cartesian2','visible','TWO_PI','default','resize','speedRate','vertexArray','currentParticlesPosition','clearCommand','context','SCENE3D','mouse_down','createRenderingTextures','clientWidth','wgs84ToWindowCoordinates','nextParticlesPosition','uniformMap','update','reverseY','destroyObject','lineWidth','rows','get','applyViewerParameters','viewRectangleToLonLatRange','canvas','defineProperty','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','ceil','createTexture','autoClear','bindEvent','globeBoundingSphere','particlesNumber','framebuffers','wind','PixelFormat','12HRyWsO','Texture','pointerEvents','add','auto','fadeOpacity','stroke','style','red','_calcUV','4osxTIh','_onMouseUpEvent','show','framebuffer','cols','lon','NEAREST','canvasWind','nextParticlesSpeed','preExecute','SceneMode','particlesRendering','0px','_updateIng2','north','653448qkJYgh','6055ooDFaj','particleHeight','RGBA','mouseUp','9yYUfjo','TextureMagnificationFilter','mouse_move','currentTrails','updateViewerParameters','fillRect','umin','cancelAnimationFrame','shaderProgram','lng','BufferUsage','_canrefresh'];_0x55a2=function(){return _0x520d25;};return _0x55a2();}const Cesium$5=mars3d__namespace[_0x19f4f9(0x16c)],Util=(function(){const _0x581f22=function(){const _0x50ede4=_0x14b2,_0x3e895=new Cesium$5[(_0x50ede4(0xb1))]({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x3e895;},_0x1ce051=function(_0x3b7fd2,_0x102cf4){const _0xf66d94=_0x14b2;if(Cesium$5[_0xf66d94(0x163)](_0x102cf4)){const _0x48fa02={};_0x48fa02[_0xf66d94(0xf4)]=_0x102cf4,_0x3b7fd2['source']=_0x48fa02;}const _0x91f378=new Cesium$5[(_0xf66d94(0x12c))](_0x3b7fd2);return _0x91f378;},_0x50f605=function(_0x3141f2,_0x147e1f,_0x331153){const _0x5e707b=_0x14b2,_0x961a14=new Cesium$5[(_0x5e707b(0x173))]({'context':_0x3141f2,'colorTextures':[_0x147e1f],'depthTexture':_0x331153});return _0x961a14;},_0x2e9b86=function(_0x197a87){const _0xbed125=!![],_0x373049=![],_0x429422={'viewport':_0x197a87['viewport'],'depthTest':_0x197a87['depthTest'],'depthMask':_0x197a87['depthMask'],'blending':_0x197a87['blending']},_0x50bf8b=Cesium$5['Appearance']['getDefaultRenderState'](_0xbed125,_0x373049,_0x429422);return _0x50bf8b;},_0x41834d=function(_0x29949e){const _0x2af823=_0x14b2,_0x31b110={},_0x384b33=Cesium$5['Math']['mod'](_0x29949e['west'],Cesium$5['Math']['TWO_PI']),_0x2eb557=Cesium$5['Math']['mod'](_0x29949e['east'],Cesium$5[_0x2af823(0x90)][_0x2af823(0x108)]),_0x3bbea4=_0x29949e['width'];let _0x3413e0,_0x2432e0;_0x3bbea4>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x3413e0=0x0,_0x2432e0=Cesium$5['Math']['TWO_PI']):_0x2eb557-_0x384b33<_0x3bbea4?(_0x3413e0=_0x384b33,_0x2432e0=_0x384b33+_0x3bbea4):(_0x3413e0=_0x384b33,_0x2432e0=_0x2eb557);_0x31b110[_0x2af823(0x13a)]={'min':Cesium$5[_0x2af823(0x90)]['toDegrees'](_0x3413e0),'max':Cesium$5['Math']['toDegrees'](_0x2432e0)};const _0x324e34=_0x29949e['south'],_0x141b8a=_0x29949e[_0x2af823(0x143)],_0x375b56=_0x29949e[_0x2af823(0x167)],_0x3f7eec=_0x375b56>Cesium$5['Math']['PI']/0xc?_0x375b56/0x2:0x0;let _0x460ab4=Cesium$5['Math']['clampToLatitudeRange'](_0x324e34-_0x3f7eec),_0x4d8549=Cesium$5['Math'][_0x2af823(0xe6)](_0x141b8a+_0x3f7eec);return _0x460ab4<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x460ab4=-Cesium$5['Math'][_0x2af823(0xc6)]),_0x4d8549>Cesium$5['Math']['PI_OVER_THREE']&&(_0x4d8549=Cesium$5['Math']['PI_OVER_TWO']),_0x31b110[_0x2af823(0xa0)]={'min':Cesium$5[_0x2af823(0x90)]['toDegrees'](_0x460ab4),'max':Cesium$5['Math']['toDegrees'](_0x4d8549)},_0x31b110;};return{'getFullscreenQuad':_0x581f22,'createTexture':_0x1ce051,'createFramebuffer':_0x50f605,'createRawRenderState':_0x2e9b86,'viewRectangleToLonLatRange':_0x41834d};}());var segmentDraw_vert='in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert='in\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0a}\x0a',trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20trailsColor;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x50ee01,_0x4f024d,_0x2aa186,_0x3dc591,_0x25d564){const _0xb7a95e=_0x19f4f9;this[_0xb7a95e(0x112)](_0x50ee01,_0x4f024d,_0x2aa186['colors']),this['createRenderingFramebuffers'](_0x50ee01),this[_0xb7a95e(0x87)](_0x50ee01,_0x2aa186,_0x3dc591,_0x25d564);}[_0x19f4f9(0x112)](_0x2e80a2,_0x572e92,_0x556a07){const _0x2f23b8=_0x19f4f9,_0xf81ced={'context':_0x2e80a2,'width':_0x2e80a2['drawingBufferWidth'],'height':_0x2e80a2['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat'][_0x2f23b8(0x147)],'pixelDatatype':Cesium$4['PixelDatatype'][_0x2f23b8(0x9f)]},_0x3edf00={'context':_0x2e80a2,'width':_0x2e80a2['drawingBufferWidth'],'height':_0x2e80a2['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x59db98=_0x556a07['length'],_0x1ac11f=new Float32Array(_0x59db98*0x3);for(let _0x53049f=0x0;_0x53049f<_0x59db98;_0x53049f++){const _0x44923d=Cesium$4['Color']['fromCssColorString'](_0x556a07[_0x53049f]);_0x1ac11f[0x3*_0x53049f]=_0x44923d[_0x2f23b8(0x133)],_0x1ac11f[0x3*_0x53049f+0x1]=_0x44923d['green'],_0x1ac11f[0x3*_0x53049f+0x2]=_0x44923d['blue'];}const _0x5a41a4={'context':_0x2e80a2,'width':_0x59db98,'height':0x1,'pixelFormat':Cesium$4[_0x2f23b8(0x12a)][_0x2f23b8(0xb8)],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this[_0x2f23b8(0xfb)]={'segmentsColor':Util['createTexture'](_0xf81ced),'segmentsDepth':Util[_0x2f23b8(0x123)](_0x3edf00),'currentTrailsColor':Util['createTexture'](_0xf81ced),'currentTrailsDepth':Util['createTexture'](_0x3edf00),'nextTrailsColor':Util['createTexture'](_0xf81ced),'nextTrailsDepth':Util['createTexture'](_0x3edf00),'colorTable':Util[_0x2f23b8(0x123)](_0x5a41a4,_0x1ac11f)};}['createRenderingFramebuffers'](_0x385b51){const _0x46a85d=_0x19f4f9;this['framebuffers']={'segments':Util['createFramebuffer'](_0x385b51,this['textures']['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x385b51,this['textures']['currentTrailsColor'],this[_0x46a85d(0xfb)][_0x46a85d(0xe2)]),'nextTrails':Util['createFramebuffer'](_0x385b51,this['textures'][_0x46a85d(0xf8)],this[_0x46a85d(0xfb)]['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x51e53c){const _0x5cae97=0x4;let _0x1a88e6=[];for(let _0x24997f=0x0;_0x24997f<_0x51e53c['particlesTextureSize'];_0x24997f++){for(let _0x2b2a07=0x0;_0x2b2a07<_0x51e53c['particlesTextureSize'];_0x2b2a07++){for(let _0x6e19d8=0x0;_0x6e19d8<_0x5cae97;_0x6e19d8++){_0x1a88e6['push'](_0x24997f/_0x51e53c['particlesTextureSize']),_0x1a88e6['push'](_0x2b2a07/_0x51e53c['particlesTextureSize']);}}}_0x1a88e6=new Float32Array(_0x1a88e6);let _0x2937c8=[];const _0x4795c5=[-0x1,0x1],_0x1d0476=[-0x1,0x1];for(let _0x151c2c=0x0;_0x151c2c<_0x51e53c['maxParticles'];_0x151c2c++){for(let _0x5255af=0x0;_0x5255af<_0x5cae97/0x2;_0x5255af++){for(let _0x19d208=0x0;_0x19d208<_0x5cae97/0x2;_0x19d208++){_0x2937c8['push'](_0x4795c5[_0x5255af]),_0x2937c8['push'](_0x1d0476[_0x19d208]),_0x2937c8['push'](0x0);}}}_0x2937c8=new Float32Array(_0x2937c8);const _0x4db80f=0x6*_0x51e53c['maxParticles'],_0x5e80ba=new Uint32Array(_0x4db80f);for(let _0x165ca4=0x0,_0x4aaa4c=0x0,_0x1b3d62=0x0;_0x165ca4<_0x51e53c['maxParticles'];_0x165ca4++){_0x5e80ba[_0x4aaa4c++]=_0x1b3d62+0x0,_0x5e80ba[_0x4aaa4c++]=_0x1b3d62+0x1,_0x5e80ba[_0x4aaa4c++]=_0x1b3d62+0x2,_0x5e80ba[_0x4aaa4c++]=_0x1b3d62+0x2,_0x5e80ba[_0x4aaa4c++]=_0x1b3d62+0x1,_0x5e80ba[_0x4aaa4c++]=_0x1b3d62+0x3,_0x1b3d62+=0x4;}const _0x13857c=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x1a88e6}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x2937c8})}),'indices':_0x5e80ba});return _0x13857c;}['createRenderingPrimitives'](_0x500e05,_0x59a5ae,_0x3d9acc,_0x183cec){const _0xafa1c5=_0x19f4f9,_0x45a64e=this;this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0xafa1c5(0x8e)](_0x59a5ae),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){return _0x183cec['particlesTextures']['currentParticlesPosition'];},'postProcessingPosition':function(){const _0x1f4664=_0xafa1c5;return _0x183cec[_0x1f4664(0xa9)]['postProcessingPosition'];},'postProcessingSpeed':function(){return _0x183cec['particlesTextures']['postProcessingSpeed'];},'colorTable':function(){return _0x45a64e['textures']['colorTable'];},'aspect':function(){return _0x500e05['drawingBufferWidth']/_0x500e05['drawingBufferHeight'];},'pixelSize':function(){const _0x26ace4=_0xafa1c5;return _0x3d9acc[_0x26ace4(0xbe)];},'lineWidth':function(){const _0x4bb8b0=_0xafa1c5;return _0x59a5ae[_0x4bb8b0(0x11a)];},'particleHeight':function(){const _0x32f40e=_0xafa1c5;return _0x59a5ae[_0x32f40e(0x146)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4[(_0xafa1c5(0x170))]({'sources':[segmentDraw_frag]}),'rawRenderState':Util[_0xafa1c5(0xb6)]({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers']['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0xafa1c5(0x89)](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x45a64e['textures']['segmentsColor'];},'segmentsDepthTexture':function(){const _0x4d4ff4=_0xafa1c5;return _0x45a64e['textures'][_0x4d4ff4(0xf6)];},'currentTrailsColor':function(){const _0x435ce6=_0xafa1c5;return _0x45a64e[_0x435ce6(0x128)]['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x45a64e['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0x59a5ae['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0xafa1c5(0x170))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[trailDraw_frag]}),'rawRenderState':Util[_0xafa1c5(0xb6)]({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x2dedc6=_0xafa1c5,_0x4bbd46=_0x45a64e['framebuffers'][_0x2dedc6(0x14c)];_0x45a64e['framebuffers']['currentTrails']=_0x45a64e[_0x2dedc6(0x128)]['nextTrails'],_0x45a64e['framebuffers']['nextTrails']=_0x4bbd46,_0x45a64e[_0x2dedc6(0x9c)][_0x2dedc6(0xb3)][_0x2dedc6(0x9e)]['framebuffer']=_0x45a64e['framebuffers'][_0x2dedc6(0xfa)],_0x45a64e['primitives']['trails']['clearCommand']['framebuffer']=_0x45a64e['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0xafa1c5(0x92),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){const _0x420449=_0xafa1c5;return _0x45a64e[_0x420449(0x128)]['nextTrails'][_0x420449(0x15a)](0x0);},'trailsDepthTexture':function(){const _0x45295c=_0xafa1c5;return _0x45a64e[_0x45295c(0x128)]['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4[(_0xafa1c5(0x170))]({'defines':[_0xafa1c5(0xaa)],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':[_0xafa1c5(0x121)],'sources':[screenDraw_frag]}),'rawRenderState':Util[_0xafa1c5(0xb6)]({'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=_0x19f4f9(0x93),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=_0x19f4f9(0x8f);const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x54229f,_0xdd7a0c,_0x4f809e,_0x4356d4){const _0x78e2a3=_0x19f4f9;this['data']=_0xdd7a0c,this['createWindTextures'](_0x54229f,_0xdd7a0c),this[_0x78e2a3(0xf3)](_0x54229f,_0x4f809e,_0x4356d4),this['createComputingPrimitives'](_0xdd7a0c,_0x4f809e,_0x4356d4);}['createWindTextures'](_0x42907f,_0x464730){const _0x1597f8=_0x19f4f9,_0x3a191b={'context':_0x42907f,'width':_0x464730[_0x1597f8(0x168)]['lon'],'height':_0x464730['dimensions']['lat']*(_0x464730[_0x1597f8(0x168)][_0x1597f8(0x9d)]||0x1),'pixelFormat':Cesium$3['PixelFormat'][_0x1597f8(0xff)],'pixelDatatype':Cesium$3['PixelDatatype'][_0x1597f8(0xf0)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3[_0x1597f8(0xc7)]['NEAREST'],'magnificationFilter':Cesium$3[_0x1597f8(0x14a)]['NEAREST']})};this['windTextures']={'U':Util[_0x1597f8(0x123)](_0x3a191b,_0x464730['U']['array']),'V':Util['createTexture'](_0x3a191b,_0x464730['V']['array'])};}[_0x19f4f9(0xf3)](_0x1f5f1f,_0x4132ad,_0x40a021){const _0x2886e3=_0x19f4f9,_0x2755ab={'context':_0x1f5f1f,'width':_0x4132ad[_0x2886e3(0x91)],'height':_0x4132ad['particlesTextureSize'],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype'][_0x2886e3(0xf0)],'flipY':![],'sampler':new Cesium$3[(_0x2886e3(0xa5))]({'minificationFilter':Cesium$3[_0x2886e3(0xc7)][_0x2886e3(0x13b)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x211cf0=this['randomizeParticles'](_0x4132ad['maxParticles'],_0x40a021),_0x3e68fb=new Float32Array(0x4*_0x4132ad[_0x2886e3(0xba)])[_0x2886e3(0xc0)](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x2755ab),'currentParticlesPosition':Util['createTexture'](_0x2755ab,_0x211cf0),'nextParticlesPosition':Util['createTexture'](_0x2755ab,_0x211cf0),'currentParticlesSpeed':Util['createTexture'](_0x2755ab,_0x3e68fb),'nextParticlesSpeed':Util['createTexture'](_0x2755ab,_0x3e68fb),'postProcessingPosition':Util['createTexture'](_0x2755ab,_0x211cf0),'postProcessingSpeed':Util['createTexture'](_0x2755ab,_0x3e68fb)};}['randomizeParticles'](_0x439171,_0x3e459f){const _0xce97e5=_0x19f4f9,_0x1f46f6=new Float32Array(0x4*_0x439171);for(let _0x9b8f1f=0x0;_0x9b8f1f<_0x439171;_0x9b8f1f++){_0x1f46f6[0x4*_0x9b8f1f]=Cesium$3[_0xce97e5(0x90)]['randomBetween'](_0x3e459f['lonRange']['x'],_0x3e459f['lonRange']['y']),_0x1f46f6[0x4*_0x9b8f1f+0x1]=Cesium$3['Math']['randomBetween'](_0x3e459f['latRange']['x'],_0x3e459f[_0xce97e5(0x15d)]['y']),_0x1f46f6[0x4*_0x9b8f1f+0x2]=Cesium$3[_0xce97e5(0x90)]['randomBetween'](this[_0xce97e5(0x94)]['lev']['min'],this['data'][_0xce97e5(0x9d)]['max']),_0x1f46f6[0x4*_0x9b8f1f+0x3]=0x0;}return _0x1f46f6;}['destroyParticlesTextures'](){const _0x3f9f5a=_0x19f4f9;Object['keys'](this[_0x3f9f5a(0xa9)])['forEach'](_0xf78055=>{const _0x2279ca=_0x3f9f5a;this[_0x2279ca(0xa9)][_0xf78055]['destroy']();});}['createComputingPrimitives'](_0x261b8c,_0x18ab39,_0x35068b){const _0x5e2fd7=_0x19f4f9,_0x13b856=new Cesium$3[(_0x5e2fd7(0x8a))](_0x261b8c['dimensions'][_0x5e2fd7(0x13a)],_0x261b8c[_0x5e2fd7(0x168)]['lat'],_0x261b8c[_0x5e2fd7(0x168)]['lev']),_0xc684c5=new Cesium$3['Cartesian3'](_0x261b8c['lon']['min'],_0x261b8c['lat'][_0x5e2fd7(0xc8)],_0x261b8c['lev']['min']),_0x1c0149=new Cesium$3['Cartesian3'](_0x261b8c[_0x5e2fd7(0x13a)]['max'],_0x261b8c['lat']['max'],_0x261b8c['lev']['max']),_0x5db3ab=new Cesium$3[(_0x5e2fd7(0x8a))]((_0x1c0149['x']-_0xc684c5['x'])/(_0x13b856['x']-0x1),(_0x1c0149['y']-_0xc684c5['y'])/(_0x13b856['y']-0x1),_0x13b856['z']>0x1?(_0x1c0149['z']-_0xc684c5['z'])/(_0x13b856['z']-0x1):0x1),_0x59277d=new Cesium$3[(_0x5e2fd7(0x106))](_0x261b8c['U']['min'],_0x261b8c['U'][_0x5e2fd7(0xf2)]),_0x34bb1c=new Cesium$3['Cartesian2'](_0x261b8c['V'][_0x5e2fd7(0xc8)],_0x261b8c['V']['max']),_0x4e06a3=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){const _0x1011d1=_0x5e2fd7;return _0x4e06a3[_0x1011d1(0x16b)]['U'];},'V':function(){return _0x4e06a3['windTextures']['V'];},'currentParticlesPosition':function(){return _0x4e06a3['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x13b856;},'minimum':function(){return _0xc684c5;},'maximum':function(){return _0x1c0149;},'interval':function(){return _0x5db3ab;}},'fragmentShaderSource':new Cesium$3[(_0x5e2fd7(0x170))]({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){_0x4e06a3['primitives']['getWind']['commandToExecute']['outputTexture']=_0x4e06a3['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x4e06a3['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){return _0x4e06a3['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x59277d;},'vSpeedRange':function(){return _0x34bb1c;},'pixelSize':function(){return _0x35068b['pixelSize'];},'speedFactor':function(){return _0x18ab39['speedFactor'];}},'fragmentShaderSource':new Cesium$3[(_0x5e2fd7(0x170))]({'sources':[updateSpeed_frag]}),'outputTexture':this[_0x5e2fd7(0xa9)]['nextParticlesSpeed'],'preExecute':function(){const _0xd141=_0x5e2fd7,_0x1558cf=_0x4e06a3['particlesTextures']['currentParticlesSpeed'];_0x4e06a3['particlesTextures'][_0xd141(0xd2)]=_0x4e06a3['particlesTextures']['postProcessingSpeed'],_0x4e06a3['particlesTextures'][_0xd141(0xf5)]=_0x1558cf,_0x4e06a3['primitives']['updateSpeed']['commandToExecute']['outputTexture']=_0x4e06a3['particlesTextures'][_0xd141(0x13d)];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){return _0x4e06a3['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function(){const _0x1606e4=_0x5e2fd7;return _0x4e06a3[_0x1606e4(0xa9)][_0x1606e4(0xd2)];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures'][_0x5e2fd7(0x115)],'preExecute':function(){const _0x5523df=_0x5e2fd7,_0x1206cb=_0x4e06a3['particlesTextures']['currentParticlesPosition'];_0x4e06a3[_0x5523df(0xa9)][_0x5523df(0x10d)]=_0x4e06a3['particlesTextures'][_0x5523df(0x104)],_0x4e06a3['particlesTextures'][_0x5523df(0x104)]=_0x1206cb,_0x4e06a3['primitives']['updatePosition']['commandToExecute']['outputTexture']=_0x4e06a3['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){return _0x4e06a3['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){const _0x2a9b34=_0x5e2fd7;return _0x4e06a3['particlesTextures'][_0x2a9b34(0x13d)];},'lonRange':function(){return _0x35068b['lonRange'];},'latRange':function(){return _0x35068b['latRange'];},'randomCoefficient':function(){const _0xd12554=_0x5e2fd7,_0x1c98a3=Math[_0xd12554(0x102)]();return _0x1c98a3;},'dropRate':function(){return _0x18ab39['dropRate'];},'dropRateBump':function(){return _0x18ab39['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){const _0x314f42=_0x5e2fd7;_0x4e06a3['primitives']['postProcessingPosition'][_0x314f42(0x9e)][_0x314f42(0xc9)]=_0x4e06a3['particlesTextures']['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x5e2fd7(0xd0),'uniformMap':{'postProcessingPosition':function(){return _0x4e06a3['particlesTextures']['postProcessingPosition'];},'nextParticlesSpeed':function(){return _0x4e06a3['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){const _0x36e078=_0x5e2fd7;_0x4e06a3['primitives'][_0x36e078(0xf5)]['commandToExecute']['outputTexture']=_0x4e06a3['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];function _0x14b2(_0xa062ae,_0x38608d){const _0x55a282=_0x55a2();return _0x14b2=function(_0x14b2be,_0x1580fe){_0x14b2be=_0x14b2be-0x83;let _0xb4168c=_0x55a282[_0x14b2be];return _0xb4168c;},_0x14b2(_0xa062ae,_0x38608d);}class ParticleSystem{constructor(_0x4bc117,_0xff2396,_0x3ed695,_0x5b3fc0){const _0x2aa02a=_0x19f4f9;this['context']=_0x4bc117,_0xff2396={..._0xff2396},_0xff2396[_0x2aa02a(0x16a)]&&_0xff2396['vdata']&&(_0xff2396[_0x2aa02a(0x168)]={},_0xff2396[_0x2aa02a(0x168)]['lon']=_0xff2396['cols'],_0xff2396['dimensions']['lat']=_0xff2396[_0x2aa02a(0x11b)],_0xff2396['dimensions']['lev']=_0xff2396['lev']||0x1,_0xff2396['lon']={},_0xff2396['lon']['min']=_0xff2396['xmin'],_0xff2396['lon']['max']=_0xff2396[_0x2aa02a(0xec)],_0xff2396[_0x2aa02a(0xa0)]={},_0xff2396[_0x2aa02a(0xa0)]['min']=_0xff2396['ymin'],_0xff2396['lat']['max']=_0xff2396[_0x2aa02a(0x162)],_0xff2396['lev']={},_0xff2396['lev']['min']=_0xff2396['levmin']??0x1,_0xff2396['lev']['max']=_0xff2396['levmax']??0x1,_0xff2396['U']={},_0xff2396['U'][_0x2aa02a(0xe0)]=new Float32Array(_0xff2396[_0x2aa02a(0x16a)]),_0xff2396['U']['min']=_0xff2396[_0x2aa02a(0x14f)]??Math[_0x2aa02a(0xc8)](..._0xff2396['udata']),_0xff2396['U']['max']=_0xff2396['umax']??Math[_0x2aa02a(0xf2)](..._0xff2396['udata']),_0xff2396['V']={},_0xff2396['V']['array']=new Float32Array(_0xff2396[_0x2aa02a(0x105)]),_0xff2396['V']['min']=_0xff2396['vmin']??Math['min'](..._0xff2396[_0x2aa02a(0x105)]),_0xff2396['V']['max']=_0xff2396[_0x2aa02a(0xd3)]??Math['max'](..._0xff2396[_0x2aa02a(0x105)])),this['data']=_0xff2396,this[_0x2aa02a(0xa6)]=_0x3ed695,this['viewerParameters']=_0x5b3fc0,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this[_0x2aa02a(0x140)]=new ParticlesRendering(this['context'],this['data'],this['options'],this[_0x2aa02a(0xa8)],this[_0x2aa02a(0xa4)]);}['canvasResize'](_0x48e916){const _0x6cacbc=_0x19f4f9;this['particlesComputing']['destroyParticlesTextures'](),Object[_0x6cacbc(0xc3)](this['particlesComputing']['windTextures'])['forEach'](_0x1af2a7=>{const _0xe9b7b8=_0x6cacbc;this['particlesComputing']['windTextures'][_0x1af2a7][_0xe9b7b8(0xc5)]();}),this[_0x6cacbc(0x140)]['textures'][_0x6cacbc(0xd9)]['destroy'](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0xd4b801=>{this['particlesRendering']['framebuffers'][_0xd4b801]['destroy']();}),this['context']=_0x48e916,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0x6cacbc(0xa6)],this['viewerParameters']),this[_0x6cacbc(0x140)]=new ParticlesRendering(this['context'],this[_0x6cacbc(0x94)],this['options'],this[_0x6cacbc(0xa8)],this['particlesComputing']);}['clearFramebuffers'](){const _0xf2a8d4=_0x19f4f9,_0x478f16=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass'][_0xf2a8d4(0xab)]});Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x2754c1=>{const _0x296849=_0xf2a8d4;_0x478f16[_0x296849(0x138)]=this['particlesRendering']['framebuffers'][_0x2754c1],_0x478f16['execute'](this['context']);});}[_0x19f4f9(0xea)](_0x4f4d73){const _0x57ec3b=_0x19f4f9;this[_0x57ec3b(0xbf)](),this['particlesComputing']['destroyParticlesTextures'](),this[_0x57ec3b(0xa4)]['createParticlesTextures'](this['context'],this['options'],this['viewerParameters']);if(_0x4f4d73){const _0x5588ec=this['particlesRendering']['createSegmentsGeometry'](this['options']);this[_0x57ec3b(0x140)]['primitives'][_0x57ec3b(0x159)]['geometry']=_0x5588ec;const _0x35e93c=Cesium$2[_0x57ec3b(0xce)]['fromGeometry']({'context':this[_0x57ec3b(0x10f)],'geometry':_0x5588ec,'attributeLocations':this['particlesRendering'][_0x57ec3b(0x9c)][_0x57ec3b(0x159)][_0x57ec3b(0x8c)],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});this['particlesRendering']['primitives']['segments'][_0x57ec3b(0x9e)]['vertexArray']=_0x35e93c;}}['setOptions'](_0x36500c){const _0x59562b=_0x19f4f9;let _0x987ce8=![];this['options'][_0x59562b(0xba)]!==_0x36500c[_0x59562b(0xba)]&&(_0x987ce8=!![]),Object['keys'](_0x36500c)['forEach'](_0xc6e628=>{this['options'][_0xc6e628]=_0x36500c[_0xc6e628];}),this[_0x59562b(0xea)](_0x987ce8);}[_0x19f4f9(0x11d)](_0x13dd2f){const _0x1183fb=_0x19f4f9;Object['keys'](_0x13dd2f)['forEach'](_0x427927=>{this['viewerParameters'][_0x427927]=_0x13dd2f[_0x427927];}),this[_0x1183fb(0xea)](![]);}['destroy'](){const _0x4c737f=_0x19f4f9;clearTimeout(this['canrefresh']),this[_0x4c737f(0xa4)]['destroyParticlesTextures'](),Object['keys'](this[_0x4c737f(0xa4)]['windTextures'])['forEach'](_0x415349=>{this['particlesComputing']['windTextures'][_0x415349]['destroy']();}),this['particlesRendering'][_0x4c737f(0xfb)]['colorTable']['destroy'](),Object[_0x4c737f(0xc3)](this['particlesRendering']['framebuffers'])['forEach'](_0x499b56=>{this['particlesRendering']['framebuffers'][_0x499b56]['destroy']();});for(const _0x7411a in this){delete this[_0x7411a];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':[_0x19f4f9(0xed)]};class WindLayer extends BaseLayer$1{constructor(_0x469764={}){_0x469764={...DEF_OPTIONS,..._0x469764},super(_0x469764),this['_setOptionsHook'](_0x469764);}get[_0x19f4f9(0x95)](){return this['primitives'];}get['data'](){return this['_data'];}set[_0x19f4f9(0x94)](_0x5479a5){this['setData'](_0x5479a5);}get['colors'](){const _0x2f4562=_0x19f4f9;return this['options'][_0x2f4562(0x85)];}set['colors'](_0x33accc){const _0x330299=_0x19f4f9;this['options'][_0x330299(0x85)]=_0x33accc,this['particleSystem']&&this[_0x330299(0xa3)]['setOptions']({'colors':_0x33accc}),this[_0x330299(0x10a)]();}['_mountedHook'](){}[_0x19f4f9(0xaf)](){const _0x5b38a4=_0x19f4f9;this[_0x5b38a4(0x15e)]=this['_map']['scene'],this['camera']=this['_map']['camera'],this['primitives']=new Cesium$1['PrimitiveCollection'](),this[_0x5b38a4(0x15c)]['scene']['primitives']['add'](this['primitives']),this[_0x5b38a4(0xa8)]={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this[_0x5b38a4(0x126)]=new Cesium$1['BoundingSphere'](Cesium$1[_0x5b38a4(0x8a)]['ZERO'],0.99*0x615299),this[_0x5b38a4(0x14d)](),window['addEventListener']('resize',this['resize'][_0x5b38a4(0x15f)](this),![]),this['mouse_down']=![],this['mouse_move']=![],this[_0x5b38a4(0x15c)]['on'](mars3d__namespace[_0x5b38a4(0x98)]['wheel'],this[_0x5b38a4(0xd7)],this),this['_map']['on'](mars3d__namespace[_0x5b38a4(0x98)]['mouseDown'],this['_onMouseDownEvent'],this),this[_0x5b38a4(0x15c)]['on'](mars3d__namespace['EventType'][_0x5b38a4(0x148)],this['_onMouseUpEvent'],this),this[_0x5b38a4(0x15c)]['on'](mars3d__namespace[_0x5b38a4(0x98)][_0x5b38a4(0xd1)],this[_0x5b38a4(0xf9)],this),this['_data']&&this[_0x5b38a4(0xdd)](this['_data']);}['_removedHook'](){const _0xabdf09=_0x19f4f9;window[_0xabdf09(0x103)]('resize',this[_0xabdf09(0x10a)]),this[_0xabdf09(0x15c)][_0xabdf09(0xde)](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['wheel'],this[_0xabdf09(0xd7)],this),this['_map']['off'](mars3d__namespace['EventType'][_0xabdf09(0xe4)],this[_0xabdf09(0xa2)],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this['_map']['scene'][_0xabdf09(0x9c)]['remove'](this['primitives']);}['resize'](){const _0x516086=_0x19f4f9;if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this['primitives']['removeAll'](),this['_map'][_0x516086(0xd4)](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this);}['_onMap_preRenderEvent'](_0x459a1e){const _0x126f4b=_0x19f4f9;this[_0x126f4b(0xa3)]['canvasResize'](this['scene']['context']),this['addPrimitives'](),this[_0x126f4b(0x9c)]['show']=!![];}['_onMapWhellEvent'](_0x4aa89c){clearTimeout(this['refreshTimer']);if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x301203){this['mouse_down']=!![];}[_0x19f4f9(0xf9)](_0x2c366d){const _0xc13829=_0x19f4f9;if(!this['show']||!this['particleSystem'])return;this[_0xc13829(0x111)]&&(this['primitives'][_0xc13829(0x137)]=![],this['mouse_move']=!![]);}[_0x19f4f9(0x136)](_0x241791){const _0x45d23d=_0x19f4f9;if(!this['show']||!this[_0x45d23d(0xa3)])return;this['mouse_down']&&this['mouse_move']&&this[_0x45d23d(0xa7)](),this[_0x45d23d(0x9c)][_0x45d23d(0x137)]=!![],this['mouse_down']=![],this[_0x45d23d(0x14b)]=![];}[_0x19f4f9(0xa7)](){const _0x15be6e=_0x19f4f9;if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this[_0x15be6e(0xa3)]['applyViewerParameters'](this[_0x15be6e(0xa8)]),this['primitives']['show']=!![];}[_0x19f4f9(0xdd)](_0x2ab967){const _0x393d84=_0x19f4f9;this['_data']=_0x2ab967,this['particleSystem']&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this['scene']['context'],_0x2ab967,this[_0x393d84(0x172)](),this[_0x393d84(0xa8)]),this['addPrimitives']();}['_setOptionsHook'](_0x485675,_0x4bd2cd){const _0x5eacda=_0x19f4f9;if(_0x485675)for(const _0x3aa4e4 in _0x485675){this[_0x3aa4e4]=_0x485675[_0x3aa4e4];}this['particleSystem']&&this[_0x5eacda(0xa3)][_0x5eacda(0x16d)](this['getOptions']());}['getOptions'](){const _0x241022=_0x19f4f9,_0x584565=Math[_0x241022(0x122)](Math['sqrt'](this['particlesNumber']));return this['particlesNumber']=_0x584565*_0x584565,{'particlesTextureSize':_0x584565,'maxParticles':this['particlesNumber'],'particleHeight':this['fixedHeight'],'fadeOpacity':this[_0x241022(0x130)],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this['colors']};}['addPrimitives'](){const _0x221267=_0x19f4f9;this['primitives']['add'](this['particleSystem']['particlesComputing'][_0x221267(0x9c)]['getWind']),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives']['updateSpeed']),this['primitives'][_0x221267(0x12e)](this['particleSystem']['particlesComputing']['primitives']['updatePosition']),this['primitives']['add'](this['particleSystem']['particlesComputing'][_0x221267(0x9c)][_0x221267(0x104)]),this['primitives'][_0x221267(0x12e)](this['particleSystem']['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives']['add'](this['particleSystem'][_0x221267(0x140)]['primitives'][_0x221267(0x159)]),this['primitives']['add'](this[_0x221267(0xa3)]['particlesRendering']['primitives']['trails']),this['primitives'][_0x221267(0x12e)](this[_0x221267(0xa3)]['particlesRendering']['primitives']['screen']);}['updateViewerParameters'](){const _0xdeec07=_0x19f4f9;let _0x40a3f0=this['camera']['computeViewRectangle'](this[_0xdeec07(0x15e)][_0xdeec07(0x8b)][_0xdeec07(0xb7)]);if(!_0x40a3f0){const _0x2fc09e=this['_map']['getExtent']();_0x40a3f0=Cesium$1['Rectangle'][_0xdeec07(0xf1)](_0x2fc09e['xmin'],_0x2fc09e['ymin'],_0x2fc09e['xmax'],_0x2fc09e['ymax']);}const _0x4ce5b0=Util[_0xdeec07(0x11e)](_0x40a3f0);this[_0xdeec07(0xa8)]['lonRange']['x']=_0x4ce5b0['lon']['min'],this['viewerParameters'][_0xdeec07(0x155)]['y']=_0x4ce5b0[_0xdeec07(0x13a)]['max'],this[_0xdeec07(0xa8)]['latRange']['x']=_0x4ce5b0['lat']['min'],this[_0xdeec07(0xa8)]['latRange']['y']=_0x4ce5b0['lat']['max'];const _0x4c5dc0=this[_0xdeec07(0xee)]['getPixelSize'](this['globeBoundingSphere'],this['scene']['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0x4c5dc0>0x0&&(this[_0xdeec07(0xa8)]['pixelSize']=_0x4c5dc0);}}mars3d__namespace['LayerUtil']['register'](_0x19f4f9(0x129),WindLayer),mars3d__namespace[_0x19f4f9(0x95)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0x30d441=_0x19f4f9;this['lng']=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this[_0x30d441(0xb5)]=null;}['destroy'](){for(const _0x202201 in this){delete this[_0x202201];}}}class CanvasWindField{constructor(_0x13f7eb){this['setOptions'](_0x13f7eb);}get[_0x19f4f9(0x10b)](){const _0x51d7b5=_0x19f4f9;return this[_0x51d7b5(0x9b)];}set['speedRate'](_0x26df05){const _0x34ac61=_0x19f4f9;this['_speedRate']=(0x64-(_0x26df05>0x63?0x63:_0x26df05))*0x64,this['_calc_speedRate']=[(this['xmax']-this[_0x34ac61(0xd8)])/this[_0x34ac61(0x9b)],(this['ymax']-this[_0x34ac61(0xb2)])/this['_speedRate']];}get[_0x19f4f9(0xc1)](){return this['_maxAge'];}set[_0x19f4f9(0xc1)](_0x4d603d){this['_maxAge']=_0x4d603d;}['setOptions'](_0x2edd6e){this['options']=_0x2edd6e,this['maxAge']=_0x2edd6e['maxAge']||0x78,this['speedRate']=_0x2edd6e['speedRate']||0x32,this['particles']=[];const _0x5b2274=_0x2edd6e['particlesNumber']||0x1000;for(let _0x1e4fa3=0x0;_0x1e4fa3<_0x5b2274;_0x1e4fa3++){const _0x247a76=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x247a76);}}['setDate'](_0x507ae6){const _0x492a37=_0x19f4f9;this[_0x492a37(0x11b)]=_0x507ae6['rows'],this[_0x492a37(0x139)]=_0x507ae6['cols'],this['xmin']=_0x507ae6[_0x492a37(0xd8)],this['xmax']=_0x507ae6['xmax'],this['ymin']=_0x507ae6['ymin'],this['ymax']=_0x507ae6[_0x492a37(0x162)],this['grid']=[];const _0x5bbf32=_0x507ae6[_0x492a37(0x16a)],_0x24bead=_0x507ae6['vdata'];let _0x41373f=![];_0x5bbf32['length']===this[_0x492a37(0x11b)]&&_0x5bbf32[0x0]['length']===this['cols']&&(_0x41373f=!![]);let _0x5d6008=0x0,_0x5f4ea2=null,_0xb9dda7=null;for(let _0x4ad367=0x0;_0x4ad367<this['rows'];_0x4ad367++){_0x5f4ea2=[];for(let _0xc26e21=0x0;_0xc26e21<this['cols'];_0xc26e21++,_0x5d6008++){_0x41373f?_0xb9dda7=this[_0x492a37(0x134)](_0x5bbf32[_0x4ad367][_0xc26e21],_0x24bead[_0x4ad367][_0xc26e21]):_0xb9dda7=this['_calcUV'](_0x5bbf32[_0x5d6008],_0x24bead[_0x5d6008]),_0x5f4ea2['push'](_0xb9dda7);}this['grid']['push'](_0x5f4ea2);}this[_0x492a37(0xa6)]['reverseY']&&this[_0x492a37(0xd6)][_0x492a37(0x84)]();}['clear'](){const _0x4d62eb=_0x19f4f9;delete this['rows'],delete this['cols'],delete this[_0x4d62eb(0xd8)],delete this['xmax'],delete this[_0x4d62eb(0xb2)],delete this['ymax'],delete this['grid'],delete this['particles'];}['toGridXY'](_0x499030,_0x5c097d){const _0x492905=_0x19f4f9,_0x2b9265=(_0x499030-this[_0x492905(0xd8)])/(this['xmax']-this['xmin'])*(this['cols']-0x1),_0xfa728c=(this['ymax']-_0x5c097d)/(this['ymax']-this['ymin'])*(this['rows']-0x1);return[_0x2b9265,_0xfa728c];}['getUVByXY'](_0x2f1cb9,_0x257605){const _0x592ed7=_0x19f4f9;if(_0x2f1cb9<0x0||_0x2f1cb9>=this[_0x592ed7(0x139)]||_0x257605>=this['rows'])return[0x0,0x0,0x0];const _0x6ce094=Math['floor'](_0x2f1cb9),_0x6aa0ad=Math['floor'](_0x257605);if(_0x6ce094===_0x2f1cb9&&_0x6aa0ad===_0x257605)return this['grid'][_0x257605][_0x2f1cb9];const _0x4a4b9b=_0x6ce094+0x1,_0x27b1f3=_0x6aa0ad+0x1,_0x5ea464=this[_0x592ed7(0x96)](_0x6ce094,_0x6aa0ad),_0x53a14f=this['getUVByXY'](_0x4a4b9b,_0x6aa0ad),_0x137403=this['getUVByXY'](_0x6ce094,_0x27b1f3),_0x157c14=this[_0x592ed7(0x96)](_0x4a4b9b,_0x27b1f3);let _0x49225b=null;try{_0x49225b=this[_0x592ed7(0xbc)](_0x2f1cb9-_0x6ce094,_0x257605-_0x6aa0ad,_0x5ea464,_0x53a14f,_0x137403,_0x157c14);}catch(_0x3d4e3f){console['log'](_0x2f1cb9,_0x257605);}return _0x49225b;}[_0x19f4f9(0xbc)](_0x2994e6,_0xdb6839,_0x55295a,_0x18bb9b,_0x149732,_0x5741aa){const _0x1fdc04=_0x19f4f9,_0x39158d=0x1-_0x2994e6,_0x2cfd9f=0x1-_0xdb6839,_0x365d95=_0x39158d*_0x2cfd9f,_0x45eacc=_0x2994e6*_0x2cfd9f,_0x3fe938=_0x39158d*_0xdb6839,_0x58e8d1=_0x2994e6*_0xdb6839,_0x567ffc=_0x55295a[0x0]*_0x365d95+_0x18bb9b[0x0]*_0x45eacc+_0x149732[0x0]*_0x3fe938+_0x5741aa[0x0]*_0x58e8d1,_0x1979ff=_0x55295a[0x1]*_0x365d95+_0x18bb9b[0x1]*_0x45eacc+_0x149732[0x1]*_0x3fe938+_0x5741aa[0x1]*_0x58e8d1;return this[_0x1fdc04(0x134)](_0x567ffc,_0x1979ff);}[_0x19f4f9(0x134)](_0x5470c9,_0x434f65){return[+_0x5470c9,+_0x434f65,Math['sqrt'](_0x5470c9*_0x5470c9+_0x434f65*_0x434f65)];}['getUVByPoint'](_0xacd70,_0x48414d){const _0x2409ad=_0x19f4f9;if(!this[_0x2409ad(0xae)](_0xacd70,_0x48414d))return null;const _0x1f9e92=this[_0x2409ad(0xd5)](_0xacd70,_0x48414d),_0x1e7992=this['getUVByXY'](_0x1f9e92[0x0],_0x1f9e92[0x1]);return _0x1e7992;}['isInExtent'](_0x5d3c64,_0x3bd20c){const _0x118fdc=_0x19f4f9;return _0x5d3c64>=this['xmin']&&_0x5d3c64<=this[_0x118fdc(0xec)]&&_0x3bd20c>=this['ymin']&&_0x3bd20c<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0xcb6b24=fRandomByfloat(this['xmin'],this['xmax']),_0x5d7b05=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x5d7b05,'lng':_0xcb6b24};}['getParticles'](){const _0x36d03a=_0x19f4f9;let _0x10308d,_0x4482fd,_0x557900;for(let _0x3c02b4=0x0,_0x19a29f=this['particles']['length'];_0x3c02b4<_0x19a29f;_0x3c02b4++){let _0x4ca650=this['particles'][_0x3c02b4];_0x4ca650['age']<=0x0&&(_0x4ca650=this[_0x36d03a(0xdf)](_0x4ca650));if(_0x4ca650['age']>0x0){const _0x20d4df=_0x4ca650['tlng'],_0x3bf8ed=_0x4ca650['tlat'];_0x557900=this[_0x36d03a(0xe1)](_0x20d4df,_0x3bf8ed),_0x557900?(_0x10308d=_0x20d4df+this['_calc_speedRate'][0x0]*_0x557900[0x0],_0x4482fd=_0x3bf8ed+this['_calc_speedRate'][0x1]*_0x557900[0x1],_0x4ca650['lng']=_0x20d4df,_0x4ca650['lat']=_0x3bf8ed,_0x4ca650[_0x36d03a(0xc4)]=_0x10308d,_0x4ca650[_0x36d03a(0x157)]=_0x4482fd,_0x4ca650['age']--):_0x4ca650[_0x36d03a(0xb5)]=0x0;}}return this['particles'];}['_randomParticle'](_0x6774cf){const _0x6fd24=_0x19f4f9;let _0x206b1f,_0x19baf6;for(let _0x23b10e=0x0;_0x23b10e<0x1e;_0x23b10e++){_0x206b1f=this['getRandomLatLng'](),_0x19baf6=this['getUVByPoint'](_0x206b1f['lng'],_0x206b1f['lat']);if(_0x19baf6&&_0x19baf6[0x2]>0x0)break;}if(!_0x19baf6)return _0x6774cf;const _0x334311=_0x206b1f[_0x6fd24(0x152)]+this['_calc_speedRate'][0x0]*_0x19baf6[0x0],_0x4baf18=_0x206b1f[_0x6fd24(0xa0)]+this['_calc_speedRate'][0x1]*_0x19baf6[0x1];return _0x6774cf['lng']=_0x206b1f['lng'],_0x6774cf['lat']=_0x206b1f[_0x6fd24(0xa0)],_0x6774cf[_0x6fd24(0xc4)]=_0x334311,_0x6774cf['tlat']=_0x4baf18,_0x6774cf[_0x6fd24(0xb5)]=Math['round'](Math['random']()*this[_0x6fd24(0xc1)]),_0x6774cf;}['destroy'](){for(const _0x9366f5 in this){delete this[_0x9366f5];}}}function fRandomByfloat(_0x38d8b5,_0x21a22e){return _0x38d8b5+Math['random']()*(_0x21a22e-_0x38d8b5);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x522434={}){super(_0x522434),this['_setOptionsHook'](_0x522434),this['canvas']=null;}['_setOptionsHook'](_0x189566,_0x2ac194){const _0x27abd5=_0x19f4f9;this['frameTime']=0x3e8/(_0x189566['frameRate']||0xa),this['_pointerEvents']=this['options'][_0x27abd5(0x12d)]??![],this[_0x27abd5(0xcd)]=_0x189566['color']||'#ffffff',this['lineWidth']=_0x189566['lineWidth']||0x1,this['fixedHeight']=_0x189566[_0x27abd5(0xbd)]??0x0,this[_0x27abd5(0x118)]=_0x189566['reverseY']??![],this['windField']&&this['windField']['setOptions'](_0x189566);}get['layer'](){return this['canvas'];}get[_0x19f4f9(0xcf)](){const _0x547af1=_0x19f4f9;return this['_map']['scene']['canvas'][_0x547af1(0x113)];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get[_0x19f4f9(0x12d)](){return this['_pointerEvents'];}set['pointerEvents'](_0x17fdb9){const _0x21211c=_0x19f4f9;this['_pointerEvents']=_0x17fdb9;if(!this['canvas'])return;_0x17fdb9?this[_0x21211c(0x11f)]['style']['pointer-events']='all':this['canvas']['style']['pointer-events']='none';}get[_0x19f4f9(0x127)](){const _0x2e72f6=_0x19f4f9;return this['options'][_0x2e72f6(0x127)];}set['particlesNumber'](_0x2949c7){const _0x33e2d2=_0x19f4f9;this['options']['particlesNumber']=_0x2949c7,clearTimeout(this[_0x33e2d2(0x154)]),this['_canrefresh']=setTimeout(()=>{const _0x4187ff=_0x33e2d2;this[_0x4187ff(0xa7)]();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set[_0x19f4f9(0x10b)](_0x373634){const _0x95393a=_0x19f4f9;this['options']['speedRate']=_0x373634,this[_0x95393a(0xdb)]&&(this['windField']['speedRate']=_0x373634);}get['maxAge'](){return this['options']['maxAge'];}set[_0x19f4f9(0xc1)](_0x27ccf5){const _0x1e5484=_0x19f4f9;this[_0x1e5484(0xa6)]['maxAge']=_0x27ccf5,this['windField']&&(this[_0x1e5484(0xdb)]['maxAge']=_0x27ccf5);}get[_0x19f4f9(0x94)](){return this['windData'];}set['data'](_0xdfddc3){this['setData'](_0xdfddc3);}['_showHook'](_0x6f1fbd){const _0x2eed9f=_0x19f4f9;_0x6f1fbd?this[_0x2eed9f(0xaf)]():(this['windData']&&(this['options']['data']=this[_0x2eed9f(0xad)]),this['_removedHook']());}['_mountedHook'](){this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){const _0x96b1e=_0x19f4f9;this['canvas']=this[_0x96b1e(0x169)](),this['canvasContext']=this['canvas'][_0x96b1e(0xc2)]('2d',{'willReadFrequently':!![]}),this[_0x96b1e(0x125)](),this['options']['data']&&this['setData'](this['options'][_0x96b1e(0x94)]);}['_removedHook'](){const _0x27cc5e=_0x19f4f9;this['clear'](),this[_0x27cc5e(0xa1)](),this['canvas']&&(this['_map']['container'][_0x27cc5e(0x8d)](this['canvas']),delete this[_0x27cc5e(0x11f)]);}[_0x19f4f9(0x169)](){const _0x1b1f89=_0x19f4f9,_0x3e913a=mars3d__namespace['DomUtil']['create']('canvas','mars3d-canvasWind',this['_map']['container']);return _0x3e913a['style']['position']='absolute',_0x3e913a['style']['top']='0px',_0x3e913a[_0x1b1f89(0x132)][_0x1b1f89(0x99)]=_0x1b1f89(0x141),_0x3e913a['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',_0x3e913a[_0x1b1f89(0x132)]['height']=this['_map']['scene']['canvas']['clientHeight']+'px',_0x3e913a['style'][_0x1b1f89(0x12d)]=this['_pointerEvents']?_0x1b1f89(0x12f):'none',_0x3e913a['style']['zIndex']=this['options']['zIndex']??0x9,_0x3e913a[_0x1b1f89(0xb0)]=this['_map']['scene']['canvas']['clientWidth'],_0x3e913a['height']=this[_0x1b1f89(0x15c)]['scene'][_0x1b1f89(0x11f)]['clientHeight'],_0x3e913a;}['resize'](){const _0x595f2b=_0x19f4f9;this['canvas']&&(this['canvas'][_0x595f2b(0x132)][_0x595f2b(0xb0)]=this['_map']['scene']['canvas']['clientWidth']+'px',this[_0x595f2b(0x11f)]['style'][_0x595f2b(0x167)]=this['_map']['scene']['canvas'][_0x595f2b(0xeb)]+'px',this['canvas']['width']=this['_map'][_0x595f2b(0x15e)]['canvas']['clientWidth'],this['canvas']['height']=this['_map'][_0x595f2b(0x15e)]['canvas']['clientHeight']);}['bindEvent'](){const _0x364f59=_0x19f4f9,_0x390724=this;let _0x1647be=Date['now']();(function _0xf8f4e(){const _0x32ae33=_0x14b2;_0x390724['animateFrame']=window['requestAnimationFrame'](_0xf8f4e);if(_0x390724['show']&&_0x390724['windField']){const _0x142566=Date[_0x32ae33(0xb9)](),_0x2a2706=_0x142566-_0x1647be;_0x2a2706>_0x390724['frameTime']&&(_0x1647be=_0x142566-_0x2a2706%_0x390724['frameTime'],_0x390724[_0x32ae33(0x117)]());}}(),window['addEventListener'](_0x364f59(0x10a),this['resize']['bind'](this),![]),this[_0x364f59(0x111)]=![],this[_0x364f59(0x14b)]=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this[_0x364f59(0xd7)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x364f59(0x98)][_0x364f59(0x148)],this[_0x364f59(0x136)],this)));}['unbindEvent'](){const _0x519ec0=_0x19f4f9;window[_0x519ec0(0x150)](this['animateFrame']),delete this['animateFrame'],window[_0x519ec0(0x103)](_0x519ec0(0x10a),this['resize']),this[_0x519ec0(0xa6)][_0x519ec0(0x9a)]&&(this[_0x519ec0(0x15c)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x519ec0(0x15c)]['off'](mars3d__namespace[_0x519ec0(0x98)]['mouseDown'],this['_onMouseDownEvent'],this),this[_0x519ec0(0x15c)][_0x519ec0(0xde)](mars3d__namespace['EventType'][_0x519ec0(0x148)],this[_0x519ec0(0x136)],this),this[_0x519ec0(0x15c)]['off'](mars3d__namespace['EventType'][_0x519ec0(0xd1)],this['_onMouseMoveEvent'],this));}[_0x19f4f9(0xd7)](_0x4f7f0a){const _0x51d8f5=_0x19f4f9;clearTimeout(this[_0x51d8f5(0xe5)]);if(!this[_0x51d8f5(0x137)]||!this['canvas'])return;this['canvas']['style']['visibility']='hidden',this['refreshTimer']=setTimeout(()=>{const _0x41a471=_0x51d8f5;if(!this['show'])return;this['redraw'](),this[_0x41a471(0x11f)]['style']['visibility']=_0x41a471(0x107);},0xc8);}['_onMouseDownEvent'](_0x518529){const _0xc2edb7=_0x19f4f9;this['mouse_down']=!![],this[_0xc2edb7(0x15c)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this[_0xc2edb7(0x15c)]['on'](mars3d__namespace['EventType']['mouseMove'],this[_0xc2edb7(0xf9)],this);}['_onMouseMoveEvent'](_0x51aed5){const _0xdffd39=_0x19f4f9;if(!this['show']||!this['canvas'])return;this[_0xdffd39(0x111)]&&(this[_0xdffd39(0x11f)]['style']['visibility']='hidden',this[_0xdffd39(0x14b)]=!![]);}['_onMouseUpEvent'](_0x91d268){const _0x36e873=_0x19f4f9;if(!this['show']||!this[_0x36e873(0x11f)])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this[_0x36e873(0x111)]&&this['mouse_move']&&this['redraw'](),this['canvas']['style']['visibility']='visible',this['mouse_down']=![],this[_0x36e873(0x14b)]=![];}['setData'](_0x47bc1b){const _0x2682b2=_0x19f4f9;this['clear'](),this[_0x2682b2(0xad)]=_0x47bc1b,this[_0x2682b2(0xdb)]['setDate'](_0x47bc1b),this['redraw']();}['redraw'](){const _0x176d10=_0x19f4f9;if(!this[_0x176d10(0x137)])return;this['windField']['setOptions'](this['options']),this['update']();}[_0x19f4f9(0x117)](){const _0x97519f=_0x19f4f9;if(this['_updateIng'])return;this['_updateIng']=!![];if(this['worker'])this['windField']['update']();else{const _0x2c8d0e=this[_0x97519f(0xdb)]['getParticles']();this['_drawLines'](_0x2c8d0e);}this['_updateIng']=![];}['_drawLines'](_0x17d9db){const _0x5e109d=_0x19f4f9;this['canvasContext']['globalCompositeOperation']=_0x5e109d(0xdc),this[_0x5e109d(0x165)][_0x5e109d(0x14e)](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter',this[_0x5e109d(0x165)]['globalAlpha']=0.9,this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x5e109d(0x11a)],this[_0x5e109d(0x165)]['strokeStyle']=this[_0x5e109d(0xcd)];const _0x242787=this['_map']['scene'][_0x5e109d(0xfd)]!==Cesium['SceneMode'][_0x5e109d(0x110)],_0x14fb97=this[_0x5e109d(0xcf)]*0.25;for(let _0xfecbf4=0x0,_0x2d911a=_0x17d9db['length'];_0xfecbf4<_0x2d911a;_0xfecbf4++){const _0x1d6371=_0x17d9db[_0xfecbf4],_0x231459=this[_0x5e109d(0x100)](_0x1d6371[_0x5e109d(0x152)],_0x1d6371[_0x5e109d(0xa0)],_0x1d6371),_0x35a3ee=this[_0x5e109d(0x100)](_0x1d6371[_0x5e109d(0xc4)],_0x1d6371['tlat'],_0x1d6371);if(!_0x231459||!_0x35a3ee)continue;if(_0x242787&&Math[_0x5e109d(0xf7)](_0x231459[0x0]-_0x35a3ee[0x0])>=_0x14fb97)continue;this[_0x5e109d(0x165)]['moveTo'](_0x231459[0x0],_0x231459[0x1]),this[_0x5e109d(0x165)]['lineTo'](_0x35a3ee[0x0],_0x35a3ee[0x1]);}this['canvasContext'][_0x5e109d(0x131)]();}['_tomap'](_0x2181eb,_0x1f4881,_0x3f5ac4){const _0x13a48f=_0x19f4f9,_0x2bd393=Cesium['Cartesian3']['fromDegrees'](_0x2181eb,_0x1f4881,this[_0x13a48f(0xbd)]),_0x14d455=this['_map']['scene'];if(_0x14d455['mode']===Cesium['SceneMode']['SCENE3D']){const _0x3fd86a=new Cesium['EllipsoidalOccluder'](_0x14d455[_0x13a48f(0x8b)]['ellipsoid'],_0x14d455['camera']['positionWC']),_0x2cf7f3=_0x3fd86a[_0x13a48f(0x16f)](_0x2bd393);if(!_0x2cf7f3)return _0x3f5ac4['age']=0x0,null;}const _0x422dda=Cesium['SceneTransforms'][_0x13a48f(0x114)](this['_map'][_0x13a48f(0x15e)],_0x2bd393);return _0x422dda?[_0x422dda['x'],_0x422dda['y']]:null;}['clear'](){const _0x17715c=_0x19f4f9;this['windField'][_0x17715c(0xcc)](),delete this['windData'];}[_0x19f4f9(0xef)](){const _0x74939c=_0x19f4f9;this['worker']=new Worker(this['options'][_0x74939c(0x16e)]),this['worker']['onmessage']=_0x1796cb=>{const _0x365255=_0x74939c;this[_0x365255(0xfe)](_0x1796cb['data'][_0x365255(0x88)]),this['_updateIng2']=![];},this['windField']={'init':_0x3820e1=>{const _0x8bb263=_0x74939c;this['worker'][_0x8bb263(0xca)]({'type':'init','options':_0x3820e1});},'setOptions':_0x31c764=>{const _0x5a97a2=_0x74939c;this['worker']['postMessage']({'type':_0x5a97a2(0x16d),'options':_0x31c764});},'setDate':_0x522adc=>{const _0x57493b=_0x74939c;this['worker']['postMessage']({'type':_0x57493b(0x101),'data':_0x522adc});},'update':()=>{const _0x8e7a56=_0x74939c;if(this['_updateIng2'])return;this[_0x8e7a56(0x142)]=!![],this['worker']['postMessage']({'type':_0x8e7a56(0x117)});},'clear':()=>{this['worker']['postMessage']({'type':'clear'});}},this['windField'][_0x74939c(0x97)](this['options']);}}mars3d__namespace['LayerUtil']['register'](_0x19f4f9(0x13c),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x19f4f9(0x158)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x19f4f9(0xe3)]=WindUtil,Object[_0x19f4f9(0x120)](exports,'__esModule',{'value':!![]});
15
15
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.5.17",
3
+ "version": "3.5.18",
4
4
  "description": "Mars3D平台插件,支持气象 风向图 功能插件",
5
5
  "main": "dist/mars3d-wind.js",
6
6
  "files": [
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "peerDependencies": {},
10
10
  "devDependencies": {
11
- "mars3d": "~3.5.17"
11
+ "mars3d": "~3.5.18"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"