mars3d-wind 3.10.10 → 3.10.11

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.
Files changed (2) hide show
  1. package/mars3d-wind.js +3 -3
  2. package/package.json +2 -2
package/mars3d-wind.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
3
3
  *
4
- * 版本信息:v3.10.10
5
- * 编译日期:2025-12-12 16:31
4
+ * 版本信息:v3.10.11
5
+ * 编译日期:2025-12-31 16:28
6
6
  * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
7
  * 使用单位:火星科技免费公开版 ,2025-07-01
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';(function(_0x1e473c,_0x476cbd){function _0x25e12e(_0x2c9f27,_0x2b2bed){return _0xa5c5(_0x2c9f27-0x358,_0x2b2bed);}const _0x1946bd=_0x1e473c();function _0x20df93(_0x380cb1,_0x3366a8){return _0xa5c5(_0x380cb1-0x21,_0x3366a8);}while(!![]){try{const _0x40a7e5=parseInt(_0x20df93(0x277,0x2b7))/0x1+parseInt(_0x25e12e(0x51f,0x4d6))/0x2+-parseInt(_0x25e12e(0x4c8,0x4f1))/0x3+parseInt(_0x25e12e(0x4d2,0x44d))/0x4+-parseInt(_0x25e12e(0x4f0,0x45f))/0x5*(-parseInt(_0x20df93(0x185,0x13e))/0x6)+parseInt(_0x25e12e(0x5a2,0x590))/0x7+-parseInt(_0x25e12e(0x5c3,0x579))/0x8;if(_0x40a7e5===_0x476cbd)break;else _0x1946bd['push'](_0x1946bd['shift']());}catch(_0x2390f5){_0x1946bd['push'](_0x1946bd['shift']());}}}(_0x763a,0xb5a28));function _interopNamespace(_0x1f4638){if(_0x1f4638&&_0x1f4638['__esModule'])return _0x1f4638;var _0x17d1fa=Object[_0x31d5f1(0x64,-0x8)](null);function _0x3c5fc2(_0x37fdd8,_0x780593){return _0xa5c5(_0x780593-0x166,_0x37fdd8);}_0x1f4638&&Object['keys'](_0x1f4638)[_0x31d5f1(0xc,0x45)](function(_0x472bbe){function _0x483fc1(_0x1a80c7,_0x5452c1){return _0x31d5f1(_0x5452c1-0x3c8,_0x1a80c7);}function _0xe6806f(_0x4345ae,_0x2918ea){return _0x31d5f1(_0x2918ea-0x9f,_0x4345ae);}if(_0x472bbe!=='default'){var _0x3043e2=Object[_0xe6806f(0x29,0x83)](_0x1f4638,_0x472bbe);Object[_0x483fc1(0x445,0x3c9)](_0x17d1fa,_0x472bbe,_0x3043e2['get']?_0x3043e2:{'enumerable':!![],'get':function(){return _0x1f4638[_0x472bbe];}});}});_0x17d1fa['default']=_0x1f4638;function _0x31d5f1(_0x15ad30,_0x565a3c){return _0xa5c5(_0x15ad30- -0x1dd,_0x565a3c);}return _0x17d1fa;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function getU(_0x54962a,_0x5e9202){function _0x4962af(_0x210507,_0x54e9bd){return _0xa5c5(_0x54e9bd- -0x333,_0x210507);}const _0x185ad0=_0x54962a*Math['cos'](Cesium$2[_0x46b18c(-0x3b,-0x35)][_0x46b18c(-0xd0,-0xb4)](_0x5e9202));function _0x46b18c(_0x47e60d,_0x1d7590){return _0xa5c5(_0x1d7590- -0x272,_0x47e60d);}return _0x185ad0;}function getV(_0xb4edad,_0x3a2190){const _0x5a3b04=_0xb4edad*Math['sin'](Cesium$2['Math']['toRadians'](_0x3a2190));return _0x5a3b04;}function getSpeed(_0x3e34a3,_0x37a8c6){const _0x1756fb=Math['sqrt'](Math[_0x13224d(0x465,0x40f)](_0x3e34a3,0x2)+Math[_0x13224d(0x465,0x47b)](_0x37a8c6,0x2));function _0x241af8(_0x5155e4,_0x3cba41){return _0xa5c5(_0x3cba41- -0x153,_0x5155e4);}function _0x13224d(_0x25cd4d,_0x4cc33f){return _0xa5c5(_0x25cd4d-0x26c,_0x4cc33f);}return _0x1756fb;}function getDirection(_0x3e58a8,_0x54f0a0){let _0x17874d=Cesium$2['Math']['toDegrees'](Math['atan2'](_0x54f0a0,_0x3e58a8));return _0x17874d+=_0x17874d<0x0?0x168:0x0,_0x17874d;}const _0x32ec21={};_0x32ec21[_0x69b9bf(0x622,0x61b)]=null,_0x32ec21['getU']=getU,_0x32ec21['getV']=getV,_0x32ec21[_0x16b89f(-0x188,-0x183)]=getSpeed,_0x32ec21[_0x16b89f(-0x209,-0x1c5)]=getDirection;var WindUtil=_0x32ec21;const version=_0x69b9bf(0x5fa,0x5f6),buildTime=_0x69b9bf(0x5ca,0x566);var updatePositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20获取当前粒子的位置\x0a\x20\x20vec2\x20currentPos\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20获取粒子的速度\x0a\x20\x20vec2\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20计算下一个位置\x0a\x20\x20vec2\x20nextPos\x20=\x20currentPos\x20+\x20speed;\x0a\x0a\x20\x20\x20\x20//\x20将新的位置写入\x20fragColor\x0a\x20\x20fragColor\x20=\x20vec4(nextPos,\x200.0f,\x201.0f);\x0a}\x0a',calculateSpeedShader=_0x69b9bf(0x55a,0x539),postProcessingPositionFragmentShader=_0x16b89f(-0x1a2,-0x152),renderParticlesFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec4\x20speed;\x0ain\x20float\x20v_segmentPosition;\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20vec2\x20domain;\x0auniform\x20vec2\x20displayRange;\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speed.a\x20>\x20zero\x20&&\x20speed.b\x20>\x20displayRange.x\x20&&\x20speed.b\x20<\x20displayRange.y)\x20{\x0a\x20\x20\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x20\x20\x20\x20vec4\x20baseColor\x20=\x20texture(colorTable,\x20vec2(normalizedSpeed,\x20zero));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用更平滑的渐变效果\x0a\x20\x20\x20\x20float\x20alpha\x20=\x20smoothstep(0.0f,\x201.0f,\x20v_segmentPosition);\x0a\x20\x20\x20\x20alpha\x20=\x20pow(alpha,\x201.5f);\x20//\x20调整透明度渐变曲线\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20根据速度调整透明度\x0a\x20\x20\x20\x20float\x20speedAlpha\x20=\x20mix(0.3f,\x201.0f,\x20speed.a);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20组合颜色和透明度\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(baseColor.rgb,\x20baseColor.a\x20*\x20alpha\x20*\x20speedAlpha);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a\x0a\x20\x20float\x20segmentsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20if(segmentsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',renderParticlesVertexShader=_0x16b89f(-0x1cf,-0x165);const {ShaderSource:ShaderSource$1}=mars3d__namespace[_0x69b9bf(0x608,0x5d1)];class ShaderManager{static['getCalculateSpeedShader'](){function _0xb1265b(_0x57e1c4,_0x2702be){return _0x69b9bf(_0x2702be,_0x57e1c4- -0x3d7);}const _0x3a6787={};return _0x3a6787[_0xb1265b(0x272,0x257)]=[calculateSpeedShader],new ShaderSource$1(_0x3a6787);}static['getUpdatePositionShader'](){function _0x390998(_0x1606c8,_0x45b5f7){return _0x16b89f(_0x45b5f7,_0x1606c8-0x2ae);}const _0x5e0e01={};return _0x5e0e01[_0x390998(0x1f3,0x278)]=[updatePositionShader],new ShaderSource$1(_0x5e0e01);}static['getSegmentDrawVertexShader'](){const _0x2bfe94={};return _0x2bfe94['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x2bfe94);}static['getSegmentDrawFragmentShader'](){const _0x20d908={};return _0x20d908['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x20d908);}static['getPostProcessingPositionShader'](){const _0x48fb97={};return _0x48fb97['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x48fb97);}}function _0x69b9bf(_0x58cb52,_0x1d68e9){return _0xa5c5(_0x1d68e9-0x3dd,_0x58cb52);}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defined,destroyObject}=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x84400d){this['commandType']=_0x84400d['commandType'],this[_0x168b52(0x3d8,0x457)]=_0x84400d['geometry'],this['attributeLocations']=_0x84400d['attributeLocations'],this['primitiveType']=_0x84400d[_0x168b52(0x494,0x4b7)];function _0x168b52(_0x55e1c6,_0x3846e5){return _0x16b89f(_0x3846e5,_0x55e1c6-0x558);}this['uniformMap']=_0x84400d[_0x117ab3(-0xc7,-0xcd)]||{},this[_0x168b52(0x3c5,0x419)]=_0x84400d['vertexShaderSource'],this['fragmentShaderSource']=_0x84400d[_0x168b52(0x433,0x487)],this['rawRenderState']=_0x84400d['rawRenderState'],this['framebuffer']=_0x84400d['framebuffer'],this['outputTexture']=_0x84400d['outputTexture'],this['autoClear']=_0x84400d['autoClear']??![],this['preExecute']=_0x84400d[_0x168b52(0x3bf,0x382)],this['show']=!![],this['commandToExecute']=undefined,this[_0x117ab3(-0xd6,-0xb9)]=undefined;function _0x117ab3(_0x5bc2bb,_0x185e55){return _0x69b9bf(_0x185e55,_0x5bc2bb- -0x65f);}this[_0x117ab3(-0x6c,0x7)]=_0x84400d[_0x117ab3(-0x6c,-0x26)]??(()=>!![]),this['autoClear']&&(this[_0x117ab3(-0xd6,-0xb6)]=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x168b52(0x3c7,0x38e)],'pass':Pass$1['OPAQUE']}));}['createCommand'](_0x190290){function _0x2f3ccd(_0x107913,_0x5e6a9e){return _0x69b9bf(_0x107913,_0x5e6a9e- -0x296);}function _0x462a47(_0x2ce617,_0x1f77c9){return _0x69b9bf(_0x2ce617,_0x1f77c9- -0x53d);}if(this[_0x462a47(0xf,0x33)]===_0x2f3ccd(0x3f5,0x396)){const _0x3fcaea={};_0x3fcaea[_0x2f3ccd(0x283,0x30f)]=_0x190290,_0x3fcaea['geometry']=this[_0x2f3ccd(0x2bd,0x2ee)],_0x3fcaea[_0x462a47(0xe8,0x70)]=this[_0x462a47(0x2e,0x70)],_0x3fcaea[_0x462a47(0x63,0xd4)]=BufferUsage$1['STATIC_DRAW'];const _0x33bae9=VertexArray$1['fromGeometry'](_0x3fcaea),_0x58e5d7={};_0x58e5d7[_0x462a47(0x89,0x68)]=_0x190290,_0x58e5d7['vertexShaderSource']=this['vertexShaderSource'],_0x58e5d7['fragmentShaderSource']=this['fragmentShaderSource'],_0x58e5d7['attributeLocations']=this['attributeLocations'];const _0x3308f=ShaderProgram[_0x462a47(-0x31,0x48)](_0x58e5d7),_0x5a21fb=RenderState[_0x2f3ccd(0x372,0x2ef)](this['rawRenderState']),_0x364834={};return _0x364834[_0x462a47(0xdd,0xfa)]=this,_0x364834['vertexArray']=_0x33bae9,_0x364834[_0x462a47(0x105,0x103)]=this[_0x2f3ccd(0x377,0x3aa)],_0x364834['modelMatrix']=Matrix4['IDENTITY'],_0x364834['renderState']=_0x5a21fb,_0x364834[_0x2f3ccd(0x3bf,0x35e)]=_0x3308f,_0x364834['framebuffer']=this['framebuffer'],_0x364834['uniformMap']=this[_0x462a47(-0x1c,0x5b)],_0x364834[_0x2f3ccd(0x363,0x399)]=Pass$1['OPAQUE'],new DrawCommand(_0x364834);}else{if(this['commandType']==='Compute'){const _0x4f84db={};return _0x4f84db[_0x2f3ccd(0x325,0x3a1)]=this,_0x4f84db['fragmentShaderSource']=this['fragmentShaderSource'],_0x4f84db['uniformMap']=this['uniformMap'],_0x4f84db[_0x462a47(0x34,-0xd)]=this['outputTexture'],_0x4f84db['persists']=!![],new ComputeCommand(_0x4f84db);}else throw new Error('Unknown\x20command\x20type');}}['setGeometry'](_0x355617,_0xe4403b){this['geometry']=_0xe4403b;function _0x11e156(_0x748069,_0x17ea38){return _0x69b9bf(_0x17ea38,_0x748069- -0x39f);}function _0x3b4a8f(_0x2f92f3,_0x498517){return _0x16b89f(_0x498517,_0x2f92f3-0x36);}defined(this['commandToExecute'])&&(this['commandToExecute']['vertexArray']=VertexArray$1[_0x11e156(0x26b,0x21f)]({'context':_0x355617,'geometry':this['geometry'],'attributeLocations':this[_0x11e156(0x20e,0x228)],'bufferUsage':BufferUsage$1[_0x11e156(0x1d0,0x16f)]}));}['update'](_0x40a2bd){if(!this[_0x36e978(0x1d0,0x1bb)]())return;if(!this['show']||!defined(_0x40a2bd))return;!defined(this['commandToExecute'])&&(this[_0x459f30(0x62,0xe2)]=this['createCommand'](_0x40a2bd['context']));function _0x459f30(_0x3eac98,_0x3445f3){return _0x69b9bf(_0x3445f3,_0x3eac98- -0x565);}defined(this['preExecute'])&&this[_0x36e978(0x1b3,0x133)]();function _0x36e978(_0x350cf6,_0xb77ac7){return _0x16b89f(_0x350cf6,_0xb77ac7-0x2cc);}if(!_0x40a2bd[_0x36e978(0x1b9,0x19d)]){console[_0x36e978(0xdc,0xf0)]('frameState.commandList\x20is\x20undefined');return;}defined(this[_0x36e978(0xf9,0x151)])&&_0x40a2bd[_0x36e978(0x14e,0x19d)]['push'](this[_0x459f30(0x24,0xae)]),defined(this['commandToExecute'])&&_0x40a2bd['commandList']['push'](this['commandToExecute']);}['isDestroyed'](){return![];}[_0x69b9bf(0x52b,0x57c)](){function _0x31f96b(_0x30872d,_0x4ba04c){return _0x69b9bf(_0x4ba04c,_0x30872d- -0xcf);}function _0x2d51a8(_0x233e33,_0x39b80a){return _0x69b9bf(_0x39b80a,_0x233e33- -0x1be);}if(defined(this['commandToExecute'])){var _0x437f6f;(_0x437f6f=this['commandToExecute']['shaderProgram'])===null||_0x437f6f===void 0x0||_0x437f6f[_0x31f96b(0x4ad,0x453)](),this[_0x31f96b(0x4f8,0x4b5)]['shaderProgram']=undefined;}return destroyObject(this);}}function deepMerge(_0x2585d4,_0x5b3627){function _0x4882c1(_0x326ef5,_0x4f6ead){return _0x16b89f(_0x326ef5,_0x4f6ead-0x89);}if(!_0x2585d4)return _0x5b3627;if(!_0x5b3627)return _0x2585d4;function _0x52d8d3(_0x5afead,_0x4a28fa){return _0x16b89f(_0x5afead,_0x4a28fa-0xf0);}const _0xbb4a7b={..._0x5b3627},_0x4fd9f9=_0xbb4a7b;for(const _0x218af7 in _0x2585d4){if(Object[_0x4882c1(-0x3f,-0x72)]['hasOwnProperty'][_0x4882c1(-0x18,-0x95)](_0x2585d4,_0x218af7)){const _0x5acd2b=_0x2585d4[_0x218af7],_0x201f1b=_0x5b3627[_0x218af7];if(Array[_0x4882c1(-0x15e,-0xf1)](_0x5acd2b)){_0x4fd9f9[_0x218af7]=_0x5acd2b[_0x4882c1(-0x94,-0x81)]();continue;}if(_0x5acd2b&&typeof _0x5acd2b===_0x4882c1(-0xa8,-0x104)){_0x4fd9f9[_0x218af7]=deepMerge(_0x5acd2b,_0x201f1b||{});continue;}_0x5acd2b!==undefined&&(_0x4fd9f9[_0x218af7]=_0x5acd2b);}}return _0x4fd9f9;}const {Cartesian2:Cartesian2$1,FrameRateMonitor,PixelDatatype:PixelDatatype$1,PixelFormat:PixelFormat$1,Sampler:Sampler$1,Texture:Texture$1,TextureMagnificationFilter:TextureMagnificationFilter$1,TextureMinificationFilter:TextureMinificationFilter$1}=mars3d__namespace['Cesium'];class WindParticlesComputing{constructor(_0x19bb3e,_0x260915,_0x15ecf8,_0x230710,_0x262879){this[_0x152e53(0xa1,0x7c)]=_0x19bb3e;function _0x23eefb(_0x21aa35,_0x53e9ff){return _0x16b89f(_0x53e9ff,_0x21aa35-0x23a);}this['options']=_0x15ecf8,this[_0x23eefb(0x6c,0xd2)]=_0x230710;function _0x152e53(_0x2811aa,_0x197df4){return _0x16b89f(_0x2811aa,_0x197df4-0x1db);}this[_0x152e53(0x14e,0xe2)]=_0x260915,this['frameRate']=0x3c,this['frameRateAdjustment']=0x1;const _0x62889c={};_0x62889c['scene']=_0x262879,_0x62889c[_0x152e53(0x4e,0x1e)]=0x1,_0x62889c[_0x152e53(-0x15,-0x4)]=0x0,this['frameRateMonitor']=new FrameRateMonitor(_0x62889c),this[_0x23eefb(0x123,0x13d)](),this[_0x152e53(0x67,0x7f)](),this['createParticlesTextures'](),this['createComputingPrimitives']();}['initFrameRate'](){const _0x1a11e6=()=>{function _0x3c28c5(_0x1ca2b6,_0x59e340){return _0xa5c5(_0x1ca2b6-0x16,_0x59e340);}function _0x4a47df(_0x48db2b,_0x5df2c9){return _0xa5c5(_0x48db2b-0x258,_0x5df2c9);}this['frameRateMonitor']['lastFramesPerSecond']>0x14&&(this['frameRate']=this[_0x4a47df(0x3db,0x403)]['lastFramesPerSecond'],this['frameRateAdjustment']=0x3c/Math[_0x3c28c5(0x21a,0x1cb)](this['frameRate'],0x1));};function _0x3aa4cf(_0x4abf5e,_0x1d25d2){return _0x69b9bf(_0x1d25d2,_0x4abf5e- -0x51b);}function _0x974dc8(_0x50bf19,_0x15da5b){return _0x69b9bf(_0x15da5b,_0x50bf19- -0x758);}_0x1a11e6();const _0x4be60f=setInterval(_0x1a11e6,0x3e8),_0x46acc7=this[_0x3aa4cf(0x61,0x19)][_0x974dc8(-0x20e,-0x1cc)](this);this['destroy']=()=>{clearInterval(_0x4be60f),_0x46acc7();};}[_0x69b9bf(0x536,0x5a8)](){function _0x177904(_0x1b8161,_0x55d2f1){return _0x69b9bf(_0x55d2f1,_0x1b8161- -0x5e1);}const _0x272b21={};_0x272b21['minificationFilter']=TextureMinificationFilter$1['LINEAR'],_0x272b21[_0x3992e0(0x436,0x41a)]=TextureMagnificationFilter$1['LINEAR'];const _0x3ddc01={'context':this[_0x3992e0(0x465,0x494)],'width':this[_0x3992e0(0x4a8,0x4fa)]['width'],'height':this[_0x3992e0(0x526,0x4fa)][_0x177904(-0x4a,0x13)],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this['options']['flipY']??![],'sampler':new Sampler$1(_0x272b21)};function _0x3992e0(_0x35e155,_0x396c8f){return _0x69b9bf(_0x35e155,_0x396c8f- -0x111);}this[_0x177904(-0x3a,0x34)]={'U':new Texture$1({..._0x3ddc01,'source':{'arrayBufferView':new Float32Array(this['windData']['u'][_0x177904(-0xb7,-0x7b)])}}),'V':new Texture$1({..._0x3ddc01,'source':{'arrayBufferView':new Float32Array(this['windData']['v'][_0x3992e0(0x3be,0x419)])}})};}[_0x16b89f(-0x9e,-0xca)](){const _0x2aaeb6={};_0x2aaeb6[_0x1a9f8e(0x3d2,0x38c)]=TextureMinificationFilter$1['NEAREST'],_0x2aaeb6['magnificationFilter']=TextureMagnificationFilter$1[_0x110772(-0x105,-0x12a)];function _0x1a9f8e(_0x27433f,_0x15bb14){return _0x16b89f(_0x15bb14,_0x27433f-0x4a4);}const _0x16c7e6={'context':this['context'],'width':this['options'][_0x110772(-0x17b,-0x153)],'height':this[_0x110772(-0x1c4,-0x169)][_0x1a9f8e(0x34c,0x3c8)],'pixelFormat':PixelFormat$1[_0x1a9f8e(0x398,0x40e)],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options']['particlesTextureSize']*this['options']['particlesTextureSize']*0x4)[_0x110772(-0x198,-0x153)](0x0)},'sampler':new Sampler$1(_0x2aaeb6)};function _0x110772(_0x743572,_0x48a375){return _0x69b9bf(_0x48a375,_0x743572- -0x727);}this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0x16c7e6),'currentParticlesPosition':new Texture$1(_0x16c7e6),'nextParticlesPosition':new Texture$1(_0x16c7e6),'postProcessingPosition':new Texture$1(_0x16c7e6),'particlesSpeed':new Texture$1(_0x16c7e6)};}['destroyParticlesTextures'](){function _0x508128(_0x2a3935,_0x2c9557){return _0x69b9bf(_0x2a3935,_0x2c9557- -0x3ff);}Object['values'](this['particlesTextures'])[_0x508128(0x221,0x1c7)](_0x4a2a7b=>_0x4a2a7b['destroy']());}[_0x69b9bf(0x5b4,0x5f9)](){function _0x3b0043(_0xd5d03f,_0x19480c){return _0x16b89f(_0xd5d03f,_0x19480c-0x211);}function _0xe35a44(_0x44b02e,_0x357542){return _0x16b89f(_0x357542,_0x44b02e-0x460);}this[_0xe35a44(0x347,0x3a1)]={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':()=>this[_0xe35a44(0x303,0x2dc)]['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this[_0xe35a44(0x367,0x2f2)]['u'][_0x3b0043(0xf0,0xe9)],this['windData']['u']['max']),'vRange':()=>new Cartesian2$1(this['windData']['v']['min'],this['windData']['v']['max']),'speedRange':()=>new Cartesian2$1(this['windData']['speed']['min'],this['windData']['speed'][_0xe35a44(0x33d,0x3a1)]),'currentParticlesPosition':()=>this['particlesTextures'][_0x3b0043(0x51,0x4b)],'speedScaleFactor':()=>{function _0x22cd9a(_0x208be7,_0x1deaf1){return _0x3b0043(_0x1deaf1,_0x208be7- -0x13c);}return(this['viewerParameters']['pixelSize']+0x32)*this[_0x22cd9a(-0xcc,-0x102)]['speedFactor'];},'frameRateAdjustment':()=>this[_0x3b0043(0x1d3,0x153)],'dimension':()=>new Cartesian2$1(this[_0xe35a44(0x367,0x316)][_0x3b0043(0xb8,0xcb)],this['windData'][_0xe35a44(0x2f3,0x2e9)]),'minimum':()=>new Cartesian2$1(this['windData'][_0xe35a44(0x2e9,0x2db)][_0x3b0043(0x64,0xd0)],this[_0x3b0043(0xef,0x118)][_0x3b0043(0x33,0x9a)][_0xe35a44(0x390,0x347)]),'maximum':()=>new Cartesian2$1(this['windData']['bounds']['east'],this['windData'][_0x3b0043(0x4c,0x9a)][_0x3b0043(0xe0,0x150)])},'fragmentShaderSource':ShaderManager[_0x3b0043(0xdd,0x60)](),'outputTexture':this[_0x3b0043(0xdf,0xa0)]['particlesSpeed'],'preExecute':()=>{function _0x255fa2(_0x313309,_0x236d8d){return _0x3b0043(_0x236d8d,_0x313309- -0x24d);}const _0x41739c=this['particlesTextures']['previousParticlesPosition'];this[_0x255fa2(-0x1ad,-0x16b)]['previousParticlesPosition']=this['particlesTextures']['currentParticlesPosition'],this[_0x4eb6ac(0x400,0x429)]['currentParticlesPosition']=this[_0x255fa2(-0x1ad,-0x205)]['postProcessingPosition'],this['particlesTextures']['postProcessingPosition']=_0x41739c;function _0x4eb6ac(_0x13fa3d,_0x2bb480){return _0xe35a44(_0x13fa3d-0x111,_0x2bb480);}this['primitives']['calculateSpeed']['commandToExecute']&&(this['primitives'][_0x255fa2(-0x107,-0x9c)][_0x4eb6ac(0x434,0x4bd)]['outputTexture']=this[_0x4eb6ac(0x400,0x483)]['particlesSpeed']);},'isDynamic':()=>this['options']['dynamic']}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this[_0xe35a44(0x2ef,0x2c2)][_0x3b0043(0x10,0x4b)],'particlesSpeed':()=>this[_0xe35a44(0x2ef,0x298)]['particlesSpeed']},'fragmentShaderSource':ShaderManager['getUpdatePositionShader'](),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':()=>{function _0x3cecc7(_0x5e0b5a,_0x16221e){return _0x3b0043(_0x16221e,_0x5e0b5a- -0x1a9);}function _0x258af2(_0x430571,_0x51420f){return _0xe35a44(_0x51420f-0x67,_0x430571);}this[_0x3cecc7(-0xb1,-0x136)]['updatePosition']['commandToExecute']&&(this[_0x258af2(0x378,0x3ae)]['updatePosition']['commandToExecute']['outputTexture']=this[_0x3cecc7(-0x109,-0x9a)]['nextParticlesPosition']);},'isDynamic':()=>this['options'][_0x3b0043(0x66,0xe4)]}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this['particlesTextures']['nextParticlesPosition'],'particlesSpeed':()=>this['particlesTextures'][_0xe35a44(0x33f,0x3cb)],'lonRange':()=>this[_0xe35a44(0x292,0x26f)]['lonRange'],'latRange':()=>this['viewerParameters'][_0xe35a44(0x37f,0x303)],'dataLonRange':()=>new Cartesian2$1(this['windData']['bounds']['west'],this['windData'][_0x3b0043(0xe3,0x9a)][_0x3b0043(0x39,0x61)]),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0x3b0043(0x8c,0x9a)][_0xe35a44(0x390,0x354)],this[_0xe35a44(0x367,0x2fa)][_0xe35a44(0x2e9,0x2da)]['north']),'randomCoefficient':function(){return Math['random']();},'dropRate':()=>this['options']['dropRate'],'dropRateBump':()=>this['options']['dropRateBump'],'useViewerBounds':()=>this[_0xe35a44(0x2bf,0x244)]['useViewerBounds']},'fragmentShaderSource':ShaderManager['getPostProcessingPositionShader'](),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':()=>{function _0x59a72d(_0x2d37ec,_0x3cff76){return _0xe35a44(_0x2d37ec-0x18c,_0x3cff76);}function _0x3aa8d7(_0x5a9d72,_0x56bdb6){return _0xe35a44(_0x5a9d72-0x285,_0x56bdb6);}this['primitives']['postProcessingPosition']['commandToExecute']&&(this['primitives']['postProcessingPosition'][_0x3aa8d7(0x5a8,0x529)][_0x59a72d(0x418,0x3e0)]=this[_0x3aa8d7(0x574,0x573)]['postProcessingPosition']);},'isDynamic':()=>this[_0x3b0043(0x45,0x70)][_0xe35a44(0x333,0x39a)]})};}['reCreateWindTextures'](){function _0x1875d1(_0x3a15b2,_0xfaa99c){return _0x16b89f(_0xfaa99c,_0x3a15b2-0x3ea);}function _0x45a5d9(_0x232051,_0x115417){return _0x69b9bf(_0x232051,_0x115417- -0x1cd);}this[_0x45a5d9(0x3cf,0x3da)]['U']['destroy'](),this[_0x1875d1(0x28d,0x215)]['V']['destroy'](),this['createWindTextures']();}[_0x16b89f(-0x120,-0xf2)](_0x20f804){this['windData']=_0x20f804;function _0x452b05(_0x52734e,_0x3b65e1){return _0x16b89f(_0x3b65e1,_0x52734e-0x5b9);}this[_0x452b05(0x4eb,0x54a)]();}[_0x69b9bf(0x502,0x583)](_0xc830a3){const _0x14f3f0=_0xc830a3['flipY']!==undefined&&_0xc830a3['flipY']!==this['options'][_0xac6c82(0x3aa,0x3ff)];this[_0x5a2693(0x53d,0x52a)]=deepMerge(_0xc830a3,this[_0x5a2693(0x59b,0x52a)]);function _0xac6c82(_0x2814b7,_0x3ddf66){return _0x16b89f(_0x2814b7,_0x3ddf66-0x536);}function _0x5a2693(_0x2c8ab2,_0x5eba74){return _0x16b89f(_0x2c8ab2,_0x5eba74-0x6cb);}_0x14f3f0&&this['reCreateWindTextures']();}[_0x16b89f(-0x1a0,-0x14f)](_0x69ed7c){function _0x1df937(_0x4172e2,_0x3f9ec8){return _0x69b9bf(_0x4172e2,_0x3f9ec8- -0x38e);}const {array:_0x5c3542}=_0x69ed7c;let {min:_0x52bbe3,max:_0x5ce2a6}=_0x69ed7c;const _0x25f7b9=new Float32Array(_0x5c3542['length']);function _0x4812e1(_0x130d51,_0x3b436b){return _0x16b89f(_0x130d51,_0x3b436b-0x4e);}_0x52bbe3===undefined&&(console[_0x1df937(0x174,0x19a)](_0x1df937(0x24d,0x1d7)),_0x52bbe3=Math['min'](..._0x5c3542));_0x5ce2a6===undefined&&(console['warn'](_0x1df937(0x22e,0x271)),_0x5ce2a6=Math['max'](..._0x5c3542));const _0x595d96=Math['max'](Math[_0x1df937(0x1ed,0x200)](_0x52bbe3),Math['abs'](_0x5ce2a6));for(let _0x2dacb0=0x0;_0x2dacb0<_0x5c3542[_0x1df937(0x224,0x288)];_0x2dacb0++){const _0xe2e407=_0x5c3542[_0x2dacb0]/_0x595d96;_0x25f7b9[_0x2dacb0]=_0xe2e407;}return _0x25f7b9;}['destroy'](){Object[_0x9f250c(0x314,0x357)](this[_0x5f1f93(0x40b,0x42c)])[_0x5f1f93(0x481,0x44b)](_0x56fa98=>_0x56fa98['destroy']());function _0x5f1f93(_0x23d358,_0x398ef3){return _0x69b9bf(_0x23d358,_0x398ef3- -0x17b);}function _0x9f250c(_0x16d5e4,_0x49264d){return _0x16b89f(_0x16d5e4,_0x49264d-0x51f);}Object['values'](this[_0x5f1f93(0x3dc,0x418)])['forEach'](_0x4ae54e=>_0x4ae54e[_0x9f250c(0x3f9,0x397)]()),Object[_0x5f1f93(0x337,0x3c1)](this['primitives'])['forEach'](_0x552230=>_0x552230['destroy']()),this[_0x9f250c(0x3db,0x37b)][_0x5f1f93(0x42e,0x401)]();}}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace[_0x16b89f(-0xc4,-0x133)];class WindParticlesRendering{constructor(_0x2aade2,_0x3fba7f,_0x55e84b,_0x221089){this[_0xa2a593(0x423,0x48d)]=_0x2aade2,this['options']=_0x3fba7f;function _0xa2a593(_0x292de9,_0x9e53be){return _0x16b89f(_0x292de9,_0x9e53be-0x5ec);}this['viewerParameters']=_0x55e84b,this[_0x5bbc9e(0x17,-0x7d)]=_0x221089;function _0x5bbc9e(_0x3e1194,_0x4f175f){return _0x69b9bf(_0x4f175f,_0x3e1194- -0x571);}(typeof this[_0x5bbc9e(-0xe,0x4b)]['particlesTextureSize']!==_0xa2a593(0x4ae,0x4a4)||this['options'][_0x5bbc9e(0x3b,-0x49)]<=0x0)&&(console['error']('Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.'),this['options']['particlesTextureSize']=0x100),this['colorTable']=this['createColorTableTexture'](),this['textures']=this[_0x5bbc9e(-0x15,0x29)](),this[_0xa2a593(0x486,0x417)]=this[_0x5bbc9e(0xac,0x5b)](),this[_0xa2a593(0x4b0,0x4d3)]=this[_0xa2a593(0x589,0x513)]();}['createRenderingTextures'](){const _0x24cc14={};_0x24cc14[_0x2a764d(0x57e,0x612)]=this[_0x2a764d(0x57e,0x5e4)],_0x24cc14['width']=this[_0x57b7a4(-0x17a,-0x1fe)]['drawingBufferWidth'],_0x24cc14['height']=this['context']['drawingBufferHeight'];function _0x2a764d(_0x5846ba,_0x5a492f){return _0x69b9bf(_0x5a492f,_0x5846ba- -0x27);}_0x24cc14[_0x57b7a4(-0xea,-0x8d)]=PixelFormat['RGBA'],_0x24cc14['pixelDatatype']=PixelDatatype[_0x57b7a4(-0x169,-0x1c3)];const _0x4b132c=_0x24cc14,_0x5f0558={};_0x5f0558['context']=this['context'],_0x5f0558['width']=this[_0x57b7a4(-0x17a,-0x204)]['drawingBufferWidth'],_0x5f0558[_0x2a764d(0x570,0x582)]=this['context'][_0x57b7a4(-0x106,-0xcd)],_0x5f0558[_0x57b7a4(-0xea,-0x146)]=PixelFormat[_0x2a764d(0x5f0,0x64f)],_0x5f0558[_0x57b7a4(-0x1f1,-0x1c3)]=PixelDatatype['UNSIGNED_INT'];const _0x4ade5e=_0x5f0558;function _0x57b7a4(_0x4071bd,_0x277138){return _0x69b9bf(_0x277138,_0x4071bd- -0x71f);}return{'segmentsColor':new Texture(_0x4b132c),'segmentsDepth':new Texture(_0x4ade5e)};}['createRenderingFramebuffers'](){function _0x23dd11(_0x5a06d8,_0x341362){return _0x16b89f(_0x341362,_0x5a06d8-0x4ec);}const _0x2e2b4a={};function _0x5187b9(_0x41885c,_0x2485d6){return _0x69b9bf(_0x41885c,_0x2485d6- -0x1bc);}return _0x2e2b4a['context']=this[_0x5187b9(0x460,0x3e9)],_0x2e2b4a[_0x5187b9(0x337,0x3a3)]=[this['textures'][_0x23dd11(0x3c8,0x3d1)]],_0x2e2b4a['depthTexture']=this['textures']['segmentsDepth'],{'segments':new Framebuffer(_0x2e2b4a)};}['destoryRenderingFramebuffers'](){function _0x5bc303(_0x339f39,_0x26c221){return _0x69b9bf(_0x26c221,_0x339f39- -0x609);}function _0xad261d(_0x88498e,_0x4cad33){return _0x69b9bf(_0x88498e,_0x4cad33- -0x69);}Object[_0x5bc303(-0xcd,-0x10d)](this[_0xad261d(0x45a,0x4c6)])['forEach'](_0x4d5ea7=>{_0x4d5ea7['destroy']();});}['createColorTableTexture'](){const _0x553b04=new Float32Array(this['options'][_0x36a834(0x2d2,0x2b2)][_0x36a834(0x30e,0x334)](_0xa0e1cb=>{function _0x40411d(_0x1cf232,_0x2fe14c){return _0x36a834(_0x1cf232,_0x2fe14c- -0x513);}const _0x391da7=Color$1['fromCssColorString'](_0xa0e1cb);return[_0x391da7['red'],_0x391da7['green'],_0x391da7['blue'],_0x391da7[_0x40411d(-0x16a,-0x1b1)]];}));function _0x459873(_0x13e82c,_0x563987){return _0x16b89f(_0x563987,_0x13e82c-0x349);}function _0x36a834(_0x2192f9,_0x597359){return _0x69b9bf(_0x2192f9,_0x597359- -0x29f);}const _0x2f92e2={};return _0x2f92e2['minificationFilter']=TextureMinificationFilter['LINEAR'],_0x2f92e2['magnificationFilter']=TextureMagnificationFilter['LINEAR'],_0x2f92e2[_0x459873(0x241,0x29c)]=TextureWrap[_0x459873(0x291,0x2ac)],_0x2f92e2[_0x36a834(0x40f,0x37d)]=TextureWrap[_0x36a834(0x3f3,0x3ad)],new Texture({'context':this['context'],'width':this['options'][_0x36a834(0x2da,0x2b2)][_0x36a834(0x374,0x377)],'height':0x1,'pixelFormat':PixelFormat['RGBA'],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x2f92e2),'source':{'width':this['options']['colors'][_0x459873(0x25b,0x22b)],'height':0x1,'arrayBufferView':_0x553b04}});}['createSegmentsGeometry'](){const _0x37e227=0x4,_0x3ec4e5=this['options']['particlesTextureSize'];let _0x13d123=[];for(let _0x392cc1=0x0;_0x392cc1<_0x3ec4e5;_0x392cc1++){for(let _0x7c7ff7=0x0;_0x7c7ff7<_0x3ec4e5;_0x7c7ff7++){for(let _0x2373db=0x0;_0x2373db<_0x37e227;_0x2373db++){_0x13d123['push'](_0x392cc1/_0x3ec4e5),_0x13d123[_0xab7f0a(0x311,0x2e1)](_0x7c7ff7/_0x3ec4e5);}}}_0x13d123=new Float32Array(_0x13d123);const _0x4a7fd6=this[_0x261b11(-0xbe,-0xee)]['particlesTextureSize']**0x2;function _0xab7f0a(_0x8cd6df,_0x34f070){return _0x16b89f(_0x34f070,_0x8cd6df-0x415);}let _0x548848=[];for(let _0x341f8f=0x0;_0x341f8f<_0x4a7fd6;_0x341f8f++){_0x548848[_0x261b11(-0x21,-0x35)](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x548848=new Float32Array(_0x548848);let _0x6cb965=[];for(let _0x40a428=0x0,_0x25bb09=0x0;_0x40a428<_0x4a7fd6;_0x40a428++){_0x6cb965['push'](_0x25bb09+0x0,_0x25bb09+0x1,_0x25bb09+0x2,_0x25bb09+0x2,_0x25bb09+0x1,_0x25bb09+0x3),_0x25bb09+=_0x37e227;}_0x6cb965=new Uint32Array(_0x6cb965);const _0x45c538={};_0x45c538[_0xab7f0a(0x355,0x34e)]=ComponentDatatype[_0x261b11(-0xe7,-0xa5)],_0x45c538['componentsPerAttribute']=0x2,_0x45c538['values']=_0x13d123;const _0x2715bf={};_0x2715bf['componentDatatype']=ComponentDatatype[_0xab7f0a(0x24b,0x2b4)],_0x2715bf['componentsPerAttribute']=0x3,_0x2715bf[_0x261b11(-0xe5,-0xc0)]=_0x548848;const _0x4f8d4c=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x45c538),'normal':new GeometryAttribute(_0x2715bf)}),'indices':_0x6cb965});function _0x261b11(_0x4317fb,_0xd96e6f){return _0x16b89f(_0xd96e6f,_0x4317fb-0xe3);}return _0x4f8d4c;}['createRawRenderState'](_0x1fd528){function _0x11b3a3(_0x10e0f5,_0x2c3f99){return _0x16b89f(_0x2c3f99,_0x10e0f5-0x660);}const _0x3d91a5={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x1fd528};return Appearance[_0x11b3a3(0x4a4,0x49c)](!![],![],_0x3d91a5);}['createPrimitives'](){function _0x2a4594(_0x37744f,_0x226a9b){return _0x69b9bf(_0x37744f,_0x226a9b- -0x73d);}const _0x59ed47={};_0x59ed47['st']=0x0,_0x59ed47[_0x168ddc(0x498,0x46e)]=0x1;const _0x963f74={};_0x963f74['enabled']=!![];const _0x5dbffe={};_0x5dbffe['enabled']=!![],_0x5dbffe['blendEquation']=WebGLRenderingContext[_0x2a4594(-0x148,-0x136)],_0x5dbffe['blendFuncSource']=WebGLRenderingContext[_0x2a4594(-0x19a,-0x153)],_0x5dbffe[_0x168ddc(0x4d6,0x498)]=WebGLRenderingContext[_0x168ddc(0x4b9,0x4a6)];const _0x39c69b={};_0x39c69b[_0x168ddc(0x452,0x3d5)]=undefined,_0x39c69b['depthTest']=_0x963f74;function _0x168ddc(_0x48ba2d,_0x4682d3){return _0x16b89f(_0x48ba2d,_0x4682d3-0x56c);}_0x39c69b['depthMask']=!![],_0x39c69b[_0x168ddc(0x411,0x3e3)]=_0x5dbffe;const _0x3a2f3e=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x59ed47,'geometry':this[_0x168ddc(0x460,0x465)](),'primitiveType':PrimitiveType[_0x168ddc(0x444,0x3d0)],'uniformMap':{'previousParticlesPosition':()=>this[_0x168ddc(0x408,0x3f0)][_0x2a4594(-0x194,-0x1aa)][_0x2a4594(-0x223,-0x1ab)],'currentParticlesPosition':()=>this['computing'][_0x2a4594(-0x1c7,-0x1aa)]['currentParticlesPosition'],'postProcessingPosition':()=>this[_0x168ddc(0x384,0x3f0)]['particlesTextures']['postProcessingPosition'],'particlesSpeed':()=>this['computing']['particlesTextures'][_0x2a4594(-0x137,-0x15a)],'frameRateAdjustment':()=>this['computing']['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{var _0x1325f2,_0x313c48;const _0x3ef3f6=new Cartesian2(((_0x1325f2=this['options']['domain'])===null||_0x1325f2===void 0x0?void 0x0:_0x1325f2['min'])??this['computing']['windData'][_0x5cb4e8(0x448,0x42f)]['min'],((_0x313c48=this['options'][_0x5cb4e8(0x3e5,0x430)])===null||_0x313c48===void 0x0?void 0x0:_0x313c48['max'])??this[_0xef0660(-0xd8,-0x154)]['windData']['speed'][_0xef0660(-0x7f,-0xe3)]);function _0x5cb4e8(_0x3f42ef,_0x1d38ef){return _0x2a4594(_0x3f42ef,_0x1d38ef-0x59d);}function _0xef0660(_0x2c6b22,_0x2d94c2){return _0x2a4594(_0x2d94c2,_0x2c6b22-0xdd);}return _0x3ef3f6;},'displayRange':()=>{var _0x3c0334,_0x153330;const _0x3d70a1=new Cartesian2(((_0x3c0334=this['options'][_0xcf1881(0x3c1,0x3b9)])===null||_0x3c0334===void 0x0?void 0x0:_0x3c0334[_0x1b2b40(-0x108,-0xf1)])??this['computing'][_0x1b2b40(-0xd9,-0x59)][_0xcf1881(0x483,0x414)][_0x1b2b40(-0x108,-0xaa)],((_0x153330=this['options'][_0xcf1881(0x33c,0x3b9)])===null||_0x153330===void 0x0?void 0x0:_0x153330[_0x1b2b40(-0x103,-0x8e)])??this['computing'][_0xcf1881(0x46e,0x450)][_0xcf1881(0x381,0x414)]['max']);function _0x1b2b40(_0x4093ba,_0x52a5a3){return _0x168ddc(_0x52a5a3,_0x4093ba- -0x54c);}function _0xcf1881(_0x1a06b8,_0x505228){return _0x2a4594(_0x1a06b8,_0x505228-0x582);}return _0x3d70a1;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x2a4594(-0x21e,-0x198)][_0x168ddc(0x4c1,0x440)]/this[_0x2a4594(-0x1d9,-0x198)][_0x2a4594(-0x100,-0x124)],'pixelSize':()=>this[_0x168ddc(0x315,0x39e)][_0x2a4594(-0x1e7,-0x172)],'lineWidth':()=>{const _0x5304f0={};function _0x2ca8f4(_0x32fb4d,_0x17fd63){return _0x2a4594(_0x32fb4d,_0x17fd63- -0x15);}_0x5304f0['min']=0x1,_0x5304f0[_0x853b9d(0x21e,0x238)]=0x2;function _0x853b9d(_0x205d1f,_0x3a27a5){return _0x168ddc(_0x3a27a5,_0x205d1f- -0x22b);}const _0x3d15b8=this[_0x853b9d(0x1a0,0x1da)]['lineWidth']||_0x5304f0;return new Cartesian2(_0x3d15b8[_0x2ca8f4(-0x191,-0x176)],_0x3d15b8['max']);},'lineLength':()=>{const _0x47f4f8={};_0x47f4f8['min']=0x14,_0x47f4f8[_0x338730(0x38a,0x390)]=0x64;const _0x490a8c=this['options']['lineLength']||_0x47f4f8;function _0x338730(_0x333352,_0x244509){return _0x168ddc(_0x244509,_0x333352- -0xbf);}function _0x6fc0e8(_0x24a24b,_0x3ee9ba){return _0x168ddc(_0x24a24b,_0x3ee9ba- -0x48d);}return new Cartesian2(_0x490a8c[_0x6fc0e8(-0x7,-0x49)],_0x490a8c['max']);},'is3D':()=>this[_0x2a4594(-0x1e8,-0x207)]['sceneMode']===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this['textures'][_0x168ddc(0x3e5,0x3e1)]},'vertexShaderSource':ShaderManager[_0x168ddc(0x398,0x3c9)](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x39c69b)}),_0x3f33e0={};return _0x3f33e0['segments']=_0x3a2f3e,_0x3f33e0;}['onParticlesTextureSizeChange'](){const _0x4ca526=this['createSegmentsGeometry']();function _0x8e3148(_0xf2c920,_0x4c3360){return _0x69b9bf(_0x4c3360,_0xf2c920- -0x397);}this[_0xc260f6(0x511,0x56f)][_0x8e3148(0x1d0,0x18f)]['geometry']=_0x4ca526;const _0x205ebe={};function _0xc260f6(_0x17dc02,_0x58c282){return _0x69b9bf(_0x58c282,_0x17dc02- -0xda);}_0x205ebe['context']=this[_0xc260f6(0x4cb,0x453)],_0x205ebe[_0x8e3148(0x1ed,0x1ec)]=_0x4ca526,_0x205ebe[_0x8e3148(0x216,0x1df)]=this['primitives'][_0xc260f6(0x48d,0x4a0)]['attributeLocations'],_0x205ebe[_0x8e3148(0x27a,0x29b)]=BufferUsage[_0xc260f6(0x495,0x517)];const _0x7815e5=VertexArray['fromGeometry'](_0x205ebe);this[_0xc260f6(0x511,0x53d)]['segments']['commandToExecute']&&(this[_0xc260f6(0x511,0x57c)]['segments']['commandToExecute']['vertexArray']=_0x7815e5);}['onColorTableChange'](){this['colorTable']['destroy'](),this['colorTable']=this['createColorTableTexture']();}['updateOptions'](_0x2c3cf8){const _0x2e00b9=_0x2c3cf8[_0xa10323(0xe0,0x9b)]&&JSON['stringify'](_0x2c3cf8[_0xce749e(-0x2cb,-0x243)])!==JSON[_0xce749e(-0x287,-0x1f3)](this['options'][_0xce749e(-0x1fe,-0x243)]);function _0xce749e(_0x2af0d8,_0x3dc1ed){return _0x16b89f(_0x2af0d8,_0x3dc1ed- -0x90);}function _0xa10323(_0x30aaae,_0x4de021){return _0x16b89f(_0x30aaae,_0x4de021-0x24e);}this['options']=deepMerge(_0x2c3cf8,this['options']),_0x2e00b9&&this[_0xce749e(-0x265,-0x26d)]();}['destroy'](){Object['values'](this['framebuffers'])['forEach'](_0x344b6c=>{function _0x59facb(_0x26dd14,_0x32f1e7){return _0xa5c5(_0x32f1e7-0x26,_0x26dd14);}_0x344b6c[_0x59facb(0x1cd,0x1c5)]();});function _0x2d18b2(_0x35b1cb,_0x354d39){return _0x16b89f(_0x35b1cb,_0x354d39-0x1bc);}Object['values'](this[_0x2d18b2(0x29,0xa3)])['forEach'](_0x30c68b=>{function _0x15ff89(_0x22b9f4,_0x1bd122){return _0x2d18b2(_0x1bd122,_0x22b9f4-0x4f5);}_0x30c68b[_0x15ff89(0x529,0x4af)]();});function _0x46579b(_0x503a19,_0x5e7f01){return _0x16b89f(_0x503a19,_0x5e7f01- -0x17);}this[_0x46579b(-0x15a,-0x15a)][_0x2d18b2(0xb,0x34)]();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0x16b89f(-0xe7,-0x133)];class WindParticleSystem{constructor(_0x549518,_0x57c2e2,_0x3a7c77,_0x5553fa,_0x5d087a){function _0x27be8a(_0x20e581,_0x28d888){return _0x16b89f(_0x20e581,_0x28d888-0x316);}this['context']=_0x549518,this['options']=_0x3a7c77,this[_0x27be8a(0xce,0x148)]=_0x5553fa,this[_0x27be8a(0x124,0x19a)]=new WindParticlesComputing(_0x549518,_0x57c2e2,_0x3a7c77,_0x5553fa,_0x5d087a);function _0x1c8ab3(_0x3f8dfa,_0x5e9aef){return _0x69b9bf(_0x3f8dfa,_0x5e9aef- -0x33f);}this['rendering']=new WindParticlesRendering(_0x549518,_0x3a7c77,_0x5553fa,this['computing']),this['clearFramebuffers']();}['getPrimitives'](){function _0x195d6a(_0x264a85,_0x391c89){return _0x16b89f(_0x391c89,_0x264a85-0x1d1);}const _0x3c42e5=[this['computing'][_0x33e7b5(0xc8,0x140)]['calculateSpeed'],this['computing']['primitives'][_0x195d6a(0xa1,0xe5)],this['computing'][_0x195d6a(0xb8,0x148)]['postProcessingPosition'],this['rendering']['primitives']['segments']];function _0x33e7b5(_0x15700d,_0x729bdb){return _0x16b89f(_0x15700d,_0x729bdb-0x259);}return _0x3c42e5;}['clearFramebuffers'](){const _0x506f9f=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});Object['keys'](this['rendering']['framebuffers'])['forEach'](_0x151103=>{_0x506f9f[_0x1bc52c(-0x181,-0x1ae)]=this['rendering']['framebuffers'][_0x151103];function _0x1bc52c(_0xfda846,_0x260651){return _0xa5c5(_0x260651- -0x344,_0xfda846);}_0x506f9f['execute'](this['context']);});}['changeOptions'](_0x1be6ad){function _0x522337(_0x35c65e,_0x2e92d0){return _0x69b9bf(_0x2e92d0,_0x35c65e- -0x154);}let _0x2ab657=![];function _0x344983(_0x17dc95,_0x4eb8fd){return _0x16b89f(_0x4eb8fd,_0x17dc95-0x172);}_0x1be6ad[_0x522337(0x458,0x450)]&&this['options']['particlesTextureSize']!==_0x1be6ad[_0x344983(0x1a,-0x19)]&&(_0x2ab657=!![]);const _0x5307f2=deepMerge(_0x1be6ad,this[_0x522337(0x40f,0x487)]);if(_0x5307f2[_0x522337(0x458,0x4e7)]<0x1)throw new Error(_0x344983(0x92,0xfe));this[_0x344983(-0x2f,-0x4c)]=_0x5307f2,this['rendering'][_0x522337(0x42f,0x439)](_0x1be6ad),this[_0x522337(0x434,0x3d4)]['updateOptions'](_0x1be6ad),_0x2ab657&&(this[_0x522337(0x434,0x3c3)][_0x522337(0x3e1,0x42e)](),this['computing'][_0x344983(0xa8,0xa0)](),this['rendering'][_0x522337(0x44e,0x41f)]());}[_0x69b9bf(0x629,0x5ae)](_0x5b428e){this['viewerParameters']=_0x5b428e;function _0x4e61b7(_0x5df76c,_0x211ac4){return _0x69b9bf(_0x211ac4,_0x5df76c- -0x355);}this['computing']['viewerParameters']=_0x5b428e,this[_0x4e61b7(0x2f6,0x331)]['viewerParameters']=_0x5b428e;}['destroy'](){this['computing']['destroy']();function _0x499bd7(_0x55697d,_0x5d3214){return _0x69b9bf(_0x5d3214,_0x55697d- -0x5a4);}this[_0x499bd7(0xa7,0x7e)]['destroy']();}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],_0x27bb2e={};_0x27bb2e['min']=0x1,_0x27bb2e['max']=0x2;const _0x267e39={};function _0x763a(){const _0x108e9c=['PointTrans','frameTime','height','uniformMap','style','rows','toRadians','lng','ColorRamp','getOwnPropertyDescriptor','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0ain\x20vec3\x20normal;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20frameRateAdjustment;\x0auniform\x20float\x20particleHeight;\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20vec2\x20lineWidth;\x0auniform\x20vec2\x20lineLength;\x0auniform\x20vec2\x20domain;\x0auniform\x20bool\x20is3D;\x0a\x0a//\x20添加输出变量传递给片元着色器\x0aout\x20vec4\x20speed;\x0aout\x20float\x20v_segmentPosition;\x0aout\x20vec2\x20textureCoordinate;\x0a\x0a//\x20添加结构体定义\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0avec3\x20convertCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\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\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLat.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20if(is3D)\x20{\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLat);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用\x20modelViewProjection\x20矩阵进行投影变换\x0a\x20\x20\x20\x20vec4\x20projectedPosition\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20\x20\x20return\x20projectedPosition;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20vec3\x20position2D\x20=\x20vec3(radians(lonLat.x),\x20radians(lonLat.y),\x200.0f);\x0a\x20\x20\x20\x20return\x20czm_modelViewProjection\x20*\x20vec4(position2D,\x201.0f);\x0a\x20\x20}\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign,\x20float\x20widthFactor)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20//\x20计算方向向量\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x0a\x20\x20\x20\x20//\x20计算法向量\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x0a\x20\x20\x20\x20//\x20使用\x20widthFactor\x20调整宽度\x0a\x20\x20float\x20offsetLength\x20=\x20widthFactor\x20*\x20lineWidth.y;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20翻转\x20Y\x20轴坐标\x0a\x20\x20vec2\x20flippedIndex\x20=\x20vec2(st.x,\x201.0f\x20-\x20st.y);\x0a\x0a\x20\x20vec2\x20particleIndex\x20=\x20flippedIndex;\x0a\x20\x20speed\x20=\x20texture(particlesSpeed,\x20particleIndex);\x0a\x0a\x20\x20vec2\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rg;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x0a\x20\x20\x20\x20//\x20计算速度相关的宽度和长度因子\x0a\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x0a\x20\x20\x20\x20//\x20根据速度计算宽度\x0a\x20\x20float\x20widthFactor\x20=\x20mix(lineWidth.x,\x20lineWidth.y,\x20normalizedSpeed);\x0a\x20\x20widthFactor\x20*=\x20(pointToUse\x20<\x200\x20?\x201.0f\x20:\x200.5f);\x20//\x20头部更宽,尾部更窄\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20length\x20based\x20on\x20speed\x0a\x20\x20float\x20lengthFactor\x20=\x20mix(lineLength.x,\x20lineLength.y,\x20normalizedSpeed)\x20*\x20pixelSize;\x0a\x0a\x20\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20头部位置\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x200.0f;\x20//\x20头部\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Get\x20direction\x20and\x20normalize\x20it\x20to\x20length\x201.0\x0a\x20\x20\x20\x20vec4\x20direction\x20=\x20normalize(projectedCoordinates.next\x20-\x20projectedCoordinates.current);\x0a\x20\x20\x20\x20vec4\x20extendedPosition\x20=\x20projectedCoordinates.current\x20+\x20direction\x20*\x20lengthFactor;\x0a\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20extendedPosition,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20extendedPosition\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x201.0f;\x20//\x20尾部\x0a\x20\x20}\x0a\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a}\x0a','_createCanvas','stringify','onParticlesTextureSizeChange','canvasWidth','2075408VvpVBd','context','particlesNumber','windTextures','createWindTextures','_canrefresh','type','SceneMode','particlesTextureSize','attributeLocations','applyViewerParameters','LayerUtil','xmin','ymin','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a','age','latitude','processWindData','UNSIGNED_BYTE','speedRate','_tomap','random','percentageChanged','defineProperty','number','WindUtil','width','worker','0px','colorTable','beginPath','west','CanvasWindField','talt','forEach','commandToExecute','removeEventListener','_drawLines','mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:','pixelSize','canvasHeight','flipY','off','speed','domain','Cesium','mouse_move','flatMap','updatePosition','commandList','pow','dynamic','drawingBufferWidth','_calc_speedRate','fillRect','getParticles','min','canvasContext','pointer-events','fragmentShaderSource','segmentsColor','max','removeChild','particlesSpeed','cancelAnimationFrame','data','call','_setOptionsHook','_colorRamp','mouse_down','SRC_ALPHA','primitives','umin','initFrameRate','updateViewerParameters','alt','_updateIng','sqrt','vdata','isDynamic','shaderProgram','mouseUp','3.10.10','pickEllipsoid','RGBA','createComputingPrimitives','slice','toGridXY','wrapS','createSegmentsGeometry','initWorker','max\x20is\x20undefined,\x20calculate\x20max','push','alpha','update','layer','globalCompositeOperation','toWindowCoordinates','normal','FUNC_ADD','_addedHook','prototype','fromGeometry','windData','vmin','cartesianToCartographic','_onMouseMoveEvent','canvas','redraw','bufferUsage','updateWindData','_onMapWhellEvent','_calcUV','maxAge','length','DEPTH_COMPONENT','camera','drawingBufferHeight','Math','__proto__','wrapT','createRenderingFramebuffers','create','addEventListener','remove','_animateFrame','NEAREST','latRange','particlesTextureSize\x20must\x20be\x20greater\x20than\x200','CanvasWindLayer','mouseMove','6923525ctSYpf','_maxAge','now','color','createPrimitives','Draw','WindLayer','init','pass','blendFuncDestination','show','minificationFilter','846049SJOmOM','south','pixelFormat','reCreateWindTextures','owner','setDate','calculateSpeed','createParticlesTextures','mouseDown','Cartesian2','_removedHook','ONE_MINUS_SRC_ALPHA','container','primitiveType','requestAnimationFrame','register','north','componentDatatype','rectangle','frameRateAdjustment','log','27560568praxgI','sources','tlng','rendering','CLAMP_TO_EDGE','quietPeriod','xmax','onColorTableChange','warn','clear','array','magnificationFilter','postMessage','getUVByXY','pixelDatatype','framebuffers','outputTexture','resize','visible','_speedRate','windField','destroyParticlesTextures','viewerParameters','stroke','getPrimitives','#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec2\x20uRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20vRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20speedRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20dimension;\x20//\x20(lon,\x20lat)\x0auniform\x20vec2\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec2\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0a\x0auniform\x20float\x20speedScaleFactor;\x0auniform\x20float\x20frameRateAdjustment;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20getInterval(vec2\x20maximum,\x20vec2\x20minimum,\x20vec2\x20dimension)\x20{\x0a\x20\x20return\x20(maximum\x20-\x20minimum)\x20/\x20(dimension\x20-\x201.0f);\x0a}\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLat.x\x20=\x20clamp(lonLat.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLat.y\x20=\x20clamp(lonLat.y,\x20minimum.y,\x20maximum.y);\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(0.0f);\x0a\x20\x20index2D.x\x20=\x20(lonLat.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index2D.y\x20=\x20(lonLat.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20dimension.y);\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0avec2\x20getWindComponents(vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20u\x20=\x20texture(U,\x20normalizedIndex2D).r;\x0a\x20\x20float\x20v\x20=\x20texture(V,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20vec2(u,\x20v);\x0a}\x0a\x0avec2\x20bilinearInterpolation(vec2\x20lonLat)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLat.x;\x0a\x20\x20float\x20lat\x20=\x20lonLat.y;\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20grid\x20cell\x20coordinates\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Get\x20wind\x20vectors\x20at\x20four\x20corners\x0a\x20\x20vec2\x20v00\x20=\x20getWindComponents(vec2(lon0,\x20lat0));\x0a\x20\x20vec2\x20v10\x20=\x20getWindComponents(vec2(lon1,\x20lat0));\x0a\x20\x20vec2\x20v01\x20=\x20getWindComponents(vec2(lon0,\x20lat1));\x0a\x20\x20vec2\x20v11\x20=\x20getWindComponents(vec2(lon1,\x20lat1));\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20all\x20wind\x20vectors\x20are\x20zero\x0a\x20\x20if(length(v00)\x20==\x200.0f\x20&&\x20length(v10)\x20==\x200.0f\x20&&\x20length(v01)\x20==\x200.0f\x20&&\x20length(v11)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x200.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20interpolation\x20weights\x0a\x20\x20float\x20s\x20=\x20(lon\x20-\x20lon0)\x20/\x20interval.x;\x0a\x20\x20float\x20t\x20=\x20(lat\x20-\x20lat0)\x20/\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Perform\x20bilinear\x20interpolation\x20on\x20vector\x20components\x0a\x20\x20vec2\x20v0\x20=\x20mix(v00,\x20v10,\x20s);\x0a\x20\x20vec2\x20v1\x20=\x20mix(v01,\x20v11,\x20s);\x0a\x20\x20return\x20mix(v0,\x20v1,\x20t);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec2\x20lonLat)\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\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec2\x20convertSpeedUnitToLonLat(vec2\x20lonLat,\x20vec2\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLat);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20vec2\x20windVectorInLonLat\x20=\x20vec2(u,\x20v);\x0a\x0a\x20\x20return\x20windVectorInLonLat;\x0a}\x0a\x0avec2\x20calculateSpeedByRungeKutta2(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec2\x20y_n\x20=\x20lonLat;\x0a\x20\x20vec2\x20f_n\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec2\x20speed\x20=\x20h\x20*\x20bilinearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20calculateWindNorm(vec2\x20speed)\x20{\x0a\x20\x20float\x20speedLength\x20=\x20length(speed.xy);\x0a\x20\x20if(speedLength\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Clamp\x20speedLength\x20to\x20range\x0a\x20\x20float\x20clampedSpeed\x20=\x20clamp(speedLength,\x20speedRange.x,\x20speedRange.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(clampedSpeed\x20-\x20speedRange.x)\x20/\x20(speedRange.y\x20-\x20speedRange.x);\x0a\x20\x20return\x20vec2(speedLength,\x20normalizedSpeed);\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec2\x20lonLat\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec2\x20speedOrigin\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLat)\x20*\x20frameRateAdjustment;\x0a\x20\x20vec2\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLat,\x20speed);\x0a\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a','FLOAT','_onMouseDownEvent','values','getColor','currentParticlesPosition','getDirection','add','558lUhhSL','particles','zIndex','mode','fixedHeight','Rectangle','samplingWindow','getDefaultRenderState','rgb(206,255,255)','bind','particleSystem','tlat','1271001zPEZUZ','ellipsoid','all','lineWidth','colors','dropRateBump','getCalculateSpeedShader','east','#ffffff','ymax','5758356CuMtNP','Cartesian3','setData','lighter','hidden','createRenderingTextures','isInExtent','DomUtil','colorTextures','frameRateMonitor','getSegmentDrawVertexShader','frameRate','options','_map','min\x20is\x20undefined,\x20calculate\x20min','2025-12-12\x2016:28','segments','TRIANGLES','scene','getUVByPoint','preExecute','pointerEvents','viewport','_onMouseUpEvent','STATIC_DRAW','commandType','vertexShaderSource','grid','framebuffer','displayRange','16145mairBB','isDestroy','object','EventType','segmentsDepth','_randomParticle','blending','destroy','unbindEvent','lineTo','MAX_VALUE','cols','getSpeed','clientHeight','updateOptions','geometry','fromCache','floor','clientWidth','computing','clearCommand','isArray','lonRange','__esModule','bounds','abs','fill','_bilinearInterpolation','refreshTimer','previousParticlesPosition','particlesTextures','positionWC'];_0x763a=function(){return _0x108e9c;};return _0x763a();}_0x267e39[_0x16b89f(-0x18d,-0x128)]=0x14,_0x267e39[_0x16b89f(-0x163,-0x123)]=0x64;const _0x458547={};_0x458547['particlesTextureSize']=0x64,_0x458547['fixedHeight']=0x0;function _0x16b89f(_0x4fcea6,_0x183748){return _0xa5c5(_0x183748- -0x327,_0x4fcea6);}_0x458547['lineWidth']=_0x27bb2e,_0x458547['lineLength']=_0x267e39,_0x458547['speedFactor']=0x1,_0x458547['dropRate']=0.003,_0x458547[_0x69b9bf(0x586,0x552)]=0.001,_0x458547[_0x69b9bf(0x4fc,0x551)]=[_0x16b89f(-0x225,-0x1bb)],_0x458547['flipY']=![],_0x458547['dynamic']=!![];const DEF_OPTIONS=_0x458547;class WindLayer extends BaseLayer$1{constructor(_0x121a37={}){_0x121a37={...DEF_OPTIONS,..._0x121a37},super(_0x121a37);function _0x334d18(_0x6babca,_0xa3f27c){return _0x69b9bf(_0xa3f27c,_0x6babca- -0x6d1);}this[_0x334d18(-0xea,-0x98)](_0x121a37,_0x121a37);}get['layer'](){function _0x160ddf(_0x1c82f3,_0x225169){return _0x69b9bf(_0x1c82f3,_0x225169- -0x428);}return this[_0x160ddf(0x1c2,0x1c3)];}get['data'](){return this['options']['data'];}set[_0x16b89f(-0x142,-0x11f)](_0x174bf7){this['options']['data']=_0x174bf7,this['setData'](_0x174bf7);}get['colors'](){return this['options']['colors'];}set['colors'](_0x3d3ae6){this[_0x2c15c8(-0xab,-0x101)]['colors']=_0x3d3ae6;function _0x2c15c8(_0x59b9eb,_0x5ce7db){return _0x69b9bf(_0x59b9eb,_0x5ce7db- -0x664);}const _0x3e3864={};_0x3e3864[_0x4e5e04(0x295,0x201)]=_0x3d3ae6;function _0x4e5e04(_0x5515e9,_0x49017a){return _0x69b9bf(_0x49017a,_0x5515e9- -0x2bc);}this['_setOptionsHook'](this['options'],_0x3e3864);}['_showHook'](_0x234470){_0x234470?this['_addedHook']():this['_removedHook']();}['_mountedHook'](){}['_addedHook'](){this['scene']=this[_0x43c309(-0x200,-0x182)]['scene'];function _0x5f0739(_0x3bd04c,_0x429796){return _0x69b9bf(_0x3bd04c,_0x429796- -0x404);}this['camera']=this[_0x5f0739(0x181,0x160)]['camera'];this['options'][_0x5f0739(0x200,0x1e1)]&&this[_0x5f0739(0x1af,0x155)](this['options']['data']);if(!this['windData']||!this['show'])return;function _0x43c309(_0x1c35c5,_0x1197bb){return _0x16b89f(_0x1c35c5,_0x1197bb-0x1e);}this[_0x5f0739(0xc1,0x132)]={'lonRange':new Cesium$1[(_0x43c309(-0x109,-0xaa))](-0xb4,0xb4),'latRange':new Cesium$1[(_0x43c309(-0xa8,-0xaa))](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this[_0x5f0739(0x1d7,0x165)]['mode']},this['updateViewerParameters'](),this['particleSystem']=new WindParticleSystem(this[_0x5f0739(0x132,0x165)]['context'],this['windData'],this[_0x43c309(-0x20a,-0x183)],this[_0x5f0739(0x13b,0x132)],this['scene']),this['primitives']=this['particleSystem'][_0x43c309(-0x1c0,-0x1ae)](),this[_0x5f0739(0x23e,0x1e7)]['forEach'](_0x1e8094=>{function _0x5e127a(_0x147ced,_0x4f65a1){return _0x43c309(_0x147ced,_0x4f65a1-0x486);}function _0x2d2a9e(_0x467803,_0x4033e8){return _0x43c309(_0x4033e8,_0x467803-0x423);}this['scene'][_0x2d2a9e(0x328,0x2f2)][_0x2d2a9e(0x27d,0x29d)](_0x1e8094);}),this['camera'][_0x43c309(-0x12b,-0x12c)]=0.01,this['camera']['changed'][_0x5f0739(0x1d3,0x21b)](this['updateViewerParameters']['bind'](this)),this[_0x43c309(-0xfa,-0x17d)]['morphComplete'][_0x43c309(-0x90,-0xc7)](this['updateViewerParameters']['bind'](this)),window['addEventListener']('resize',this[_0x43c309(-0x89,-0xf8)]['bind'](this));}[_0x69b9bf(0x6b3,0x63d)](){function _0x150072(_0x1e7266,_0x29a502){return _0x16b89f(_0x1e7266,_0x29a502-0x291);}this[_0x222fea(0x5a4,0x5ff)]['changed']['removeEventListener'](this['updateViewerParameters']['bind'](this));function _0x222fea(_0x106d15,_0x487e0f){return _0x69b9bf(_0x487e0f,_0x106d15- -0x74);}this['scene']['morphComplete'][_0x222fea(0x554,0x4f4)](this['updateViewerParameters']['bind'](this)),window[_0x150072(0x107,0x155)](_0x222fea(0x4bd,0x4da),this[_0x150072(0x1e4,0x17b)]['bind'](this)),this['primitives']&&(this['primitives']['forEach'](_0x213f9a=>{function _0x516e7f(_0x334bf3,_0x2c3075){return _0x150072(_0x334bf3,_0x2c3075-0x40a);}function _0x58b974(_0x2727b9,_0xedd6c2){return _0x222fea(_0xedd6c2- -0x6a7,_0x2727b9);}this[_0x58b974(-0x175,-0x1b2)]['primitives'][_0x58b974(-0x96,-0xfb)](_0x213f9a);}),delete this[_0x150072(0x1ef,0x178)]),this[_0x150072(0x117,0xd8)]&&(this['particleSystem'][_0x222fea(0x508,0x4c7)](),delete this[_0x222fea(0x4d7,0x507)]);}['setData'](_0x34f159,_0x2fcfa7){this['windData']=this['processWindData'](_0x34f159);function _0x4bf2cd(_0x589006,_0x32d66d){return _0x69b9bf(_0x589006,_0x32d66d- -0x92);}if(_0x2fcfa7){this['_removedHook'](),this['_addedHook']();return;}function _0x35a090(_0x56dbaa,_0x5e2f63){return _0x16b89f(_0x5e2f63,_0x56dbaa-0x4b5);}this[_0x35a090(0x2fc,0x2fc)]?(this['particleSystem']['computing'][_0x35a090(0x3c3,0x3d7)](this['windData']),this[_0x35a090(0x31a,0x302)]['requestRender']()):this[_0x4bf2cd(0x5ae,0x576)]();}[_0x69b9bf(0x63c,0x5e7)](_0x53ed74,_0x503608){function _0x378faf(_0x5d5571,_0x5296f1){return _0x16b89f(_0x5d5571,_0x5296f1-0x262);}function _0x2e3a92(_0x2feb7a,_0x18e8b7){return _0x16b89f(_0x2feb7a,_0x18e8b7-0x417);}this[_0x2e3a92(0x2a3,0x25e)]&&(this['particleSystem']['changeOptions'](_0x503608),this[_0x2e3a92(0x254,0x27c)]['requestRender']());}['processWindData'](_0x4b2ec0){var _0x44828b,_0x221eaa;function _0x46b653(_0x5cda03,_0x437f02){return _0x16b89f(_0x437f02,_0x5cda03-0x563);}const _0x2fca28={..._0x4b2ec0},_0x4ea369=_0x2fca28;!_0x4ea369[_0x10099f(0x110,0x1a3)]&&_0x4ea369['rows']&&(_0x4ea369['height']=_0x4ea369[_0x46b653(0x3f9,0x45b)]);!_0x4ea369['width']&&_0x4ea369[_0x46b653(0x3df,0x424)]&&(_0x4ea369[_0x46b653(0x41d,0x491)]=_0x4ea369['cols']);!_0x4ea369[_0x46b653(0x3ec,0x3c4)]&&(_0x4ea369['bounds']={'west':_0x4ea369[_0x46b653(0x40f,0x3bf)],'south':_0x4ea369['ymin'],'east':_0x4ea369['xmax'],'north':_0x4ea369[_0x46b653(0x3b5,0x432)]});function _0x10099f(_0x146c54,_0x573c6f){return _0x16b89f(_0x146c54,_0x573c6f-0x310);}if(!_0x4ea369['u']){const _0x437772={};_0x437772[_0x46b653(0x389,0x3f9)]=_0x4b2ec0['udata'],_0x437772['min']=_0x4b2ec0[_0x10099f(0x180,0x1f8)],_0x437772['max']=_0x4b2ec0['umax'],_0x4ea369['u']=_0x437772;}if(!_0x4ea369['v']){const _0x4046a2={};_0x4046a2['array']=_0x4b2ec0[_0x46b653(0x451,0x3f9)],_0x4046a2[_0x46b653(0x43b,0x415)]=_0x4b2ec0[_0x46b653(0x46b,0x43d)],_0x4046a2['max']=_0x4b2ec0['vmax'],_0x4ea369['v']=_0x4046a2;}if(((_0x44828b=_0x4ea369[_0x46b653(0x42e,0x42f)])===null||_0x44828b===void 0x0?void 0x0:_0x44828b['min'])===undefined||((_0x221eaa=_0x4ea369['speed'])===null||_0x221eaa===void 0x0?void 0x0:_0x221eaa['max'])===undefined||_0x4ea369[_0x46b653(0x42e,0x4aa)]['array']===undefined){const _0xb433a7={'array':new Float32Array(_0x4ea369['u'][_0x10099f(0x119,0x136)][_0x10099f(0x1bb,0x222)]),'min':Number[_0x46b653(0x3de,0x3c0)],'max':Number['MIN_VALUE']};for(let _0x4bec8c=0x0;_0x4bec8c<_0x4ea369['u'][_0x10099f(0x14d,0x136)][_0x46b653(0x475,0x4ce)];_0x4bec8c++){_0xb433a7[_0x46b653(0x389,0x37f)][_0x4bec8c]=Math['sqrt'](_0x4ea369['u']['array'][_0x4bec8c]*_0x4ea369['u'][_0x46b653(0x389,0x328)][_0x4bec8c]+_0x4ea369['v']['array'][_0x4bec8c]*_0x4ea369['v'][_0x46b653(0x389,0x3b3)][_0x4bec8c]),_0xb433a7[_0x10099f(0x1c4,0x136)][_0x4bec8c]!==0x0&&(_0xb433a7['min']=Math[_0x46b653(0x43b,0x3fd)](_0xb433a7['min'],_0xb433a7[_0x46b653(0x389,0x30b)][_0x4bec8c]),_0xb433a7['max']=Math['max'](_0xb433a7[_0x10099f(0x195,0x1ed)],_0xb433a7['array'][_0x4bec8c]));}_0x4ea369[_0x10099f(0x24f,0x1db)]=_0xb433a7;}return _0x4ea369;}['updateViewerParameters'](){var _0x4b377e;const _0x55fd54=this['scene'];if(!_0x55fd54)return;const _0x68a89e=_0x55fd54['canvas'],_0x299ad9={};_0x299ad9['x']=0x0,_0x299ad9['y']=0x0;const _0x181de8={};_0x181de8['x']=0x0,_0x181de8['y']=_0x68a89e['clientHeight'];function _0x31eb48(_0x23e429,_0x49a05b){return _0x16b89f(_0x23e429,_0x49a05b-0x252);}function _0x3b5bff(_0x1d6fb9,_0x1789cc){return _0x16b89f(_0x1d6fb9,_0x1789cc- -0x33);}const _0x22bb30={};_0x22bb30['x']=_0x68a89e[_0x31eb48(0x127,0xd5)],_0x22bb30['y']=0x0;const _0x1bc63a={};_0x1bc63a['x']=_0x68a89e['clientWidth'],_0x1bc63a['y']=_0x68a89e[_0x3b5bff(-0x22e,-0x1b5)];const _0x4da167=[_0x299ad9,_0x181de8,_0x22bb30,_0x1bc63a];let _0x484deb=0xb4,_0x372b8f=-0xb4,_0x4c989c=0x5a,_0x1cb49b=-0x5a,_0x528082=![];for(const _0x268b24 of _0x4da167){const _0x23b827=_0x55fd54[_0x31eb48(0x1a9,0x166)][_0x31eb48(0x1a4,0x145)](new Cesium$1['Cartesian2'](_0x268b24['x'],_0x268b24['y']),_0x55fd54['globe']['ellipsoid']);if(!_0x23b827){_0x528082=!![];break;}const _0x23e940=_0x55fd54['globe'][_0x3b5bff(-0x19a,-0x1e9)][_0x31eb48(0x176,0x15b)](_0x23b827),_0x58a679=Cesium$1['Math']['toDegrees'](_0x23e940['longitude']),_0x19f25c=Cesium$1['Math']['toDegrees'](_0x23e940[_0x31eb48(0x160,0x102)]);_0x484deb=Math['min'](_0x484deb,_0x58a679),_0x372b8f=Math[_0x3b5bff(-0x118,-0x156)](_0x372b8f,_0x58a679),_0x4c989c=Math['min'](_0x4c989c,_0x19f25c),_0x1cb49b=Math['max'](_0x1cb49b,_0x19f25c);}if(!_0x528082){const _0x2e12c3=new Cesium$1['Cartesian2'](Math[_0x31eb48(0xb1,0x12f)](this['windData'][_0x31eb48(0x63,0xdb)]['west'],_0x484deb),Math[_0x31eb48(0x1a9,0x12a)](this['windData'][_0x3b5bff(-0x146,-0x1aa)]['east'],_0x372b8f)),_0x41d2fc=new Cesium$1[(_0x31eb48(0x1cb,0x18a))](Math['max'](this[_0x31eb48(0xcf,0x159)][_0x3b5bff(-0x213,-0x1aa)][_0x31eb48(0x1a1,0x182)],_0x4c989c),Math['min'](this[_0x3b5bff(-0x14c,-0x12c)]['bounds'][_0x3b5bff(-0x138,-0xf4)],_0x1cb49b)),_0x50c859=(_0x2e12c3['y']-_0x2e12c3['x'])*0.05,_0x29d4a8=(_0x41d2fc['y']-_0x41d2fc['x'])*0.05;_0x2e12c3['x']=Math[_0x3b5bff(-0xfb,-0x156)](this['windData'][_0x3b5bff(-0x205,-0x1aa)]['west'],_0x2e12c3['x']-_0x50c859),_0x2e12c3['y']=Math[_0x31eb48(0xb3,0x12a)](this['windData'][_0x3b5bff(-0x140,-0x1aa)]['east'],_0x2e12c3['y']+_0x50c859),_0x41d2fc['x']=Math[_0x3b5bff(-0x12a,-0x156)](this[_0x3b5bff(-0x16c,-0x12c)][_0x3b5bff(-0x154,-0x1aa)]['south'],_0x41d2fc['x']-_0x29d4a8),_0x41d2fc['y']=Math[_0x31eb48(0x16e,0x12a)](this[_0x31eb48(0x1e9,0x159)][_0x3b5bff(-0x16c,-0x1aa)][_0x3b5bff(-0xc3,-0xf4)],_0x41d2fc['y']+_0x29d4a8),this['viewerParameters'][_0x31eb48(0x11d,0xd9)]=_0x2e12c3,this['viewerParameters']['latRange']=_0x41d2fc;const _0x40560d=this[_0x3b5bff(-0xf5,-0x12c)][_0x3b5bff(-0x1b1,-0x1aa)][_0x3b5bff(-0x1a6,-0x1e3)]-this['windData'][_0x31eb48(0x59,0xdb)][_0x3b5bff(-0x12e,-0x174)],_0x33e65f=this['windData']['bounds'][_0x3b5bff(-0x7f,-0xf4)]-this['windData']['bounds'][_0x31eb48(0x17a,0x182)],_0xe82230=(_0x2e12c3['y']-_0x2e12c3['x'])/_0x40560d,_0x270f20=(_0x41d2fc['y']-_0x41d2fc['x'])/_0x33e65f,_0x5c9368=Math['min'](_0xe82230,_0x270f20),_0x595d57=0x3e8*_0x5c9368;_0x595d57>0x0&&(this[_0x31eb48(0x8a,0x84)][_0x31eb48(0x190,0x119)]=Math[_0x31eb48(0xb1,0x12f)](0x0,Math[_0x3b5bff(-0x101,-0x15b)](0x3e8,_0x595d57)));}this['viewerParameters']['sceneMode']=this[_0x3b5bff(-0x24e,-0x1ce)]['mode'],(_0x4b377e=this['particleSystem'])===null||_0x4b377e===void 0x0||_0x4b377e[_0x31eb48(0x183,0xfc)](this['viewerParameters']);}['getDataAtLonLat'](_0x1c1530,_0x470035){const {bounds:_0x14f6b2,width:_0xb3a93e,height:_0x52615b,u:_0x5a1649,v:_0x24eb4e,speed:_0x3a7f5a}=this[_0x17b876(0x1f4,0x225)],{flipY:_0x1a7c6a}=this[_0x17b876(0x152,0x17d)];if(_0x1c1530<_0x14f6b2[_0x1fdbe2(-0xc0,-0x40)]||_0x1c1530>_0x14f6b2['east']||_0x470035<_0x14f6b2[_0x1fdbe2(-0x4f,-0x51)]||_0x470035>_0x14f6b2['north'])return null;const _0x785a55=(_0x1c1530-_0x14f6b2[_0x17b876(0x184,0x1dd)])/(_0x14f6b2['east']-_0x14f6b2['west'])*(_0xb3a93e-0x1);let _0x312365=(_0x470035-_0x14f6b2[_0x1fdbe2(-0x4f,0x31)])/(_0x14f6b2['north']-_0x14f6b2[_0x1fdbe2(-0x4f,0x3)])*(_0x52615b-0x1);_0x1a7c6a&&(_0x312365=_0x52615b-0x1-_0x312365);const _0x2abd65=Math['floor'](_0x785a55),_0x38f2b2=Math['floor'](_0x312365);function _0x17b876(_0x23aec0,_0x62445d){return _0x16b89f(_0x23aec0,_0x62445d-0x31e);}const _0x253845=Math['floor'](_0x785a55),_0x2aba86=Math['min'](_0x253845+0x1,_0xb3a93e-0x1),_0x1bc366=Math['floor'](_0x312365),_0x1be969=Math[_0x1fdbe2(-0xa7,-0x11b)](_0x1bc366+0x1,_0x52615b-0x1);function _0x1fdbe2(_0x595a53,_0x45f16d){return _0x69b9bf(_0x45f16d,_0x595a53- -0x683);}const _0x44bbb8=_0x785a55-_0x253845,_0x8ac36=_0x312365-_0x1bc366,_0x3081bb=_0x38f2b2*_0xb3a93e+_0x2abd65,_0xb1f620=_0x1bc366*_0xb3a93e+_0x253845,_0x2782f3=_0x1bc366*_0xb3a93e+_0x2aba86,_0x460b71=_0x1be969*_0xb3a93e+_0x253845,_0x313b1c=_0x1be969*_0xb3a93e+_0x2aba86,_0x2af08f=_0x5a1649['array'][_0xb1f620],_0x43fb3e=_0x5a1649['array'][_0x2782f3],_0x38f516=_0x5a1649[_0x1fdbe2(-0x159,-0xe7)][_0x460b71],_0x44cc19=_0x5a1649[_0x1fdbe2(-0x159,-0x1cd)][_0x313b1c],_0xfcea8b=(0x1-_0x44bbb8)*(0x1-_0x8ac36)*_0x2af08f+_0x44bbb8*(0x1-_0x8ac36)*_0x43fb3e+(0x1-_0x44bbb8)*_0x8ac36*_0x38f516+_0x44bbb8*_0x8ac36*_0x44cc19,_0x484c41=_0x24eb4e[_0x1fdbe2(-0x159,-0x113)][_0xb1f620],_0x45f136=_0x24eb4e['array'][_0x2782f3],_0x5b1d26=_0x24eb4e[_0x17b876(0x160,0x144)][_0x460b71],_0x53f453=_0x24eb4e['array'][_0x313b1c],_0x2fe5f1=(0x1-_0x44bbb8)*(0x1-_0x8ac36)*_0x484c41+_0x44bbb8*(0x1-_0x8ac36)*_0x45f136+(0x1-_0x44bbb8)*_0x8ac36*_0x5b1d26+_0x44bbb8*_0x8ac36*_0x53f453,_0x3847f1=Math[_0x17b876(0x1bf,0x20b)](_0xfcea8b*_0xfcea8b+_0x2fe5f1*_0x2fe5f1),_0x1a2d01={};_0x1a2d01['u']=_0x5a1649[_0x17b876(0x105,0x144)][_0x3081bb],_0x1a2d01['v']=_0x24eb4e[_0x1fdbe2(-0x159,-0xe8)][_0x3081bb],_0x1a2d01['speed']=_0x3a7f5a['array'][_0x3081bb];const _0x333115={};_0x333115['u']=_0xfcea8b,_0x333115['v']=_0x2fe5f1,_0x333115['speed']=_0x3847f1;const _0x32308e={};return _0x32308e['original']=_0x1a2d01,_0x32308e['interpolated']=_0x333115,_0x32308e;}}function _0xa5c5(_0x35a4d8,_0x8b44be){const _0x763a53=_0x763a();return _0xa5c5=function(_0xa5c5fb,_0xa6ce73){_0xa5c5fb=_0xa5c5fb-0x148;let _0x5d5607=_0x763a53[_0xa5c5fb];return _0x5d5607;},_0xa5c5(_0x35a4d8,_0x8b44be);}mars3d__namespace[_0x16b89f(-0x138,-0x155)]['register']('wind',WindLayer),mars3d__namespace['layer'][_0x69b9bf(0x5bb,0x62d)]=WindLayer;class CanvasParticle{constructor(){function _0x32efc9(_0x2b3c2b,_0xa8b683){return _0x16b89f(_0xa8b683,_0x2b3c2b-0xd3);}this[_0x35d655(0x84,0x85)]=null;function _0x35d655(_0x383fc6,_0x4806d2){return _0x16b89f(_0x4806d2,_0x383fc6-0x1ec);}this['lat']=null,this['tlng']=null,this['tlat']=null,this[_0x32efc9(-0x7e,-0xc7)]=null,this['speed']=null;}['destroy'](){for(const _0x158699 in this){delete this[_0x158699];}}}class CanvasWindField{constructor(_0x2375f3){this['setOptions'](_0x2375f3);}get[_0x69b9bf(0x56c,0x5b7)](){function _0x55aa41(_0x544ded,_0x8c20c6){return _0x16b89f(_0x544ded,_0x8c20c6-0x4cd);}return this[_0x55aa41(0x338,0x2fc)];}set['speedRate'](_0x3b730c){function _0x11bb52(_0x4b7b69,_0x280015){return _0x16b89f(_0x280015,_0x4b7b69-0x2c4);}this[_0x11bb52(0xf3,0x8f)]=(0x64-(_0x3b730c>0x63?0x63:_0x3b730c))*0x64;function _0x35cbcf(_0x1c8c9a,_0x44f34d){return _0x16b89f(_0x1c8c9a,_0x44f34d-0x522);}this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this['ymax']-this[_0x11bb52(0x171,0x1f2)])/this['_speedRate']];}get[_0x69b9bf(0x697,0x615)](){function _0x1adf0c(_0x20abca,_0x491728){return _0x16b89f(_0x491728,_0x20abca-0x3d4);}return this[_0x1adf0c(0x2f8,0x2e6)];}set[_0x69b9bf(0x5ac,0x615)](_0x15299f){function _0x101e15(_0x310fe0,_0x264b97){return _0x16b89f(_0x264b97,_0x310fe0-0x121);}this[_0x101e15(0x45,0x92)]=_0x15299f;}['setOptions'](_0x28e987){this[_0x2b3731(-0x18d,-0x140)]=_0x28e987;function _0x2b3731(_0x13612e,_0x381c1c){return _0x16b89f(_0x381c1c,_0x13612e-0x14);}function _0x5cb776(_0x190c6c,_0x3d40a8){return _0x16b89f(_0x190c6c,_0x3d40a8-0xf);}this['maxAge']=_0x28e987[_0x2b3731(-0xdb,-0x5e)]||0x78,this['speedRate']=_0x28e987['speedRate']||0x32,this[_0x5cb776(-0x21d,-0x1b3)]=[];const _0x40009d=_0x28e987['particlesNumber']||0x1000;for(let _0x55ece0=0x0;_0x55ece0<_0x40009d;_0x55ece0++){const _0x348380=this['_randomParticle'](new CanvasParticle());this['particles'][_0x5cb776(-0x91,-0xf5)](_0x348380);}}['setDate'](_0x42ba58){this['rows']=_0x42ba58['rows'],this['cols']=_0x42ba58[_0xd7aced(0x16f,0x136)];function _0xd7aced(_0x12cad9,_0x54a61d){return _0x69b9bf(_0x12cad9,_0x54a61d- -0x44a);}this['xmin']=_0x42ba58[_0x7fd447(0xf1,0x118)],this[_0x7fd447(0x13,0x8e)]=_0x42ba58['xmax'];function _0x7fd447(_0x11e33c,_0x31c9dc){return _0x16b89f(_0x11e33c,_0x31c9dc-0x26c);}this[_0xd7aced(0x1e8,0x167)]=_0x42ba58[_0xd7aced(0x1d6,0x167)],this['ymax']=_0x42ba58[_0x7fd447(0xfa,0xbe)],this[_0xd7aced(0x14d,0x128)]=[];const _0x2f00a0=_0x42ba58['udata'],_0x2d2fdc=_0x42ba58[_0x7fd447(0x1d6,0x15a)];let _0x3df868=![];_0x2f00a0[_0x7fd447(0x16a,0x17e)]===this['rows']&&_0x2f00a0[0x0]['length']===this['cols']&&(_0x3df868=!![]);let _0x2eca4b=0x0,_0x4df949=null,_0xea865=null;for(let _0x398718=0x0;_0x398718<this[_0xd7aced(0x123,0x150)];_0x398718++){_0x4df949=[];for(let _0x131ecb=0x0;_0x131ecb<this['cols'];_0x131ecb++,_0x2eca4b++){_0x3df868?_0xea865=this['_calcUV'](_0x2f00a0[_0x398718][_0x131ecb],_0x2d2fdc[_0x398718][_0x131ecb]):_0xea865=this['_calcUV'](_0x2f00a0[_0x2eca4b],_0x2d2fdc[_0x2eca4b]),_0x4df949[_0xd7aced(0x1f0,0x1b6)](_0xea865);}this[_0xd7aced(0xbf,0x128)]['push'](_0x4df949);}!this['options']['flipY']&&this['grid']['reverse']();}[_0x16b89f(-0x25b,-0x1db)](){delete this['rows'],delete this[_0x57c43d(0x2ae,0x248)],delete this[_0x17e54a(0x576,0x5d4)];function _0x57c43d(_0x2a9f6e,_0x1468be){return _0x16b89f(_0x2a9f6e,_0x1468be-0x3cc);}function _0x17e54a(_0x2dce9a,_0x5c19ca){return _0x69b9bf(_0x5c19ca,_0x2dce9a- -0x3a);}delete this[_0x17e54a(0x4ec,0x462)],delete this['ymin'],delete this['ymax'],delete this['grid'],delete this[_0x17e54a(0x508,0x501)];}['toGridXY'](_0x5625b3,_0x460405){const _0x39563f=(_0x5625b3-this['xmin'])/(this['xmax']-this[_0x313701(0x6e,0x8f)])*(this['cols']-0x1),_0x1bd2a2=(this['ymax']-_0x460405)/(this['ymax']-this['ymin'])*(this['rows']-0x1);function _0x313701(_0x4a06e8,_0x5733a8){return _0x69b9bf(_0x4a06e8,_0x5733a8- -0x521);}return[_0x39563f,_0x1bd2a2];}['getUVByXY'](_0x3a6a0a,_0x3e5124){function _0x2d74a6(_0x1c7bb0,_0x39fb9f){return _0x16b89f(_0x39fb9f,_0x1c7bb0-0xe8);}if(_0x3a6a0a<0x0||_0x3a6a0a>=this[_0x2d74a6(-0x9c,-0x53)]||_0x3e5124>=this[_0x5d78e4(0x5f9,0x57d)])return[0x0,0x0,0x0];const _0x117201=Math[_0x2d74a6(-0x96,-0x118)](_0x3a6a0a),_0x17ec12=Math[_0x2d74a6(-0x96,-0x11a)](_0x3e5124);if(_0x117201===_0x3a6a0a&&_0x17ec12===_0x3e5124)return this[_0x2d74a6(-0xaa,-0xe7)][_0x3e5124][_0x3a6a0a];function _0x5d78e4(_0xa4f756,_0x488b22){return _0x16b89f(_0xa4f756,_0x488b22-0x6e7);}const _0x10d7dc=_0x117201+0x1,_0x358653=_0x17ec12+0x1,_0x40c9b4=this['getUVByXY'](_0x117201,_0x17ec12),_0x3b8eb2=this['getUVByXY'](_0x10d7dc,_0x17ec12),_0x37d648=this[_0x5d78e4(0x4d6,0x510)](_0x117201,_0x358653),_0x2d58fe=this['getUVByXY'](_0x10d7dc,_0x358653);let _0x3530ef=null;try{_0x3530ef=this[_0x2d74a6(-0x8c,-0x31)](_0x3a6a0a-_0x117201,_0x3e5124-_0x17ec12,_0x40c9b4,_0x3b8eb2,_0x37d648,_0x2d58fe);}catch(_0x517e6c){console[_0x2d74a6(0x2b,0xaf)](_0x3a6a0a,_0x3e5124);}return _0x3530ef;}[_0x16b89f(-0xf6,-0x174)](_0x35612c,_0x310e71,_0x59dd73,_0x3ec6af,_0x11890a,_0x50e12f){const _0x5da38d=0x1-_0x35612c,_0x1712b3=0x1-_0x310e71,_0x1ef259=_0x5da38d*_0x1712b3,_0x3ec11d=_0x35612c*_0x1712b3,_0x2d9817=_0x5da38d*_0x310e71,_0x201e30=_0x35612c*_0x310e71;function _0x244df2(_0x40d233,_0x36d5a8){return _0x16b89f(_0x36d5a8,_0x40d233-0x16c);}const _0x1b6ff8=_0x59dd73[0x0]*_0x1ef259+_0x3ec6af[0x0]*_0x3ec11d+_0x11890a[0x0]*_0x2d9817+_0x50e12f[0x0]*_0x201e30,_0x2abb7d=_0x59dd73[0x1]*_0x1ef259+_0x3ec6af[0x1]*_0x3ec11d+_0x11890a[0x1]*_0x2d9817+_0x50e12f[0x1]*_0x201e30;return this[_0x244df2(0x7c,0xe8)](_0x1b6ff8,_0x2abb7d);}['_calcUV'](_0x30f5c6,_0x19bb32){return[+_0x30f5c6,+_0x19bb32,Math['sqrt'](_0x30f5c6*_0x30f5c6+_0x19bb32*_0x19bb32)];}['getUVByPoint'](_0x32092b,_0x1980b8){if(!this['isInExtent'](_0x32092b,_0x1980b8))return null;function _0x4137dc(_0x594368,_0x5c0d29){return _0x16b89f(_0x594368,_0x5c0d29-0x3a0);}const _0x3a66e4=this[_0x4137dc(0x2c5,0x297)](_0x32092b,_0x1980b8),_0x2b7d79=this['getUVByXY'](_0x3a66e4[0x0],_0x3a66e4[0x1]);return _0x2b7d79;}[_0x16b89f(-0x206,-0x1a7)](_0x3961a0,_0x5a21c8){function _0x780560(_0x193fe4,_0x534c13){return _0x69b9bf(_0x193fe4,_0x534c13- -0x318);}return _0x3961a0>=this['xmin']&&_0x3961a0<=this['xmax']&&_0x5a21c8>=this[_0x780560(0x217,0x299)]&&_0x5a21c8<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x2187e0=fRandomByfloat(this[_0x3b66c9(0x266,0x21b)],this['xmax']),_0x31621b=fRandomByfloat(this[_0x48a603(0x59f,0x5c0)],this[_0x3b66c9(0x1aa,0x1c1)]);function _0x3b66c9(_0x5b094a,_0x5232a2){return _0x16b89f(_0x5b094a,_0x5232a2-0x36f);}const _0x511f90={};function _0x48a603(_0x51a870,_0x38b641){return _0x16b89f(_0x38b641,_0x51a870-0x6f2);}return _0x511f90['lat']=_0x31621b,_0x511f90['lng']=_0x2187e0,_0x511f90;}['getParticles'](){function _0x54ff33(_0x45aebb,_0x58065c){return _0x16b89f(_0x58065c,_0x45aebb- -0xad);}function _0x37f6af(_0x1f964a,_0x247d5b){return _0x16b89f(_0x1f964a,_0x247d5b-0x537);}let _0x46b4d4,_0x990be1,_0x57d5e5;for(let _0x160be2=0x0,_0xee3673=this[_0x37f6af(0x30f,0x375)]['length'];_0x160be2<_0xee3673;_0x160be2++){let _0x1456f3=this[_0x54ff33(-0x26f,-0x2bd)][_0x160be2];_0x1456f3[_0x54ff33(-0x1fe,-0x25c)]<=0x0&&(_0x1456f3=this[_0x54ff33(-0x237,-0x214)](_0x1456f3));if(_0x1456f3['age']>0x0){const _0x28bb36=_0x1456f3[_0x54ff33(-0x167,-0x19a)],_0x57feb3=_0x1456f3['tlat'];_0x57d5e5=this[_0x54ff33(-0x247,-0x2c4)](_0x28bb36,_0x57feb3),_0x57d5e5?(_0x46b4d4=_0x28bb36+this['_calc_speedRate'][0x0]*_0x57d5e5[0x0],_0x990be1=_0x57feb3+this['_calc_speedRate'][0x1]*_0x57d5e5[0x1],_0x1456f3['lng']=_0x28bb36,_0x1456f3['lat']=_0x57feb3,_0x1456f3['tlng']=_0x46b4d4,_0x1456f3[_0x37f6af(0x352,0x37f)]=_0x990be1,_0x1456f3['speed']=_0x57d5e5[0x2],_0x1456f3['age']--):_0x1456f3['age']=0x0;}}return this[_0x54ff33(-0x26f,-0x258)];}['_randomParticle'](_0x5e8bba){let _0x24dbd1,_0x45d6ad;function _0x5d071b(_0x476bea,_0xcdb533){return _0x16b89f(_0xcdb533,_0x476bea-0x384);}function _0x6e97d0(_0x2dd36a,_0x99c0cc){return _0x69b9bf(_0x2dd36a,_0x99c0cc- -0x361);}for(let _0x380531=0x0;_0x380531<0x1e;_0x380531++){_0x24dbd1=this['getRandomLatLng'](),_0x45d6ad=this[_0x5d071b(0x1ea,0x198)](_0x24dbd1[_0x6e97d0(0x257,0x23b)],_0x24dbd1['lat']);if(_0x45d6ad&&_0x45d6ad[0x2]>0x0)break;}if(!_0x45d6ad)return _0x5e8bba;const _0xda5b00=_0x24dbd1[_0x5d071b(0x21c,0x1ba)]+this['_calc_speedRate'][0x0]*_0x45d6ad[0x0],_0x500fc7=_0x24dbd1['lat']+this[_0x6e97d0(0x2bf,0x278)][0x1]*_0x45d6ad[0x1];return _0x5e8bba['lng']=_0x24dbd1['lng'],_0x5e8bba['lat']=_0x24dbd1['lat'],_0x5e8bba[_0x6e97d0(0x330,0x2e9)]=_0xda5b00,_0x5e8bba['tlat']=_0x500fc7,_0x5e8bba[_0x6e97d0(0x216,0x252)]=Math['round'](0xa+Math[_0x6e97d0(0x2e0,0x258)]()*this['maxAge']),_0x5e8bba['speed']=_0x45d6ad[0x2],_0x5e8bba;}[_0x69b9bf(0x51f,0x57c)](){for(const _0x1ad228 in this){delete this[_0x1ad228];}}}function fRandomByfloat(_0x6a6b3b,_0x42f5ea){return _0x6a6b3b+Math['random']()*(_0x42f5ea-_0x6a6b3b);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x561c0f={}){function _0x2a7bd3(_0x1ce699,_0xcc6f69){return _0x69b9bf(_0x1ce699,_0xcc6f69- -0x3cc);}function _0x10cfaa(_0x4d510b,_0x52b917){return _0x69b9bf(_0x52b917,_0x4d510b- -0x5d);}super(_0x561c0f),this['_setOptionsHook'](_0x561c0f),this['canvas']=null,_0x561c0f['colors']&&_0x561c0f['steps']&&(this[_0x2a7bd3(0x24e,0x21c)]=new mars3d__namespace[(_0x10cfaa(0x540,0x4e4))](_0x561c0f));}['_setOptionsHook'](_0x58d210,_0x2440ae){this[_0x38c9cf(0x115,0x17d)]=0x3e8/(_0x58d210[_0x2ad168(-0x180,-0xf2)]||0xa),this['_pointerEvents']=this[_0x2ad168(-0x9a,-0xf1)][_0x2ad168(-0x10b,-0xe8)]??![],this['color']=_0x58d210['color']||_0x2ad168(-0xb9,-0xff);function _0x2ad168(_0x38e6ae,_0x4a7665){return _0x16b89f(_0x38e6ae,_0x4a7665-0xb0);}function _0x38c9cf(_0x20e126,_0x21e101){return _0x16b89f(_0x20e126,_0x21e101-0x2eb);}this['lineWidth']=_0x58d210['lineWidth']||0x1,this['fixedHeight']=_0x58d210[_0x38c9cf(0x141,0x12c)]??0x0,this['flipY']=_0x58d210[_0x38c9cf(0x186,0x1b4)]??![],this['windField']&&this['windField']['setOptions'](_0x58d210);}get['layer'](){return this['canvas'];}get['canvasWidth'](){function _0x55592e(_0x56f523,_0x4c0278){return _0x16b89f(_0x56f523,_0x4c0278-0x34a);}function _0x3c71b0(_0x36b26d,_0x1339ec){return _0x16b89f(_0x1339ec,_0x36b26d-0x115);}return this['_map']['scene'][_0x3c71b0(0x20,-0x35)][_0x55592e(0x1b4,0x1cd)];}get['canvasHeight'](){function _0x4572e6(_0x803e02,_0x718a1b){return _0x69b9bf(_0x718a1b,_0x803e02- -0x19f);}return this['_map'][_0x4572e6(0x3ca,0x3e6)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x425b5d){function _0x552948(_0x43c9ab,_0xb242e1){return _0x69b9bf(_0xb242e1,_0x43c9ab- -0x6e5);}this['_pointerEvents']=_0x425b5d;function _0x1ea525(_0xdb2f31,_0x3288f8){return _0x69b9bf(_0xdb2f31,_0x3288f8- -0x26f);}if(!this[_0x552948(-0xd6,-0x108)])return;_0x425b5d?this['canvas']['style']['pointer-events']=_0x552948(-0x196,-0x131):this['canvas']['style'][_0x552948(-0x107,-0xe8)]='none';}get['particlesNumber'](){function _0x3a0de7(_0xa97a76,_0x4c426d){return _0x69b9bf(_0x4c426d,_0xa97a76- -0x618);}function _0x34a937(_0x37c970,_0x137642){return _0x16b89f(_0x37c970,_0x137642- -0x71);}return this[_0x34a937(-0x1d3,-0x212)][_0x3a0de7(-0x72,-0xf4)];}set['particlesNumber'](_0x886811){function _0x21e54a(_0x3811b2,_0x588001){return _0x16b89f(_0x588001,_0x3811b2-0x672);}this['options']['particlesNumber']=_0x886811;function _0x1cbb7e(_0x39021e,_0x5d4bc7){return _0x69b9bf(_0x39021e,_0x5d4bc7- -0x16);}clearTimeout(this[_0x1cbb7e(0x5f6,0x593)]),this[_0x21e54a(0x517,0x4b0)]=setTimeout(()=>{function _0xe2298b(_0x2df20c,_0xb2ba75){return _0x1cbb7e(_0x2df20c,_0xb2ba75- -0x69f);}this[_0xe2298b(-0xe0,-0xa5)]();},0x1f4);}get[_0x16b89f(-0x185,-0x14d)](){function _0x99a866(_0x5eb26c,_0x1e2b9d){return _0x69b9bf(_0x1e2b9d,_0x5eb26c- -0x4fc);}return this['options'][_0x99a866(0xbb,0xb9)];}set['speedRate'](_0x36aeb5){function _0x2b17f5(_0x2bd28f,_0x467fa6){return _0x16b89f(_0x467fa6,_0x2bd28f-0x57e);}function _0xced60f(_0x1fe176,_0x1203b1){return _0x16b89f(_0x1fe176,_0x1203b1-0x541);}this['options']['speedRate']=_0x36aeb5,this[_0x2b17f5(0x3ae,0x401)]&&(this[_0x2b17f5(0x3ae,0x403)]['speedRate']=_0x36aeb5);}get[_0x16b89f(-0xdf,-0xef)](){return this['options']['maxAge'];}set[_0x16b89f(-0x15c,-0xef)](_0xf60551){this[_0x22611a(0xf8,0xad)][_0x22611a(0x141,0x15f)]=_0xf60551;function _0x22611a(_0x5cb95c,_0x483afe){return _0x69b9bf(_0x5cb95c,_0x483afe- -0x4b6);}function _0x53d4b3(_0x277757,_0x525c5c){return _0x69b9bf(_0x525c5c,_0x277757- -0x4e5);}this['windField']&&(this['windField'][_0x53d4b3(0x130,0x1b5)]=_0xf60551);}get[_0x16b89f(-0xea,-0x11f)](){function _0x3704ea(_0x5e0203,_0x4d875b){return _0x16b89f(_0x5e0203,_0x4d875b- -0x59);}return this[_0x3704ea(-0x12c,-0x152)];}set['data'](_0x4d273e){function _0x7b3de9(_0x5eae86,_0x5cd138){return _0x16b89f(_0x5eae86,_0x5cd138-0x4e8);}this[_0x7b3de9(0x2cb,0x33d)](_0x4d273e);}get[_0x16b89f(-0xb6,-0xbf)](){function _0x3b9a18(_0x3274cd,_0x2dc961){return _0x16b89f(_0x2dc961,_0x3274cd-0x111);}let _0x57a948=this[_0x452758(-0xa4,-0xaa)]['xmin'],_0xaa63f2=this['windData']['xmax'],_0x138452=this[_0x452758(-0xa4,-0x110)]['ymin'],_0x24d191=this['windData']['ymax'];_0xaa63f2>=0x167&&_0x57a948===0x0&&(_0x57a948=-0xb4,_0xaa63f2=0xb4);_0x57a948=Math['max'](_0x57a948,-0xb4),_0xaa63f2=Math['min'](_0xaa63f2,0xb4),_0x138452=Math[_0x3b9a18(-0x12,-0x9b)](_0x138452,-0x5a);function _0x452758(_0x22ff08,_0x2ef4c1){return _0x69b9bf(_0x2ef4c1,_0x22ff08- -0x6af);}return _0x24d191=Math[_0x452758(-0xd3,-0x85)](_0x24d191,0x5a),Cesium[_0x452758(-0x169,-0x152)]['fromDegrees'](_0x57a948,_0x138452,_0xaa63f2,_0x24d191);}['_showHook'](_0x2d848c){function _0x3145dc(_0x354580,_0x28fbc0){return _0x69b9bf(_0x354580,_0x28fbc0- -0x10f);}function _0x59dfee(_0x2c9805,_0x5eef7e){return _0x69b9bf(_0x5eef7e,_0x2c9805- -0x770);}_0x2d848c?this[_0x3145dc(0x4bd,0x4f9)]():(this[_0x3145dc(0x4f5,0x4fc)]&&(this['options'][_0x3145dc(0x532,0x4d6)]=this['windData']),this[_0x59dfee(-0x133,-0x106)]());}['_mountedHook'](){function _0x37564b(_0x2a527e,_0x5b746d){return _0x16b89f(_0x5b746d,_0x2a527e-0x4a3);}function _0x1c7d20(_0x89e8b9,_0x1edf7b){return _0x16b89f(_0x89e8b9,_0x1edf7b-0x426);}this[_0x1c7d20(0x2f0,0x285)]['worker']?this['initWorker']():this[_0x1c7d20(0x277,0x256)]=new CanvasWindField(this[_0x37564b(0x302,0x392)]);}['_addedHook'](){this['canvas']=this[_0x19d51d(0x21e,0x24b)]();const _0x1f541e={};function _0x19d51d(_0x3d1197,_0x52ea66){return _0x69b9bf(_0x3d1197,_0x52ea66- -0x355);}_0x1f541e['willReadFrequently']=!![],this[_0x15fb80(-0x21,0x35)]=this['canvas']['getContext']('2d',_0x1f541e);function _0x15fb80(_0x1e99a7,_0x18a073){return _0x16b89f(_0x1e99a7,_0x18a073-0x15c);}this['bindEvent'](),this[_0x19d51d(0x1c5,0x20e)][_0x15fb80(0x32,0x3d)]&&this['setData'](this[_0x15fb80(-0x2c,-0x45)]['data']);}['_removedHook'](){function _0x57288d(_0x10f3eb,_0x51cb43){return _0x69b9bf(_0x51cb43,_0x10f3eb- -0x2d1);}this['clear'](),this[_0x134740(0x16d,0xf2)]();function _0x134740(_0x154003,_0x5af89c){return _0x16b89f(_0x5af89c,_0x154003-0x2f4);}this['canvas']&&(this[_0x57288d(0x293,0x306)]['container'][_0x57288d(0x311,0x369)](this[_0x134740(0x1ff,0x177)]),delete this['canvas']);}['_createCanvas'](){const _0x303566=mars3d__namespace[_0x23c270(0x476,0x463)]['create']('canvas','mars3d-canvasWind',this[_0x95c369(0x90,0xa9)][_0x23c270(0x557,0x5d3)]);function _0x23c270(_0x3f54f0,_0x1464ca){return _0x16b89f(_0x1464ca,_0x3f54f0-0x61c);}_0x303566['style']['position']='absolute',_0x303566[_0x95c369(0x8d,0xde)]['top']=_0x23c270(0x4d8,0x56c),_0x303566[_0x23c270(0x4b1,0x533)]['left']='0px',_0x303566['style']['width']=this['_map']['scene']['canvas'][_0x95c369(0x10f,0xcc)]+'px',_0x303566[_0x95c369(0x16a,0xde)]['height']=this['_map']['scene']['canvas'][_0x23c270(0x49a,0x428)]+'px';function _0x95c369(_0x14864f,_0x3107ba){return _0x69b9bf(_0x14864f,_0x3107ba- -0x4bb);}return _0x303566['style']['pointerEvents']=this['_pointerEvents']?'auto':'none',_0x303566['style']['zIndex']=this['options'][_0x95c369(0x5,0x88)]??0x9,_0x303566['width']=this[_0x23c270(0x47c,0x4a2)][_0x95c369(0x7b,0xae)]['canvas']['clientWidth'],_0x303566[_0x23c270(0x4af,0x42b)]=this['_map']['scene'][_0x23c270(0x527,0x5a1)]['clientHeight'],_0x303566;}['resize'](){function _0x59dfb4(_0x4ad95d,_0x378caa){return _0x16b89f(_0x378caa,_0x4ad95d- -0x66);}function _0x13e379(_0x59177e,_0x2ef0eb){return _0x69b9bf(_0x2ef0eb,_0x59177e- -0x1ab);}this[_0x13e379(0x464,0x461)]&&(this['canvas'][_0x59dfb4(-0x1d1,-0x20f)][_0x59dfb4(-0x1ac,-0x173)]=this[_0x59dfb4(-0x206,-0x20f)]['scene']['canvas']['clientWidth']+'px',this['canvas']['style'][_0x13e379(0x3ec,0x3ee)]=this['_map'][_0x13e379(0x3be,0x44a)]['canvas'][_0x13e379(0x3d7,0x370)]+'px',this[_0x59dfb4(-0x15b,-0x1c0)][_0x59dfb4(-0x1ac,-0x220)]=this['_map'][_0x59dfb4(-0x201,-0x1eb)]['canvas']['clientWidth'],this[_0x59dfb4(-0x15b,-0x147)]['height']=this[_0x13e379(0x3b9,0x403)]['scene']['canvas']['clientHeight']);}['bindEvent'](){const _0x3c3ceb=this;function _0x110bc9(_0x31672e,_0x2c6d79){return _0x69b9bf(_0x31672e,_0x2c6d79- -0x678);}let _0x18b580=Date['now']();(function _0x412533(){function _0x189964(_0x42306a,_0xf9fbe1){return _0xa5c5(_0xf9fbe1- -0xdd,_0x42306a);}if(_0x3c3ceb[_0x383036(0x201,0x1fb)])return;_0x3c3ceb[_0x189964(0x1f0,0x167)]=window[_0x383036(0x340,0x2c6)](_0x412533);function _0x383036(_0x122031,_0x4549ef){return _0xa5c5(_0x4549ef-0x62,_0x122031);}if(_0x3c3ceb['show']&&_0x3c3ceb['windField']){const _0x32d83e=Date[_0x189964(0x1c5,0x16f)](),_0x2872bd=_0x32d83e-_0x18b580;_0x2872bd>_0x3c3ceb[_0x189964(0x7e,0xdc)]&&(_0x18b580=_0x32d83e-_0x2872bd%_0x3c3ceb['frameTime'],_0x3c3ceb['update']());}}(),window['addEventListener']('resize',this['resize'][_0x46745b(0x35f,0x3d7)](this),![]),this['mouse_down']=![],this['mouse_move']=![]);function _0x46745b(_0x3b247b,_0x1d7e0a){return _0x16b89f(_0x3b247b,_0x1d7e0a-0x591);}this[_0x46745b(0x377,0x3f0)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace[_0x110bc9(-0x73,-0x100)]['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x110bc9(0x37,-0x3d)],this[_0x110bc9(-0xb4,-0x13d)],this),this[_0x110bc9(-0xa4,-0x114)]['on'](mars3d__namespace['EventType'][_0x46745b(0x4c5,0x482)],this['_onMouseUpEvent'],this));}['unbindEvent'](){window[_0x457bf0(-0x138,-0xd6)](this['_animateFrame']);function _0x4d8c53(_0x1d4ee4,_0x552d15){return _0x69b9bf(_0x552d15,_0x1d4ee4- -0x667);}function _0x457bf0(_0x36deed,_0x41ffbd){return _0x69b9bf(_0x36deed,_0x41ffbd- -0x6ba);}delete this['_animateFrame'],window[_0x457bf0(-0x15b,-0xf2)](_0x4d8c53(-0x136,-0xd3),this['resize']),this['options']['mouseHidden']&&(this['_map']['off'](mars3d__namespace[_0x4d8c53(-0xef,-0xb3)]['wheel'],this[_0x457bf0(-0x5b,-0xa7)],this),this[_0x4d8c53(-0x103,-0x121)]['off'](mars3d__namespace[_0x457bf0(-0x11d,-0x142)]['mouseDown'],this[_0x457bf0(-0x1ba,-0x17f)],this),this[_0x457bf0(-0x1a6,-0x156)][_0x4d8c53(-0x99,-0xd6)](mars3d__namespace['EventType'][_0x4d8c53(-0x72,-0x80)],this['_onMouseUpEvent'],this),this[_0x4d8c53(-0x103,-0x83)][_0x457bf0(-0xb1,-0xec)](mars3d__namespace[_0x457bf0(-0x138,-0x142)][_0x4d8c53(-0x41,-0xc5)],this[_0x457bf0(-0x12e,-0xac)],this));}['_onMapWhellEvent'](_0x15961c){clearTimeout(this[_0x5d9d67(0x599,0x5aa)]);function _0x5d9d67(_0x1fe217,_0x260ae1){return _0x69b9bf(_0x260ae1,_0x1fe217-0x8);}if(!this['show']||!this['canvas'])return;this['canvas']['style']['visibility']='hidden',this['refreshTimer']=setTimeout(()=>{function _0x4265d1(_0x704a6c,_0x282535){return _0x5d9d67(_0x704a6c- -0x3f8,_0x282535);}if(!this['show'])return;this['redraw']();function _0x2cb946(_0x3f9ce5,_0x34b25a){return _0x5d9d67(_0x34b25a- -0x7aa,_0x3f9ce5);}this[_0x4265d1(0x21f,0x244)][_0x4265d1(0x1a9,0x1c4)]['visibility']=_0x2cb946(-0x1e2,-0x270);},0xc8);}['_onMouseDownEvent'](_0x1bcb8c){this[_0x430b78(0x4b0,0x537)]=!![];function _0x430b78(_0x15466d,_0x3b048e){return _0x16b89f(_0x3b048e,_0x15466d-0x5cb);}this['_map']['off'](mars3d__namespace[_0x3d34a5(0x105,0xa3)]['mouseMove'],this[_0x430b78(0x4d5,0x4b7)],this);function _0x3d34a5(_0x2732f5,_0x3fda76){return _0x69b9bf(_0x2732f5,_0x3fda76- -0x4d5);}this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x184ce8){if(!this['show']||!this['canvas'])return;function _0x2fa222(_0x513671,_0x528d75){return _0x16b89f(_0x513671,_0x528d75-0x5c9);}function _0x5aa01f(_0x4c987f,_0x131868){return _0x16b89f(_0x131868,_0x4c987f-0x30);}this[_0x5aa01f(-0xeb,-0xf4)]&&(this[_0x5aa01f(-0xc5,-0xf0)][_0x5aa01f(-0x13b,-0x180)]['visibility']=_0x5aa01f(-0x179,-0x142),this[_0x5aa01f(-0x102,-0xed)]=!![]);}[_0x16b89f(-0x10e,-0x196)](_0x4289f6){if(!this['show']||!this['canvas'])return;this[_0x309bf3(-0xfa,-0xb3)][_0x430ada(0x50f,0x4b4)](mars3d__namespace['EventType'][_0x430ada(0x4b9,0x50c)],this[_0x309bf3(-0x50,-0x7f)],this);function _0x430ada(_0x483ef5,_0x59ad36){return _0x69b9bf(_0x483ef5,_0x59ad36- -0x11a);}this[_0x430ada(0x4e3,0x4cf)]&&this[_0x430ada(0x52d,0x4b8)]&&this['redraw']();this['canvas'][_0x309bf3(-0xc5,-0xb1)]['visibility']='visible';function _0x309bf3(_0x535c0a,_0xda6dce){return _0x16b89f(_0xda6dce,_0x535c0a-0xa6);}this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x2249d3){function _0x5c8f3b(_0x194957,_0x1ba7c2){return _0x16b89f(_0x194957,_0x1ba7c2-0x6c1);}this[_0xee1302(-0x78,0x18)](),this[_0x5c8f3b(0x5d9,0x5c8)]=_0x2249d3;function _0xee1302(_0x4ce010,_0x58ffe9){return _0x16b89f(_0x58ffe9,_0x4ce010-0x163);}this[_0xee1302(-0x6d,-0xf6)][_0xee1302(0x97,0xcc)](_0x2249d3),this['redraw']();}['redraw'](){function _0x3954a5(_0x6b4151,_0x3e285d){return _0x69b9bf(_0x6b4151,_0x3e285d- -0x37a);}if(!this[_0x3954a5(0x338,0x2b7)])return;function _0x3519fe(_0x34f199,_0x10aa0e){return _0x69b9bf(_0x10aa0e,_0x34f199- -0x568);}this['windField']['setOptions'](this[_0x3519fe(-0x5,-0x7c)]),this['update']();}['update'](){function _0x57c473(_0x50364f,_0x2308a3){return _0x16b89f(_0x50364f,_0x2308a3-0x237);}if(this['_updateIng'])return;this['_updateIng']=!![];function _0x5e8363(_0xf79b21,_0x102a75){return _0x16b89f(_0xf79b21,_0x102a75-0x286);}if(this['worker'])this[_0x5e8363(0x102,0xb6)]['update']();else{const _0x5f0551=this['windField'][_0x57c473(0x9f,0x10e)]();this[_0x5e8363(0x158,0x14b)](_0x5f0551);}this[_0x5e8363(0x1bd,0x172)]=![];}[_0x69b9bf(0x60f,0x5c9)](_0x39e099){this['_canvasParticles']=_0x39e099,this[_0x510cef(0xaf,0xb7)][_0xc0d3dc(0x296,0x20f)]='destination-in',this['canvasContext'][_0x510cef(0xac,0x10f)](0x0,0x0,this['canvasWidth'],this[_0x510cef(0x9e,0x61)]),this[_0x510cef(0xaf,0x33)][_0xc0d3dc(0x296,0x243)]=_0x510cef(0x2c,0x58);function _0xc0d3dc(_0x57222f,_0xfcc872){return _0x69b9bf(_0xfcc872,_0x57222f- -0x36e);}function _0x510cef(_0x24cedd,_0x4bf772){return _0x16b89f(_0x4bf772,_0x24cedd-0x1d6);}this['canvasContext']['globalAlpha']=0.9;const _0x244b27=this['_map']['scene']['mode']!==Cesium['SceneMode']['SCENE3D'],_0x3d3c1=this[_0xc0d3dc(0x235,0x1b4)]*0.25;if(this[_0x510cef(0xba,0x78)])for(let _0x1ec91d=0x0,_0x28859e=_0x39e099['length'];_0x1ec91d<_0x28859e;_0x1ec91d++){const _0x459152=_0x39e099[_0x1ec91d],_0x560fd7=this['_tomap'](_0x459152,_0x459152[_0xc0d3dc(0x22e,0x279)],_0x459152['lat'],_0x459152[_0x510cef(0xc1,0x14c)]),_0x55e154=this['_tomap'](_0x459152,_0x459152['tlng'],_0x459152['tlat'],_0x459152[_0x510cef(0x97,0xaf)]);if(!_0x560fd7||!_0x55e154)continue;if(_0x244b27&&Math['abs'](_0x560fd7[0x0]-_0x55e154[0x0])>=_0x3d3c1)continue;this['canvasContext'][_0xc0d3dc(0x254,0x257)](),this['canvasContext']['lineWidth']=this[_0x510cef(0x22,-0x23)],this['canvasContext']['strokeStyle']=this['_colorRamp'][_0xc0d3dc(0x1cf,0x1f9)](_0x459152['speed']),this['canvasContext']['moveTo'](_0x560fd7[0x0],_0x560fd7[0x1]),this['canvasContext'][_0xc0d3dc(0x210,0x1ff)](_0x55e154[0x0],_0x55e154[0x1]),this['canvasContext'][_0xc0d3dc(0x1c9,0x1da)]();}else{this['canvasContext'][_0x510cef(0x94,0x20)](),this['canvasContext']['lineWidth']=this['lineWidth'],this[_0xc0d3dc(0x26f,0x2fc)]['strokeStyle']=this[_0xc0d3dc(0x2bc,0x285)];for(let _0x582f64=0x0,_0x4d23b6=_0x39e099['length'];_0x582f64<_0x4d23b6;_0x582f64++){const _0x2e843e=_0x39e099[_0x582f64],_0x52b4ab=this['_tomap'](_0x2e843e,_0x2e843e['lng'],_0x2e843e['lat'],_0x2e843e['alt']),_0x2ad3ac=this['_tomap'](_0x2e843e,_0x2e843e['tlng'],_0x2e843e['tlat'],_0x2e843e[_0x510cef(0x97,0x31)]);if(!_0x52b4ab||!_0x2ad3ac)continue;if(_0x244b27&&Math[_0xc0d3dc(0x220,0x26a)](_0x52b4ab[0x0]-_0x2ad3ac[0x0])>=_0x3d3c1)continue;this[_0xc0d3dc(0x26f,0x2fe)]['moveTo'](_0x52b4ab[0x0],_0x52b4ab[0x1]),this['canvasContext']['lineTo'](_0x2ad3ac[0x0],_0x2ad3ac[0x1]);}this['canvasContext'][_0xc0d3dc(0x1c9,0x231)]();}}[_0x16b89f(-0x112,-0x14c)](_0x5125ea,_0x2d47b7,_0x381727,_0x3892d0){function _0x2f9edd(_0x444f2a,_0x2d857a){return _0x69b9bf(_0x2d857a,_0x444f2a- -0x6e3);}const _0x1b1451=Cesium[_0x2f9edd(-0x18b,-0x139)]['fromDegrees'](_0x2d47b7,_0x381727,_0x3892d0??this['fixedHeight']),_0xa12b2f=this['_map']['scene'];if(_0xa12b2f[_0x2f9edd(-0x19f,-0x167)]===Cesium[_0x2dd83f(0x1f6,0x203)]['SCENE3D']){const _0x40eab4=new Cesium['EllipsoidalOccluder'](_0xa12b2f['globe']['ellipsoid'],_0xa12b2f[_0x2dd83f(0x1f1,0x270)][_0x2f9edd(-0x14f,-0x12d)]),_0x10b295=_0x40eab4['isPointVisible'](_0x1b1451);if(!_0x10b295)return _0x5125ea[_0x2dd83f(0x22d,0x20b)]=0x0,null;}function _0x2dd83f(_0x7e3f3,_0xe1afbd){return _0x16b89f(_0x7e3f3,_0xe1afbd-0x35c);}const _0x110f5d=mars3d__namespace[_0x2dd83f(0x1b7,0x1ed)][_0x2dd83f(0x2c8,0x25d)](this[_0x2f9edd(-0x17f,-0x1c3)]['scene'],_0x1b1451);return _0x110f5d?[_0x110f5d['x'],_0x110f5d['y']]:null;}['clear'](){function _0x53e0af(_0x387e72,_0xce8da3){return _0x16b89f(_0xce8da3,_0x387e72-0x612);}this['windField']['clear'](),delete this[_0x53e0af(0x519,0x495)];}[_0x69b9bf(0x635,0x5fe)](){function _0x49ee25(_0x4b4c4f,_0x2efc86){return _0x16b89f(_0x4b4c4f,_0x2efc86-0x24f);}this['worker']=new Worker(this[_0x372d32(0x7a,0x3c)][_0x372d32(0xd6,0x101)]),this['worker']['onmessage']=_0x20c3f2=>{function _0xa30f71(_0x289930,_0x4ff2a4){return _0x372d32(_0x289930- -0x9f,_0x4ff2a4);}this[_0x5578f0(0x3b0,0x3b5)](_0x20c3f2['data'][_0xa30f71(-0x46,-0x4e)]);function _0x5578f0(_0x543c89,_0x255cbc){return _0x372d32(_0x543c89-0x2d0,_0x255cbc);}this['_updateIng2']=![];};function _0x372d32(_0x52c139,_0x17e019){return _0x16b89f(_0x17e019,_0x52c139-0x21b);}this[_0x372d32(0x4b,0x38)]={'init':_0x81185e=>{const _0x344d66={};_0x344d66[_0x28c2a7(0x477,0x4af)]=_0x26f15e(0xe2,0xc9);function _0x26f15e(_0x2bbada,_0x49f06a){return _0x49ee25(_0x2bbada,_0x49f06a- -0xb0);}_0x344d66['options']=_0x81185e;function _0x28c2a7(_0x2a9b29,_0x1fa61e){return _0x49ee25(_0x1fa61e,_0x2a9b29-0x382);}this['worker']['postMessage'](_0x344d66);},'setOptions':_0x1f715d=>{const _0x6eb745={};function _0x45ce52(_0x178dac,_0x1cbe0a){return _0x372d32(_0x1cbe0a-0x474,_0x178dac);}_0x6eb745[_0x45ce52(0x58d,0x535)]='setOptions',_0x6eb745['options']=_0x1f715d;function _0x4beb90(_0x425367,_0x206098){return _0x49ee25(_0x206098,_0x425367-0x155);}this[_0x45ce52(0x516,0x54a)][_0x4beb90(0x1cc,0x166)](_0x6eb745);},'setDate':_0x3438a2=>{const _0x215c56={};_0x215c56[_0x3123e6(0xbd,0x13d)]=_0x58973b(0x228,0x22c);function _0x3123e6(_0x35365d,_0x3ef2a6){return _0x49ee25(_0x35365d,_0x3ef2a6-0x48);}function _0x58973b(_0x4f56db,_0x260001){return _0x49ee25(_0x4f56db,_0x260001-0xa9);}_0x215c56['data']=_0x3438a2,this[_0x58973b(0x1df,0x1b3)][_0x3123e6(0x7f,0xbf)](_0x215c56);},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![];const _0x4dd1ec={};_0x4dd1ec['type']=_0x4f282c(-0x171,-0x200);function _0x2e9cd3(_0x15a166,_0x1e387b){return _0x372d32(_0x15a166-0x442,_0x1e387b);}function _0x4f282c(_0x74a1c0,_0xfd1ba7){return _0x372d32(_0x74a1c0- -0x28a,_0xfd1ba7);}this['worker'][_0x2e9cd3(0x485,0x4f2)](_0x4dd1ec);},'clear':()=>{const _0x5c3070={};_0x5c3070['type']='clear',this['worker']['postMessage'](_0x5c3070);}},this['windField']['init'](this['options']);}}mars3d__namespace[_0x69b9bf(0x641,0x5af)][_0x16b89f(-0xe8,-0xc2)]('canvasWind',CanvasWindLayer),mars3d__namespace[_0x16b89f(-0x14c,-0x101)][_0x69b9bf(0x64a,0x625)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['Log']['logInfo'](_0x16b89f(-0xcb,-0x13a)+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace[_0x16b89f(-0x16d,-0x147)]=WindUtil,exports[_0x16b89f(-0xb7,-0x140)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports[_0x69b9bf(0x6b3,0x62d)]=WindLayer,exports['WindUtil']=WindUtil;const _0x379bbb={};_0x379bbb['value']=!![],Object[_0x69b9bf(0x54b,0x5bb)](exports,_0x16b89f(-0xfc,-0x178),_0x379bbb);
14
+ 'use strict';(function(_0x3f66c4,_0x21a907){const _0x11ef6d=_0x3f66c4();function _0x36aa49(_0x9fcb8b,_0x558792){return _0x270b(_0x9fcb8b-0x271,_0x558792);}function _0x7056f0(_0x2bfc2d,_0x3976e1){return _0x270b(_0x2bfc2d-0x69,_0x3976e1);}while(!![]){try{const _0x588d71=parseInt(_0x7056f0(0x18b,0x14e))/0x1+-parseInt(_0x7056f0(0x25a,0x1f2))/0x2+-parseInt(_0x7056f0(0x220,0x28a))/0x3*(parseInt(_0x7056f0(0x1e0,0x182))/0x4)+parseInt(_0x7056f0(0x1b5,0x1e3))/0x5+parseInt(_0x7056f0(0x215,0x24c))/0x6+parseInt(_0x7056f0(0x27a,0x294))/0x7*(-parseInt(_0x36aa49(0x459,0x4a2))/0x8)+parseInt(_0x7056f0(0x241,0x217))/0x9;if(_0x588d71===_0x21a907)break;else _0x11ef6d['push'](_0x11ef6d['shift']());}catch(_0x3a457b){_0x11ef6d['push'](_0x11ef6d['shift']());}}}(_0x3596,0x4beba));function _interopNamespace(_0x3086f1){if(_0x3086f1&&_0x3086f1['__esModule'])return _0x3086f1;var _0x46bcef=Object['create'](null);return _0x3086f1&&Object['keys'](_0x3086f1)['forEach'](function(_0x48f3da){function _0x325ae7(_0x30a0b2,_0x6a25cf){return _0x270b(_0x30a0b2- -0x340,_0x6a25cf);}if(_0x48f3da!=='default'){var _0x235bc4=Object['getOwnPropertyDescriptor'](_0x3086f1,_0x48f3da);Object[_0x325ae7(-0x13a,-0x17b)](_0x46bcef,_0x48f3da,_0x235bc4['get']?_0x235bc4:{'enumerable':!![],'get':function(){return _0x3086f1[_0x48f3da];}});}}),_0x46bcef['default']=_0x3086f1,_0x46bcef;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace[_0x52dd5f(0x27c,0x251)];function getU(_0x446d32,_0x12ab09){const _0x175b25=_0x446d32*Math['cos'](Cesium$2['Math']['toRadians'](_0x12ab09));return _0x175b25;}function getV(_0x10df75,_0x5ca34d){const _0x258b35=_0x10df75*Math['sin'](Cesium$2['Math'][_0x2c993d(0x6d,0x1d)](_0x5ca34d));function _0x2c993d(_0x3ab120,_0x18b6f1){return _0x52dd5f(_0x3ab120- -0x2a4,_0x18b6f1);}return _0x258b35;}function getSpeed(_0x2062f1,_0x5f0b94){function _0x3f406e(_0x52556a,_0x32a689){return _0x52dd5f(_0x52556a- -0x149,_0x32a689);}const _0x649c55=Math['sqrt'](Math['pow'](_0x2062f1,0x2)+Math[_0x3f406e(0x171,0x19d)](_0x5f0b94,0x2));return _0x649c55;}function getDirection(_0x2c96aa,_0x4a2943){let _0x4ddf97=Cesium$2['Math']['toDegrees'](Math[_0x3dd2fa(0x2d9,0x2b0)](_0x4a2943,_0x2c96aa));_0x4ddf97+=_0x4ddf97<0x0?0x168:0x0;function _0x3dd2fa(_0x123458,_0xb159d8){return _0x52dd5f(_0xb159d8-0x4c,_0x123458);}return _0x4ddf97;}const _0x4d2d4b={};_0x4d2d4b['__proto__']=null,_0x4d2d4b[_0x5e9725(0x467,0x46d)]=getU,_0x4d2d4b['getV']=getV,_0x4d2d4b['getSpeed']=getSpeed,_0x4d2d4b[_0x5e9725(0x3b5,0x35c)]=getDirection;var WindUtil=_0x4d2d4b;const version='3.10.11',buildTime=_0x5e9725(0x39c,0x367);var updatePositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20获取当前粒子的位置\x0a\x20\x20vec2\x20currentPos\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20获取粒子的速度\x0a\x20\x20vec2\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20计算下一个位置\x0a\x20\x20vec2\x20nextPos\x20=\x20currentPos\x20+\x20speed;\x0a\x0a\x20\x20\x20\x20//\x20将新的位置写入\x20fragColor\x0a\x20\x20fragColor\x20=\x20vec4(nextPos,\x200.0f,\x201.0f);\x0a}\x0a',calculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec2\x20uRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20vRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20speedRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20dimension;\x20//\x20(lon,\x20lat)\x0auniform\x20vec2\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec2\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0a\x0auniform\x20float\x20speedScaleFactor;\x0auniform\x20float\x20frameRateAdjustment;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20getInterval(vec2\x20maximum,\x20vec2\x20minimum,\x20vec2\x20dimension)\x20{\x0a\x20\x20return\x20(maximum\x20-\x20minimum)\x20/\x20(dimension\x20-\x201.0f);\x0a}\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLat.x\x20=\x20clamp(lonLat.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLat.y\x20=\x20clamp(lonLat.y,\x20minimum.y,\x20maximum.y);\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(0.0f);\x0a\x20\x20index2D.x\x20=\x20(lonLat.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index2D.y\x20=\x20(lonLat.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20dimension.y);\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0avec2\x20getWindComponents(vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20u\x20=\x20texture(U,\x20normalizedIndex2D).r;\x0a\x20\x20float\x20v\x20=\x20texture(V,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20vec2(u,\x20v);\x0a}\x0a\x0avec2\x20bilinearInterpolation(vec2\x20lonLat)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLat.x;\x0a\x20\x20float\x20lat\x20=\x20lonLat.y;\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20grid\x20cell\x20coordinates\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Get\x20wind\x20vectors\x20at\x20four\x20corners\x0a\x20\x20vec2\x20v00\x20=\x20getWindComponents(vec2(lon0,\x20lat0));\x0a\x20\x20vec2\x20v10\x20=\x20getWindComponents(vec2(lon1,\x20lat0));\x0a\x20\x20vec2\x20v01\x20=\x20getWindComponents(vec2(lon0,\x20lat1));\x0a\x20\x20vec2\x20v11\x20=\x20getWindComponents(vec2(lon1,\x20lat1));\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20all\x20wind\x20vectors\x20are\x20zero\x0a\x20\x20if(length(v00)\x20==\x200.0f\x20&&\x20length(v10)\x20==\x200.0f\x20&&\x20length(v01)\x20==\x200.0f\x20&&\x20length(v11)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x200.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20interpolation\x20weights\x0a\x20\x20float\x20s\x20=\x20(lon\x20-\x20lon0)\x20/\x20interval.x;\x0a\x20\x20float\x20t\x20=\x20(lat\x20-\x20lat0)\x20/\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Perform\x20bilinear\x20interpolation\x20on\x20vector\x20components\x0a\x20\x20vec2\x20v0\x20=\x20mix(v00,\x20v10,\x20s);\x0a\x20\x20vec2\x20v1\x20=\x20mix(v01,\x20v11,\x20s);\x0a\x20\x20return\x20mix(v0,\x20v1,\x20t);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec2\x20lonLat)\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\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec2\x20convertSpeedUnitToLonLat(vec2\x20lonLat,\x20vec2\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLat);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20vec2\x20windVectorInLonLat\x20=\x20vec2(u,\x20v);\x0a\x0a\x20\x20return\x20windVectorInLonLat;\x0a}\x0a\x0avec2\x20calculateSpeedByRungeKutta2(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec2\x20y_n\x20=\x20lonLat;\x0a\x20\x20vec2\x20f_n\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec2\x20speed\x20=\x20h\x20*\x20bilinearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20calculateWindNorm(vec2\x20speed)\x20{\x0a\x20\x20float\x20speedLength\x20=\x20length(speed.xy);\x0a\x20\x20if(speedLength\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Clamp\x20speedLength\x20to\x20range\x0a\x20\x20float\x20clampedSpeed\x20=\x20clamp(speedLength,\x20speedRange.x,\x20speedRange.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(clampedSpeed\x20-\x20speedRange.x)\x20/\x20(speedRange.y\x20-\x20speedRange.x);\x0a\x20\x20return\x20vec2(speedLength,\x20normalizedSpeed);\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec2\x20lonLat\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec2\x20speedOrigin\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLat)\x20*\x20frameRateAdjustment;\x0a\x20\x20vec2\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLat,\x20speed);\x0a\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',postProcessingPositionFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a',renderParticlesFragmentShader=_0x5e9725(0x46c,0x43c),renderParticlesVertexShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0ain\x20vec3\x20normal;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20frameRateAdjustment;\x0auniform\x20float\x20particleHeight;\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20vec2\x20lineWidth;\x0auniform\x20vec2\x20lineLength;\x0auniform\x20vec2\x20domain;\x0auniform\x20bool\x20is3D;\x0a\x0a//\x20添加输出变量传递给片元着色器\x0aout\x20vec4\x20speed;\x0aout\x20float\x20v_segmentPosition;\x0aout\x20vec2\x20textureCoordinate;\x0a\x0a//\x20添加结构体定义\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0avec3\x20convertCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\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\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLat.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20if(is3D)\x20{\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLat);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用\x20modelViewProjection\x20矩阵进行投影变换\x0a\x20\x20\x20\x20vec4\x20projectedPosition\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20\x20\x20return\x20projectedPosition;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20vec3\x20position2D\x20=\x20vec3(radians(lonLat.x),\x20radians(lonLat.y),\x200.0f);\x0a\x20\x20\x20\x20return\x20czm_modelViewProjection\x20*\x20vec4(position2D,\x201.0f);\x0a\x20\x20}\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign,\x20float\x20widthFactor)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20//\x20计算方向向量\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x0a\x20\x20\x20\x20//\x20计算法向量\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x0a\x20\x20\x20\x20//\x20使用\x20widthFactor\x20调整宽度\x0a\x20\x20float\x20offsetLength\x20=\x20widthFactor\x20*\x20lineWidth.y;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20翻转\x20Y\x20轴坐标\x0a\x20\x20vec2\x20flippedIndex\x20=\x20vec2(st.x,\x201.0f\x20-\x20st.y);\x0a\x0a\x20\x20vec2\x20particleIndex\x20=\x20flippedIndex;\x0a\x20\x20speed\x20=\x20texture(particlesSpeed,\x20particleIndex);\x0a\x0a\x20\x20vec2\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rg;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x0a\x20\x20\x20\x20//\x20计算速度相关的宽度和长度因子\x0a\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x0a\x20\x20\x20\x20//\x20根据速度计算宽度\x0a\x20\x20float\x20widthFactor\x20=\x20mix(lineWidth.x,\x20lineWidth.y,\x20normalizedSpeed);\x0a\x20\x20widthFactor\x20*=\x20(pointToUse\x20<\x200\x20?\x201.0f\x20:\x200.5f);\x20//\x20头部更宽,尾部更窄\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20length\x20based\x20on\x20speed\x0a\x20\x20float\x20lengthFactor\x20=\x20mix(lineLength.x,\x20lineLength.y,\x20normalizedSpeed)\x20*\x20pixelSize;\x0a\x0a\x20\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20头部位置\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x200.0f;\x20//\x20头部\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Get\x20direction\x20and\x20normalize\x20it\x20to\x20length\x201.0\x0a\x20\x20\x20\x20vec4\x20direction\x20=\x20normalize(projectedCoordinates.next\x20-\x20projectedCoordinates.current);\x0a\x20\x20\x20\x20vec4\x20extendedPosition\x20=\x20projectedCoordinates.current\x20+\x20direction\x20*\x20lengthFactor;\x0a\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20extendedPosition,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20extendedPosition\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x201.0f;\x20//\x20尾部\x0a\x20\x20}\x0a\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a}\x0a';const {ShaderSource:ShaderSource$1}=mars3d__namespace[_0x5e9725(0x3cf,0x3d8)];class ShaderManager{static[_0x52dd5f(0x322,0x2f1)](){const _0x2c8386={};return _0x2c8386['sources']=[calculateSpeedShader],new ShaderSource$1(_0x2c8386);}static['getUpdatePositionShader'](){const _0x54a5e3={};return _0x54a5e3['sources']=[updatePositionShader],new ShaderSource$1(_0x54a5e3);}static[_0x52dd5f(0x316,0x394)](){const _0x3c6d39={};return _0x3c6d39['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x3c6d39);}static['getSegmentDrawFragmentShader'](){const _0x2fa62d={};return _0x2fa62d['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x2fa62d);}static[_0x5e9725(0x3d5,0x3b4)](){const _0x1c0d50={};return _0x1c0d50['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x1c0d50);}}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defined,destroyObject}=mars3d__namespace[_0x5e9725(0x3cf,0x451)];class CustomPrimitive{constructor(_0xa2f134){function _0x53b5c8(_0x206fee,_0xdec18a){return _0x5e9725(_0xdec18a-0x16c,_0x206fee);}this[_0x1874c1(0x434,0x464)]=_0xa2f134['commandType'],this['geometry']=_0xa2f134[_0x53b5c8(0x58b,0x5b4)],this['attributeLocations']=_0xa2f134['attributeLocations'],this['primitiveType']=_0xa2f134['primitiveType'],this[_0x53b5c8(0x5b0,0x57e)]=_0xa2f134['uniformMap']||{},this[_0x1874c1(0x433,0x48e)]=_0xa2f134[_0x53b5c8(0x4b1,0x4f8)];function _0x1874c1(_0xa3d59e,_0x4a3f4a){return _0x52dd5f(_0xa3d59e-0x1fa,_0x4a3f4a);}this['fragmentShaderSource']=_0xa2f134[_0x1874c1(0x4c9,0x4bd)],this[_0x53b5c8(0x5b0,0x536)]=_0xa2f134[_0x1874c1(0x471,0x4dd)],this['framebuffer']=_0xa2f134['framebuffer'],this[_0x53b5c8(0x53e,0x53f)]=_0xa2f134[_0x53b5c8(0x4f3,0x53f)],this['autoClear']=_0xa2f134['autoClear']??![],this['preExecute']=_0xa2f134[_0x1874c1(0x4f8,0x50f)],this[_0x1874c1(0x508,0x541)]=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this[_0x1874c1(0x42a,0x488)]=_0xa2f134[_0x1874c1(0x42a,0x473)]??(()=>!![]),this['autoClear']&&(this[_0x53b5c8(0x536,0x58a)]=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Pass$1['OPAQUE']}));}['createCommand'](_0x6ae10d){function _0x3a87cc(_0xab5727,_0x159a3e){return _0x5e9725(_0xab5727- -0x491,_0x159a3e);}function _0x2821c8(_0x15f774,_0x20dace){return _0x5e9725(_0x15f774- -0x61,_0x20dace);}if(this['commandType']==='Draw'){const _0x36dde6={};_0x36dde6['context']=_0x6ae10d,_0x36dde6[_0x2821c8(0x3e7,0x3b9)]=this[_0x2821c8(0x3e7,0x417)],_0x36dde6['attributeLocations']=this['attributeLocations'],_0x36dde6['bufferUsage']=BufferUsage$1[_0x3a87cc(-0x61,-0x16)];const _0x548e69=VertexArray$1[_0x2821c8(0x3ae,0x3bd)](_0x36dde6),_0xf5d16c={};_0xf5d16c['context']=_0x6ae10d,_0xf5d16c['vertexShaderSource']=this['vertexShaderSource'],_0xf5d16c[_0x2821c8(0x3c1,0x387)]=this['fragmentShaderSource'],_0xf5d16c['attributeLocations']=this[_0x2821c8(0x390,0x315)];const _0x4a1fff=ShaderProgram['fromCache'](_0xf5d16c),_0x450b67=RenderState['fromCache'](this['rawRenderState']),_0x15deb0={};return _0x15deb0[_0x3a87cc(-0x44,-0x8a)]=this,_0x15deb0[_0x3a87cc(-0x18,-0xa)]=_0x548e69,_0x15deb0[_0x2821c8(0x32d,0x2ba)]=this['primitiveType'],_0x15deb0['modelMatrix']=Matrix4['IDENTITY'],_0x15deb0[_0x2821c8(0x378,0x30d)]=_0x450b67,_0x15deb0['shaderProgram']=_0x4a1fff,_0x15deb0[_0x2821c8(0x36d,0x35d)]=this['framebuffer'],_0x15deb0['uniformMap']=this[_0x3a87cc(-0x7f,-0xbc)],_0x15deb0['pass']=Pass$1[_0x3a87cc(-0x21,0x5a)],new DrawCommand(_0x15deb0);}else{if(this['commandType']==='Compute'){const _0x35c7f5={};return _0x35c7f5[_0x2821c8(0x3ec,0x446)]=this,_0x35c7f5['fragmentShaderSource']=this['fragmentShaderSource'],_0x35c7f5['uniformMap']=this['uniformMap'],_0x35c7f5[_0x2821c8(0x372,0x38a)]=this['outputTexture'],_0x35c7f5['persists']=!![],new ComputeCommand(_0x35c7f5);}else throw new Error(_0x3a87cc(-0x15,-0x45));}}['setGeometry'](_0x459f7d,_0xfc1b21){this['geometry']=_0xfc1b21;function _0x1e7709(_0x43cd0c,_0x4e8691){return _0x5e9725(_0x4e8691- -0x4f5,_0x43cd0c);}function _0x4efc9b(_0x26fb50,_0x43e635){return _0x5e9725(_0x43e635- -0x53d,_0x26fb50);}defined(this['commandToExecute'])&&(this[_0x4efc9b(-0x110,-0xff)][_0x1e7709(-0x58,-0x7c)]=VertexArray$1[_0x1e7709(-0x159,-0xe6)]({'context':_0x459f7d,'geometry':this['geometry'],'attributeLocations':this[_0x4efc9b(-0x10b,-0x14c)],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}['update'](_0x2a4c34){function _0x2e2aa4(_0x359385,_0x4380a3){return _0x5e9725(_0x4380a3- -0x391,_0x359385);}if(!this['isDynamic']())return;if(!this[_0x2e2aa4(0x86,0xd0)]||!defined(_0x2a4c34))return;!defined(this['commandToExecute'])&&(this[_0x2e2aa4(0x110,0xad)]=this[_0x2b668b(0x435,0x497)](_0x2a4c34['context']));defined(this['preExecute'])&&this['preExecute']();if(!_0x2a4c34[_0x2b668b(0x479,0x496)]){console[_0x2e2aa4(-0x25,-0x2)]('frameState.commandList\x20is\x20undefined');return;}function _0x2b668b(_0x150494,_0x4857c5){return _0x52dd5f(_0x4857c5-0x1ef,_0x150494);}defined(this['clearCommand'])&&_0x2a4c34[_0x2b668b(0x45f,0x496)]['push'](this['clearCommand']),defined(this[_0x2e2aa4(0x7d,0xad)])&&_0x2a4c34['commandList'][_0x2b668b(0x3f9,0x427)](this[_0x2e2aa4(0x69,0xad)]);}[_0x5e9725(0x452,0x3df)](){return![];}[_0x52dd5f(0x25b,0x216)](){if(defined(this['commandToExecute'])){var _0x4eb9a9;(_0x4eb9a9=this['commandToExecute']['shaderProgram'])===null||_0x4eb9a9===void 0x0||_0x4eb9a9['destroy'](),this['commandToExecute']['shaderProgram']=undefined;}return destroyObject(this);}}function deepMerge(_0x5467b5,_0x4c5b90){if(!_0x5467b5)return _0x4c5b90;if(!_0x4c5b90)return _0x5467b5;const _0x26f92c={..._0x4c5b90},_0x2b5ceb=_0x26f92c;for(const _0x1f6444 in _0x5467b5){if(Object[_0x41b63b(0x266,0x1f5)]['hasOwnProperty']['call'](_0x5467b5,_0x1f6444)){const _0x9a0531=_0x5467b5[_0x1f6444],_0xa332fd=_0x4c5b90[_0x1f6444];if(Array['isArray'](_0x9a0531)){_0x2b5ceb[_0x1f6444]=_0x9a0531['slice']();continue;}if(_0x9a0531&&typeof _0x9a0531==='object'){_0x2b5ceb[_0x1f6444]=deepMerge(_0x9a0531,_0xa332fd||{});continue;}_0x9a0531!==undefined&&(_0x2b5ceb[_0x1f6444]=_0x9a0531);}}function _0x41b63b(_0x4d31e2,_0x34cd3e){return _0x52dd5f(_0x4d31e2- -0x6d,_0x34cd3e);}return _0x2b5ceb;}const {Cartesian2:Cartesian2$1,FrameRateMonitor,PixelDatatype:PixelDatatype$1,PixelFormat:PixelFormat$1,Sampler:Sampler$1,Texture:Texture$1,TextureMagnificationFilter:TextureMagnificationFilter$1,TextureMinificationFilter:TextureMinificationFilter$1}=mars3d__namespace[_0x5e9725(0x3cf,0x452)];class WindParticlesComputing{constructor(_0x192af5,_0x21dbe3,_0x1126e0,_0x445821,_0x1d5b93){this['context']=_0x192af5,this['options']=_0x1126e0,this[_0x36ba58(0x483,0x498)]=_0x445821,this[_0x36ba58(0x490,0x4f9)]=_0x21dbe3,this[_0x36ba58(0x469,0x436)]=0x3c,this[_0x36ba58(0x4ad,0x4ce)]=0x1;const _0x553a9d={};_0x553a9d[_0x3ef82f(0x281,0x26e)]=_0x1d5b93,_0x553a9d['samplingWindow']=0x1;function _0x3ef82f(_0x405c45,_0x1e1541){return _0x5e9725(_0x1e1541- -0x166,_0x405c45);}function _0x36ba58(_0x1cf1cc,_0x58b022){return _0x52dd5f(_0x1cf1cc-0x223,_0x58b022);}_0x553a9d[_0x36ba58(0x4e9,0x4a6)]=0x0,this[_0x3ef82f(0x1b7,0x223)]=new FrameRateMonitor(_0x553a9d),this['initFrameRate'](),this['createWindTextures'](),this[_0x36ba58(0x501,0x557)](),this['createComputingPrimitives']();}['initFrameRate'](){const _0x2da60c=()=>{function _0x548f51(_0x2261b0,_0x175a65){return _0x270b(_0x2261b0-0x3c5,_0x175a65);}function _0xfd925d(_0x253c70,_0x57ed8a){return _0x270b(_0x253c70-0x255,_0x57ed8a);}this['frameRateMonitor']['lastFramesPerSecond']>0x14&&(this['frameRate']=this['frameRateMonitor'][_0x548f51(0x58b,0x5b1)],this['frameRateAdjustment']=0x3c/Math['max'](this[_0x548f51(0x4ed,0x4b8)],0x1));};_0x2da60c();const _0xa52ee7=setInterval(_0x2da60c,0x3e8);function _0x3f5968(_0x71eb5,_0x24e0c1){return _0x52dd5f(_0x71eb5- -0x167,_0x24e0c1);}const _0xa9bd1d=this[_0x3f5968(0xf4,0xe2)][_0x3f5968(0x18d,0x173)](this);function _0x19738d(_0x16178e,_0x34089e){return _0x5e9725(_0x34089e-0x76,_0x16178e);}this['destroy']=()=>{clearInterval(_0xa52ee7),_0xa9bd1d();};}[_0x52dd5f(0x2c0,0x2ef)](){function _0x47fd27(_0x55ab2c,_0x5cfa3b){return _0x52dd5f(_0x55ab2c- -0x1f0,_0x5cfa3b);}const _0x3a0d77={};_0x3a0d77['minificationFilter']=TextureMinificationFilter$1['LINEAR'],_0x3a0d77[_0x47fd27(0x51,0xa2)]=TextureMagnificationFilter$1[_0x47fd27(0xf8,0xd4)];const _0x17fe73={'context':this[_0x47fd27(0xe8,0x166)],'width':this[_0x47fd27(0x7d,0xd0)]['width'],'height':this[_0x47fd27(0x7d,0xd6)]['height'],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this['options'][_0x47fd27(0xce,0xf8)]??![],'sampler':new Sampler$1(_0x3a0d77)};function _0x216e3f(_0x239918,_0x57c865){return _0x52dd5f(_0x239918-0x12c,_0x57c865);}this[_0x47fd27(0x142,0x1ad)]={'U':new Texture$1({..._0x17fe73,'source':{'arrayBufferView':new Float32Array(this[_0x47fd27(0x7d,0x62)]['u']['array'])}}),'V':new Texture$1({..._0x17fe73,'source':{'arrayBufferView':new Float32Array(this['windData']['v'][_0x47fd27(0xc5,0x69)])}})};}[_0x52dd5f(0x2de,0x280)](){const _0x32b2b9={};_0x32b2b9[_0x25767d(0xcc,0x9d)]=TextureMinificationFilter$1['NEAREST'];function _0x25767d(_0x5de83c,_0x345a2c){return _0x52dd5f(_0x345a2c- -0x25f,_0x5de83c);}_0x32b2b9[_0x25767d(-0xa3,-0x1e)]=TextureMagnificationFilter$1['NEAREST'];const _0xfefff1={'context':this['context'],'width':this['options']['particlesTextureSize'],'height':this[_0x2abd27(0xd1,0x4f)][_0x2abd27(0x63,0x5)],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1[_0x2abd27(0xa2,0x50)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this[_0x2abd27(0x56,0x4f)][_0x2abd27(-0x3b,0x5)]*this[_0x25767d(0xab,0x90)]['particlesTextureSize']*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x32b2b9)};function _0x2abd27(_0x120940,_0x11011c){return _0x5e9725(_0x11011c- -0x3f3,_0x120940);}this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0xfefff1),'currentParticlesPosition':new Texture$1(_0xfefff1),'nextParticlesPosition':new Texture$1(_0xfefff1),'postProcessingPosition':new Texture$1(_0xfefff1),'particlesSpeed':new Texture$1(_0xfefff1)};}[_0x5e9725(0x390,0x385)](){function _0x1a827d(_0x1cb30e,_0xbdd471){return _0x52dd5f(_0xbdd471-0x1bf,_0x1cb30e);}function _0x494efd(_0x1a71d0,_0x5a84dd){return _0x52dd5f(_0x1a71d0- -0x21c,_0x5a84dd);}Object[_0x1a827d(0x4ec,0x4b7)](this[_0x494efd(0xbf,0x13b)])[_0x494efd(0x10b,0x13c)](_0x1706f3=>_0x1706f3[_0x494efd(0x3f,0x9d)]());}['createComputingPrimitives'](){function _0x4588f9(_0x395ab1,_0x484baa){return _0x52dd5f(_0x484baa-0x1,_0x395ab1);}function _0x3c356f(_0x39e75a,_0x66965){return _0x5e9725(_0x66965- -0x5be,_0x39e75a);}this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this['windData']['u']['min'],this['windData']['u']['max']),'vRange':()=>new Cartesian2$1(this[_0x3c356f(-0x1e1,-0x1fe)]['v']['min'],this['windData']['v'][_0x4588f9(0x316,0x329)]),'speedRange':()=>new Cartesian2$1(this[_0x3c356f(-0x204,-0x1fe)]['speed']['min'],this['windData']['speed']['max']),'currentParticlesPosition':()=>this[_0x4588f9(0x295,0x2dc)][_0x4588f9(0x227,0x27b)],'speedScaleFactor':()=>{return(this['viewerParameters']['pixelSize']+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this['frameRateAdjustment'],'dimension':()=>new Cartesian2$1(this['windData'][_0x4588f9(0x1d0,0x253)],this[_0x3c356f(-0x1bf,-0x1fe)]['height']),'minimum':()=>new Cartesian2$1(this[_0x4588f9(0x2c6,0x26e)][_0x4588f9(0x348,0x32d)][_0x3c356f(-0x202,-0x1a4)],this[_0x4588f9(0x25e,0x26e)]['bounds'][_0x3c356f(-0x14e,-0x19b)]),'maximum':()=>new Cartesian2$1(this['windData']['bounds']['east'],this[_0x4588f9(0x25f,0x26e)][_0x4588f9(0x329,0x32d)]['north'])},'fragmentShaderSource':ShaderManager[_0x3c356f(-0xcc,-0x149)](),'outputTexture':this[_0x4588f9(0x2fd,0x2dc)]['particlesSpeed'],'preExecute':()=>{const _0x2e55ce=this['particlesTextures']['previousParticlesPosition'];function _0xd0b05b(_0x16ec61,_0x37381f){return _0x4588f9(_0x16ec61,_0x37381f- -0x4f);}function _0x496d59(_0x33f3b9,_0x57e7c3){return _0x4588f9(_0x57e7c3,_0x33f3b9- -0x35b);}this[_0xd0b05b(0x2d9,0x28d)][_0x496d59(-0x61,0x7)]=this[_0xd0b05b(0x2e3,0x28d)][_0x496d59(-0xe0,-0xed)],this['particlesTextures']['currentParticlesPosition']=this['particlesTextures'][_0xd0b05b(0x226,0x253)],this['particlesTextures']['postProcessingPosition']=_0x2e55ce,this['primitives']['calculateSpeed']['commandToExecute']&&(this['primitives'][_0x496d59(-0x45,-0xc1)]['commandToExecute']['outputTexture']=this[_0xd0b05b(0x228,0x28d)]['particlesSpeed']);},'isDynamic':()=>this[_0x4588f9(0x28d,0x2f0)][_0x3c356f(-0x1ac,-0x151)]}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this[_0x4588f9(0x2f1,0x2dc)][_0x4588f9(0x1fb,0x27b)],'particlesSpeed':()=>this['particlesTextures']['particlesSpeed']},'fragmentShaderSource':ShaderManager[_0x4588f9(0x342,0x2f8)](),'outputTexture':this[_0x3c356f(-0x171,-0x190)][_0x4588f9(0x282,0x2fc)],'preExecute':()=>{function _0x4455f8(_0x269e4d,_0x10d823){return _0x4588f9(_0x10d823,_0x269e4d-0x287);}function _0x884070(_0x4aa651,_0x195d6d){return _0x3c356f(_0x4aa651,_0x195d6d-0x526);}this[_0x884070(0x40e,0x38d)]['updatePosition']['commandToExecute']&&(this[_0x4455f8(0x55a,0x530)][_0x4455f8(0x4f4,0x575)]['commandToExecute']['outputTexture']=this[_0x4455f8(0x563,0x5a6)]['nextParticlesPosition']);},'isDynamic':()=>this['options'][_0x3c356f(-0x154,-0x151)]}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this['particlesTextures'][_0x3c356f(-0x1b2,-0x170)],'particlesSpeed':()=>this['particlesTextures'][_0x3c356f(-0x1cd,-0x21d)],'lonRange':()=>this['viewerParameters']['lonRange'],'latRange':()=>this['viewerParameters']['latRange'],'dataLonRange':()=>new Cartesian2$1(this[_0x3c356f(-0x1c5,-0x1fe)]['bounds']['west'],this[_0x3c356f(-0x279,-0x1fe)]['bounds']['east']),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0x4588f9(0x2e9,0x32d)]['south'],this['windData'][_0x4588f9(0x312,0x32d)]['north']),'randomCoefficient':function(){return Math['random']();},'dropRate':()=>this[_0x4588f9(0x2e5,0x2f0)]['dropRate'],'dropRateBump':()=>this['options']['dropRateBump'],'useViewerBounds':()=>this['options'][_0x3c356f(-0x18a,-0x179)]},'fragmentShaderSource':ShaderManager[_0x3c356f(-0x23f,-0x1e9)](),'outputTexture':this[_0x4588f9(0x2f0,0x2dc)][_0x3c356f(-0x1e2,-0x1ca)],'preExecute':()=>{function _0x30eb68(_0x79f7e2,_0x5ba1ad){return _0x4588f9(_0x5ba1ad,_0x79f7e2- -0x462);}function _0x350ed6(_0x5d5844,_0x35cf0d){return _0x3c356f(_0x5d5844,_0x35cf0d-0x595);}this['primitives'][_0x30eb68(-0x1c0,-0x217)][_0x30eb68(-0x176,-0x1cd)]&&(this[_0x30eb68(-0x18f,-0x128)]['postProcessingPosition'][_0x30eb68(-0x176,-0x15d)]['outputTexture']=this['particlesTextures'][_0x30eb68(-0x1c0,-0x226)]);},'isDynamic':()=>this['options']['dynamic']})};}['reCreateWindTextures'](){this['windTextures']['U'][_0x47f6b2(-0x16a,-0x19f)](),this[_0x47f6b2(-0x93,-0xd3)]['V'][_0x47f6b2(-0x16a,-0x1ba)]();function _0x47f6b2(_0x26d389,_0x41d6d2){return _0x52dd5f(_0x26d389- -0x3c5,_0x41d6d2);}function _0x154b22(_0xaa82cd,_0x2e3a03){return _0x5e9725(_0xaa82cd- -0x309,_0x2e3a03);}this[_0x154b22(0x10a,0x10d)]();}['updateWindData'](_0x33976e){this['windData']=_0x33976e,this['reCreateWindTextures']();}[_0x52dd5f(0x287,0x2f0)](_0x3c994c){const _0x2b2e60=_0x3c994c[_0x413ede(-0x8d,-0x10b)]!==undefined&&_0x3c994c[_0x2c3fc6(0x51,0xc5)]!==this[_0x2c3fc6(0x14c,0xf6)]['flipY'];function _0x2c3fc6(_0x13b20c,_0x4b9caf){return _0x52dd5f(_0x4b9caf- -0x1f9,_0x13b20c);}this['options']=deepMerge(_0x3c994c,this['options']);function _0x413ede(_0x4c7eab,_0x83822b){return _0x52dd5f(_0x4c7eab- -0x34b,_0x83822b);}_0x2b2e60&&this[_0x413ede(-0xed,-0x12c)]();}[_0x5e9725(0x3b0,0x3cc)](_0x169c9d){const {array:_0x1a3844}=_0x169c9d;function _0x2a5198(_0x133c81,_0x67acaf){return _0x52dd5f(_0x67acaf- -0x14b,_0x133c81);}function _0x18e338(_0xa94d13,_0x2623f4){return _0x52dd5f(_0xa94d13- -0xa7,_0x2623f4);}let {min:_0x177cda,max:_0x25d1f5}=_0x169c9d;const _0x1acb2b=new Float32Array(_0x1a3844['length']);_0x177cda===undefined&&(console[_0x18e338(0x195,0x211)]('min\x20is\x20undefined,\x20calculate\x20min'),_0x177cda=Math[_0x2a5198(0x17a,0x141)](..._0x1a3844));_0x25d1f5===undefined&&(console[_0x2a5198(0xbe,0xf1)]('max\x20is\x20undefined,\x20calculate\x20max'),_0x25d1f5=Math['max'](..._0x1a3844));const _0xa3e11b=Math['max'](Math['abs'](_0x177cda),Math[_0x18e338(0x27e,0x212)](_0x25d1f5));for(let _0x582124=0x0;_0x582124<_0x1a3844['length'];_0x582124++){const _0x4a41fd=_0x1a3844[_0x582124]/_0xa3e11b;_0x1acb2b[_0x582124]=_0x4a41fd;}return _0x1acb2b;}[_0x52dd5f(0x25b,0x299)](){function _0x454f4f(_0x4aa53c,_0x24c211){return _0x52dd5f(_0x4aa53c- -0x19,_0x24c211);}Object[_0x454f4f(0x2df,0x2b3)](this['windTextures'])['forEach'](_0x3ce132=>_0x3ce132[_0x454f4f(0x242,0x1d6)]()),Object[_0x454f4f(0x2df,0x282)](this['particlesTextures'])[_0x454f4f(0x30e,0x389)](_0x3f8dee=>_0x3f8dee[_0x454f4f(0x242,0x239)]()),Object['values'](this['primitives'])[_0x2a6418(0xd3,0x148)](_0x5a7d40=>_0x5a7d40['destroy']());function _0x2a6418(_0x156bb2,_0x355f9d){return _0x52dd5f(_0x156bb2- -0x254,_0x355f9d);}this['frameRateMonitor'][_0x454f4f(0x242,0x279)]();}}function _0x3596(){const _0x7903d2=['particlesTextureSize\x20must\x20be\x20greater\x20than\x200','particles','updateViewerParameters','getUVByXY','createRenderingFramebuffers','748zKfnud','getUVByPoint','_removedHook','mouseHidden','postMessage','segmentsDepth','length','cols','container','attributeLocations','CanvasWindLayer','DEPTH_COMPONENT','postProcessingPosition','_onMouseDownEvent','FUNC_ADD','_tomap','particlesTextureSize','all','commandList','createCommand','visible','mouse_down','Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.','requestRender','_pointerEvents','createRenderingTextures','RGBA','register','zIndex','red','clientWidth','fixedHeight','array','fromDegrees','willReadFrequently','ymax','EventType','pow','update','fromGeometry','position','flipY','uniformMap','createWindTextures','clear','mouseUp','xmax','talt','green','quietPeriod','west','_addedHook','destination-in','2538186HlAvWe','clearCommand','onmessage','lng','mouseMove','fragmentShaderSource','south','_onMouseUpEvent','primitives','prototype','redraw','1053uoMhct','Math','pointer-events','context','_onMapWhellEvent','_updateIng','particlesTextures','north','STATIC_DRAW','createParticlesTextures','vmax','mouse_move','isDestroy','alt','isInExtent','lastFramesPerSecond','ymin','sceneMode','_animateFrame','LINEAR','onParticlesTextureSizeChange','_calc_speedRate','commandToExecute','windField','create','getRandomLatLng','options','FLOAT','strokeStyle','useViewerBounds','segmentsColor','bind','geometry','109674AesxLe','getUpdatePositionShader','values','previousParticlesPosition','owner','nextParticlesPosition','minificationFilter','lineTo','preExecute','isDestroyed','positionWC','domain','tlng','speedRate','addEventListener','changeOptions','8itzMsg','none','toWindowCoordinates','blendEquation','_randomParticle','_updateIng2','_map','CanvasWindField','show','779640osQhlb','pixelFormat','toRadians','particlesNumber','UNSIGNED_INT','getU','calculateSpeed','getSegmentDrawVertexShader','_colorRamp','setDate','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec4\x20speed;\x0ain\x20float\x20v_segmentPosition;\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20vec2\x20domain;\x0auniform\x20vec2\x20displayRange;\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speed.a\x20>\x20zero\x20&&\x20speed.b\x20>\x20displayRange.x\x20&&\x20speed.b\x20<\x20displayRange.y)\x20{\x0a\x20\x20\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x20\x20\x20\x20vec4\x20baseColor\x20=\x20texture(colorTable,\x20vec2(normalizedSpeed,\x20zero));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用更平滑的渐变效果\x0a\x20\x20\x20\x20float\x20alpha\x20=\x20smoothstep(0.0f,\x201.0f,\x20v_segmentPosition);\x0a\x20\x20\x20\x20alpha\x20=\x20pow(alpha,\x201.5f);\x20//\x20调整透明度渐变曲线\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20根据速度调整透明度\x0a\x20\x20\x20\x20float\x20speedAlpha\x20=\x20mix(0.3f,\x201.0f,\x20speed.a);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20组合颜色和透明度\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(baseColor.rgb,\x20baseColor.a\x20*\x20alpha\x20*\x20speedAlpha);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a\x0a\x20\x20float\x20segmentsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20if(segmentsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a','dynamic','stroke','ellipsoid','OPAQUE','style','canvas','grid','Cartesian2','getCalculateSpeedShader','canvasContext','defineProperty','abs','vertexArray','forEach','max','Unknown\x20command\x20type','enabled','isPointVisible','bounds','getPrimitives','round','1048243nEMcqd','_speedRate','logInfo','windTextures','canvasWidth','bindEvent','rows','lat','getDataAtLonLat','computing','_calcUV','isDynamic','frameTime','colorTable','__esModule','floor','setOptions','frameRateMonitor','age','push','vertexShaderSource','commandType','primitiveType','warn','destroyParticlesTextures','data','WindLayer','22888XqLaRE','magnificationFilter','rendering','latRange','LayerUtil','SceneMode','frameRate','error','moveTo','2025-12-31\x2016:25','layer','createPrimitives','clearFramebuffers','east','particlesSpeed','framebuffers','height','canvasWind','width','setData','PointTrans','globalAlpha','speed','wrapT','toGridXY','componentDatatype','CLAMP_TO_EDGE','destroy','SCENE3D','processWindData','reCreateWindTextures','BaseLayer','viewerParameters','segments','getDirection','_onMouseMoveEvent','atan2','maxAge','globe','random','displayRange','init','2290355FjogbS','clientHeight','updatePosition','windData','resize','visibility','reverse','particleSystem','xmin','_setOptionsHook','TRIANGLES','colors','unbindEvent','rawRenderState','MAX_VALUE','worker','currentParticlesPosition','framebuffer','Cesium','tlat','0px','mode','outputTexture','scene','getPostProcessingPositionShader','morphComplete','applyViewerParameters','percentageChanged','renderState','updateOptions','top','type','frameRateAdjustment','_drawLines','min','lineWidth','removeEventListener','refreshTimer'];_0x3596=function(){return _0x7903d2;};return _0x3596();}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace[_0x5e9725(0x3cf,0x3bd)];class WindParticlesRendering{constructor(_0x4d5d6f,_0x2423b8,_0x37447b,_0x3534c7){this[_0x5314dd(0x311,0x2a0)]=_0x4d5d6f,this['options']=_0x2423b8,this['viewerParameters']=_0x37447b;function _0x5314dd(_0x540afc,_0x3804e9){return _0x52dd5f(_0x3804e9- -0x38,_0x540afc);}this['computing']=_0x3534c7;function _0x8ba8dd(_0x100287,_0x3102c4){return _0x52dd5f(_0x100287- -0x3e9,_0x3102c4);}(typeof this['options']['particlesTextureSize']!=='number'||this['options']['particlesTextureSize']<=0x0)&&(console[_0x5314dd(0x1fa,0x20f)](_0x5314dd(0x226,0x273)),this['options']['particlesTextureSize']=0x100),this['colorTable']=this['createColorTableTexture'](),this['textures']=this[_0x8ba8dd(-0x13b,-0xba)](),this['framebuffers']=this['createRenderingFramebuffers'](),this[_0x8ba8dd(-0x117,-0x98)]=this[_0x8ba8dd(-0x19e,-0x206)]();}['createRenderingTextures'](){const _0x3799a2={};_0x3799a2[_0x5d609a(-0x1fd,-0x241)]=this['context'],_0x3799a2[_0x475bc2(0x202,0x20d)]=this['context']['drawingBufferWidth'],_0x3799a2['height']=this[_0x475bc2(0x290,0x293)]['drawingBufferHeight'],_0x3799a2[_0x475bc2(0x248,0x2cb)]=PixelFormat[_0x5d609a(-0x226,-0x256)],_0x3799a2['pixelDatatype']=PixelDatatype['UNSIGNED_BYTE'];function _0x475bc2(_0x364113,_0x2c82d6){return _0x52dd5f(_0x2c82d6- -0x45,_0x364113);}const _0x404caf=_0x3799a2,_0x2c275f={};function _0x5d609a(_0x430b47,_0x53559c){return _0x5e9725(_0x430b47- -0x628,_0x53559c);}_0x2c275f['context']=this['context'],_0x2c275f[_0x475bc2(0x193,0x20d)]=this['context']['drawingBufferWidth'],_0x2c275f['height']=this['context']['drawingBufferHeight'],_0x2c275f['pixelFormat']=PixelFormat[_0x5d609a(-0x235,-0x24c)],_0x2c275f['pixelDatatype']=PixelDatatype[_0x5d609a(-0x1c2,-0x1ec)];const _0x1dd894=_0x2c275f;return{'segmentsColor':new Texture(_0x404caf),'segmentsDepth':new Texture(_0x1dd894)};}[_0x5e9725(0x3e7,0x385)](){function _0x947f71(_0x34585b,_0x1a923a){return _0x5e9725(_0x34585b- -0x5ae,_0x1a923a);}const _0x3788a3={};_0x3788a3['context']=this[_0x947f71(-0x183,-0x175)];function _0x569065(_0x2c140c,_0xefc70a){return _0x52dd5f(_0xefc70a-0xe4,_0x2c140c);}return _0x3788a3['colorTextures']=[this['textures'][_0x569065(0x3e6,0x3d7)]],_0x3788a3['depthTexture']=this['textures'][_0x947f71(-0x1c1,-0x1f9)],{'segments':new Framebuffer(_0x3788a3)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x4d157f=>{function _0x3e2839(_0x2b9dfd,_0x11f5cb){return _0x270b(_0x11f5cb- -0x34b,_0x2b9dfd);}_0x4d157f[_0x3e2839(-0x1bf,-0x20e)]();});}['createColorTableTexture'](){const _0x1ae089=new Float32Array(this['options']['colors']['flatMap'](_0x5f1244=>{function _0x3afcb9(_0x3e20a6,_0x729307){return _0x270b(_0x729307-0x346,_0x3e20a6);}function _0x45b29e(_0x417aff,_0x4e368b){return _0x270b(_0x4e368b- -0x1b,_0x417aff);}const _0x5b6aba=Color$1['fromCssColorString'](_0x5f1244);return[_0x5b6aba[_0x45b29e(0x1c2,0x179)],_0x5b6aba[_0x45b29e(0x1e7,0x18c)],_0x5b6aba['blue'],_0x5b6aba['alpha']];})),_0x5f2631={};function _0x58657b(_0x57d64b,_0x52fbc2){return _0x52dd5f(_0x57d64b- -0x5c,_0x52fbc2);}_0x5f2631['minificationFilter']=TextureMinificationFilter[_0x4f4300(0x3c,-0x2f)],_0x5f2631[_0x4f4300(-0xfa,-0xd6)]=TextureMagnificationFilter['LINEAR'],_0x5f2631['wrapS']=TextureWrap['CLAMP_TO_EDGE'],_0x5f2631[_0x4f4300(-0x139,-0xc0)]=TextureWrap[_0x58657b(0x1fe,0x263)];function _0x4f4300(_0x457458,_0xe0dbbc){return _0x5e9725(_0xe0dbbc- -0x46a,_0x457458);}return new Texture({'context':this[_0x58657b(0x27c,0x2bc)],'width':this[_0x4f4300(-0x6a,-0x28)][_0x4f4300(-0x122,-0xa2)]['length'],'height':0x1,'pixelFormat':PixelFormat[_0x58657b(0x253,0x2c3)],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x5f2631),'source':{'width':this[_0x4f4300(0x7,-0x28)]['colors']['length'],'height':0x1,'arrayBufferView':_0x1ae089}});}['createSegmentsGeometry'](){const _0x3b6898=0x4,_0x1f7646=this[_0x7e388e(0x36e,0x36e)][_0x7e388e(0x324,0x350)];let _0x4a5e36=[];for(let _0x1a5a77=0x0;_0x1a5a77<_0x1f7646;_0x1a5a77++){for(let _0x3e5862=0x0;_0x3e5862<_0x1f7646;_0x3e5862++){for(let _0xec51d8=0x0;_0xec51d8<_0x3b6898;_0xec51d8++){_0x4a5e36[_0x7e388e(0x2b7,0x331)](_0x1a5a77/_0x1f7646),_0x4a5e36[_0x7e388e(0x2b7,0x32a)](_0x3e5862/_0x1f7646);}}}function _0x7e388e(_0x17ab2c,_0x2ac6de){return _0x5e9725(_0x17ab2c- -0xd4,_0x2ac6de);}_0x4a5e36=new Float32Array(_0x4a5e36);const _0x1c317a=this[_0x7e388e(0x36e,0x3ce)][_0x7e388e(0x324,0x303)]**0x2;let _0x241f65=[];for(let _0x6be542=0x0;_0x6be542<_0x1c317a;_0x6be542++){_0x241f65['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x241f65=new Float32Array(_0x241f65);let _0x1ccc59=[];for(let _0x2166ba=0x0,_0x588200=0x0;_0x2166ba<_0x1c317a;_0x2166ba++){_0x1ccc59['push'](_0x588200+0x0,_0x588200+0x1,_0x588200+0x2,_0x588200+0x2,_0x588200+0x1,_0x588200+0x3),_0x588200+=_0x3b6898;}function _0x168c76(_0x336204,_0x39001f){return _0x5e9725(_0x336204- -0x3af,_0x39001f);}_0x1ccc59=new Uint32Array(_0x1ccc59);const _0x455756={};_0x455756[_0x7e388e(0x2d8,0x2a4)]=ComponentDatatype['FLOAT'],_0x455756['componentsPerAttribute']=0x2,_0x455756['values']=_0x4a5e36;const _0xd74eb0={};_0xd74eb0[_0x168c76(-0x3,-0x33)]=ComponentDatatype[_0x168c76(0x94,0xcd)],_0xd74eb0['componentsPerAttribute']=0x3,_0xd74eb0['values']=_0x241f65;const _0x3c18d8=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x455756),'normal':new GeometryAttribute(_0xd74eb0)}),'indices':_0x1ccc59});return _0x3c18d8;}['createRawRenderState'](_0x285e0d){const _0x450a9c={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x285e0d};return Appearance['getDefaultRenderState'](!![],![],_0x450a9c);}['createPrimitives'](){const _0x1976a9={};_0x1976a9['st']=0x0;function _0x37947a(_0x4595f3,_0x44df23){return _0x52dd5f(_0x4595f3- -0x11c,_0x44df23);}_0x1976a9['normal']=0x1;const _0x88520a={};_0x88520a['enabled']=!![];const _0x459dd8={};_0x459dd8[_0x37947a(0x20e,0x1a3)]=!![],_0x459dd8[_0x194133(-0x15c,-0xda)]=WebGLRenderingContext[_0x194133(-0x175,-0x140)],_0x459dd8['blendFuncSource']=WebGLRenderingContext['SRC_ALPHA'];function _0x194133(_0x1cb2e1,_0x19891f){return _0x5e9725(_0x19891f- -0x536,_0x1cb2e1);}_0x459dd8['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x1cbfa8={};_0x1cbfa8['viewport']=undefined,_0x1cbfa8['depthTest']=_0x88520a,_0x1cbfa8['depthMask']=!![],_0x1cbfa8['blending']=_0x459dd8;const _0x1c6ce3=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x1976a9,'geometry':this['createSegmentsGeometry'](),'primitiveType':PrimitiveType[_0x37947a(0x158,0x157)],'uniformMap':{'previousParticlesPosition':()=>this[_0x194133(-0x14c,-0x1b5)][_0x194133(-0x12d,-0x108)][_0x194133(-0x110,-0xea)],'currentParticlesPosition':()=>this['computing'][_0x37947a(0x1bf,0x1a1)][_0x37947a(0x15e,0x174)],'postProcessingPosition':()=>this[_0x37947a(0x112,0x105)][_0x37947a(0x1bf,0x171)]['postProcessingPosition'],'particlesSpeed':()=>this[_0x37947a(0x112,0x98)]['particlesTextures']['particlesSpeed'],'frameRateAdjustment':()=>this[_0x194133(-0x210,-0x1b5)]['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{var _0x516ea0,_0x20f6bd;function _0x26a91f(_0x4e83b4,_0x71c772){return _0x194133(_0x4e83b4,_0x71c772-0x1c7);}function _0xb9916d(_0x4cafeb,_0x33e359){return _0x194133(_0x33e359,_0x4cafeb-0x453);}const _0x1b1335=new Cartesian2(((_0x516ea0=this[_0xb9916d(0x35f,0x310)]['domain'])===null||_0x516ea0===void 0x0?void 0x0:_0x516ea0['min'])??this['computing']['windData'][_0x26a91f(0x41,0x3a)][_0x26a91f(-0x3,0x70)],((_0x20f6bd=this['options'][_0x26a91f(0xce,0xe5)])===null||_0x20f6bd===void 0x0?void 0x0:_0x20f6bd[_0x26a91f(0xf5,0x10c)])??this[_0xb9916d(0x29e,0x231)]['windData']['speed'][_0x26a91f(0xf0,0x10c)]);return _0x1b1335;},'displayRange':()=>{var _0x515ee4,_0x332c77;function _0xe0c8c2(_0x3026ac,_0xffc3c9){return _0x194133(_0xffc3c9,_0x3026ac-0x234);}const _0x4c3bf0=new Cartesian2(((_0x515ee4=this['options']['displayRange'])===null||_0x515ee4===void 0x0?void 0x0:_0x515ee4['min'])??this['computing']['windData']['speed']['min'],((_0x332c77=this['options'][_0x7e8326(0x479,0x4b5)])===null||_0x332c77===void 0x0?void 0x0:_0x332c77['max'])??this['computing'][_0xe0c8c2(0xbe,0x63)]['speed']['max']);function _0x7e8326(_0x50da3a,_0x10cdb3){return _0x194133(_0x50da3a,_0x10cdb3-0x630);}return _0x4c3bf0;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x37947a(0x1bc,0x1b8)]['drawingBufferWidth']/this['context']['drawingBufferHeight'],'pixelSize':()=>this[_0x37947a(0x144,0x16a)]['pixelSize'],'lineWidth':()=>{const _0x5be17d={};function _0x47e27d(_0x12ff6d,_0x58b43a){return _0x194133(_0x58b43a,_0x12ff6d-0x335);}_0x5be17d['min']=0x1,_0x5be17d['max']=0x2;const _0x78e721=this[_0x47e27d(0x241,0x29b)]['lineWidth']||_0x5be17d;function _0x43e4fe(_0x491073,_0xa8abd1){return _0x194133(_0xa8abd1,_0x491073-0x3f);}return new Cartesian2(_0x78e721[_0x47e27d(0x1de,0x1ce)],_0x78e721['max']);},'lineLength':()=>{const _0x3ffd30={};function _0x5920a4(_0xf10d2d,_0x57e7d9){return _0x37947a(_0x57e7d9-0x22e,_0xf10d2d);}function _0x5b3fe3(_0x9dd36c,_0x42262e){return _0x37947a(_0x9dd36c- -0x13d,_0x42262e);}_0x3ffd30['min']=0x14,_0x3ffd30[_0x5b3fe3(0xcf,0x12a)]=0x64;const _0x288b06=this['options']['lineLength']||_0x3ffd30;return new Cartesian2(_0x288b06['min'],_0x288b06[_0x5920a4(0x3ea,0x43a)]);},'is3D':()=>this['viewerParameters'][_0x194133(-0x16d,-0xfd)]===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this['textures']['segmentsDepth']},'vertexShaderSource':ShaderManager['getSegmentDrawVertexShader'](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x1cbfa8)}),_0x386098={};return _0x386098['segments']=_0x1c6ce3,_0x386098;}[_0x5e9725(0x43c,0x3f8)](){const _0x37e05b=this['createSegmentsGeometry']();this[_0x55972d(0x14b,0x130)][_0x55972d(0xda,0x124)]['geometry']=_0x37e05b;const _0x2ce9c8={};_0x2ce9c8['context']=this[_0x336f1a(0x226,0x26f)],_0x2ce9c8['geometry']=_0x37e05b;function _0x55972d(_0xc4a1ad,_0x4ccd14){return _0x52dd5f(_0xc4a1ad- -0x187,_0x4ccd14);}_0x2ce9c8['attributeLocations']=this['primitives'][_0x55972d(0xda,0x85)][_0x55972d(0x117,0x175)],_0x2ce9c8['bufferUsage']=BufferUsage[_0x336f1a(0x2f6,0x274)];const _0x499f31=VertexArray[_0x336f1a(0x23e,0x253)](_0x2ce9c8);function _0x336f1a(_0x4953bc,_0x24f599){return _0x5e9725(_0x24f599- -0x1bc,_0x4953bc);}this['primitives']['segments'][_0x336f1a(0x20f,0x282)]&&(this[_0x55972d(0x14b,0x1b6)]['segments'][_0x336f1a(0x22d,0x282)][_0x55972d(0x19f,0x1a6)]=_0x499f31);}['onColorTableChange'](){this[_0x8cf62a(-0x9b,-0x2a)]['destroy']();function _0x4c04c7(_0x326e37,_0x30e5e5){return _0x5e9725(_0x326e37- -0x574,_0x30e5e5);}function _0x8cf62a(_0x5bbb85,_0x435337){return _0x52dd5f(_0x435337- -0x25c,_0x5bbb85);}this[_0x8cf62a(-0x19,-0x2a)]=this['createColorTableTexture']();}[_0x52dd5f(0x287,0x287)](_0xe3b4ff){function _0x55dfd7(_0x4da0c3,_0x1a511e){return _0x5e9725(_0x4da0c3- -0x95,_0x1a511e);}const _0xfde589=_0xe3b4ff[_0x2739bc(0x2d5,0x2b7)]&&JSON['stringify'](_0xe3b4ff[_0x2739bc(0x2d5,0x313)])!==JSON['stringify'](this['options']['colors']);this['options']=deepMerge(_0xe3b4ff,this['options']);function _0x2739bc(_0x20cf86,_0x1f3a6d){return _0x52dd5f(_0x20cf86-0x60,_0x1f3a6d);}_0xfde589&&this['onColorTableChange']();}['destroy'](){Object['values'](this[_0x518694(0x554,0x513)])[_0x518694(0x669,0x5eb)](_0xa1dc09=>{function _0x531d5f(_0x12477c,_0x26bc97){return _0x518694(_0x12477c,_0x26bc97- -0x652);}_0xa1dc09[_0x531d5f(-0xc5,-0x133)]();});function _0x412dcf(_0x2c6b0,_0x29895a){return _0x5e9725(_0x29895a- -0x348,_0x2c6b0);}function _0x518694(_0x2962a8,_0x52f28c){return _0x5e9725(_0x52f28c-0x171,_0x2962a8);}Object[_0x518694(0x5f2,0x5bc)](this[_0x518694(0x5ad,0x596)])['forEach'](_0x1fa2be=>{function _0x263400(_0x15ba15,_0x102713){return _0x518694(_0x15ba15,_0x102713- -0x75c);}_0x1fa2be[_0x263400(-0x220,-0x23d)]();}),this[_0x412dcf(-0xb,0x3d)]['destroy']();}}const {ClearCommand,Color,Pass}=mars3d__namespace['Cesium'];class WindParticleSystem{constructor(_0x4f013f,_0x5d2d71,_0x4a3301,_0x42b9c6,_0x108f68){this['context']=_0x4f013f;function _0x14ccad(_0x305bb8,_0x34ab6d){return _0x52dd5f(_0x305bb8- -0x227,_0x34ab6d);}this['options']=_0x4a3301,this['viewerParameters']=_0x42b9c6,this['computing']=new WindParticlesComputing(_0x4f013f,_0x5d2d71,_0x4a3301,_0x42b9c6,_0x108f68),this['rendering']=new WindParticlesRendering(_0x4f013f,_0x4a3301,_0x42b9c6,this['computing']),this[_0x14ccad(0x25,0x6c)]();}['getPrimitives'](){const _0x1ddd7e=[this[_0x4d0fcc(0x163,0x1b6)][_0x1fd3ef(0x383,0x3be)]['calculateSpeed'],this[_0x1fd3ef(0x35f,0x31a)]['primitives']['updatePosition'],this[_0x1fd3ef(0x371,0x31a)]['primitives'][_0x1fd3ef(0x3bf,0x38d)],this['rendering'][_0x1fd3ef(0x394,0x3be)]['segments']];function _0x4d0fcc(_0x56b612,_0x3f24ea){return _0x5e9725(_0x3f24ea- -0x1cb,_0x56b612);}function _0x1fd3ef(_0x20b82b,_0x5cf540){return _0x52dd5f(_0x5cf540-0xec,_0x20b82b);}return _0x1ddd7e;}[_0x5e9725(0x39f,0x36c)](){const _0x3ccbcb=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});function _0x4f490f(_0xbf09e,_0x21c288){return _0x5e9725(_0x21c288-0x6c,_0xbf09e);}function _0x233406(_0x2a164b,_0x1a528b){return _0x52dd5f(_0x1a528b- -0x374,_0x2a164b);}Object['keys'](this[_0x233406(-0x169,-0x132)]['framebuffers'])[_0x233406(-0x48,-0x4d)](_0xefa33e=>{function _0x33827e(_0x1ee7ae,_0x57a391){return _0x233406(_0x57a391,_0x1ee7ae-0x60);}function _0xa18502(_0x5f53fd,_0xe4fab1){return _0x233406(_0x5f53fd,_0xe4fab1-0x16f);}_0x3ccbcb[_0xa18502(0x67,0x76)]=this['rendering']['framebuffers'][_0xefa33e],_0x3ccbcb['execute'](this[_0xa18502(0xa6,0xd3)]);});}['changeOptions'](_0x346995){let _0x3aaddd=![];_0x346995['particlesTextureSize']&&this[_0x1af975(0x3d8,0x3fb)]['particlesTextureSize']!==_0x346995['particlesTextureSize']&&(_0x3aaddd=!![]);function _0x1af975(_0x1f8c0f,_0x492526){return _0x52dd5f(_0x492526-0x10c,_0x1f8c0f);}const _0x42f74c=deepMerge(_0x346995,this[_0x1af975(0x473,0x3fb)]);if(_0x42f74c[_0x1af975(0x376,0x3b1)]<0x1)throw new Error(_0x18adc3(0x487,0x418));function _0x18adc3(_0x28bfd7,_0x48925b){return _0x52dd5f(_0x48925b-0x188,_0x28bfd7);}this[_0x1af975(0x408,0x3fb)]=_0x42f74c,this['rendering']['updateOptions'](_0x346995),this[_0x1af975(0x36d,0x33a)]['updateOptions'](_0x346995),_0x3aaddd&&(this['computing']['destroyParticlesTextures'](),this['computing'][_0x1af975(0x366,0x3ea)](),this[_0x1af975(0x2d4,0x34e)]['onParticlesTextureSizeChange']());}['applyViewerParameters'](_0x196c32){this['viewerParameters']=_0x196c32;function _0x1ecbdb(_0x4b60a7,_0x10f898){return _0x52dd5f(_0x10f898- -0x45a,_0x4b60a7);}function _0x2a1ecf(_0x230247,_0x137ea7){return _0x5e9725(_0x230247- -0x4a1,_0x137ea7);}this[_0x2a1ecf(-0x120,-0x190)][_0x1ecbdb(-0x23d,-0x1fa)]=_0x196c32,this['rendering']['viewerParameters']=_0x196c32;}['destroy'](){this['computing']['destroy']();function _0x2f230e(_0xa141e6,_0x2c5d2b){return _0x52dd5f(_0x2c5d2b-0x274,_0xa141e6);}this[_0x2f230e(0x4b5,0x4b6)]['destroy']();}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x5e9725(0x39d,0x391)][_0x5e9725(0x3b2,0x343)],_0x28b9aa={};_0x28b9aa[_0x52dd5f(0x28c,0x275)]=0x1,_0x28b9aa['max']=0x2;function _0x5e9725(_0x5bad40,_0x415fd9){return _0x270b(_0x5bad40-0x271,_0x415fd9);}const _0x28220c={};_0x28220c[_0x5e9725(0x3df,0x440)]=0x14,_0x28220c['max']=0x64;const _0x171521={};_0x171521['particlesTextureSize']=0x64,_0x171521[_0x5e9725(0x407,0x469)]=0x0,_0x171521[_0x5e9725(0x3e0,0x373)]=_0x28b9aa,_0x171521['lineLength']=_0x28220c,_0x171521['speedFactor']=0x1,_0x171521['dropRate']=0.003,_0x171521['dropRateBump']=0.001,_0x171521[_0x5e9725(0x3c8,0x3a9)]=['rgb(206,255,255)'],_0x171521['flipY']=![],_0x171521[_0x52dd5f(0x31a,0x34a)]=!![];const DEF_OPTIONS=_0x171521;class WindLayer extends BaseLayer$1{constructor(_0x32afe1={}){_0x32afe1={...DEF_OPTIONS,..._0x32afe1},super(_0x32afe1),this['_setOptionsHook'](_0x32afe1,_0x32afe1);}get['layer'](){return this['primitives'];}get['data'](){function _0x9eadd5(_0x14515f,_0x3db980){return _0x52dd5f(_0x3db980-0x166,_0x14515f);}function _0x8f0d2a(_0x49a1db,_0x20304e){return _0x5e9725(_0x49a1db- -0x4,_0x20304e);}return this[_0x9eadd5(0x3e1,0x455)][_0x8f0d2a(0x38d,0x3ff)];}set[_0x5e9725(0x391,0x37b)](_0x365000){function _0x22f03b(_0x3bad98,_0x1327f4){return _0x5e9725(_0x1327f4- -0xdb,_0x3bad98);}this[_0x22f03b(0x32e,0x367)][_0x22f03b(0x294,0x2b6)]=_0x365000;function _0x3f4bf4(_0x3b607b,_0x202928){return _0x5e9725(_0x202928- -0x47d,_0x3b607b);}this['setData'](_0x365000);}get['colors'](){return this['options']['colors'];}set['colors'](_0x1c801e){this['options']['colors']=_0x1c801e;const _0x25096e={};function _0x4485f1(_0x30a804,_0x39c872){return _0x5e9725(_0x30a804-0x5f,_0x39c872);}_0x25096e['colors']=_0x1c801e;function _0x2c178d(_0x451033,_0x421281){return _0x52dd5f(_0x451033-0x210,_0x421281);}this[_0x4485f1(0x425,0x3c8)](this[_0x2c178d(0x4ff,0x56e)],_0x25096e);}['_showHook'](_0x38be55){function _0x4e6712(_0x3b6181,_0x669135){return _0x52dd5f(_0x3b6181-0x3,_0x669135);}_0x38be55?this['_addedHook']():this[_0x4e6712(0x29a,0x27d)]();}['_mountedHook'](){}[_0x52dd5f(0x2c8,0x2df)](){this[_0x5d04da(-0x12f,-0x11d)]=this['_map']['scene'],this['camera']=this['_map']['camera'];function _0x5d04da(_0x184ab7,_0x381789){return _0x5e9725(_0x184ab7- -0x503,_0x381789);}this['options']['data']&&this[_0x3ccd46(-0x117,-0x193)](this['options'][_0x5d04da(-0x172,-0x1e4)]);if(!this[_0x3ccd46(-0x1bc,-0x179)]||!this['show'])return;this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](-0xb4,0xb4),'latRange':new Cesium$1[(_0x5d04da(-0x8f,-0x44))](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this[_0x5d04da(-0x12f,-0x13c)][_0x3ccd46(-0x13d,-0x167)]},this['updateViewerParameters'](),this['particleSystem']=new WindParticleSystem(this[_0x3ccd46(-0x1d7,-0x165)]['context'],this['windData'],this['options'],this['viewerParameters'],this['scene']),this['primitives']=this['particleSystem'][_0x5d04da(-0x83,-0xa7)]();function _0x3ccd46(_0x533640,_0x14d249){return _0x52dd5f(_0x14d249- -0x3e6,_0x533640);}this['primitives'][_0x5d04da(-0x89,-0x7b)](_0x66ee0a=>{function _0x10d18e(_0x2e2e8e,_0x22fd71){return _0x3ccd46(_0x2e2e8e,_0x22fd71-0x5e7);}this[_0x10d18e(0x4fa,0x482)]['primitives']['add'](_0x66ee0a);}),this['camera'][_0x5d04da(-0x12b,-0xa8)]=0.01,this['camera']['changed']['addEventListener'](this['updateViewerParameters'][_0x3ccd46(-0x176,-0xf2)](this)),this['scene'][_0x5d04da(-0x12d,-0x1a4)]['addEventListener'](this[_0x3ccd46(-0x10f,-0x154)][_0x3ccd46(-0x8a,-0xf2)](this)),window[_0x3ccd46(-0x109,-0xe2)]('resize',this['updateViewerParameters']['bind'](this));}['_removedHook'](){this['camera']['changed'][_0x889a4(0x269,0x2e0)](this[_0xb1ead(0x2c3,0x26b)]['bind'](this)),this[_0x889a4(0x2ce,0x2d3)]['morphComplete']['removeEventListener'](this[_0xb1ead(0x2c3,0x28c)][_0xb1ead(0x325,0x352)](this)),window['removeEventListener']('resize',this['updateViewerParameters'][_0xb1ead(0x325,0x31c)](this));function _0x889a4(_0x2484f1,_0xeefa27){return _0x5e9725(_0xeefa27- -0x101,_0x2484f1);}function _0xb1ead(_0x550917,_0x3f5b70){return _0x5e9725(_0x550917- -0x122,_0x3f5b70);}this['primitives']&&(this[_0xb1ead(0x303,0x2e9)]['forEach'](_0x118621=>{this['scene']['primitives']['remove'](_0x118621);}),delete this['primitives']),this[_0x889a4(0x246,0x2c3)]&&(this['particleSystem']['destroy'](),delete this[_0xb1ead(0x2a2,0x2c4)]);}['setData'](_0x591729,_0x99010a){function _0x4a1193(_0x1051d7,_0x4c4ddd){return _0x5e9725(_0x4c4ddd- -0x255,_0x1051d7);}this['windData']=this['processWindData'](_0x591729);if(_0x99010a){this['_removedHook'](),this[_0x4a1193(0x1e0,0x1c6)]();return;}function _0x43e3f7(_0x5e1c22,_0x2b0b7f){return _0x5e9725(_0x2b0b7f- -0x46b,_0x5e1c22);}this['particleSystem']?(this['particleSystem'][_0x43e3f7(-0x6a,-0xea)]['updateWindData'](this[_0x4a1193(0x141,0x16b)]),this[_0x43e3f7(-0xe9,-0x97)]['requestRender']()):this[_0x43e3f7(-0x4a,-0x50)]();}['_setOptionsHook'](_0x5d52ba,_0x5a1076){function _0x3e5da8(_0x2e4267,_0x53e6bd){return _0x5e9725(_0x2e4267- -0x16c,_0x53e6bd);}function _0x286169(_0xa0335a,_0x3e1eab){return _0x5e9725(_0xa0335a- -0x64e,_0x3e1eab);}this[_0x286169(-0x28a,-0x28a)]&&(this['particleSystem'][_0x3e5da8(0x2ec,0x359)](_0x5a1076),this['scene'][_0x286169(-0x24f,-0x262)]());}[_0x5e9725(0x3b0,0x407)](_0x415621){function _0x2ab71c(_0xa85174,_0x24b101){return _0x52dd5f(_0xa85174- -0x34d,_0x24b101);}var _0x2ad9c2,_0x50937a;const _0x2d9808={..._0x415621},_0x5acd50=_0x2d9808;!_0x5acd50['height']&&_0x5acd50['rows']&&(_0x5acd50['height']=_0x5acd50['rows']);function _0x3bd1a3(_0x142590,_0x3becaf){return _0x52dd5f(_0x3becaf-0x101,_0x142590);}!_0x5acd50['width']&&_0x5acd50['cols']&&(_0x5acd50['width']=_0x5acd50['cols']);!_0x5acd50['bounds']&&(_0x5acd50['bounds']={'west':_0x5acd50[_0x2ab71c(-0xdb,-0x95)],'south':_0x5acd50['ymin'],'east':_0x5acd50['xmax'],'north':_0x5acd50[_0x3bd1a3(0x3be,0x3b9)]});if(!_0x5acd50['u']){const _0x477bab={};_0x477bab['array']=_0x415621['udata'],_0x477bab[_0x2ab71c(-0xc1,-0x134)]=_0x415621['umin'],_0x477bab[_0x2ab71c(-0x25,-0x56)]=_0x415621['umax'],_0x5acd50['u']=_0x477bab;}if(!_0x5acd50['v']){const _0x554cac={};_0x554cac[_0x2ab71c(-0x98,-0xe8)]=_0x415621['vdata'],_0x554cac[_0x2ab71c(-0xc1,-0xce)]=_0x415621['vmin'],_0x554cac['max']=_0x415621[_0x2ab71c(-0x6e,-0xb0)],_0x5acd50['v']=_0x554cac;}if(((_0x2ad9c2=_0x5acd50['speed'])===null||_0x2ad9c2===void 0x0?void 0x0:_0x2ad9c2[_0x2ab71c(-0xc1,-0x68)])===undefined||((_0x50937a=_0x5acd50['speed'])===null||_0x50937a===void 0x0?void 0x0:_0x50937a[_0x2ab71c(-0x25,0x28)])===undefined||_0x5acd50[_0x2ab71c(-0xf7,-0xf7)]['array']===undefined){const _0x47f550={'array':new Float32Array(_0x5acd50['u']['array']['length']),'min':Number[_0x2ab71c(-0xd5,-0xf3)],'max':Number['MIN_VALUE']};for(let _0x2632b2=0x0;_0x2632b2<_0x5acd50['u'][_0x2ab71c(-0x98,-0xfe)]['length'];_0x2632b2++){_0x47f550['array'][_0x2632b2]=Math['sqrt'](_0x5acd50['u'][_0x3bd1a3(0x339,0x3b6)][_0x2632b2]*_0x5acd50['u']['array'][_0x2632b2]+_0x5acd50['v'][_0x3bd1a3(0x423,0x3b6)][_0x2632b2]*_0x5acd50['v']['array'][_0x2632b2]),_0x47f550[_0x3bd1a3(0x3b1,0x3b6)][_0x2632b2]!==0x0&&(_0x47f550[_0x2ab71c(-0xc1,-0x12a)]=Math['min'](_0x47f550['min'],_0x47f550['array'][_0x2632b2]),_0x47f550[_0x3bd1a3(0x434,0x429)]=Math['max'](_0x47f550[_0x3bd1a3(0x475,0x429)],_0x47f550['array'][_0x2632b2]));}_0x5acd50[_0x2ab71c(-0xf7,-0x154)]=_0x47f550;}return _0x5acd50;}[_0x52dd5f(0x292,0x270)](){var _0x5355e9;const _0x383128=this[_0x420a91(0x183,0x12a)];if(!_0x383128)return;const _0xa48bc2=_0x383128['canvas'],_0x35ee8a={};_0x35ee8a['x']=0x0,_0x35ee8a['y']=0x0;const _0x294a0a={};_0x294a0a['x']=0x0;function _0x53f909(_0x4da036,_0x2faf09){return _0x5e9725(_0x2faf09-0x113,_0x4da036);}_0x294a0a['y']=_0xa48bc2['clientHeight'];const _0x26f3eb={};_0x26f3eb['x']=_0xa48bc2[_0x420a91(0x13f,0x15c)],_0x26f3eb['y']=0x0;const _0x29cffc={};_0x29cffc['x']=_0xa48bc2[_0x420a91(0x17a,0x15c)],_0x29cffc['y']=_0xa48bc2[_0x53f909(0x485,0x4d1)];function _0x420a91(_0x29f00d,_0xf53e4b){return _0x5e9725(_0xf53e4b- -0x2aa,_0x29f00d);}const _0x51dd3e=[_0x35ee8a,_0x294a0a,_0x26f3eb,_0x29cffc];let _0x11cdfa=0xb4,_0x2f993d=-0xb4,_0x434605=0x5a,_0x5e2879=-0x5a,_0x30361c=![];for(const _0xf3b721 of _0x51dd3e){const _0x320d67=_0x383128['camera']['pickEllipsoid'](new Cesium$1['Cartesian2'](_0xf3b721['x'],_0xf3b721['y']),_0x383128['globe'][_0x420a91(0x215,0x1c5)]);if(!_0x320d67){_0x30361c=!![];break;}const _0x48f914=_0x383128['globe']['ellipsoid']['cartesianToCartographic'](_0x320d67),_0x2f0c69=Cesium$1[_0x420a91(0x16f,0x17f)]['toDegrees'](_0x48f914['longitude']),_0xad534b=Cesium$1['Math']['toDegrees'](_0x48f914['latitude']);_0x11cdfa=Math[_0x53f909(0x4a7,0x4f2)](_0x11cdfa,_0x2f0c69),_0x2f993d=Math['max'](_0x2f993d,_0x2f0c69),_0x434605=Math[_0x53f909(0x55c,0x4f2)](_0x434605,_0xad534b),_0x5e2879=Math['max'](_0x5e2879,_0xad534b);}if(!_0x30361c){const _0x5eb976=new Cesium$1['Cartesian2'](Math['max'](this[_0x420a91(0x184,0x116)][_0x420a91(0x184,0x1d5)][_0x53f909(0x4e9,0x52d)],_0x11cdfa),Math[_0x53f909(0x490,0x4f2)](this['windData'][_0x420a91(0x188,0x1d5)]['east'],_0x2f993d)),_0x3fda32=new Cesium$1['Cartesian2'](Math[_0x53f909(0x572,0x58e)](this['windData'][_0x53f909(0x56b,0x592)]['south'],_0x434605),Math[_0x53f909(0x50f,0x4f2)](this[_0x420a91(0x11e,0x116)]['bounds']['north'],_0x5e2879)),_0x4ffbfb=(_0x5eb976['y']-_0x5eb976['x'])*0.05,_0xea7754=(_0x3fda32['y']-_0x3fda32['x'])*0.05;_0x5eb976['x']=Math['max'](this['windData']['bounds']['west'],_0x5eb976['x']-_0x4ffbfb),_0x5eb976['y']=Math[_0x420a91(0x189,0x135)](this[_0x53f909(0x477,0x4d3)]['bounds'][_0x420a91(0x14a,0xf6)],_0x5eb976['y']+_0x4ffbfb),_0x3fda32['x']=Math['max'](this[_0x53f909(0x457,0x4d3)]['bounds'][_0x53f909(0x509,0x536)],_0x3fda32['x']-_0xea7754),_0x3fda32['y']=Math[_0x420a91(0x1af,0x135)](this['windData']['bounds']['north'],_0x3fda32['y']+_0xea7754),this['viewerParameters']['lonRange']=_0x5eb976,this[_0x420a91(0xc1,0x109)][_0x53f909(0x443,0x4a9)]=_0x3fda32;const _0x116c0a=this['windData']['bounds']['east']-this['windData'][_0x420a91(0x1da,0x1d5)][_0x53f909(0x518,0x52d)],_0x48ad4f=this[_0x53f909(0x4a9,0x4d3)][_0x420a91(0x181,0x1d5)]['north']-this['windData']['bounds'][_0x420a91(0x187,0x179)],_0x4af120=(_0x5eb976['y']-_0x5eb976['x'])/_0x116c0a,_0x14cbd6=(_0x3fda32['y']-_0x3fda32['x'])/_0x48ad4f,_0x5619e6=Math['min'](_0x4af120,_0x14cbd6),_0x4a3c5a=0x3e8*_0x5619e6;_0x4a3c5a>0x0&&(this[_0x420a91(0xbb,0x109)]['pixelSize']=Math[_0x53f909(0x53f,0x58e)](0x0,Math[_0x420a91(0xbe,0x135)](0x3e8,_0x4a3c5a)));}this['viewerParameters']['sceneMode']=this[_0x420a91(0x100,0x12a)][_0x53f909(0x4ba,0x4e5)],(_0x5355e9=this['particleSystem'])===null||_0x5355e9===void 0x0||_0x5355e9[_0x420a91(0xdd,0x12d)](this['viewerParameters']);}[_0x5e9725(0x48a,0x50a)](_0x4a6244,_0x9c2ac9){const {bounds:_0x220a75,width:_0x579c2d,height:_0x4a01ab,u:_0x283859,v:_0x19acb1,speed:_0x47072f}=this['windData'];function _0x331e09(_0x26d84d,_0x3b5fa8){return _0x52dd5f(_0x3b5fa8- -0xef,_0x26d84d);}const {flipY:_0x249925}=this['options'];if(_0x4a6244<_0x220a75[_0x5ac9d0(0x109,0x161)]||_0x4a6244>_0x220a75['east']||_0x9c2ac9<_0x220a75['south']||_0x9c2ac9>_0x220a75['north'])return null;const _0x504964=(_0x4a6244-_0x220a75['west'])/(_0x220a75['east']-_0x220a75['west'])*(_0x579c2d-0x1);let _0x33a2f9=(_0x9c2ac9-_0x220a75['south'])/(_0x220a75[_0x331e09(0x1c9,0x1ed)]-_0x220a75['south'])*(_0x4a01ab-0x1);_0x249925&&(_0x33a2f9=_0x4a01ab-0x1-_0x33a2f9);const _0x1b3d8f=Math['floor'](_0x504964),_0x31dc0b=Math[_0x5ac9d0(0x150,0xce)](_0x33a2f9),_0x1192e5=Math[_0x331e09(0x106,0x145)](_0x504964),_0x44ea42=Math['min'](_0x1192e5+0x1,_0x579c2d-0x1),_0x3af51f=Math['floor'](_0x33a2f9),_0xf4ccb2=Math['min'](_0x3af51f+0x1,_0x4a01ab-0x1),_0x4959f4=_0x504964-_0x1192e5,_0x52650b=_0x33a2f9-_0x3af51f,_0x181ceb=_0x31dc0b*_0x579c2d+_0x1b3d8f,_0x40386d=_0x3af51f*_0x579c2d+_0x1192e5,_0x12436b=_0x3af51f*_0x579c2d+_0x44ea42,_0x447e60=_0xf4ccb2*_0x579c2d+_0x1192e5,_0x5caa67=_0xf4ccb2*_0x579c2d+_0x44ea42,_0x109922=_0x283859['array'][_0x40386d],_0x5ef0af=_0x283859[_0x331e09(0x1a8,0x1c6)][_0x12436b],_0xfe6820=_0x283859['array'][_0x447e60],_0x4dccf7=_0x283859['array'][_0x5caa67],_0x31a740=(0x1-_0x4959f4)*(0x1-_0x52650b)*_0x109922+_0x4959f4*(0x1-_0x52650b)*_0x5ef0af+(0x1-_0x4959f4)*_0x52650b*_0xfe6820+_0x4959f4*_0x52650b*_0x4dccf7,_0x2d9bac=_0x19acb1[_0x5ac9d0(0x1a0,0x14f)][_0x40386d];function _0x5ac9d0(_0x342f47,_0x5c57ee){return _0x52dd5f(_0x5c57ee- -0x166,_0x342f47);}const _0xb42d7=_0x19acb1['array'][_0x12436b],_0x4d4a25=_0x19acb1['array'][_0x447e60],_0x273f36=_0x19acb1['array'][_0x5caa67],_0xede8d5=(0x1-_0x4959f4)*(0x1-_0x52650b)*_0x2d9bac+_0x4959f4*(0x1-_0x52650b)*_0xb42d7+(0x1-_0x4959f4)*_0x52650b*_0x4d4a25+_0x4959f4*_0x52650b*_0x273f36,_0x17f78e=Math['sqrt'](_0x31a740*_0x31a740+_0xede8d5*_0xede8d5),_0x166b2c={};_0x166b2c['u']=_0x283859['array'][_0x181ceb],_0x166b2c['v']=_0x19acb1[_0x5ac9d0(0x13d,0x14f)][_0x181ceb],_0x166b2c[_0x331e09(0x1a6,0x167)]=_0x47072f[_0x5ac9d0(0x173,0x14f)][_0x181ceb];const _0x1199cd={};_0x1199cd['u']=_0x31a740,_0x1199cd['v']=_0xede8d5,_0x1199cd['speed']=_0x17f78e;const _0x1ae72f={};return _0x1ae72f['original']=_0x166b2c,_0x1ae72f['interpolated']=_0x1199cd,_0x1ae72f;}}mars3d__namespace['LayerUtil'][_0x52dd5f(0x2b0,0x301)]('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this[_0x31a719(-0x1ad,-0x20a)]=null;function _0x31a719(_0x189175,_0x2ae268){return _0x52dd5f(_0x189175- -0x4e3,_0x2ae268);}function _0x151688(_0x589d80,_0x16fdb8){return _0x5e9725(_0x589d80- -0x459,_0x16fdb8);}this['tlng']=null,this['tlat']=null,this[_0x31a719(-0x2ac,-0x314)]=null,this['speed']=null;}['destroy'](){for(const _0x1c51db in this){delete this[_0x1c51db];}}}class CanvasWindField{constructor(_0x4d273a){this['setOptions'](_0x4d273a);}get['speedRate'](){function _0x1c207a(_0x1f9acf,_0x34a6b9){return _0x5e9725(_0x1f9acf- -0x1f8,_0x34a6b9);}return this[_0x1c207a(0x28b,0x301)];}set[_0x52dd5f(0x303,0x2f8)](_0x31e863){function _0x3c2b4c(_0x951b65,_0x1f1146){return _0x52dd5f(_0x951b65- -0x2af,_0x1f1146);}function _0x241e09(_0x1981bd,_0xc1f5c9){return _0x52dd5f(_0x1981bd- -0x3c7,_0xc1f5c9);}this['_speedRate']=(0x64-(_0x31e863>0x63?0x63:_0x31e863))*0x64,this[_0x241e09(-0xdd,-0x8c)]=[(this[_0x241e09(-0x104,-0x167)]-this[_0x241e09(-0x155,-0xdd)])/this[_0x3c2b4c(0x81,0x17)],(this[_0x241e09(-0x10f,-0x194)]-this[_0x3c2b4c(0x36,0x22)])/this['_speedRate']];}get[_0x5e9725(0x3b8,0x42a)](){return this['_maxAge'];}set['maxAge'](_0xf316ab){this['_maxAge']=_0xf316ab;}[_0x52dd5f(0x235,0x2a5)](_0x1f11bf){this['options']=_0x1f11bf,this[_0x2bc2a2(0x417,0x48f)]=_0x1f11bf['maxAge']||0x78;function _0x2bc2a2(_0x1c5c57,_0x5e1699){return _0x52dd5f(_0x1c5c57-0x1b2,_0x5e1699);}function _0x133b7e(_0x1dfb81,_0x3b146a){return _0x5e9725(_0x3b146a- -0x17d,_0x1dfb81);}this['speedRate']=_0x1f11bf['speedRate']||0x32,this[_0x2bc2a2(0x443,0x493)]=[];const _0x5d4add=_0x1f11bf['particlesNumber']||0x1000;for(let _0x3d8428=0x0;_0x3d8428<_0x5d4add;_0x3d8428++){const _0x3bfbd0=this['_randomParticle'](new CanvasParticle());this['particles'][_0x133b7e(0x1f3,0x20e)](_0x3bfbd0);}}[_0x5e9725(0x46b,0x4eb)](_0x4c6eeb){this['rows']=_0x4c6eeb['rows'],this[_0x56f2b1(-0xff,-0x174)]=_0x4c6eeb[_0x56f2b1(-0xff,-0x170)],this[_0x56f2b1(-0x129,-0x112)]=_0x4c6eeb[_0x56f2b1(-0x129,-0x14b)],this['xmax']=_0x4c6eeb['xmax'],this[_0x336ec0(-0x148,-0x15e)]=_0x4c6eeb['ymin'];function _0x336ec0(_0x48d1e3,_0x367847){return _0x52dd5f(_0x367847- -0x443,_0x48d1e3);}this[_0x336ec0(-0x1b7,-0x18b)]=_0x4c6eeb[_0x336ec0(-0x172,-0x18b)],this['grid']=[];const _0x2268d2=_0x4c6eeb['udata'],_0x5a65b4=_0x4c6eeb['vdata'];let _0x5ddd53=![];_0x2268d2['length']===this['rows']&&_0x2268d2[0x0]['length']===this['cols']&&(_0x5ddd53=!![]);function _0x56f2b1(_0x3ee0cb,_0x5a79fe){return _0x52dd5f(_0x3ee0cb- -0x39b,_0x5a79fe);}let _0x2cb897=0x0,_0x3927a8=null,_0x3f30db=null;for(let _0x58e816=0x0;_0x58e816<this['rows'];_0x58e816++){_0x3927a8=[];for(let _0x282533=0x0;_0x282533<this['cols'];_0x282533++,_0x2cb897++){_0x5ddd53?_0x3f30db=this[_0x56f2b1(-0x16c,-0x138)](_0x2268d2[_0x58e816][_0x282533],_0x5a65b4[_0x58e816][_0x282533]):_0x3f30db=this['_calcUV'](_0x2268d2[_0x2cb897],_0x5a65b4[_0x2cb897]),_0x3927a8[_0x56f2b1(-0x163,-0x15f)](_0x3f30db);}this[_0x336ec0(-0xfa,-0x123)]['push'](_0x3927a8);}!this['options'][_0x56f2b1(-0xdd,-0x7b)]&&this[_0x56f2b1(-0x7b,-0x2d)][_0x56f2b1(-0x12b,-0xac)]();}['clear'](){delete this['rows'],delete this[_0x42a100(0x3d9,0x369)],delete this['xmin'],delete this['xmax'],delete this['ymin'];function _0x42a100(_0x54b6a1,_0x67fec4){return _0x5e9725(_0x67fec4- -0x86,_0x54b6a1);}function _0x382a36(_0x241e42,_0xebddd3){return _0x52dd5f(_0x241e42- -0x1d1,_0xebddd3);}delete this[_0x42a100(0x3a3,0x385)],delete this['grid'],delete this[_0x42a100(0x3d3,0x35e)];}[_0x5e9725(0x3ab,0x35a)](_0x847d40,_0x2a128f){const _0x2e4fc1=(_0x847d40-this[_0xfb0d11(-0x1ff,-0x276)])/(this['xmax']-this['xmin'])*(this['cols']-0x1),_0x2757b9=(this[_0xfb0d11(-0x1b9,-0x170)]-_0x2a128f)/(this[_0x402b4f(0x29,-0xa)]-this[_0xfb0d11(-0x18c,-0x144)])*(this['rows']-0x1);function _0xfb0d11(_0x254c9c,_0x154696){return _0x5e9725(_0x254c9c- -0x5c4,_0x154696);}function _0x402b4f(_0x15f790,_0xe27e13){return _0x52dd5f(_0x15f790- -0x28f,_0xe27e13);}return[_0x2e4fc1,_0x2757b9];}['getUVByXY'](_0x11fb25,_0x26a519){if(_0x11fb25<0x0||_0x11fb25>=this[_0x4327a2(0x2b5,0x2ce)]||_0x26a519>=this[_0x163820(0x267,0x236)])return[0x0,0x0,0x0];function _0x163820(_0x4b30f1,_0x89d060){return _0x52dd5f(_0x4b30f1- -0xce,_0x89d060);}const _0x5987ac=Math[_0x4327a2(0x24d,0x245)](_0x11fb25),_0x52a2f8=Math['floor'](_0x26a519);if(_0x5987ac===_0x11fb25&&_0x52a2f8===_0x26a519)return this[_0x163820(0x252,0x255)][_0x26a519][_0x11fb25];const _0x190664=_0x5987ac+0x1,_0x519c60=_0x52a2f8+0x1,_0x188f91=this['getUVByXY'](_0x5987ac,_0x52a2f8),_0x1b621f=this['getUVByXY'](_0x190664,_0x52a2f8),_0x486fb3=this[_0x4327a2(0x2ac,0x30f)](_0x5987ac,_0x519c60),_0x3b2e60=this['getUVByXY'](_0x190664,_0x519c60);function _0x4327a2(_0x19a667,_0x53b2ea){return _0x52dd5f(_0x19a667-0x19,_0x53b2ea);}let _0x3db9cf=null;try{_0x3db9cf=this['_bilinearInterpolation'](_0x11fb25-_0x5987ac,_0x26a519-_0x52a2f8,_0x188f91,_0x1b621f,_0x486fb3,_0x3b2e60);}catch(_0x2a4a58){console['log'](_0x11fb25,_0x26a519);}return _0x3db9cf;}['_bilinearInterpolation'](_0x56e5bc,_0x38799a,_0x8c4095,_0x407074,_0x1333d1,_0x33b9ce){const _0x1a16fb=0x1-_0x56e5bc,_0x269f20=0x1-_0x38799a,_0xf0bd22=_0x1a16fb*_0x269f20,_0x257a86=_0x56e5bc*_0x269f20,_0x5b3bc6=_0x1a16fb*_0x38799a,_0x1a0b15=_0x56e5bc*_0x38799a,_0x7c6d8=_0x8c4095[0x0]*_0xf0bd22+_0x407074[0x0]*_0x257a86+_0x1333d1[0x0]*_0x5b3bc6+_0x33b9ce[0x0]*_0x1a0b15;function _0x164eca(_0x47b762,_0xbae83a){return _0x52dd5f(_0xbae83a- -0x338,_0x47b762);}const _0x5df5fa=_0x8c4095[0x1]*_0xf0bd22+_0x407074[0x1]*_0x257a86+_0x1333d1[0x1]*_0x5b3bc6+_0x33b9ce[0x1]*_0x1a0b15;return this[_0x164eca(-0x99,-0x109)](_0x7c6d8,_0x5df5fa);}['_calcUV'](_0x1bebed,_0x448bc7){return[+_0x1bebed,+_0x448bc7,Math['sqrt'](_0x1bebed*_0x1bebed+_0x448bc7*_0x448bc7)];}[_0x5e9725(0x3e9,0x39c)](_0x1fa8ce,_0x4583f0){if(!this['isInExtent'](_0x1fa8ce,_0x4583f0))return null;function _0x19505d(_0x4b6565,_0x4001bb){return _0x5e9725(_0x4b6565- -0x64d,_0x4001bb);}const _0x404c94=this[_0x19505d(-0x2a2,-0x2fd)](_0x1fa8ce,_0x4583f0),_0x516b8c=this['getUVByXY'](_0x404c94[0x0],_0x404c94[0x1]);return _0x516b8c;}[_0x52dd5f(0x2e3,0x338)](_0x574925,_0x13ab97){return _0x574925>=this['xmin']&&_0x574925<=this['xmax']&&_0x13ab97>=this['ymin']&&_0x13ab97<=this['ymax']?!![]:![];}[_0x52dd5f(0x2ee,0x354)](){function _0x4e99d7(_0x3fcac5,_0x47ec4d){return _0x5e9725(_0x47ec4d- -0x541,_0x3fcac5);}const _0x45d2f9=fRandomByfloat(this[_0x7b22a0(0x405,0x3ef)],this[_0x4e99d7(-0x192,-0x12b)]),_0x5d8369=fRandomByfloat(this['ymin'],this[_0x7b22a0(0x47c,0x435)]),_0x4bce5f={};function _0x7b22a0(_0x3cd138,_0x17b5a7){return _0x5e9725(_0x17b5a7-0x2a,_0x3cd138);}return _0x4bce5f[_0x7b22a0(0x439,0x4b3)]=_0x5d8369,_0x4bce5f[_0x7b22a0(0x3dd,0x44a)]=_0x45d2f9,_0x4bce5f;}['getParticles'](){let _0x1abd1a,_0x22b648,_0x2e4b8b;function _0x2da5d8(_0x349b52,_0x39e384){return _0x5e9725(_0x349b52- -0x47e,_0x39e384);}for(let _0x1bdf23=0x0,_0x537949=this[_0x2ae846(0x13f,0x147)]['length'];_0x1bdf23<_0x537949;_0x1bdf23++){let _0x2f21cf=this[_0x2da5d8(-0x9a,-0xc3)][_0x1bdf23];_0x2f21cf['age']<=0x0&&(_0x2f21cf=this[_0x2da5d8(-0x21,0x3d)](_0x2f21cf));if(_0x2f21cf[_0x2da5d8(-0xf4,-0x101)]>0x0){const _0x479c9f=_0x2f21cf[_0x2da5d8(-0x29,-0xa9)],_0x5ed485=_0x2f21cf['tlat'];_0x2e4b8b=this['getUVByPoint'](_0x479c9f,_0x5ed485),_0x2e4b8b?(_0x1abd1a=_0x479c9f+this['_calc_speedRate'][0x0]*_0x2e4b8b[0x0],_0x22b648=_0x5ed485+this['_calc_speedRate'][0x1]*_0x2e4b8b[0x1],_0x2f21cf['lng']=_0x479c9f,_0x2f21cf['lat']=_0x5ed485,_0x2f21cf['tlng']=_0x1abd1a,_0x2f21cf[_0x2da5d8(-0xae,-0xc6)]=_0x22b648,_0x2f21cf['speed']=_0x2e4b8b[0x2],_0x2f21cf['age']--):_0x2f21cf['age']=0x0;}}function _0x2ae846(_0x15c1de,_0x1c7fac){return _0x52dd5f(_0x15c1de- -0x152,_0x1c7fac);}return this['particles'];}['_randomParticle'](_0x3c6c8a){let _0x49d5ca,_0x434a2b;for(let _0x1d05e6=0x0;_0x1d05e6<0x1e;_0x1d05e6++){_0x49d5ca=this['getRandomLatLng'](),_0x434a2b=this['getUVByPoint'](_0x49d5ca[_0x51316f(-0x115,-0x162)],_0x49d5ca['lat']);if(_0x434a2b&&_0x434a2b[0x2]>0x0)break;}if(!_0x434a2b)return _0x3c6c8a;function _0x1b5bd6(_0x19f5c6,_0x111d8a){return _0x5e9725(_0x19f5c6- -0x8,_0x111d8a);}const _0x5b911c=_0x49d5ca[_0x1b5bd6(0x418,0x48a)]+this['_calc_speedRate'][0x0]*_0x434a2b[0x0],_0x59581b=_0x49d5ca[_0x1b5bd6(0x481,0x42e)]+this['_calc_speedRate'][0x1]*_0x434a2b[0x1];_0x3c6c8a[_0x51316f(-0x11b,-0x162)]=_0x49d5ca['lng'],_0x3c6c8a['lat']=_0x49d5ca['lat'],_0x3c6c8a['tlng']=_0x5b911c;function _0x51316f(_0x31b5b7,_0x1a6c41){return _0x5e9725(_0x1a6c41- -0x582,_0x31b5b7);}return _0x3c6c8a[_0x51316f(-0x1f2,-0x1b2)]=_0x59581b,_0x3c6c8a['age']=Math[_0x51316f(-0xb4,-0x101)](0xa+Math['random']()*this['maxAge']),_0x3c6c8a['speed']=_0x434a2b[0x2],_0x3c6c8a;}[_0x52dd5f(0x25b,0x2a5)](){for(const _0xc57600 in this){delete this[_0xc57600];}}}function fRandomByfloat(_0x515a03,_0x1eeda6){function _0x2b8c15(_0x67e787,_0x312860){return _0x52dd5f(_0x312860-0x29e,_0x67e787);}return _0x515a03+Math[_0x2b8c15(0x4af,0x505)]()*(_0x1eeda6-_0x515a03);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x52dd5f(0x24a,0x215)][_0x52dd5f(0x25f,0x243)];class CanvasWindLayer extends BaseLayer{constructor(_0x11c581={}){super(_0x11c581),this['_setOptionsHook'](_0x11c581);function _0x9d0384(_0x42e1b0,_0xbe80ad){return _0x5e9725(_0xbe80ad- -0x3f6,_0x42e1b0);}function _0x5a9fd8(_0x2c7a16,_0x4c7112){return _0x52dd5f(_0x2c7a16- -0x120,_0x4c7112);}this[_0x5a9fd8(0x1ff,0x22d)]=null,_0x11c581['colors']&&_0x11c581['steps']&&(this[_0x9d0384(0x6,0x74)]=new mars3d__namespace['ColorRamp'](_0x11c581));}[_0x5e9725(0x3c6,0x407)](_0x4faeef,_0x29b4d6){this[_0x289e2d(0x123,0xdb)]=0x3e8/(_0x4faeef[_0x4a8587(0x206,0x27c)]||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x4faeef['color']||'#ffffff',this[_0x4a8587(0x2ef,0x2c3)]=_0x4faeef['lineWidth']||0x1,this['fixedHeight']=_0x4faeef['fixedHeight']??0x0;function _0x289e2d(_0x16fc58,_0x292f86){return _0x52dd5f(_0x16fc58- -0x10e,_0x292f86);}this['flipY']=_0x4faeef[_0x4a8587(0x332,0x2f4)]??![];function _0x4a8587(_0x4734e5,_0x460d13){return _0x5e9725(_0x460d13- -0x11d,_0x4734e5);}this['windField']&&this[_0x4a8587(0x347,0x322)]['setOptions'](_0x4faeef);}get[_0x52dd5f(0x24a,0x1e2)](){function _0x2a10c3(_0x1e82c6,_0x31e0d0){return _0x52dd5f(_0x31e0d0- -0x1af,_0x1e82c6);}return this[_0x2a10c3(0x1a2,0x170)];}get['canvasWidth'](){return this['_map']['scene']['canvas']['clientWidth'];}get['canvasHeight'](){function _0x4d2fce(_0x51e0ce,_0x11064c){return _0x52dd5f(_0x51e0ce- -0x350,_0x11064c);}return this['_map'][_0x4d2fce(-0xcf,-0xba)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x5dc2b6){this['_pointerEvents']=_0x5dc2b6;function _0x5f10fb(_0x5664b4,_0x147c6a){return _0x5e9725(_0x5664b4- -0x2c5,_0x147c6a);}function _0x28dd34(_0x425281,_0x1ffdd5){return _0x52dd5f(_0x1ffdd5-0x1c6,_0x425281);}if(!this[_0x28dd34(0x492,0x4e5)])return;_0x5dc2b6?this[_0x5f10fb(0x1ad,0x232)]['style'][_0x28dd34(0x47c,0x49d)]=_0x28dd34(0x4b2,0x46c):this['canvas'][_0x28dd34(0x4b9,0x4e4)]['pointer-events']='none';}get[_0x52dd5f(0x312,0x2e7)](){function _0x37742c(_0x339736,_0x5c7c79){return _0x5e9725(_0x5c7c79- -0x57c,_0x339736);}return this['options'][_0x37742c(-0x97,-0x117)];}set['particlesNumber'](_0x417f39){this[_0x48e7ae(0x338,0x35b)]['particlesNumber']=_0x417f39;function _0x48e7ae(_0x3e15a9,_0x4b1895){return _0x52dd5f(_0x4b1895-0x6c,_0x3e15a9);}clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{function _0x7cb984(_0x53fdad,_0x44afd3){return _0x48e7ae(_0x44afd3,_0x53fdad- -0x211);}this[_0x7cb984(0x12f,0x144)]();},0x1f4);}get['speedRate'](){function _0x25d863(_0x462f1b,_0x15fc3c){return _0x5e9725(_0x462f1b- -0x514,_0x15fc3c);}return this[_0x25d863(-0xd2,-0x59)]['speedRate'];}set['speedRate'](_0x58fb5d){function _0x57f60f(_0x1f3d9f,_0x521c95){return _0x5e9725(_0x521c95- -0x657,_0x1f3d9f);}this[_0x57f60f(-0x201,-0x215)]['speedRate']=_0x58fb5d;function _0x1abdc6(_0x25e11e,_0x46770c){return _0x52dd5f(_0x25e11e- -0x9e,_0x46770c);}this['windField']&&(this[_0x1abdc6(0x24e,0x21c)][_0x57f60f(-0x278,-0x201)]=_0x58fb5d);}get['maxAge'](){function _0xd7b9f(_0x10586f,_0x4e5c1a){return _0x5e9725(_0x10586f- -0x243,_0x4e5c1a);}function _0x1c24ce(_0x1b7e0a,_0x5ac557){return _0x5e9725(_0x5ac557-0x2a,_0x1b7e0a);}return this[_0x1c24ce(0x480,0x46c)][_0xd7b9f(0x175,0x19c)];}set[_0x5e9725(0x3b8,0x3f2)](_0x2e2105){function _0x5c66a0(_0x2a400e,_0x503ce7){return _0x52dd5f(_0x2a400e- -0x126,_0x503ce7);}this[_0x5c66a0(0x1c9,0x244)]['maxAge']=_0x2e2105;function _0x127af6(_0x436a2a,_0x27b5bd){return _0x52dd5f(_0x436a2a-0xfb,_0x27b5bd);}this[_0x5c66a0(0x1c6,0x17b)]&&(this[_0x127af6(0x3e7,0x45c)]['maxAge']=_0x2e2105);}get[_0x52dd5f(0x23e,0x247)](){function _0xfb9b94(_0x4136e2,_0x55285e){return _0x52dd5f(_0x55285e-0xc3,_0x4136e2);}return this[_0xfb9b94(0x34a,0x330)];}set[_0x5e9725(0x391,0x39c)](_0x40258c){function _0x5b6538(_0x2d7687,_0x1b7d8c){return _0x52dd5f(_0x1b7d8c- -0x302,_0x2d7687);}this[_0x5b6538(-0xf8,-0xaf)](_0x40258c);}get['rectangle'](){let _0x11d5b1=this['windData']['xmin'],_0x89f975=this[_0x25e0b5(0xee,0x170)][_0x1356e9(0x182,0x1e8)],_0x16bb93=this['windData'][_0x1356e9(0x1e5,0x20a)];function _0x25e0b5(_0x57fa0f,_0x4bd616){return _0x52dd5f(_0x4bd616- -0xfd,_0x57fa0f);}let _0x2a77d7=this['windData'][_0x25e0b5(0x153,0x1bb)];_0x89f975>=0x167&&_0x11d5b1===0x0&&(_0x11d5b1=-0xb4,_0x89f975=0xb4);_0x11d5b1=Math['max'](_0x11d5b1,-0xb4),_0x89f975=Math[_0x1356e9(0x22f,0x1b1)](_0x89f975,0xb4),_0x16bb93=Math[_0x1356e9(0x1de,0x24d)](_0x16bb93,-0x5a);function _0x1356e9(_0x589fc8,_0x54e46b){return _0x52dd5f(_0x54e46b- -0xdb,_0x589fc8);}return _0x2a77d7=Math['min'](_0x2a77d7,0x5a),Cesium['Rectangle'][_0x1356e9(0x175,0x1db)](_0x11d5b1,_0x16bb93,_0x89f975,_0x2a77d7);}['_showHook'](_0x15ba0d){function _0x580c00(_0x418172,_0x220733){return _0x5e9725(_0x220733- -0x16f,_0x418172);}function _0x4b63ed(_0x42931f,_0x19c74e){return _0x52dd5f(_0x19c74e-0x7d,_0x42931f);}_0x15ba0d?this[_0x580c00(0x2d5,0x2ac)]():(this[_0x580c00(0x27d,0x251)]&&(this['options']['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){function _0x37a5e4(_0x133fe7,_0x1c890c){return _0x52dd5f(_0x1c890c- -0x7a,_0x133fe7);}this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this[_0x37a5e4(0x2bd,0x275)]);}['_addedHook'](){this['canvas']=this['_createCanvas']();const _0xe2501f={};_0xe2501f[_0x253505(0x28c,0x258)]=!![],this['canvasContext']=this[_0x29d937(0x24b,0x2a7)]['getContext']('2d',_0xe2501f),this[_0x253505(0x2b1,0x2d5)]();function _0x253505(_0x15b126,_0x47609c){return _0x5e9725(_0x47609c- -0x1b2,_0x15b126);}function _0x29d937(_0x409d9f,_0x5b9a34){return _0x5e9725(_0x409d9f- -0x227,_0x5b9a34);}this[_0x253505(0x20f,0x290)]['data']&&this[_0x253505(0x243,0x1f4)](this[_0x253505(0x281,0x290)]['data']);}['_removedHook'](){function _0x4b134b(_0x23b605,_0xa7cfe6){return _0x52dd5f(_0x23b605-0x20a,_0xa7cfe6);}function _0x3216a0(_0x508f39,_0x176040){return _0x52dd5f(_0x508f39- -0xb8,_0x176040);}this[_0x3216a0(0x209,0x20f)](),this[_0x4b134b(0x480,0x475)](),this['canvas']&&(this[_0x3216a0(0x254,0x219)]['container']['removeChild'](this[_0x3216a0(0x267,0x24f)]),delete this[_0x3216a0(0x267,0x235)]);}['_createCanvas'](){const _0x3b8193=mars3d__namespace['DomUtil'][_0x365a11(-0x20d,-0x1eb)](_0x365a11(-0x1db,-0x223),'mars3d-canvasWind',this['_map'][_0x365a11(-0x25d,-0x1e2)]);_0x3b8193['style'][_0x12917d(0x481,0x420)]='absolute',_0x3b8193[_0x12917d(0x40e,0x481)][_0x365a11(-0x272,-0x260)]=_0x12917d(0x3c7,0x3e1),_0x3b8193[_0x12917d(0x40e,0x481)]['left']='0px',_0x3b8193['style']['width']=this[_0x365a11(-0x1ee,-0x25d)]['scene'][_0x12917d(0x484,0x482)][_0x12917d(0x43f,0x416)]+'px',_0x3b8193[_0x12917d(0x493,0x481)]['height']=this['_map']['scene']['canvas']['clientHeight']+'px';function _0x365a11(_0x353687,_0x1dadbd){return _0x5e9725(_0x353687- -0x64d,_0x1dadbd);}_0x3b8193['style']['pointerEvents']=this[_0x365a11(-0x24d,-0x1e2)]?'auto':_0x12917d(0x46c,0x46a),_0x3b8193['style']['zIndex']=this['options'][_0x12917d(0x48e,0x414)]??0x9,_0x3b8193['width']=this[_0x12917d(0x441,0x46f)]['scene'][_0x12917d(0x4b1,0x482)]['clientWidth'];function _0x12917d(_0x2ea2da,_0x319064){return _0x52dd5f(_0x319064-0x163,_0x2ea2da);}return _0x3b8193[_0x365a11(-0x2aa,-0x28c)]=this['_map']['scene'][_0x12917d(0x484,0x482)]['clientHeight'],_0x3b8193;}[_0x52dd5f(0x26e,0x29d)](){function _0xcbe7f9(_0x43812f,_0x44697b){return _0x5e9725(_0x44697b- -0x307,_0x43812f);}function _0x20e5b3(_0x297f57,_0x277b3e){return _0x5e9725(_0x277b3e-0xaa,_0x297f57);}this['canvas']&&(this['canvas']['style']['width']=this['_map'][_0xcbe7f9(0xfa,0xcd)][_0x20e5b3(0x582,0x51c)][_0x20e5b3(0x518,0x4b0)]+'px',this['canvas']['style'][_0xcbe7f9(0x73,0x9c)]=this[_0xcbe7f9(0x1d1,0x158)]['scene']['canvas'][_0xcbe7f9(0x134,0xb7)]+'px',this['canvas'][_0xcbe7f9(0xf4,0x9e)]=this['_map'][_0xcbe7f9(0xa0,0xcd)]['canvas'][_0x20e5b3(0x45b,0x4b0)],this['canvas']['height']=this['_map']['scene']['canvas']['clientHeight']);}[_0x5e9725(0x487,0x4dd)](){const _0x377640=this;function _0x46e0f9(_0x143315,_0x3146ac){return _0x5e9725(_0x3146ac-0x10f,_0x143315);}function _0x4ec994(_0x554458,_0x27166c){return _0x52dd5f(_0x27166c- -0x3d1,_0x554458);}let _0x1a1ae1=Date['now']();(function _0x3a0623(){function _0x28397f(_0x2bd0d4,_0x7d797d){return _0x270b(_0x7d797d-0x207,_0x2bd0d4);}if(_0x377640[_0x28397f(0x3fd,0x3ca)])return;function _0x42c77b(_0x5b25f9,_0x4110a1){return _0x270b(_0x4110a1-0x363,_0x5b25f9);}_0x377640[_0x28397f(0x373,0x3d0)]=window['requestAnimationFrame'](_0x3a0623);if(_0x377640[_0x28397f(0x42a,0x3f7)]&&_0x377640['windField']){const _0x570012=Date['now'](),_0x34d207=_0x570012-_0x1a1ae1;_0x34d207>_0x377640[_0x28397f(0x334,0x31a)]&&(_0x1a1ae1=_0x570012-_0x34d207%_0x377640[_0x42c77b(0x4f4,0x476)],_0x377640[_0x28397f(0x373,0x3a4)]());}}(),window[_0x46e0f9(0x522,0x566)]('resize',this['resize']['bind'](this),![]),this[_0x4ec994(-0x1aa,-0x127)]=![],this[_0x46e0f9(0x538,0x542)]=![],this[_0x4ec994(-0xa9,-0xe2)]['mouseHidden']&&(this[_0x46e0f9(0x566,0x56e)]['on'](mars3d__namespace['EventType']['wheel'],this[_0x4ec994(-0x12a,-0xf8)],this),this['_map']['on'](mars3d__namespace[_0x4ec994(-0xca,-0x118)]['mouseDown'],this[_0x46e0f9(0x565,0x504)],this),this['_map']['on'](mars3d__namespace['EventType'][_0x4ec994(-0xf6,-0x10f)],this[_0x4ec994(-0x11e,-0x100)],this)));}['unbindEvent'](){function _0x876515(_0x8b2b53,_0x1b3ee9){return _0x52dd5f(_0x8b2b53- -0x403,_0x1b3ee9);}window['cancelAnimationFrame'](this['_animateFrame']),delete this['_animateFrame'];function _0x14aadd(_0x2d8f5a,_0x1440cf){return _0x5e9725(_0x1440cf-0xe1,_0x2d8f5a);}window[_0x14aadd(0x4ed,0x4c2)](_0x14aadd(0x4a9,0x4a2),this['resize']),this[_0x14aadd(0x4bb,0x523)][_0x876515(-0x16b,-0x1a5)]&&(this[_0x876515(-0xf7,-0x156)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace[_0x876515(-0x14a,-0x127)]['mouseUp'],this[_0x876515(-0x132,-0xce)],this),this[_0x14aadd(0x522,0x540)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0xb4a907){clearTimeout(this[_0x262925(0x427,0x41b)]);if(!this['show']||!this['canvas'])return;this['canvas']['style']['visibility']='hidden';function _0x262925(_0x1aee40,_0x4843ea){return _0x52dd5f(_0x4843ea-0x18c,_0x1aee40);}function _0x405224(_0x3ad222,_0x5d33d6){return _0x52dd5f(_0x5d33d6- -0x20d,_0x3ad222);}this[_0x405224(0xd,0x82)]=setTimeout(()=>{function _0x2713f8(_0x728562,_0x43684e){return _0x262925(_0x43684e,_0x728562- -0x1c2);}function _0x9486e(_0x183612,_0x1cedd2){return _0x405224(_0x183612,_0x1cedd2- -0x1ae);}if(!this['show'])return;this[_0x9486e(-0x14c,-0xe7)](),this[_0x2713f8(0x2e9,0x31c)]['style']['visibility']=_0x9486e(-0x10f,-0x112);},0xc8);}['_onMouseDownEvent'](_0x498b7b){this[_0x33ec12(0x421,0x3d4)]=!![],this[_0x33ec12(0x3b3,0x436)]['off'](mars3d__namespace[_0x33ec12(0x38c,0x3e3)]['mouseMove'],this['_onMouseMoveEvent'],this);function _0x33ec12(_0xf295e6,_0x33b09b){return _0x5e9725(_0x33b09b- -0x29,_0xf295e6);}function _0x37c04b(_0x40cb45,_0x3356b6){return _0x5e9725(_0x40cb45- -0x33a,_0x3356b6);}this['_map']['on'](mars3d__namespace[_0x33ec12(0x425,0x3e3)]['mouseMove'],this['_onMouseMoveEvent'],this);}[_0x5e9725(0x3b6,0x3d9)](_0x5d0484){if(!this[_0x1502c4(0x27c,0x2fc)]||!this[_0x4bc882(0x409,0x45d)])return;function _0x4bc882(_0x4ff450,_0x22f2b3){return _0x52dd5f(_0x22f2b3-0x13e,_0x4ff450);}function _0x1502c4(_0x1932de,_0x3dca26){return _0x52dd5f(_0x3dca26- -0x12,_0x1932de);}this[_0x4bc882(0x450,0x3e8)]&&(this['canvas']['style']['visibility']='hidden',this[_0x1502c4(0x2db,0x2ce)]=!![]);}[_0x5e9725(0x424,0x407)](_0x26912e){function _0x182704(_0x15fa6e,_0x10e0e8){return _0x52dd5f(_0x10e0e8-0x149,_0x15fa6e);}if(!this['show']||!this['canvas'])return;this[_0x182704(0x488,0x455)]['off'](mars3d__namespace['EventType'][_0x50cfa4(0x310,0x2e4)],this[_0x182704(0x394,0x3ac)],this);this['mouse_down']&&this[_0x50cfa4(0x35e,0x2f6)]&&this['redraw']();this[_0x50cfa4(0x34e,0x335)]['style'][_0x182704(0x430,0x3b8)]=_0x182704(0x46c,0x3f2);function _0x50cfa4(_0x9931bc,_0x1c647e){return _0x5e9725(_0x1c647e- -0x13d,_0x9931bc);}this[_0x50cfa4(0x334,0x2c0)]=![],this['mouse_move']=![];}['setData'](_0x549ecb){this['clear'](),this[_0x41e5af(0x2a0,0x319)]=_0x549ecb,this[_0x41e5af(0x31f,0x2b2)]['setDate'](_0x549ecb);function _0xb206e0(_0x522c33,_0xdaf32){return _0x52dd5f(_0x522c33- -0x21f,_0xdaf32);}function _0x41e5af(_0x57669f,_0x2517c6){return _0x5e9725(_0x57669f- -0x120,_0x2517c6);}this[_0x41e5af(0x307,0x2b3)]();}[_0x5e9725(0x427,0x440)](){function _0x54984d(_0x5e0a5f,_0x1a6d76){return _0x5e9725(_0x5e0a5f- -0x659,_0x1a6d76);}if(!this[_0x1237b6(0x20,0x74)])return;this['windField'][_0x54984d(-0x2d1,-0x2c4)](this[_0x1237b6(0x42,0x55)]);function _0x1237b6(_0x5ee6c0,_0x463086){return _0x52dd5f(_0x463086- -0x29a,_0x5ee6c0);}this['update']();}[_0x5e9725(0x40e,0x3fa)](){function _0xb98b24(_0x44f6b7,_0x1978d6){return _0x52dd5f(_0x44f6b7-0x254,_0x1978d6);}if(this['_updateIng'])return;this[_0xb98b24(0x52e,0x584)]=!![];function _0x3ed059(_0x14cd18,_0xa9012a){return _0x52dd5f(_0x14cd18- -0x69,_0xa9012a);}if(this[_0xb98b24(0x4cd,0x52f)])this['windField']['update']();else{const _0x5316f8=this[_0x3ed059(0x283,0x232)]['getParticles']();this[_0x3ed059(0x222,0x283)](_0x5316f8);}this['_updateIng']=![];}[_0x52dd5f(0x28b,0x236)](_0x8383ba){this['_canvasParticles']=_0x8383ba,this[_0x439709(0x5ae,0x596)]['globalCompositeOperation']=_0x173265(0x2a0,0x2d8);function _0x439709(_0xe8abe2,_0x49c46a){return _0x52dd5f(_0x49c46a-0x273,_0xe8abe2);}this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this[_0x173265(0x2fa,0x32d)]['globalCompositeOperation']='lighter';function _0x173265(_0xe83308,_0x1926c7){return _0x52dd5f(_0xe83308- -0x29,_0x1926c7);}this[_0x173265(0x2fa,0x2b8)][_0x439709(0x53f,0x4c8)]=0.9;const _0x496446=this['_map']['scene'][_0x439709(0x4da,0x4f2)]!==Cesium['SceneMode'][_0x439709(0x527,0x4cf)],_0x374e1d=this[_0x173265(0x30a,0x2c4)]*0.25;if(this['_colorRamp'])for(let _0x59755e=0x0,_0x26c102=_0x8383ba['length'];_0x59755e<_0x26c102;_0x59755e++){const _0x92040b=_0x8383ba[_0x59755e],_0x358b57=this['_tomap'](_0x92040b,_0x92040b['lng'],_0x92040b[_0x439709(0x5c8,0x5a9)],_0x92040b['alt']),_0x1697ee=this['_tomap'](_0x92040b,_0x92040b[_0x173265(0x2d9,0x2ab)],_0x92040b['tlat'],_0x92040b[_0x173265(0x29b,0x23a)]);if(!_0x358b57||!_0x1697ee)continue;if(_0x496446&&Math['abs'](_0x358b57[0x0]-_0x1697ee[0x0])>=_0x374e1d)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x439709(0x549,0x500)],this[_0x173265(0x2fa,0x2b0)][_0x439709(0x51b,0x564)]=this[_0x173265(0x2ee,0x2a1)]['getColor'](_0x92040b['speed']),this['canvasContext']['moveTo'](_0x358b57[0x0],_0x358b57[0x1]),this['canvasContext'][_0x439709(0x573,0x570)](_0x1697ee[0x0],_0x1697ee[0x1]),this['canvasContext'][_0x439709(0x5a6,0x58e)]();}else{this[_0x173265(0x2fa,0x379)]['beginPath'](),this['canvasContext'][_0x173265(0x264,0x1f0)]=this[_0x173265(0x264,0x294)],this[_0x173265(0x2fa,0x33a)][_0x439709(0x598,0x564)]=this['color'];for(let _0x4b9450=0x0,_0x1e036d=_0x8383ba[_0x173265(0x272,0x2e8)];_0x4b9450<_0x1e036d;_0x4b9450++){const _0x346297=_0x8383ba[_0x4b9450],_0x19e1b1=this['_tomap'](_0x346297,_0x346297['lng'],_0x346297['lat'],_0x346297[_0x173265(0x2b9,0x2c5)]),_0x1bb0d8=this['_tomap'](_0x346297,_0x346297[_0x439709(0x559,0x575)],_0x346297['tlat'],_0x346297['talt']);if(!_0x19e1b1||!_0x1bb0d8)continue;if(_0x496446&&Math['abs'](_0x19e1b1[0x0]-_0x1bb0d8[0x0])>=_0x374e1d)continue;this['canvasContext'][_0x173265(0x21f,0x28a)](_0x19e1b1[0x0],_0x19e1b1[0x1]),this[_0x173265(0x2fa,0x2f9)]['lineTo'](_0x1bb0d8[0x0],_0x1bb0d8[0x1]);}this[_0x173265(0x2fa,0x373)][_0x439709(0x514,0x58e)]();}}[_0x52dd5f(0x2a4,0x320)](_0x2ee4a4,_0x37b5d4,_0x567351,_0x1db57f){function _0x18371e(_0x4fbf68,_0xdbdb6e){return _0x5e9725(_0x4fbf68- -0x21f,_0xdbdb6e);}const _0x18472b=Cesium['Cartesian3'][_0x18371e(0x1ea,0x1f3)](_0x37b5d4,_0x567351,_0x1db57f??this[_0x18371e(0x1e8,0x180)]);function _0x1cfb61(_0x4d76d1,_0x21d4f6){return _0x5e9725(_0x4d76d1- -0xe7,_0x21d4f6);}const _0x1c667f=this['_map']['scene'];if(_0x1c667f['mode']===Cesium[_0x1cfb61(0x2b1,0x2ab)]['SCENE3D']){const _0x3052c1=new Cesium['EllipsoidalOccluder'](_0x1c667f[_0x1cfb61(0x2d2,0x2c5)][_0x18371e(0x250,0x299)],_0x1c667f['camera'][_0x1cfb61(0x36c,0x3ed)]),_0x590545=_0x3052c1[_0x1cfb61(0x397,0x31f)](_0x18472b);if(!_0x590545)return _0x2ee4a4[_0x18371e(0x16b,0xee)]=0x0,null;}const _0xbde00e=mars3d__namespace[_0x1cfb61(0x2c0,0x2a3)][_0x18371e(0x23c,0x1f7)](this[_0x18371e(0x240,0x295)][_0x1cfb61(0x2ed,0x355)],_0x18472b);return _0xbde00e?[_0xbde00e['x'],_0xbde00e['y']]:null;}['clear'](){function _0x1499a1(_0x715164,_0x2f0738){return _0x52dd5f(_0x2f0738- -0x484,_0x715164);}this['windField'][_0xada522(0x306,0x2f6)]();function _0xada522(_0x1fa019,_0x2057f2){return _0x52dd5f(_0x1fa019-0x45,_0x2057f2);}delete this[_0x1499a1(-0x287,-0x217)];}['initWorker'](){this['worker']=new Worker(this['options']['worker']),this['worker'][_0x207018(-0x6e,-0x95)]=_0x51348a=>{function _0x2b45c9(_0x1bc92e,_0x2ccbe7){return _0x207018(_0x2ccbe7-0x37,_0x1bc92e);}function _0x4d5442(_0x5a4d43,_0x44ebaf){return _0x207018(_0x44ebaf- -0x2f,_0x5a4d43);}this[_0x4d5442(-0x114,-0xde)](_0x51348a['data']['particles']),this[_0x2b45c9(-0x5d,0x8)]=![];},this[_0x36e495(0x162,0x125)]={'init':_0x48ff10=>{const _0x209c33={};function _0x3968e5(_0x34eaa7,_0x1bd1dc){return _0x36e495(_0x1bd1dc,_0x34eaa7- -0x199);}function _0x3c0f68(_0x11de8f,_0x2effdb){return _0x207018(_0x11de8f-0x27a,_0x2effdb);}_0x209c33['type']=_0x3968e5(-0xf7,-0x159),_0x209c33[_0x3c0f68(0x22f,0x1d4)]=_0x48ff10,this['worker']['postMessage'](_0x209c33);},'setOptions':_0x19151b=>{const _0x137d67={};function _0xb770b3(_0x22da96,_0x2553d5){return _0x207018(_0x22da96- -0x189,_0x2553d5);}_0x137d67['type']='setOptions',_0x137d67['options']=_0x19151b,this['worker'][_0xb770b3(-0x22a,-0x1e7)](_0x137d67);},'setDate':_0x4345f2=>{const _0x3ea5ca={};function _0x367d25(_0x4a63ae,_0x495e62){return _0x36e495(_0x495e62,_0x4a63ae- -0x2c0);}function _0x8eb105(_0x2fb1ac,_0x3c3239){return _0x36e495(_0x2fb1ac,_0x3c3239-0x47a);}_0x3ea5ca['type']=_0x8eb105(0x5c8,0x5cb),_0x3ea5ca['data']=_0x4345f2,this[_0x367d25(-0x20e,-0x258)][_0x8eb105(0x56b,0x54c)](_0x3ea5ca);},'update':()=>{if(this[_0x4acf91(-0x102,-0xb5)])return;this[_0x516da5(0x205,0x22d)]=!![];const _0x3fb33d={};function _0x4acf91(_0xb2a72a,_0x2d8c39){return _0x207018(_0x2d8c39- -0x86,_0xb2a72a);}function _0x516da5(_0x197f3f,_0x49c3c1){return _0x207018(_0x49c3c1-0x25c,_0x197f3f);}_0x3fb33d[_0x516da5(0x145,0x1ab)]='update',this[_0x516da5(0x14c,0x19b)]['postMessage'](_0x3fb33d);},'clear':()=>{const _0x3a9e7e={};function _0x5ca713(_0x2575ef,_0xf5c29f){return _0x207018(_0x2575ef-0x3c,_0xf5c29f);}_0x3a9e7e[_0x55d38d(-0x239,-0x20c)]=_0x55d38d(-0x201,-0x1ff);function _0x55d38d(_0x1f5e6c,_0x5ba942){return _0x36e495(_0x5ba942,_0x1f5e6c- -0x2fb);}this[_0x55d38d(-0x249,-0x1f0)][_0x55d38d(-0x229,-0x246)](_0x3a9e7e);}};function _0x207018(_0x315d98,_0x67c8a3){return _0x5e9725(_0x315d98- -0x48d,_0x67c8a3);}function _0x36e495(_0x4b085f,_0x2da6a0){return _0x52dd5f(_0x2da6a0- -0x1c7,_0x4b085f);}this['windField']['init'](this[_0x36e495(0x162,0x128)]);}}function _0x52dd5f(_0x3c287d,_0x48eee5){return _0x270b(_0x3c287d-0x11e,_0x48eee5);}mars3d__namespace[_0x52dd5f(0x244,0x1f7)][_0x52dd5f(0x2b0,0x2f8)](_0x52dd5f(0x251,0x22e),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['Log'][_0x52dd5f(0x331,0x397)]('mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:'+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace['WindUtil']=WindUtil,exports[_0x5e9725(0x460,0x3fd)]=CanvasWindField,exports[_0x5e9725(0x3f2,0x3e2)]=CanvasWindLayer,exports[_0x52dd5f(0x23f,0x1de)]=WindLayer,exports['WindUtil']=WindUtil;const _0x76123c={};function _0x270b(_0x5e46fa,_0x457e2f){const _0x359695=_0x3596();return _0x270b=function(_0x270b5c,_0x4db163){_0x270b5c=_0x270b5c-0x110;let _0x2c0108=_0x359695[_0x270b5c];return _0x2c0108;},_0x270b(_0x5e46fa,_0x457e2f);}_0x76123c['value']=!![],Object['defineProperty'](exports,_0x52dd5f(0x233,0x22a),_0x76123c);
15
15
  }));
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.10.10",
3
+ "version": "3.10.11",
4
4
  "description": "Mars3D平台插件,支持气象 风向图 功能插件",
5
5
  "main": "./mars3d-wind.js",
6
6
  "peerDependencies": {},
7
7
  "devDependencies": {
8
- "mars3d": "~3.10.10"
8
+ "mars3d": "~3.10.11"
9
9
  },
10
10
  "scripts": {
11
11
  "lint": "eslint ./src/**/*.{js,ts} --fix"