'use strict';const _0x3412fe=_0x4f2c;(function(_0x2386fd,_0x710534){const _0x4dbe12=_0x4f2c,_0x363bec=_0x2386fd();while(!![]){try{const _0x29d9bc=-parseInt(_0x4dbe12(0x1f9))/0x1+-parseInt(_0x4dbe12(0x1cd))/0x2+-parseInt(_0x4dbe12(0x1e4))/0x3+parseInt(_0x4dbe12(0x1ff))/0x4*(parseInt(_0x4dbe12(0x1a5))/0x5)+-parseInt(_0x4dbe12(0x25b))/0x6+parseInt(_0x4dbe12(0x277))/0x7+parseInt(_0x4dbe12(0x1df))/0x8*(parseInt(_0x4dbe12(0x204))/0x9);if(_0x29d9bc===_0x710534)break;else _0x363bec['push'](_0x363bec['shift']());}catch(_0x5204e2){_0x363bec['push'](_0x363bec['shift']());}}}(_0x1688,0x926d3));function _interopNamespace(_0x5e1e19){if(_0x5e1e19&&_0x5e1e19['__esModule'])return _0x5e1e19;var _0x3b6236=Object['create'](null);return _0x5e1e19&&Object['keys'](_0x5e1e19)['forEach'](function(_0x3121e7){if(_0x3121e7!=='default'){var _0x1f8810=Object['getOwnPropertyDescriptor'](_0x5e1e19,_0x3121e7);Object['defineProperty'](_0x3b6236,_0x3121e7,_0x1f8810['get']?_0x1f8810:{'enumerable':!![],'get':function(){return _0x5e1e19[_0x3121e7];}});}}),_0x3b6236['default']=_0x5e1e19,_0x3b6236;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x28b41a,_0x3d31c9){const _0x45e89a=_0x28b41a*Math['cos'](Cesium$7['Math']['toRadians'](_0x3d31c9));return _0x45e89a;}function getV(_0x55c19f,_0x2cd436){const _0x1edad1=_0x4f2c,_0x1deefd=_0x55c19f*Math[_0x1edad1(0x1a1)](Cesium$7[_0x1edad1(0x19a)][_0x1edad1(0x1fb)](_0x2cd436));return _0x1deefd;}function getSpeed(_0x526ff5,_0x2d50c6){const _0x473da9=Math['sqrt'](Math['pow'](_0x526ff5,0x2)+Math['pow'](_0x2d50c6,0x2));return _0x473da9;}function getDirection(_0x3618d8,_0x393eda){let _0x18fe39=Cesium$7['Math']['toDegrees'](Math['atan2'](_0x393eda,_0x3618d8));return _0x18fe39+=_0x18fe39<0x0?0x168:0x0,_0x18fe39;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace[_0x3412fe(0x272)];class CustomPrimitive{constructor(_0x1ef8c2){const _0x375bbc=_0x3412fe;this['commandType']=_0x1ef8c2['commandType'],this[_0x375bbc(0x216)]=_0x1ef8c2['geometry'],this[_0x375bbc(0x27f)]=_0x1ef8c2['attributeLocations'],this[_0x375bbc(0x202)]=_0x1ef8c2[_0x375bbc(0x202)],this[_0x375bbc(0x266)]=_0x1ef8c2['uniformMap'],this['vertexShaderSource']=_0x1ef8c2['vertexShaderSource'],this[_0x375bbc(0x24d)]=_0x1ef8c2['fragmentShaderSource'],this['rawRenderState']=_0x1ef8c2[_0x375bbc(0x26c)],this[_0x375bbc(0x281)]=_0x1ef8c2[_0x375bbc(0x281)],this['outputTexture']=_0x1ef8c2['outputTexture'],this['autoClear']=_0x1ef8c2[_0x375bbc(0x246)]??![],this[_0x375bbc(0x245)]=_0x1ef8c2[_0x375bbc(0x245)],this['show']=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this['autoClear']&&(this[_0x375bbc(0x28c)]=new Cesium$6['ClearCommand']({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE']}));}['createCommand'](_0x2d8b58){const _0x24927f=_0x3412fe;switch(this[_0x24927f(0x26b)]){case'Draw':{const _0x794f5e=Cesium$6['VertexArray'][_0x24927f(0x1f3)]({'context':_0x2d8b58,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x28f52b=Cesium$6[_0x24927f(0x1b7)]['fromCache']({'context':_0x2d8b58,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this[_0x24927f(0x19b)],'fragmentShaderSource':this['fragmentShaderSource']}),_0x52b6f1=Cesium$6['RenderState'][_0x24927f(0x1ab)](this['rawRenderState']);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x28f52b,'vertexArray':_0x794f5e,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x52b6f1,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x24927f(0x1ef)][_0x24927f(0x252)],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6[(_0x24927f(0x22c))]({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this['outputTexture'],'persists':!![]});}}}['setGeometry'](_0x49cceb,_0xe68c44){const _0x4e6379=_0x3412fe;this['geometry']=_0xe68c44;const _0x22a364=Cesium$6[_0x4e6379(0x221)]['fromGeometry']({'context':_0x49cceb,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute'][_0x4e6379(0x249)]=_0x22a364;}['update'](_0x329e79){const _0x18abdc=_0x3412fe;if(!this['show'])return;if(_0x329e79['mode']!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6[_0x18abdc(0x258)](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x329e79[_0x18abdc(0x210)])),Cesium$6[_0x18abdc(0x258)](this['preExecute'])&&this['preExecute'](),Cesium$6[_0x18abdc(0x258)](this[_0x18abdc(0x28c)])&&_0x329e79['commandList']['push'](this[_0x18abdc(0x28c)]),_0x329e79['commandList']['push'](this['commandToExecute']);}['isDestroyed'](){return![];}[_0x3412fe(0x1fe)](){const _0x8d2d2f=_0x3412fe;if(this['clearCommand']){var _0x2a3a24,_0x3b706e;(_0x2a3a24=this['clearCommand'])!==null&&_0x2a3a24!==void 0x0&&_0x2a3a24[_0x8d2d2f(0x249)]&&this['clearCommand'][_0x8d2d2f(0x249)][_0x8d2d2f(0x1fe)](),(_0x3b706e=this[_0x8d2d2f(0x28c)])!==null&&_0x3b706e!==void 0x0&&_0x3b706e['shaderProgram']&&this['clearCommand']['shaderProgram']['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this[_0x8d2d2f(0x1db)]['vertexArray']['destroy'](),this[_0x8d2d2f(0x1db)]['shaderProgram']&&this[_0x8d2d2f(0x1db)]['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x27acf8=function(){const _0xcb1d97=_0x4f2c,_0xfb534=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5[_0xcb1d97(0x1c5)]['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 _0xfb534;},_0x48a027=function(_0x18fbdd,_0x478d44){if(Cesium$5['defined'](_0x478d44)){const _0x2cc60c={};_0x2cc60c['arrayBufferView']=_0x478d44,_0x18fbdd['source']=_0x2cc60c;}const _0x2b31c3=new Cesium$5['Texture'](_0x18fbdd);return _0x2b31c3;},_0x2a2868=function(_0x5477c4,_0x386dcd,_0x48becd){const _0x3f7c5f=_0x4f2c,_0x271162=new Cesium$5[(_0x3f7c5f(0x21b))]({'context':_0x5477c4,'colorTextures':[_0x386dcd],'depthTexture':_0x48becd});return _0x271162;},_0x179352=function(_0x4ca0df){const _0x1f7572=_0x4f2c,_0x9f1207=!![],_0x53266b=![],_0x4b8aef={'viewport':_0x4ca0df[_0x1f7572(0x1ae)],'depthTest':_0x4ca0df['depthTest'],'depthMask':_0x4ca0df['depthMask'],'blending':_0x4ca0df[_0x1f7572(0x203)]},_0x4cb788=Cesium$5['Appearance'][_0x1f7572(0x218)](_0x9f1207,_0x53266b,_0x4b8aef);return _0x4cb788;},_0x4b8615=function(_0x4ad150){const _0xd52694=_0x4f2c,_0xf787b4={},_0x2f42d3=Cesium$5[_0xd52694(0x19a)]['mod'](_0x4ad150['west'],Cesium$5['Math']['TWO_PI']),_0x14572a=Cesium$5['Math']['mod'](_0x4ad150['east'],Cesium$5[_0xd52694(0x19a)]['TWO_PI']),_0xef8fc7=_0x4ad150['width'];let _0xc9f178,_0x6a5178;_0xef8fc7>Cesium$5[_0xd52694(0x19a)][_0xd52694(0x265)]?(_0xc9f178=0x0,_0x6a5178=Cesium$5[_0xd52694(0x19a)][_0xd52694(0x1ac)]):_0x14572a-_0x2f42d3<_0xef8fc7?(_0xc9f178=_0x2f42d3,_0x6a5178=_0x2f42d3+_0xef8fc7):(_0xc9f178=_0x2f42d3,_0x6a5178=_0x14572a);_0xf787b4['lon']={'min':Cesium$5['Math']['toDegrees'](_0xc9f178),'max':Cesium$5['Math']['toDegrees'](_0x6a5178)};const _0x469127=_0x4ad150['south'],_0x4ac5f7=_0x4ad150['north'],_0x13680b=_0x4ad150['height'],_0x5254df=_0x13680b>Cesium$5['Math']['PI']/0xc?_0x13680b/0x2:0x0;let _0x52ec6f=Cesium$5[_0xd52694(0x19a)]['clampToLatitudeRange'](_0x469127-_0x5254df),_0x46cea4=Cesium$5['Math'][_0xd52694(0x1d1)](_0x4ac5f7+_0x5254df);return _0x52ec6f<-Cesium$5['Math'][_0xd52694(0x212)]&&(_0x52ec6f=-Cesium$5['Math'][_0xd52694(0x24a)]),_0x46cea4>Cesium$5['Math']['PI_OVER_THREE']&&(_0x46cea4=Cesium$5['Math'][_0xd52694(0x24a)]),_0xf787b4['lat']={'min':Cesium$5[_0xd52694(0x19a)]['toDegrees'](_0x52ec6f),'max':Cesium$5[_0xd52694(0x19a)]['toDegrees'](_0x46cea4)},_0xf787b4;};return{'getFullscreenQuad':_0x27acf8,'createTexture':_0x48a027,'createFramebuffer':_0x2a2868,'createRawRenderState':_0x179352,'viewRectangleToLonLatRange':_0x4b8615};}());var segmentDraw_vert=_0x3412fe(0x254),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=_0x3412fe(0x285);const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x1ff10c,_0xb01399,_0x4a5c11,_0x1a2661,_0x1d92d7){const _0x273a2f=_0x3412fe;this['createRenderingTextures'](_0x1ff10c,_0xb01399,_0x4a5c11['colors']),this['createRenderingFramebuffers'](_0x1ff10c),this[_0x273a2f(0x21c)](_0x1ff10c,_0x4a5c11,_0x1a2661,_0x1d92d7);}[_0x3412fe(0x255)](_0x38a783,_0x5d2c34,_0x5ee05c){const _0x4ae793=_0x3412fe,_0x38ef0a={'context':_0x38a783,'width':_0x38a783[_0x4ae793(0x1b1)],'height':_0x38a783['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x4ae793(0x1b2)]['RGBA'],'pixelDatatype':Cesium$4[_0x4ae793(0x250)][_0x4ae793(0x1c7)]},_0x90e849={'context':_0x38a783,'width':_0x38a783['drawingBufferWidth'],'height':_0x38a783['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x2a0577=_0x5ee05c['length'],_0x413fec=new Float32Array(_0x2a0577*0x3);for(let _0x4ad365=0x0;_0x4ad365<_0x2a0577;_0x4ad365++){const _0x11dd66=Cesium$4['Color'][_0x4ae793(0x263)](_0x5ee05c[_0x4ad365]);_0x413fec[0x3*_0x4ad365]=_0x11dd66[_0x4ae793(0x19d)],_0x413fec[0x3*_0x4ad365+0x1]=_0x11dd66['green'],_0x413fec[0x3*_0x4ad365+0x2]=_0x11dd66['blue'];}const _0x2d4dfe={'context':_0x38a783,'width':_0x2a0577,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype'][_0x4ae793(0x1c9)],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter'][_0x4ae793(0x233)],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x38ef0a),'segmentsDepth':Util['createTexture'](_0x90e849),'currentTrailsColor':Util['createTexture'](_0x38ef0a),'currentTrailsDepth':Util[_0x4ae793(0x1a0)](_0x90e849),'nextTrailsColor':Util['createTexture'](_0x38ef0a),'nextTrailsDepth':Util[_0x4ae793(0x1a0)](_0x90e849),'colorTable':Util['createTexture'](_0x2d4dfe,_0x413fec)};}['createRenderingFramebuffers'](_0x525bdc){const _0x105cfc=_0x3412fe;this['framebuffers']={'segments':Util['createFramebuffer'](_0x525bdc,this['textures']['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x525bdc,this['textures'][_0x105cfc(0x1cf)],this['textures'][_0x105cfc(0x1ad)]),'nextTrails':Util['createFramebuffer'](_0x525bdc,this[_0x105cfc(0x1f6)][_0x105cfc(0x247)],this[_0x105cfc(0x1f6)][_0x105cfc(0x22b)])};}['createSegmentsGeometry'](_0x37f96f){const _0x2f06d5=_0x3412fe,_0x1196dd=0x4;let _0x7c85ae=[];for(let _0x2c3a7a=0x0;_0x2c3a7a<_0x37f96f['particlesTextureSize'];_0x2c3a7a++){for(let _0x540892=0x0;_0x540892<_0x37f96f['particlesTextureSize'];_0x540892++){for(let _0x4d0ff9=0x0;_0x4d0ff9<_0x1196dd;_0x4d0ff9++){_0x7c85ae['push'](_0x2c3a7a/_0x37f96f['particlesTextureSize']),_0x7c85ae['push'](_0x540892/_0x37f96f['particlesTextureSize']);}}}_0x7c85ae=new Float32Array(_0x7c85ae);let _0x2b6ba4=[];const _0x29c6e6=[-0x1,0x1],_0x3ef985=[-0x1,0x1];for(let _0x57a769=0x0;_0x57a769<_0x37f96f['maxParticles'];_0x57a769++){for(let _0x4df2a8=0x0;_0x4df2a8<_0x1196dd/0x2;_0x4df2a8++){for(let _0x3405c9=0x0;_0x3405c9<_0x1196dd/0x2;_0x3405c9++){_0x2b6ba4[_0x2f06d5(0x262)](_0x29c6e6[_0x4df2a8]),_0x2b6ba4[_0x2f06d5(0x262)](_0x3ef985[_0x3405c9]),_0x2b6ba4['push'](0x0);}}}_0x2b6ba4=new Float32Array(_0x2b6ba4);const _0x8a181e=0x6*_0x37f96f['maxParticles'],_0x306dbe=new Uint32Array(_0x8a181e);for(let _0x348bef=0x0,_0x27970f=0x0,_0x51fbeb=0x0;_0x348bef<_0x37f96f['maxParticles'];_0x348bef++){_0x306dbe[_0x27970f++]=_0x51fbeb+0x0,_0x306dbe[_0x27970f++]=_0x51fbeb+0x1,_0x306dbe[_0x27970f++]=_0x51fbeb+0x2,_0x306dbe[_0x27970f++]=_0x51fbeb+0x2,_0x306dbe[_0x27970f++]=_0x51fbeb+0x1,_0x306dbe[_0x27970f++]=_0x51fbeb+0x3,_0x51fbeb+=0x4;}const _0x3cfe88=new Cesium$4[(_0x2f06d5(0x273))]({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x7c85ae}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x2b6ba4})}),'indices':_0x306dbe});return _0x3cfe88;}['createRenderingPrimitives'](_0x375e9d,_0x2190f9,_0x1a5d8c,_0x1bc6de){const _0x1197b2=_0x3412fe,_0x2a1646=this;this[_0x1197b2(0x225)]={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x1197b2(0x23c)](_0x2190f9),'primitiveType':Cesium$4[_0x1197b2(0x201)][_0x1197b2(0x1d7)],'uniformMap':{'currentParticlesPosition':function(){const _0x5ad95e=_0x1197b2;return _0x1bc6de[_0x5ad95e(0x23a)][_0x5ad95e(0x24c)];},'postProcessingPosition':function(){const _0x4080f4=_0x1197b2;return _0x1bc6de[_0x4080f4(0x23a)][_0x4080f4(0x23e)];},'postProcessingSpeed':function(){return _0x1bc6de['particlesTextures']['postProcessingSpeed'];},'colorTable':function(){return _0x2a1646['textures']['colorTable'];},'aspect':function(){return _0x375e9d['drawingBufferWidth']/_0x375e9d['drawingBufferHeight'];},'pixelSize':function(){return _0x1a5d8c['pixelSize'];},'lineWidth':function(){const _0x277cb=_0x1197b2;return _0x2190f9[_0x277cb(0x25f)];},'particleHeight':function(){const _0x440ce0=_0x1197b2;return _0x2190f9[_0x440ce0(0x278)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4[(_0x1197b2(0x22d))]({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x1197b2(0x1d6)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0x1197b2(0x1d0)](),'primitiveType':Cesium$4[_0x1197b2(0x201)][_0x1197b2(0x1d7)],'uniformMap':{'segmentsColorTexture':function(){const _0x96ab6d=_0x1197b2;return _0x2a1646[_0x96ab6d(0x1f6)]['segmentsColor'];},'segmentsDepthTexture':function(){return _0x2a1646['textures']['segmentsDepth'];},'currentTrailsColor':function(){const _0x3c44c0=_0x1197b2;return _0x2a1646['framebuffers']['currentTrails'][_0x3c44c0(0x1e8)](0x0);},'trailsDepthTexture':function(){return _0x2a1646['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){const _0x143774=_0x1197b2;return _0x2190f9[_0x143774(0x261)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x1197b2(0x27d)],'sources':[trailDraw_frag]}),'rawRenderState':Util[_0x1197b2(0x27a)]({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction'][_0x1197b2(0x200)]},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x1cf71f=_0x1197b2,_0x23e79a=_0x2a1646['framebuffers']['currentTrails'];_0x2a1646['framebuffers']['currentTrails']=_0x2a1646['framebuffers']['nextTrails'],_0x2a1646['framebuffers']['nextTrails']=_0x23e79a,_0x2a1646['primitives']['trails']['commandToExecute']['framebuffer']=_0x2a1646['framebuffers'][_0x1cf71f(0x1a7)],_0x2a1646['primitives']['trails']['clearCommand']['framebuffer']=_0x2a1646['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x1197b2(0x201)]['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){const _0x553954=_0x1197b2;return _0x2a1646[_0x553954(0x21d)]['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x2ba937=_0x1197b2;return _0x2a1646[_0x2ba937(0x21d)]['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x1197b2(0x27d)],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag='//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x,\x20360.0);\x0a\x20\x20\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20-90.0,\x2090.0);\x0a\x0a\x20\x20\x20\x20vec3\x20index3D\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20index3D.z\x20=\x20(lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z;\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205],\x20width\x20=\x203,\x20height\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x203\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x202\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWind(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20\x20\x20float\x20result\x20=\x20texture(windTexture,\x20normalizedIndex2D).r;\x0a\x20\x20\x20\x20return\x20result;\x0a}\x0a\x0aconst\x20mat4\x20kernelMatrix\x20=\x20mat4(\x0a\x20\x20\x20\x200.0,\x20-1.0,\x202.0,\x20-1.0,\x20//\x20first\x20column\x0a\x20\x20\x20\x202.0,\x200.0,\x20-5.0,\x203.0,\x20//\x20second\x20column\x0a\x20\x20\x20\x200.0,\x201.0,\x204.0,\x20-3.0,\x20//\x20third\x20column\x0a\x20\x20\x20\x200.0,\x200.0,\x20-1.0,\x201.0\x20//\x20fourth\x20column\x0a);\x0afloat\x20oneDimensionInterpolation(float\x20t,\x20float\x20p0,\x20float\x20p1,\x20float\x20p2,\x20float\x20p3)\x20{\x0a\x20\x20\x20\x20vec4\x20tVec4\x20=\x20vec4(1.0,\x20t,\x20t\x20*\x20t,\x20t\x20*\x20t\x20*\x20t);\x0a\x20\x20\x20\x20tVec4\x20=\x20tVec4\x20/\x202.0;\x0a\x20\x20\x20\x20vec4\x20pVec4\x20=\x20vec4(p0,\x20p1,\x20p2,\x20p3);\x0a\x20\x20\x20\x20return\x20dot((tVec4\x20*\x20kernelMatrix),\x20pVec4);\x0a}\x0a\x0afloat\x20calculateB(sampler2D\x20windTexture,\x20float\x20t,\x20float\x20lon,\x20float\x20lat,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20float\x20lon0\x20=\x20floor(lon)\x20-\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon1\x20=\x20floor(lon);\x0a\x20\x20\x20\x20float\x20lon2\x20=\x20floor(lon)\x20+\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon3\x20=\x20floor(lon)\x20+\x202.0\x20*\x20interval.x;\x0a\x0a\x20\x20\x20\x20float\x20p0\x20=\x20getWind(windTexture,\x20vec3(lon0,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p1\x20=\x20getWind(windTexture,\x20vec3(lon1,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p2\x20=\x20getWind(windTexture,\x20vec3(lon2,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p3\x20=\x20getWind(windTexture,\x20vec3(lon3,\x20lat,\x20lev));\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(t,\x20p0,\x20p1,\x20p2,\x20p3);\x0a}\x0a\x0afloat\x20interpolateOneTexture(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20\x20\x20float\x20lat0\x20=\x20floor(lat)\x20-\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat1\x20=\x20floor(lat);\x0a\x20\x20\x20\x20float\x20lat2\x20=\x20floor(lat)\x20+\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat3\x20=\x20floor(lat)\x20+\x202.0\x20*\x20interval.y;\x0a\x0a\x20\x20\x20\x20vec2\x20coefficient\x20=\x20lonLatLev.xy\x20-\x20floor(lonLatLev.xy);\x0a\x20\x20\x20\x20float\x20b0\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat0,\x20lev);\x0a\x20\x20\x20\x20float\x20b1\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat1,\x20lev);\x0a\x20\x20\x20\x20float\x20b2\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat2,\x20lev);\x0a\x20\x20\x20\x20float\x20b3\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat3,\x20lev);\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(coefficient.y,\x20b0,\x20b1,\x20b2,\x20b3);\x0a}\x0a\x0avec3\x20bicubic(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm\x0a\x20\x20\x20\x20float\x20u\x20=\x20interpolateOneTexture(U,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20v\x20=\x20interpolateOneTexture(V,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}\x0a',updateSpeed_frag='uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec3\x20percent\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20\x20\x20float\x20normalization\x20=\x20length(percent);\x0a\x0a\x20\x20\x20\x20return\x20normalization;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20//\x20vec3\x20currentSpeed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20out_FragColor\x20=\x20nextSpeed;\x0a}\x0a',updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a',postProcessingPosition_frag='uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a',postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x1945f4,_0x390628,_0x3294f4,_0x1ea05f){const _0x2534a9=_0x3412fe;this[_0x2534a9(0x238)]=_0x390628,this['createWindTextures'](_0x1945f4,_0x390628),this['createParticlesTextures'](_0x1945f4,_0x3294f4,_0x1ea05f),this['createComputingPrimitives'](_0x390628,_0x3294f4,_0x1ea05f);}['createWindTextures'](_0x538eb0,_0x177b85){const _0x2ce647=_0x3412fe,_0x17f0c1={'context':_0x538eb0,'width':_0x177b85['dimensions'][_0x2ce647(0x1ba)],'height':_0x177b85[_0x2ce647(0x1d8)]['lat']*(_0x177b85['dimensions'][_0x2ce647(0x1b3)]||0x1),'pixelFormat':Cesium$3['PixelFormat'][_0x2ce647(0x20c)],'pixelDatatype':Cesium$3[_0x2ce647(0x250)]['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x2ce647(0x23b))]({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this['windTextures']={'U':Util['createTexture'](_0x17f0c1,_0x177b85['U'][_0x2ce647(0x1bd)]),'V':Util['createTexture'](_0x17f0c1,_0x177b85['V']['array'])};}[_0x3412fe(0x229)](_0x4b48f9,_0x234622,_0x2882e4){const _0x1ddae8=_0x3412fe,_0xa7890b={'context':_0x4b48f9,'width':_0x234622['particlesTextureSize'],'height':_0x234622['particlesTextureSize'],'pixelFormat':Cesium$3[_0x1ddae8(0x1b2)]['RGBA'],'pixelDatatype':Cesium$3[_0x1ddae8(0x250)]['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x1ddae8(0x20b)],'magnificationFilter':Cesium$3[_0x1ddae8(0x253)]['NEAREST']})},_0x23a81c=this[_0x1ddae8(0x283)](_0x234622[_0x1ddae8(0x1f8)],_0x2882e4),_0x45f510=new Float32Array(0x4*_0x234622[_0x1ddae8(0x1f8)])['fill'](0x0);this[_0x1ddae8(0x23a)]={'particlesWind':Util['createTexture'](_0xa7890b),'currentParticlesPosition':Util['createTexture'](_0xa7890b,_0x23a81c),'nextParticlesPosition':Util[_0x1ddae8(0x1a0)](_0xa7890b,_0x23a81c),'currentParticlesSpeed':Util['createTexture'](_0xa7890b,_0x45f510),'nextParticlesSpeed':Util['createTexture'](_0xa7890b,_0x45f510),'postProcessingPosition':Util['createTexture'](_0xa7890b,_0x23a81c),'postProcessingSpeed':Util[_0x1ddae8(0x1a0)](_0xa7890b,_0x45f510)};}['randomizeParticles'](_0x3a6f22,_0x462105){const _0x45ebc0=_0x3412fe,_0x241202=new Float32Array(0x4*_0x3a6f22);for(let _0x2b1393=0x0;_0x2b1393<_0x3a6f22;_0x2b1393++){_0x241202[0x4*_0x2b1393]=Cesium$3[_0x45ebc0(0x19a)]['randomBetween'](_0x462105['lonRange']['x'],_0x462105['lonRange']['y']),_0x241202[0x4*_0x2b1393+0x1]=Cesium$3['Math']['randomBetween'](_0x462105['latRange']['x'],_0x462105['latRange']['y']),_0x241202[0x4*_0x2b1393+0x2]=Cesium$3['Math']['randomBetween'](this[_0x45ebc0(0x238)]['lev'][_0x45ebc0(0x1d3)],this['data']['lev'][_0x45ebc0(0x1a3)]),_0x241202[0x4*_0x2b1393+0x3]=0x0;}return _0x241202;}[_0x3412fe(0x21e)](){Object['keys'](this['particlesTextures'])['forEach'](_0x2a5738=>{const _0x34a02e=_0x4f2c;this[_0x34a02e(0x23a)][_0x2a5738]['destroy']();});}[_0x3412fe(0x24f)](_0x513a02,_0x34e636,_0x46bb46){const _0x2ab739=_0x3412fe,_0x45c9a8=new Cesium$3[(_0x2ab739(0x1b9))](_0x513a02['dimensions']['lon'],_0x513a02['dimensions']['lat'],_0x513a02[_0x2ab739(0x1d8)][_0x2ab739(0x1b3)]),_0x266585=new Cesium$3['Cartesian3'](_0x513a02['lon']['min'],_0x513a02['lat']['min'],_0x513a02['lev']['min']),_0x1cad39=new Cesium$3['Cartesian3'](_0x513a02['lon']['max'],_0x513a02['lat']['max'],_0x513a02['lev']['max']),_0x10c307=new Cesium$3['Cartesian3']((_0x1cad39['x']-_0x266585['x'])/(_0x45c9a8['x']-0x1),(_0x1cad39['y']-_0x266585['y'])/(_0x45c9a8['y']-0x1),_0x45c9a8['z']>0x1?(_0x1cad39['z']-_0x266585['z'])/(_0x45c9a8['z']-0x1):0x1),_0x46d9f7=new Cesium$3['Cartesian2'](_0x513a02['U'][_0x2ab739(0x1d3)],_0x513a02['U']['max']),_0x1d717e=new Cesium$3[(_0x2ab739(0x20a))](_0x513a02['V']['min'],_0x513a02['V']['max']),_0x4196da=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x4196da['windTextures']['U'];},'V':function(){return _0x4196da['windTextures']['V'];},'currentParticlesPosition':function(){return _0x4196da['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x45c9a8;},'minimum':function(){return _0x266585;},'maximum':function(){return _0x1cad39;},'interval':function(){return _0x10c307;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x5eb605=_0x2ab739;_0x4196da['primitives'][_0x5eb605(0x215)]['commandToExecute']['outputTexture']=_0x4196da[_0x5eb605(0x23a)]['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x4196da['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){const _0x4cbd18=_0x2ab739;return _0x4196da['particlesTextures'][_0x4cbd18(0x236)];},'uSpeedRange':function(){return _0x46d9f7;},'vSpeedRange':function(){return _0x1d717e;},'pixelSize':function(){return _0x46bb46['pixelSize'];},'speedFactor':function(){return _0x34e636['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x2ab739(0x1d9)],'preExecute':function(){const _0x53fe06=_0x2ab739,_0x1c7112=_0x4196da[_0x53fe06(0x23a)][_0x53fe06(0x1c0)];_0x4196da['particlesTextures'][_0x53fe06(0x1c0)]=_0x4196da['particlesTextures'][_0x53fe06(0x28b)],_0x4196da[_0x53fe06(0x23a)]['postProcessingSpeed']=_0x1c7112,_0x4196da['primitives']['updateSpeed']['commandToExecute']['outputTexture']=_0x4196da[_0x53fe06(0x23a)][_0x53fe06(0x1d9)];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x10d4e2=_0x2ab739;return _0x4196da['particlesTextures'][_0x10d4e2(0x24c)];},'currentParticlesSpeed':function(){return _0x4196da['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x2ab739(0x22d))]({'sources':[updatePosition_frag]}),'outputTexture':this[_0x2ab739(0x23a)]['nextParticlesPosition'],'preExecute':function(){const _0x5cf6a1=_0x2ab739,_0x753198=_0x4196da['particlesTextures']['currentParticlesPosition'];_0x4196da[_0x5cf6a1(0x23a)][_0x5cf6a1(0x24c)]=_0x4196da['particlesTextures'][_0x5cf6a1(0x23e)],_0x4196da['particlesTextures'][_0x5cf6a1(0x23e)]=_0x753198,_0x4196da['primitives'][_0x5cf6a1(0x256)]['commandToExecute']['outputTexture']=_0x4196da['particlesTextures'][_0x5cf6a1(0x206)];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){const _0x2d9d91=_0x2ab739;return _0x4196da[_0x2d9d91(0x23a)]['nextParticlesPosition'];},'nextParticlesSpeed':function(){const _0x1a8053=_0x2ab739;return _0x4196da['particlesTextures'][_0x1a8053(0x1d9)];},'lonRange':function(){return _0x46bb46['lonRange'];},'latRange':function(){return _0x46bb46['latRange'];},'randomCoefficient':function(){const _0x221085=Math['random']();return _0x221085;},'dropRate':function(){const _0x132968=_0x2ab739;return _0x34e636[_0x132968(0x240)];},'dropRateBump':function(){return _0x34e636['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures'][_0x2ab739(0x23e)],'preExecute':function(){_0x4196da['primitives']['postProcessingPosition']['commandToExecute']['outputTexture']=_0x4196da['particlesTextures']['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x2ab739(0x1e1),'uniformMap':{'postProcessingPosition':function(){return _0x4196da['particlesTextures']['postProcessingPosition'];},'nextParticlesSpeed':function(){return _0x4196da['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){const _0x506f3e=_0x2ab739;_0x4196da['primitives']['postProcessingSpeed'][_0x506f3e(0x1db)]['outputTexture']=_0x4196da['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x247bc5,_0x317ba5,_0x5524fa,_0x1e38fc){const _0x339ab6=_0x3412fe;this[_0x339ab6(0x210)]=_0x247bc5,_0x317ba5={..._0x317ba5},_0x317ba5[_0x339ab6(0x1b0)]&&_0x317ba5[_0x339ab6(0x1a6)]&&(_0x317ba5['dimensions']={},_0x317ba5['dimensions']['lon']=_0x317ba5[_0x339ab6(0x213)],_0x317ba5[_0x339ab6(0x1d8)]['lat']=_0x317ba5['rows'],_0x317ba5['dimensions']['lev']=_0x317ba5['lev']||0x1,_0x317ba5['lon']={},_0x317ba5['lon'][_0x339ab6(0x1d3)]=_0x317ba5['xmin'],_0x317ba5['lon']['max']=_0x317ba5['xmax'],_0x317ba5['lat']={},_0x317ba5[_0x339ab6(0x1a4)]['min']=_0x317ba5[_0x339ab6(0x1f1)],_0x317ba5['lat']['max']=_0x317ba5[_0x339ab6(0x257)],_0x317ba5['lev']={},_0x317ba5['lev']['min']=_0x317ba5['levmin']??0x1,_0x317ba5[_0x339ab6(0x1b3)][_0x339ab6(0x1a3)]=_0x317ba5['levmax']??0x1,_0x317ba5['U']={},_0x317ba5['U']['array']=new Float32Array(_0x317ba5[_0x339ab6(0x1b0)]),_0x317ba5['U']['min']=_0x317ba5['umin']??Math['min'](..._0x317ba5['udata']),_0x317ba5['U'][_0x339ab6(0x1a3)]=_0x317ba5[_0x339ab6(0x232)]??Math['max'](..._0x317ba5['udata']),_0x317ba5['V']={},_0x317ba5['V']['array']=new Float32Array(_0x317ba5[_0x339ab6(0x1a6)]),_0x317ba5['V']['min']=_0x317ba5['vmin']??Math['min'](..._0x317ba5['vdata']),_0x317ba5['V'][_0x339ab6(0x1a3)]=_0x317ba5[_0x339ab6(0x270)]??Math['max'](..._0x317ba5['vdata'])),this['data']=_0x317ba5,this['options']=_0x5524fa,this['viewerParameters']=_0x1e38fc,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this[_0x339ab6(0x23f)]=new ParticlesRendering(this['context'],this['data'],this[_0x339ab6(0x223)],this['viewerParameters'],this[_0x339ab6(0x1b8)]);}[_0x3412fe(0x1bf)](_0x4d9c91){const _0x54282c=_0x3412fe;this[_0x54282c(0x1b8)]['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x57dabc=>{const _0x4fb0d0=_0x54282c;this[_0x4fb0d0(0x1b8)]['windTextures'][_0x57dabc]['destroy']();}),this['particlesRendering'][_0x54282c(0x1f6)][_0x54282c(0x269)]['destroy'](),Object['keys'](this['particlesRendering']['framebuffers'])[_0x54282c(0x28a)](_0x8b9e2=>{const _0x5d4287=_0x54282c;this['particlesRendering']['framebuffers'][_0x8b9e2][_0x5d4287(0x1fe)]();}),this['context']=_0x4d9c91,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0x54282c(0x223)],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0x4f5371=_0x3412fe,_0x2c9a6f=new Cesium$2['ClearCommand']({'color':new Cesium$2[(_0x4f5371(0x26d))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});Object['keys'](this['particlesRendering'][_0x4f5371(0x21d)])['forEach'](_0x46d6c2=>{const _0x265ba9=_0x4f5371;_0x2c9a6f['framebuffer']=this[_0x265ba9(0x23f)]['framebuffers'][_0x46d6c2],_0x2c9a6f['execute'](this['context']);});}[_0x3412fe(0x1dd)](_0x236e96){const _0x3f672b=_0x3412fe;this[_0x3f672b(0x260)](),this['particlesComputing'][_0x3f672b(0x21e)](),this['particlesComputing']['createParticlesTextures'](this['context'],this['options'],this['viewerParameters']);if(_0x236e96){var _0x2cc5bd;const _0x4277cf=this['particlesRendering']['createSegmentsGeometry'](this['options']);this[_0x3f672b(0x23f)][_0x3f672b(0x225)]['segments'][_0x3f672b(0x216)]=_0x4277cf;const _0x504f8c=Cesium$2['VertexArray']['fromGeometry']({'context':this['context'],'geometry':_0x4277cf,'attributeLocations':this[_0x3f672b(0x23f)]['primitives'][_0x3f672b(0x1d6)]['attributeLocations'],'bufferUsage':Cesium$2[_0x3f672b(0x286)][_0x3f672b(0x1c6)]});(_0x2cc5bd=this[_0x3f672b(0x23f)][_0x3f672b(0x225)])!==null&&_0x2cc5bd!==void 0x0&&(_0x2cc5bd=_0x2cc5bd[_0x3f672b(0x1d6)])!==null&&_0x2cc5bd!==void 0x0&&_0x2cc5bd['commandToExecute']&&(this[_0x3f672b(0x23f)]['primitives']['segments'][_0x3f672b(0x1db)][_0x3f672b(0x249)]=_0x504f8c);}}[_0x3412fe(0x234)](_0x3e6a15){const _0x402b8a=_0x3412fe;let _0x285918=![];this[_0x402b8a(0x223)]['maxParticles']!==_0x3e6a15['maxParticles']&&(_0x285918=!![]),Object['keys'](_0x3e6a15)['forEach'](_0x3993eb=>{const _0x4bc4ab=_0x402b8a;this[_0x4bc4ab(0x223)][_0x3993eb]=_0x3e6a15[_0x3993eb];}),this['refreshParticles'](_0x285918);}['applyViewerParameters'](_0x433e3d){const _0x2996b5=_0x3412fe;Object['keys'](_0x433e3d)[_0x2996b5(0x28a)](_0x512b6a=>{this['viewerParameters'][_0x512b6a]=_0x433e3d[_0x512b6a];}),this['refreshParticles'](![]);}['destroy'](){const _0x137bd8=_0x3412fe;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])[_0x137bd8(0x28a)](_0xd428f6=>{const _0x5e1d08=_0x137bd8;this['particlesComputing'][_0x5e1d08(0x1ca)][_0xd428f6]['destroy']();}),this[_0x137bd8(0x23f)][_0x137bd8(0x1f6)]['colorTable']['destroy'](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x463282=>{const _0x4df905=_0x137bd8;this[_0x4df905(0x23f)]['framebuffers'][_0x463282]['destroy']();});for(const _0x5a488e in this){delete this[_0x5a488e];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x3412fe(0x288)]['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':['rgb(206,255,255)']};class WindLayer extends BaseLayer$1{constructor(_0x2c6cf9={}){const _0x3a8114=_0x3412fe;_0x2c6cf9={...DEF_OPTIONS,..._0x2c6cf9},super(_0x2c6cf9),this[_0x3a8114(0x219)](_0x2c6cf9);}get['layer'](){return this['primitives'];}get['data'](){const _0x5b1e60=_0x3412fe;return this[_0x5b1e60(0x1fa)];}set['data'](_0x18b328){const _0x58d865=_0x3412fe;this[_0x58d865(0x1c1)](_0x18b328);}get['colors'](){const _0xd48fa2=_0x3412fe;return this[_0xd48fa2(0x223)]['colors'];}set['colors'](_0x11eef8){this['options']['colors']=_0x11eef8,this['particleSystem']&&this['particleSystem']['setOptions']({'colors':_0x11eef8}),this['resize']();}[_0x3412fe(0x1bb)](){}[_0x3412fe(0x1fc)](){const _0x489687=_0x3412fe;this['scene']=this['_map']['scene'],this['camera']=this['_map'][_0x489687(0x1e0)],this['primitives']=new Cesium$1['PrimitiveCollection'](),this[_0x489687(0x271)]['scene']['primitives']['add'](this['primitives']),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1[(_0x489687(0x1af))](Cesium$1['Cartesian3'][_0x489687(0x1bc)],0.99*0x615299),this[_0x489687(0x244)](),window[_0x489687(0x224)](_0x489687(0x26e),this['resize'][_0x489687(0x1da)](this),![]),this['mouse_down']=![],this['mouse_move']=![],this[_0x489687(0x271)]['on'](mars3d__namespace[_0x489687(0x21a)][_0x489687(0x1f4)],this[_0x489687(0x19f)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x489687(0x226)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace[_0x489687(0x21a)]['mouseMove'],this['_onMouseMoveEvent'],this),this[_0x489687(0x1fa)]&&this['setData'](this['_data']);}[_0x3412fe(0x211)](){const _0x280cae=_0x3412fe;window['removeEventListener']('resize',this[_0x280cae(0x26e)]),this['_map']['off'](mars3d__namespace[_0x280cae(0x21a)][_0x280cae(0x220)],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x280cae(0x1f4)],this[_0x280cae(0x19f)],this),this['_map']['off'](mars3d__namespace['EventType'][_0x280cae(0x282)],this['_onMouseDownEvent'],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'][_0x280cae(0x1d5)]['primitives']['remove'](this['primitives']);}['resize'](){const _0x209ae0=_0x3412fe;if(!this['show']||!this['particleSystem'])return;this[_0x209ae0(0x225)][_0x209ae0(0x264)]=![],this['primitives']['removeAll'](),this[_0x209ae0(0x271)]['once'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this);}['_onMap_preRenderEvent'](_0x199fd7){const _0xf4ceda=_0x3412fe;this['particleSystem']['canvasResize'](this['scene']['context']),this[_0xf4ceda(0x1c8)](),this[_0xf4ceda(0x225)][_0xf4ceda(0x264)]=!![];}['_onMapWhellEvent'](_0x2753c6){clearTimeout(this['refreshTimer']);if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x47f4b0){const _0x39f92a=_0x3412fe;this[_0x39f92a(0x239)]=!![];}[_0x3412fe(0x237)](_0x29af92){if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this['primitives']['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x486dc5){const _0x172ed3=_0x3412fe;if(!this['show']||!this['particleSystem'])return;this[_0x172ed3(0x239)]&&this[_0x172ed3(0x1de)]&&this[_0x172ed3(0x1ce)](),this['primitives']['show']=!![],this['mouse_down']=![],this['mouse_move']=![];}[_0x3412fe(0x1ce)](){const _0x5223bc=_0x3412fe;if(!this['_map']||!this[_0x5223bc(0x264)])return;this[_0x5223bc(0x244)](),this['particleSystem'][_0x5223bc(0x235)](this['viewerParameters']),this['primitives']['show']=!![];}['setData'](_0x1b66d4){const _0x1d9821=_0x3412fe;this[_0x1d9821(0x1fa)]=_0x1b66d4,this[_0x1d9821(0x1cb)]&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this['scene']['context'],_0x1b66d4,this['getOptions'](),this['viewerParameters']),this[_0x1d9821(0x1c8)]();}['_setOptionsHook'](_0x43ff08,_0x3552d1){const _0x58b069=_0x3412fe;if(_0x43ff08)for(const _0x86b6e in _0x43ff08){this[_0x86b6e]=_0x43ff08[_0x86b6e];}this['particleSystem']&&this[_0x58b069(0x1cb)]['setOptions'](this[_0x58b069(0x222)]());}[_0x3412fe(0x222)](){const _0x30bb4c=_0x3412fe,_0x3edbd1=Math['ceil'](Math[_0x30bb4c(0x21f)](this['particlesNumber']));return this[_0x30bb4c(0x22a)]=_0x3edbd1*_0x3edbd1,{'particlesTextureSize':_0x3edbd1,'maxParticles':this['particlesNumber'],'particleHeight':this[_0x30bb4c(0x24e)],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this[_0x30bb4c(0x230)]};}['addPrimitives'](){const _0x577c97=_0x3412fe;this[_0x577c97(0x225)]['add'](this[_0x577c97(0x1cb)]['particlesComputing']['primitives']['getWind']),this[_0x577c97(0x225)]['add'](this['particleSystem']['particlesComputing']['primitives']['updateSpeed']),this['primitives']['add'](this['particleSystem'][_0x577c97(0x1b8)][_0x577c97(0x225)]['updatePosition']),this['primitives']['add'](this[_0x577c97(0x1cb)]['particlesComputing'][_0x577c97(0x225)]['postProcessingPosition']),this[_0x577c97(0x225)][_0x577c97(0x20e)](this[_0x577c97(0x1cb)][_0x577c97(0x1b8)]['primitives'][_0x577c97(0x28b)]),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['segments']),this[_0x577c97(0x225)][_0x577c97(0x20e)](this['particleSystem']['particlesRendering']['primitives']['trails']),this[_0x577c97(0x225)]['add'](this[_0x577c97(0x1cb)]['particlesRendering'][_0x577c97(0x225)]['screen']);}['updateViewerParameters'](){const _0x1483b1=_0x3412fe;let _0x7cf5ff=this[_0x1483b1(0x1e0)]['computeViewRectangle'](this[_0x1483b1(0x1d5)][_0x1483b1(0x284)]['ellipsoid']);if(!_0x7cf5ff){const _0x3865a6=this['_map']['getExtent']();_0x7cf5ff=Cesium$1[_0x1483b1(0x1ee)]['fromDegrees'](_0x3865a6['xmin'],_0x3865a6['ymin'],_0x3865a6['xmax'],_0x3865a6['ymax']);}const _0x172486=Util['viewRectangleToLonLatRange'](_0x7cf5ff);this['viewerParameters']['lonRange']['x']=_0x172486['lon']['min'],this['viewerParameters']['lonRange']['y']=_0x172486[_0x1483b1(0x1ba)]['max'],this['viewerParameters'][_0x1483b1(0x22f)]['x']=_0x172486['lat']['min'],this['viewerParameters'][_0x1483b1(0x22f)]['y']=_0x172486['lat'][_0x1483b1(0x1a3)];const _0x21e114=this[_0x1483b1(0x1e0)]['getPixelSize'](this[_0x1483b1(0x276)],this['scene']['drawingBufferWidth'],this[_0x1483b1(0x1d5)]['drawingBufferHeight']);_0x21e114>0x0&&(this[_0x1483b1(0x259)]['pixelSize']=_0x21e114);}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;function _0x1688(){const _0x2c9cac=['_calc_speedRate','createRawRenderState','floor','register','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','LayerUtil','attributeLocations','particles','framebuffer','mouseDown','randomizeParticles','globe','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','BufferUsage','windField','layer','none','forEach','postProcessingSpeed','clearCommand','Math','vertexShaderSource','_tomap','red','log','_onMapWhellEvent','createTexture','sin','strokeStyle','max','lat','1276630SEdljA','vdata','nextTrails','CanvasWindField','_updateIng2','visibility','fromCache','TWO_PI','currentTrailsDepth','viewport','BoundingSphere','udata','drawingBufferWidth','PixelFormat','lev','_drawLines','mouseUp','mouseHidden','ShaderProgram','particlesComputing','Cartesian3','lon','_mountedHook','ZERO','array','lng','canvasResize','currentParticlesSpeed','setData','steps','getUVByXY','width','ComponentDatatype','STATIC_DRAW','UNSIGNED_BYTE','addPrimitives','FLOAT','windTextures','particleSystem','windData','1203722VNoWdj','redraw','currentTrailsColor','getFullscreenQuad','clampToLatitudeRange','abs','min','postMessage','scene','segments','TRIANGLES','dimensions','nextParticlesSpeed','bind','commandToExecute','grid','refreshParticles','mouse_move','4960bpauQw','camera','Compute','_updateIng','xmax','3119961ziGYgt','globalAlpha','mouseMove','tlat','getColorTexture','tlng','clientHeight','frameTime','container','_calcUV','Rectangle','Pass','style','ymin','_showHook','fromGeometry','wheel','xmin','textures','maxAge','maxParticles','1045939EXkfLb','_data','toRadians','_addedHook','canvas','destroy','4IyoDeS','ALWAYS','PrimitiveType','primitiveType','blending','41571vobCHV','off','nextParticlesPosition','_createCanvas','clientWidth','speedRate','Cartesian2','NEAREST','LUMINANCE','initWorker','add','bindEvent','context','_removedHook','PI_OVER_THREE','cols','age','getWind','geometry','_maxAge','getDefaultRenderState','_setOptionsHook','EventType','Framebuffer','createRenderingPrimitives','framebuffers','destroyParticlesTextures','sqrt','preRender','VertexArray','getOptions','options','addEventListener','primitives','_onMouseDownEvent','speed','moveTo','createParticlesTextures','particlesNumber','nextTrailsDepth','ComputeCommand','ShaderSource','rows','latRange','colors','zIndex','umax','LINEAR','setOptions','applyViewerParameters','particlesWind','_onMouseMoveEvent','data','mouse_down','particlesTextures','Sampler','createSegmentsGeometry','stroke','postProcessingPosition','particlesRendering','dropRate','worker','height','length','updateViewerParameters','preExecute','autoClear','nextTrailsColor','SceneMode','vertexArray','PI_OVER_TWO','_pointerEvents','currentParticlesPosition','fragmentShaderSource','fixedHeight','createComputingPrimitives','PixelDatatype','_onMouseUpEvent','OPAQUE','TextureMagnificationFilter','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','createRenderingTextures','updatePosition','ymax','defined','viewerParameters','canvasContext','841224DJTZbb','update','ellipsoid','clear','lineWidth','clearFramebuffers','fadeOpacity','push','fromCssColorString','show','THREE_PI_OVER_TWO','uniformMap','SCENE3D','beginPath','colorTable','reverseY','commandType','rawRenderState','Color','resize','unbindEvent','vmax','_map','Cesium','Geometry','setDate','ColorRamp','globeBoundingSphere','2160536bgzLjG','particleHeight'];_0x1688=function(){return _0x2c9cac;};return _0x1688();}class CanvasParticle{constructor(){const _0x163f9d=_0x3412fe;this['lng']=null,this[_0x163f9d(0x1a4)]=null,this['tlng']=null,this['tlat']=null,this['age']=null,this['speed']=null;}['destroy'](){for(const _0x9428c5 in this){delete this[_0x9428c5];}}}class CanvasWindField{constructor(_0x38d8f3){this['setOptions'](_0x38d8f3);}get[_0x3412fe(0x209)](){return this['_speedRate'];}set['speedRate'](_0x338c57){const _0x12fd5c=_0x3412fe;this['_speedRate']=(0x64-(_0x338c57>0x63?0x63:_0x338c57))*0x64,this['_calc_speedRate']=[(this[_0x12fd5c(0x1e3)]-this[_0x12fd5c(0x1f5)])/this['_speedRate'],(this['ymax']-this[_0x12fd5c(0x1f1)])/this['_speedRate']];}get['maxAge'](){const _0x2b506a=_0x3412fe;return this[_0x2b506a(0x217)];}set['maxAge'](_0x36d6a3){const _0x72bad8=_0x3412fe;this[_0x72bad8(0x217)]=_0x36d6a3;}[_0x3412fe(0x234)](_0x261198){const _0x4e3e8d=_0x3412fe;this['options']=_0x261198,this['maxAge']=_0x261198[_0x4e3e8d(0x1f7)]||0x78,this['speedRate']=_0x261198['speedRate']||0x32,this[_0x4e3e8d(0x280)]=[];const _0x4a50ae=_0x261198['particlesNumber']||0x1000;for(let _0x316fec=0x0;_0x316fec<_0x4a50ae;_0x316fec++){const _0x3c2eec=this['_randomParticle'](new CanvasParticle());this[_0x4e3e8d(0x280)]['push'](_0x3c2eec);}}['setDate'](_0x15d0c4){const _0x32edc9=_0x3412fe;this['rows']=_0x15d0c4[_0x32edc9(0x22e)],this['cols']=_0x15d0c4['cols'],this[_0x32edc9(0x1f5)]=_0x15d0c4['xmin'],this['xmax']=_0x15d0c4['xmax'],this['ymin']=_0x15d0c4[_0x32edc9(0x1f1)],this['ymax']=_0x15d0c4['ymax'],this[_0x32edc9(0x1dc)]=[];const _0x1b781a=_0x15d0c4['udata'],_0x1035ac=_0x15d0c4['vdata'];let _0x19eaa8=![];_0x1b781a['length']===this['rows']&&_0x1b781a[0x0]['length']===this['cols']&&(_0x19eaa8=!![]);let _0x4e2b68=0x0,_0x1ec7e6=null,_0x4073c1=null;for(let _0x5cfb5c=0x0;_0x5cfb5c<this['rows'];_0x5cfb5c++){_0x1ec7e6=[];for(let _0x2ac631=0x0;_0x2ac631<this['cols'];_0x2ac631++,_0x4e2b68++){_0x19eaa8?_0x4073c1=this[_0x32edc9(0x1ed)](_0x1b781a[_0x5cfb5c][_0x2ac631],_0x1035ac[_0x5cfb5c][_0x2ac631]):_0x4073c1=this['_calcUV'](_0x1b781a[_0x4e2b68],_0x1035ac[_0x4e2b68]),_0x1ec7e6['push'](_0x4073c1);}this['grid']['push'](_0x1ec7e6);}this['options']['reverseY']&&this[_0x32edc9(0x1dc)]['reverse']();}['clear'](){const _0x3fbbc9=_0x3412fe;delete this['rows'],delete this['cols'],delete this[_0x3fbbc9(0x1f5)],delete this[_0x3fbbc9(0x1e3)],delete this[_0x3fbbc9(0x1f1)],delete this['ymax'],delete this['grid'],delete this['particles'];}['toGridXY'](_0x11552a,_0x24e507){const _0x480fd3=_0x3412fe,_0x321054=(_0x11552a-this['xmin'])/(this['xmax']-this[_0x480fd3(0x1f5)])*(this[_0x480fd3(0x213)]-0x1),_0x2976e6=(this['ymax']-_0x24e507)/(this[_0x480fd3(0x257)]-this['ymin'])*(this[_0x480fd3(0x22e)]-0x1);return[_0x321054,_0x2976e6];}['getUVByXY'](_0x4199dd,_0x54f46e){const _0x2fee17=_0x3412fe;if(_0x4199dd<0x0||_0x4199dd>=this['cols']||_0x54f46e>=this[_0x2fee17(0x22e)])return[0x0,0x0,0x0];const _0x3b2aa6=Math[_0x2fee17(0x27b)](_0x4199dd),_0x23d8d2=Math[_0x2fee17(0x27b)](_0x54f46e);if(_0x3b2aa6===_0x4199dd&&_0x23d8d2===_0x54f46e)return this[_0x2fee17(0x1dc)][_0x54f46e][_0x4199dd];const _0x21b874=_0x3b2aa6+0x1,_0xa1797b=_0x23d8d2+0x1,_0x594391=this['getUVByXY'](_0x3b2aa6,_0x23d8d2),_0x2dc3b6=this['getUVByXY'](_0x21b874,_0x23d8d2),_0x350123=this[_0x2fee17(0x1c3)](_0x3b2aa6,_0xa1797b),_0x428739=this[_0x2fee17(0x1c3)](_0x21b874,_0xa1797b);let _0x14af2f=null;try{_0x14af2f=this['_bilinearInterpolation'](_0x4199dd-_0x3b2aa6,_0x54f46e-_0x23d8d2,_0x594391,_0x2dc3b6,_0x350123,_0x428739);}catch(_0x345f87){console[_0x2fee17(0x19e)](_0x4199dd,_0x54f46e);}return _0x14af2f;}['_bilinearInterpolation'](_0x424209,_0x2b0925,_0x57ddcb,_0x486926,_0x3df1ff,_0xb3784f){const _0x527db2=0x1-_0x424209,_0x47ee4f=0x1-_0x2b0925,_0x4d5e30=_0x527db2*_0x47ee4f,_0x28df9e=_0x424209*_0x47ee4f,_0x6fdf82=_0x527db2*_0x2b0925,_0x2ba635=_0x424209*_0x2b0925,_0x28e7b6=_0x57ddcb[0x0]*_0x4d5e30+_0x486926[0x0]*_0x28df9e+_0x3df1ff[0x0]*_0x6fdf82+_0xb3784f[0x0]*_0x2ba635,_0x4a4c4c=_0x57ddcb[0x1]*_0x4d5e30+_0x486926[0x1]*_0x28df9e+_0x3df1ff[0x1]*_0x6fdf82+_0xb3784f[0x1]*_0x2ba635;return this['_calcUV'](_0x28e7b6,_0x4a4c4c);}['_calcUV'](_0x507a27,_0x2dfd50){return[+_0x507a27,+_0x2dfd50,Math['sqrt'](_0x507a27*_0x507a27+_0x2dfd50*_0x2dfd50)];}['getUVByPoint'](_0x45ecd3,_0x53b69a){const _0x4c24a9=_0x3412fe;if(!this['isInExtent'](_0x45ecd3,_0x53b69a))return null;const _0x34d8b6=this['toGridXY'](_0x45ecd3,_0x53b69a),_0x4247c9=this[_0x4c24a9(0x1c3)](_0x34d8b6[0x0],_0x34d8b6[0x1]);return _0x4247c9;}['isInExtent'](_0x482249,_0x1a0b5c){const _0x49578c=_0x3412fe;return _0x482249>=this['xmin']&&_0x482249<=this['xmax']&&_0x1a0b5c>=this[_0x49578c(0x1f1)]&&_0x1a0b5c<=this[_0x49578c(0x257)]?!![]:![];}['getRandomLatLng'](){const _0x1b8d31=_0x3412fe,_0x16e8bb=fRandomByfloat(this['xmin'],this[_0x1b8d31(0x1e3)]),_0x4ebd5f=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x4ebd5f,'lng':_0x16e8bb};}['getParticles'](){const _0x2fca67=_0x3412fe;let _0x559cf2,_0x142912,_0x1b7c03;for(let _0x3ad368=0x0,_0x260fec=this['particles']['length'];_0x3ad368<_0x260fec;_0x3ad368++){let _0x237035=this[_0x2fca67(0x280)][_0x3ad368];_0x237035['age']<=0x0&&(_0x237035=this['_randomParticle'](_0x237035));if(_0x237035['age']>0x0){const _0xd8fe8d=_0x237035[_0x2fca67(0x1e9)],_0x42ad5f=_0x237035['tlat'];_0x1b7c03=this['getUVByPoint'](_0xd8fe8d,_0x42ad5f),_0x1b7c03?(_0x559cf2=_0xd8fe8d+this[_0x2fca67(0x279)][0x0]*_0x1b7c03[0x0],_0x142912=_0x42ad5f+this['_calc_speedRate'][0x1]*_0x1b7c03[0x1],_0x237035['lng']=_0xd8fe8d,_0x237035[_0x2fca67(0x1a4)]=_0x42ad5f,_0x237035['tlng']=_0x559cf2,_0x237035[_0x2fca67(0x1e7)]=_0x142912,_0x237035['speed']=_0x1b7c03[0x2],_0x237035[_0x2fca67(0x214)]--):_0x237035['age']=0x0;}}return this[_0x2fca67(0x280)];}['_randomParticle'](_0x5d7db7){const _0x293082=_0x3412fe;let _0x5bfd87,_0xaa3c44;for(let _0xc5a179=0x0;_0xc5a179<0x1e;_0xc5a179++){_0x5bfd87=this['getRandomLatLng'](),_0xaa3c44=this['getUVByPoint'](_0x5bfd87['lng'],_0x5bfd87['lat']);if(_0xaa3c44&&_0xaa3c44[0x2]>0x0)break;}if(!_0xaa3c44)return _0x5d7db7;const _0x40360e=_0x5bfd87[_0x293082(0x1be)]+this['_calc_speedRate'][0x0]*_0xaa3c44[0x0],_0xf5fa2=_0x5bfd87[_0x293082(0x1a4)]+this['_calc_speedRate'][0x1]*_0xaa3c44[0x1];return _0x5d7db7['lng']=_0x5bfd87['lng'],_0x5d7db7[_0x293082(0x1a4)]=_0x5bfd87[_0x293082(0x1a4)],_0x5d7db7['tlng']=_0x40360e,_0x5d7db7['tlat']=_0xf5fa2,_0x5d7db7['age']=Math['round'](Math['random']()*this['maxAge']),_0x5d7db7[_0x293082(0x227)]=_0xaa3c44[0x2],_0x5d7db7;}['destroy'](){for(const _0x55ab11 in this){delete this[_0x55ab11];}}}function fRandomByfloat(_0x107ab7,_0x2f44dd){return _0x107ab7+Math['random']()*(_0x2f44dd-_0x107ab7);}function _0x4f2c(_0x585e6e,_0x4c4d51){const _0x1688ed=_0x1688();return _0x4f2c=function(_0x4f2ca0,_0x3b7f15){_0x4f2ca0=_0x4f2ca0-0x19a;let _0x521b7e=_0x1688ed[_0x4f2ca0];return _0x521b7e;},_0x4f2c(_0x585e6e,_0x4c4d51);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x3412fe(0x288)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x3b6878={}){const _0x1cab54=_0x3412fe;super(_0x3b6878),this['_setOptionsHook'](_0x3b6878),this[_0x1cab54(0x1fd)]=null,_0x3b6878['colors']&&_0x3b6878[_0x1cab54(0x1c2)]&&(this['_colorRamp']=new mars3d__namespace[(_0x1cab54(0x275))](_0x3b6878));}['_setOptionsHook'](_0x31afdc,_0x547d5b){const _0x685efc=_0x3412fe;this[_0x685efc(0x1eb)]=0x3e8/(_0x31afdc['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x31afdc['color']||'#ffffff',this[_0x685efc(0x25f)]=_0x31afdc['lineWidth']||0x1,this['fixedHeight']=_0x31afdc['fixedHeight']??0x0,this['reverseY']=_0x31afdc[_0x685efc(0x26a)]??![],this['windField']&&this['windField']['setOptions'](_0x31afdc);}get['layer'](){const _0x31d549=_0x3412fe;return this[_0x31d549(0x1fd)];}get['canvasWidth'](){return this['_map']['scene']['canvas']['clientWidth'];}get['canvasHeight'](){const _0x579438=_0x3412fe;return this['_map']['scene']['canvas'][_0x579438(0x1ea)];}get['pointerEvents'](){const _0x107c7d=_0x3412fe;return this[_0x107c7d(0x24b)];}set['pointerEvents'](_0x3674d9){const _0x7cda77=_0x3412fe;this['_pointerEvents']=_0x3674d9;if(!this['canvas'])return;_0x3674d9?this['canvas'][_0x7cda77(0x1f0)]['pointer-events']='all':this[_0x7cda77(0x1fd)]['style']['pointer-events']=_0x7cda77(0x289);}get['particlesNumber'](){const _0x439175=_0x3412fe;return this[_0x439175(0x223)]['particlesNumber'];}set[_0x3412fe(0x22a)](_0x2b49a9){this['options']['particlesNumber']=_0x2b49a9,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{const _0x2a2858=_0x4f2c;this[_0x2a2858(0x1ce)]();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set['speedRate'](_0x4f8925){const _0x29d0c6=_0x3412fe;this['options'][_0x29d0c6(0x209)]=_0x4f8925,this[_0x29d0c6(0x287)]&&(this['windField']['speedRate']=_0x4f8925);}get[_0x3412fe(0x1f7)](){const _0x13cae5=_0x3412fe;return this['options'][_0x13cae5(0x1f7)];}set['maxAge'](_0x58ccca){this['options']['maxAge']=_0x58ccca,this['windField']&&(this['windField']['maxAge']=_0x58ccca);}get[_0x3412fe(0x238)](){const _0x50bcca=_0x3412fe;return this[_0x50bcca(0x1cc)];}set['data'](_0x49ffcf){const _0x35a129=_0x3412fe;this[_0x35a129(0x1c1)](_0x49ffcf);}[_0x3412fe(0x1f2)](_0x25b0cf){const _0x271490=_0x3412fe;_0x25b0cf?this[_0x271490(0x1fc)]():(this['windData']&&(this['options']['data']=this['windData']),this['_removedHook']());}[_0x3412fe(0x1bb)](){const _0x5a8e8f=_0x3412fe;this['options'][_0x5a8e8f(0x241)]?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){const _0x159682=_0x3412fe;this['canvas']=this['_createCanvas'](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this[_0x159682(0x20f)](),this['options'][_0x159682(0x238)]&&this['setData'](this['options'][_0x159682(0x238)]);}['_removedHook'](){this['clear'](),this['unbindEvent'](),this['canvas']&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}[_0x3412fe(0x207)](){const _0x10996e=_0x3412fe,_0x247950=mars3d__namespace['DomUtil']['create']('canvas','mars3d-canvasWind',this['_map'][_0x10996e(0x1ec)]);return _0x247950['style']['position']='absolute',_0x247950['style']['top']='0px',_0x247950['style']['left']='0px',_0x247950['style'][_0x10996e(0x1c4)]=this[_0x10996e(0x271)]['scene']['canvas']['clientWidth']+'px',_0x247950['style']['height']=this['_map'][_0x10996e(0x1d5)]['canvas'][_0x10996e(0x1ea)]+'px',_0x247950['style']['pointerEvents']=this[_0x10996e(0x24b)]?'auto':_0x10996e(0x289),_0x247950['style'][_0x10996e(0x231)]=this[_0x10996e(0x223)][_0x10996e(0x231)]??0x9,_0x247950[_0x10996e(0x1c4)]=this['_map'][_0x10996e(0x1d5)][_0x10996e(0x1fd)][_0x10996e(0x208)],_0x247950[_0x10996e(0x242)]=this[_0x10996e(0x271)][_0x10996e(0x1d5)]['canvas']['clientHeight'],_0x247950;}['resize'](){const _0x567d6a=_0x3412fe;this['canvas']&&(this['canvas']['style'][_0x567d6a(0x1c4)]=this['_map'][_0x567d6a(0x1d5)]['canvas']['clientWidth']+'px',this['canvas'][_0x567d6a(0x1f0)]['height']=this[_0x567d6a(0x271)]['scene']['canvas']['clientHeight']+'px',this[_0x567d6a(0x1fd)]['width']=this[_0x567d6a(0x271)]['scene']['canvas']['clientWidth'],this['canvas'][_0x567d6a(0x242)]=this['_map']['scene'][_0x567d6a(0x1fd)]['clientHeight']);}['bindEvent'](){const _0x41db26=_0x3412fe,_0x1ad786=this;let _0x412028=Date['now']();(function _0x4d13f9(){const _0x1b8be9=_0x4f2c;_0x1ad786['animateFrame']=window['requestAnimationFrame'](_0x4d13f9);if(_0x1ad786[_0x1b8be9(0x264)]&&_0x1ad786['windField']){const _0x19d289=Date['now'](),_0x5d0113=_0x19d289-_0x412028;_0x5d0113>_0x1ad786[_0x1b8be9(0x1eb)]&&(_0x412028=_0x19d289-_0x5d0113%_0x1ad786['frameTime'],_0x1ad786['update']());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options'][_0x41db26(0x1b6)]&&(this[_0x41db26(0x271)]['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x3412fe(0x26f)](){const _0x1d6e06=_0x3412fe;window['cancelAnimationFrame'](this['animateFrame']),delete this['animateFrame'],window['removeEventListener']('resize',this[_0x1d6e06(0x26e)]),this['options']['mouseHidden']&&(this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x1d6e06(0x271)]['off'](mars3d__namespace['EventType'][_0x1d6e06(0x1b5)],this['_onMouseUpEvent'],this),this['_map'][_0x1d6e06(0x205)](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}[_0x3412fe(0x19f)](_0x462772){const _0x42be57=_0x3412fe;clearTimeout(this['refreshTimer']);if(!this['show']||!this[_0x42be57(0x1fd)])return;this['canvas']['style']['visibility']='hidden',this['refreshTimer']=setTimeout(()=>{const _0x5dab4c=_0x42be57;if(!this['show'])return;this[_0x5dab4c(0x1ce)](),this['canvas'][_0x5dab4c(0x1f0)]['visibility']='visible';},0xc8);}['_onMouseDownEvent'](_0xc6e003){const _0x2ad708=_0x3412fe;this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x2ad708(0x1e6)],this['_onMouseMoveEvent'],this);}[_0x3412fe(0x237)](_0x50a96e){const _0x100362=_0x3412fe;if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this['canvas'][_0x100362(0x1f0)][_0x100362(0x1aa)]='hidden',this['mouse_move']=!![]);}[_0x3412fe(0x251)](_0x184ff7){const _0x41aecf=_0x3412fe;if(!this[_0x41aecf(0x264)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['mouse_down']&&this['mouse_move']&&this[_0x41aecf(0x1ce)](),this['canvas']['style']['visibility']='visible',this['mouse_down']=![],this[_0x41aecf(0x1de)]=![];}['setData'](_0x248b41){const _0x463aba=_0x3412fe;this[_0x463aba(0x25e)](),this['windData']=_0x248b41,this['windField'][_0x463aba(0x274)](_0x248b41),this['redraw']();}['redraw'](){const _0x2a08a8=_0x3412fe;if(!this['show'])return;this['windField'][_0x2a08a8(0x234)](this[_0x2a08a8(0x223)]),this['update']();}['update'](){const _0x4a44e5=_0x3412fe;if(this['_updateIng'])return;this['_updateIng']=!![];if(this['worker'])this['windField']['update']();else{const _0x3ace26=this[_0x4a44e5(0x287)]['getParticles']();this['_drawLines'](_0x3ace26);}this[_0x4a44e5(0x1e2)]=![];}['_drawLines'](_0x3d1b6f){const _0xa366c6=_0x3412fe;this[_0xa366c6(0x25a)]['globalCompositeOperation']='destination-in',this[_0xa366c6(0x25a)]['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this[_0xa366c6(0x25a)]['globalCompositeOperation']='lighter',this[_0xa366c6(0x25a)][_0xa366c6(0x1e5)]=0.9;const _0x24a468=this[_0xa366c6(0x271)][_0xa366c6(0x1d5)]['mode']!==Cesium['SceneMode']['SCENE3D'],_0xd83e3d=this['canvasWidth']*0.25;if(this['_colorRamp'])for(let _0xd261dd=0x0,_0x3ab63f=_0x3d1b6f[_0xa366c6(0x243)];_0xd261dd<_0x3ab63f;_0xd261dd++){const _0x351f9b=_0x3d1b6f[_0xd261dd],_0x764a14=this['_tomap'](_0x351f9b[_0xa366c6(0x1be)],_0x351f9b['lat'],_0x351f9b),_0x446383=this[_0xa366c6(0x19c)](_0x351f9b['tlng'],_0x351f9b['tlat'],_0x351f9b);if(!_0x764a14||!_0x446383)continue;if(_0x24a468&&Math['abs'](_0x764a14[0x0]-_0x446383[0x0])>=_0xd83e3d)continue;this[_0xa366c6(0x25a)][_0xa366c6(0x268)](),this['canvasContext']['lineWidth']=this[_0xa366c6(0x25f)],this['canvasContext']['strokeStyle']=this['_colorRamp']['getColor'](_0x351f9b['speed']),this['canvasContext'][_0xa366c6(0x228)](_0x764a14[0x0],_0x764a14[0x1]),this['canvasContext']['lineTo'](_0x446383[0x0],_0x446383[0x1]),this['canvasContext']['stroke']();}else{this[_0xa366c6(0x25a)]['beginPath'](),this[_0xa366c6(0x25a)]['lineWidth']=this[_0xa366c6(0x25f)],this['canvasContext'][_0xa366c6(0x1a2)]=this['color'];for(let _0x3f2f94=0x0,_0x37d759=_0x3d1b6f[_0xa366c6(0x243)];_0x3f2f94<_0x37d759;_0x3f2f94++){const _0x4ec8a4=_0x3d1b6f[_0x3f2f94],_0x170ed8=this['_tomap'](_0x4ec8a4['lng'],_0x4ec8a4['lat'],_0x4ec8a4),_0x4fa587=this[_0xa366c6(0x19c)](_0x4ec8a4['tlng'],_0x4ec8a4['tlat'],_0x4ec8a4);if(!_0x170ed8||!_0x4fa587)continue;if(_0x24a468&&Math[_0xa366c6(0x1d2)](_0x170ed8[0x0]-_0x4fa587[0x0])>=_0xd83e3d)continue;this['canvasContext'][_0xa366c6(0x228)](_0x170ed8[0x0],_0x170ed8[0x1]),this['canvasContext']['lineTo'](_0x4fa587[0x0],_0x4fa587[0x1]);}this['canvasContext'][_0xa366c6(0x23d)]();}}['_tomap'](_0xfad79f,_0x4de007,_0x17f00e){const _0x2e24ce=_0x3412fe,_0x29db5f=Cesium[_0x2e24ce(0x1b9)]['fromDegrees'](_0xfad79f,_0x4de007,this['fixedHeight']),_0xe8ab19=this['_map']['scene'];if(_0xe8ab19['mode']===Cesium[_0x2e24ce(0x248)][_0x2e24ce(0x267)]){const _0x19c445=new Cesium['EllipsoidalOccluder'](_0xe8ab19[_0x2e24ce(0x284)][_0x2e24ce(0x25d)],_0xe8ab19['camera']['positionWC']),_0x4c7bb4=_0x19c445['isPointVisible'](_0x29db5f);if(!_0x4c7bb4)return _0x17f00e['age']=0x0,null;}const _0x2ecd6d=Cesium['SceneTransforms']['wgs84ToWindowCoordinates'](this[_0x2e24ce(0x271)]['scene'],_0x29db5f);return _0x2ecd6d?[_0x2ecd6d['x'],_0x2ecd6d['y']]:null;}[_0x3412fe(0x25e)](){const _0x2aee4a=_0x3412fe;this['windField']['clear'](),delete this[_0x2aee4a(0x1cc)];}[_0x3412fe(0x20d)](){const _0x1f6b12=_0x3412fe;this[_0x1f6b12(0x241)]=new Worker(this[_0x1f6b12(0x223)][_0x1f6b12(0x241)]),this['worker']['onmessage']=_0x32aa76=>{const _0x287c00=_0x1f6b12;this[_0x287c00(0x1b4)](_0x32aa76[_0x287c00(0x238)][_0x287c00(0x280)]),this['_updateIng2']=![];},this['windField']={'init':_0xe0b535=>{this['worker']['postMessage']({'type':'init','options':_0xe0b535});},'setOptions':_0x4b5e35=>{const _0x5855c4=_0x1f6b12;this[_0x5855c4(0x241)]['postMessage']({'type':_0x5855c4(0x234),'options':_0x4b5e35});},'setDate':_0x3afa28=>{const _0x96f6c9=_0x1f6b12;this['worker'][_0x96f6c9(0x1d4)]({'type':'setDate','data':_0x3afa28});},'update':()=>{const _0x4787bc=_0x1f6b12;if(this[_0x4787bc(0x1a9)])return;this['_updateIng2']=!![],this['worker'][_0x4787bc(0x1d4)]({'type':_0x4787bc(0x25c)});},'clear':()=>{const _0x109fc5=_0x1f6b12;this['worker'][_0x109fc5(0x1d4)]({'type':_0x109fc5(0x25e)});}},this['windField']['init'](this[_0x1f6b12(0x223)]);}}mars3d__namespace[_0x3412fe(0x27e)][_0x3412fe(0x27c)]('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports[_0x3412fe(0x1a8)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
|