mars3d-wind 3.11.0 → 3.11.2

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.
package/README.md CHANGED
@@ -84,7 +84,7 @@ import "mars3d-wind";
84
84
 
85
85
 
86
86
  ## Mars3D 是什么
87
- > `Mars3D三维地球平台软件` 是[火星科技](http://marsgis.cn/)研发的一款基于 WebGL 技术实现的三维客户端开发平台,基于[Cesium](https://cesium.com/cesiumjs/)优化提升与B/S架构设计,支持多行业扩展的轻量级高效能GIS开发平台,能够免安装、无插件地在浏览器中高效运行,并可快速接入与使用多种GIS数据和三维模型,呈现三维空间的可视化,完成平台在不同行业的灵活应用。
87
+ > `Mars3D三维地球平台软件` 是一款基于 WebGL 技术实现的三维客户端开发平台,基于[Cesium](https://cesium.com/cesiumjs/)优化提升与B/S架构设计,支持多行业扩展的轻量级高效能GIS开发平台,能够免安装、无插件地在浏览器中高效运行,并可快速接入与使用多种GIS数据和三维模型,呈现三维空间的可视化,完成平台在不同行业的灵活应用。
88
88
 
89
89
  > Mars3D平台可用于构建无插件、跨操作系统、 跨浏览器的三维 GIS 应用程序。平台使用 WebGL 来进行硬件加速图形化,跨平台、跨浏览器来实现真正的动态大数据三维可视化。通过 Mars3D产品可快速实现浏览器和移动端上美观、流畅的三维地图呈现与空间分析。
90
90
 
package/mars3d-wind.js CHANGED
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
3
3
  *
4
- * 版本信息:v3.11.0
5
- * 编译日期:2026-02-14 19:29
6
- * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
- * 使用单位:火星科技免费公开版 ,2026-02-01
4
+ * 版本信息:v3.11.2
5
+ * 编译日期:2026-04-08 16:13
6
+ * 版权所有:Copyright by http://mars3d.cn
7
+ * 使用单位:免费公开版 ,2026-02-01
8
8
  */
9
9
  (function (global, factory) {
10
10
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, (window.mars3d || require('mars3d'))) :
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(_0x1d6cb2,_0x45dafb){const _0x3e661d=_0x1d6cb2();function _0x16e8a1(_0x1bb3a5,_0x56024b){return _0x17b6(_0x1bb3a5-0x3b9,_0x56024b);}function _0x320676(_0x2c62bb,_0xcc7b48){return _0x17b6(_0xcc7b48-0x49,_0x2c62bb);}while(!![]){try{const _0x5db7f6=parseInt(_0x320676(0x172,0x15d))/0x1+parseInt(_0x16e8a1(0x5a2,0x54e))/0x2+parseInt(_0x320676(0x1dd,0x175))/0x3*(-parseInt(_0x16e8a1(0x53b,0x54d))/0x4)+-parseInt(_0x16e8a1(0x57e,0x551))/0x5+parseInt(_0x16e8a1(0x4d2,0x49f))/0x6+-parseInt(_0x320676(0x23f,0x1d6))/0x7+-parseInt(_0x320676(0x1bc,0x19a))/0x8*(-parseInt(_0x320676(0xfc,0x13c))/0x9);if(_0x5db7f6===_0x45dafb)break;else _0x3e661d['push'](_0x3e661d['shift']());}catch(_0x2fd198){_0x3e661d['push'](_0x3e661d['shift']());}}}(_0x42eb,0x55b46));function _interopNamespace(_0x43092e){function _0xb24a1b(_0x3bf27f,_0x17308f){return _0x17b6(_0x17308f-0x102,_0x3bf27f);}if(_0x43092e&&_0x43092e[_0xb24a1b(0x2c4,0x2a1)])return _0x43092e;var _0x3253ad=Object['create'](null);return _0x43092e&&Object['keys'](_0x43092e)['forEach'](function(_0x567f65){function _0x17316a(_0x578b2e,_0x523d9a){return _0xb24a1b(_0x578b2e,_0x523d9a- -0x1a8);}if(_0x567f65!==_0x17316a(0x124,0x121)){var _0x52907a=Object['getOwnPropertyDescriptor'](_0x43092e,_0x567f65);Object['defineProperty'](_0x3253ad,_0x567f65,_0x52907a['get']?_0x52907a:{'enumerable':!![],'get':function(){return _0x43092e[_0x567f65];}});}}),_0x3253ad['default']=_0x43092e,_0x3253ad;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace[_0x259635(0x512,0x52b)];function getU(_0x131425,_0x2be87c){const _0x4d1bd8=_0x131425*Math['cos'](Cesium$2[_0x8bfdea(0x311,0x310)][_0x8bfdea(0x2af,0x228)](_0x2be87c));function _0x4f8b2e(_0x43c509,_0x58a3d9){return _0x259635(_0x58a3d9,_0x43c509- -0x561);}function _0x8bfdea(_0x5dcece,_0x5a38e3){return _0x259635(_0x5a38e3,_0x5dcece- -0x20e);}return _0x4d1bd8;}function getV(_0x3a8e7f,_0x439c31){function _0x5b9ea6(_0x131ab0,_0x35cfdd){return _0x259635(_0x35cfdd,_0x131ab0- -0x404);}const _0x79176f=_0x3a8e7f*Math[_0x5b9ea6(0x16c,0x161)](Cesium$2['Math']['toRadians'](_0x439c31));return _0x79176f;}function getSpeed(_0x15b721,_0x4544c6){const _0x4444a2=Math[_0x30141f(0x2a4,0x320)](Math['pow'](_0x15b721,0x2)+Math[_0x30141f(0x29c,0x2b7)](_0x4544c6,0x2));function _0x30141f(_0x3d4f56,_0x56404f){return _0x259635(_0x56404f,_0x3d4f56- -0x21b);}function _0x29e58f(_0x57cf08,_0x32cfa9){return _0x259635(_0x32cfa9,_0x57cf08- -0x2b);}return _0x4444a2;}function getDirection(_0x1c6999,_0x513c9d){function _0x157528(_0x1fa0c1,_0x586c26){return _0x259635(_0x1fa0c1,_0x586c26- -0x1f7);}function _0x1456e6(_0x23b516,_0x5ad822){return _0x259635(_0x23b516,_0x5ad822- -0x3d7);}let _0x4b29b0=Cesium$2[_0x1456e6(0x165,0x148)]['toDegrees'](Math[_0x157528(0x2ca,0x31c)](_0x513c9d,_0x1c6999));return _0x4b29b0+=_0x4b29b0<0x0?0x168:0x0,_0x4b29b0;}const _0x58719a={};_0x58719a['__proto__']=null,_0x58719a['getU']=getU,_0x58719a['getV']=getV,_0x58719a['getSpeed']=getSpeed,_0x58719a['getDirection']=getDirection;var WindUtil=_0x58719a;const version='3.11.0',buildTime='2026-02-14\x2019:28';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=_0x5ba876(0x212,0x1e3),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='#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';function _0x259635(_0x42e4f4,_0x49aafb){return _0x17b6(_0x49aafb-0x3de,_0x42e4f4);}const {ShaderSource:ShaderSource$1}=mars3d__namespace[_0x5ba876(0x172,0x15d)];class ShaderManager{static[_0x259635(0x52b,0x5a9)](){function _0x4a6fd2(_0x3ba9f1,_0x462950){return _0x259635(_0x3ba9f1,_0x462950- -0x582);}const _0xde47a9={};return _0xde47a9[_0x4a6fd2(-0x3b,-0x5a)]=[calculateSpeedShader],new ShaderSource$1(_0xde47a9);}static['getUpdatePositionShader'](){const _0x1aa668={};return _0x1aa668['sources']=[updatePositionShader],new ShaderSource$1(_0x1aa668);}static['getSegmentDrawVertexShader'](){const _0x12078c={};return _0x12078c['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x12078c);}static[_0x5ba876(0x1a5,0x189)](){const _0x4512f1={};return _0x4512f1['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x4512f1);}static[_0x5ba876(0x1ad,0x153)](){const _0x3b8530={};_0x3b8530[_0x5b7cae(-0x12,0x65)]=[postProcessingPositionFragmentShader];function _0x5b7cae(_0x12d322,_0x190f6b){return _0x259635(_0x12d322,_0x190f6b- -0x4c3);}return new ShaderSource$1(_0x3b8530);}}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[_0x259635(0x4b7,0x52b)];class CustomPrimitive{constructor(_0x150b6e){this['commandType']=_0x150b6e['commandType'],this['geometry']=_0x150b6e['geometry'],this['attributeLocations']=_0x150b6e[_0x4564a7(-0x168,-0x168)],this[_0x5d05bc(0x453,0x4cd)]=_0x150b6e['primitiveType'],this[_0x4564a7(-0xc0,-0xb0)]=_0x150b6e['uniformMap']||{},this[_0x5d05bc(0x4ab,0x52d)]=_0x150b6e[_0x5d05bc(0x564,0x52d)],this[_0x5d05bc(0x491,0x4dc)]=_0x150b6e['fragmentShaderSource'];function _0x4564a7(_0xdd94e9,_0x27bbd2){return _0x259635(_0x27bbd2,_0xdd94e9- -0x671);}this['rawRenderState']=_0x150b6e['rawRenderState'],this[_0x5d05bc(0x57f,0x536)]=_0x150b6e['framebuffer'],this['outputTexture']=_0x150b6e['outputTexture'],this['autoClear']=_0x150b6e['autoClear']??![],this['preExecute']=_0x150b6e['preExecute'],this['show']=!![],this['commandToExecute']=undefined;function _0x5d05bc(_0x76dea5,_0x4fb1d7){return _0x259635(_0x76dea5,_0x4fb1d7- -0x41);}this['clearCommand']=undefined,this['isDynamic']=_0x150b6e['isDynamic']??(()=>!![]),this['autoClear']&&(this['clearCommand']=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Pass$1[_0x5d05bc(0x461,0x4a5)]}));}[_0x5ba876(0x192,0x214)](_0x18308c){function _0x1ad979(_0x3cd636,_0x55267e){return _0x259635(_0x3cd636,_0x55267e- -0xd2);}function _0x1e6609(_0x4fbba4,_0x3d8be4){return _0x5ba876(_0x4fbba4- -0x9e,_0x3d8be4);}if(this['commandType']==='Draw'){const _0x3caafd={};_0x3caafd['context']=_0x18308c,_0x3caafd['geometry']=this[_0x1e6609(0xb5,0x10c)],_0x3caafd[_0x1ad979(0x480,0x437)]=this['attributeLocations'],_0x3caafd['bufferUsage']=BufferUsage$1[_0x1ad979(0x493,0x4e8)];const _0x699e18=VertexArray$1['fromGeometry'](_0x3caafd),_0x80dda2={};_0x80dda2[_0x1ad979(0x443,0x492)]=_0x18308c,_0x80dda2[_0x1e6609(0x117,0x12c)]=this['vertexShaderSource'],_0x80dda2['fragmentShaderSource']=this[_0x1e6609(0xc6,0x137)],_0x80dda2[_0x1ad979(0x45b,0x437)]=this['attributeLocations'];const _0x400140=ShaderProgram['fromCache'](_0x80dda2),_0x2129c1=RenderState['fromCache'](this[_0x1e6609(0x16c,0x129)]),_0x33132a={};return _0x33132a['owner']=this,_0x33132a['vertexArray']=_0x699e18,_0x33132a[_0x1e6609(0xb7,0x8d)]=this[_0x1e6609(0xb7,0x114)],_0x33132a['modelMatrix']=Matrix4['IDENTITY'],_0x33132a['renderState']=_0x2129c1,_0x33132a['shaderProgram']=_0x400140,_0x33132a['framebuffer']=this['framebuffer'],_0x33132a['uniformMap']=this[_0x1ad979(0x50f,0x4df)],_0x33132a[_0x1ad979(0x507,0x4d4)]=Pass$1[_0x1e6609(0x8f,0xd1)],new DrawCommand(_0x33132a);}else{if(this['commandType']==='Compute'){const _0x122654={};return _0x122654[_0x1ad979(0x435,0x4a0)]=this,_0x122654['fragmentShaderSource']=this['fragmentShaderSource'],_0x122654['uniformMap']=this[_0x1ad979(0x4e3,0x4df)],_0x122654['outputTexture']=this['outputTexture'],_0x122654[_0x1ad979(0x433,0x49a)]=!![],new ComputeCommand(_0x122654);}else throw new Error('Unknown\x20command\x20type');}}['setGeometry'](_0x125c47,_0x5bf1bf){function _0x25e174(_0x326722,_0x12897a){return _0x5ba876(_0x326722- -0x109,_0x12897a);}this['geometry']=_0x5bf1bf;function _0x38f482(_0x13efed,_0xb8f00f){return _0x259635(_0x13efed,_0xb8f00f- -0x1c1);}defined(this['commandToExecute'])&&(this[_0x38f482(0x392,0x3d8)][_0x25e174(0x25,0x40)]=VertexArray$1[_0x38f482(0x2ed,0x307)]({'context':_0x125c47,'geometry':this[_0x25e174(0x4a,0x3a)],'attributeLocations':this[_0x25e174(0x47,0x11)],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}['update'](_0x23d51d){if(!this[_0x1fe000(0x412,0x3f0)]())return;if(!this['show']||!defined(_0x23d51d))return;!defined(this[_0x5e4459(-0x12f,-0xc2)])&&(this[_0x5e4459(-0x96,-0xc2)]=this['createCommand'](_0x23d51d[_0x5e4459(-0x113,-0xf7)]));defined(this[_0x5e4459(-0x10,-0x92)])&&this['preExecute']();function _0x5e4459(_0x271fea,_0x2db79a){return _0x259635(_0x271fea,_0x2db79a- -0x65b);}function _0x1fe000(_0x182077,_0x35bca7){return _0x259635(_0x182077,_0x35bca7- -0x175);}if(!_0x23d51d[_0x1fe000(0x3fc,0x3c0)]){console['warn']('frameState.commandList\x20is\x20undefined');return;}defined(this[_0x5e4459(-0x16f,-0x172)])&&_0x23d51d[_0x1fe000(0x3ae,0x3c0)]['push'](this[_0x5e4459(-0x18e,-0x172)]),defined(this[_0x1fe000(0x486,0x424)])&&_0x23d51d['commandList'][_0x1fe000(0x42a,0x443)](this[_0x5e4459(-0x125,-0xc2)]);}['isDestroyed'](){return![];}[_0x259635(0x4f1,0x518)](){function _0x304e58(_0x3c6bb7,_0x2313fa){return _0x259635(_0x2313fa,_0x3c6bb7- -0x158);}if(defined(this['commandToExecute'])){var _0x19b6f6;(_0x19b6f6=this['commandToExecute']['shaderProgram'])===null||_0x19b6f6===void 0x0||_0x19b6f6[_0x304e58(0x3c0,0x3e1)](),this['commandToExecute'][_0x13f497(-0x175,-0x1b2)]=undefined;}function _0x13f497(_0x5c74e3,_0x188e25){return _0x5ba876(_0x5c74e3- -0x2c0,_0x188e25);}return destroyObject(this);}}function deepMerge(_0x401e83,_0x3be610){function _0x42a3de(_0x18612a,_0xa7e5d2){return _0x5ba876(_0x18612a- -0xf3,_0xa7e5d2);}if(!_0x401e83)return _0x3be610;if(!_0x3be610)return _0x401e83;const _0x42076e={..._0x3be610};function _0x1e4754(_0x505ff0,_0x2f2905){return _0x259635(_0x505ff0,_0x2f2905- -0x7bd);}const _0xd0d696=_0x42076e;for(const _0x309c6a in _0x401e83){if(Object[_0x1e4754(-0x278,-0x266)]['hasOwnProperty'][_0x1e4754(-0x205,-0x1fe)](_0x401e83,_0x309c6a)){const _0x1c552f=_0x401e83[_0x309c6a],_0x2bf7f3=_0x3be610[_0x309c6a];if(Array['isArray'](_0x1c552f)){_0xd0d696[_0x309c6a]=_0x1c552f['slice']();continue;}if(_0x1c552f&&typeof _0x1c552f==='object'){_0xd0d696[_0x309c6a]=deepMerge(_0x1c552f,_0x2bf7f3||{});continue;}_0x1c552f!==undefined&&(_0xd0d696[_0x309c6a]=_0x1c552f);}}return _0xd0d696;}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(_0x382e7e,_0x5c1cfa,_0x129293,_0x1e387c,_0x1de6de){this[_0x36a4ff(-0x1ce,-0x216)]=_0x382e7e,this['options']=_0x129293,this[_0x36a4ff(-0x1ea,-0x1fc)]=_0x1e387c;function _0x380cc5(_0x418082,_0x4a2cb4){return _0x5ba876(_0x418082- -0xee,_0x4a2cb4);}this['windData']=_0x5c1cfa,this['frameRate']=0x3c,this['frameRateAdjustment']=0x1;const _0x2020ae={};_0x2020ae['scene']=_0x1de6de;function _0x36a4ff(_0x24487b,_0x4b0f56){return _0x259635(_0x4b0f56,_0x24487b- -0x732);}_0x2020ae[_0x36a4ff(-0x1a9,-0x1ff)]=0x1,_0x2020ae['quietPeriod']=0x0,this['frameRateMonitor']=new FrameRateMonitor(_0x2020ae),this[_0x36a4ff(-0x26b,-0x241)](),this['createWindTextures'](),this[_0x380cc5(0x72,0xee)](),this[_0x36a4ff(-0x230,-0x28d)]();}[_0x5ba876(0x10e,0x167)](){const _0x380e6d=()=>{function _0x58457b(_0x526a27,_0x20ca7e){return _0x17b6(_0x526a27-0x373,_0x20ca7e);}function _0x116076(_0x387c06,_0x4b0e45){return _0x17b6(_0x387c06- -0x187,_0x4b0e45);}this[_0x116076(0x20,-0x63)]['lastFramesPerSecond']>0x14&&(this[_0x58457b(0x4c9,0x554)]=this[_0x116076(0x20,-0xe)]['lastFramesPerSecond'],this[_0x116076(-0x8f,-0x119)]=0x3c/Math['max'](this['frameRate'],0x1));};_0x380e6d();function _0x474eb5(_0x1d8649,_0x3025aa){return _0x259635(_0x1d8649,_0x3025aa- -0x612);}const _0x108754=setInterval(_0x380e6d,0x3e8),_0x432bd0=this['destroy']['bind'](this);this[_0x474eb5(-0x14e,-0xfa)]=()=>{clearInterval(_0x108754),_0x432bd0();};}['createWindTextures'](){const _0x1c3ab6={};function _0xc8670e(_0x3c52c3,_0x31ee9e){return _0x5ba876(_0x3c52c3- -0x3e4,_0x31ee9e);}_0x1c3ab6['minificationFilter']=TextureMinificationFilter$1['LINEAR'],_0x1c3ab6['magnificationFilter']=TextureMagnificationFilter$1['LINEAR'];const _0x469bbf={'context':this[_0xc8670e(-0x239,-0x23f)],'width':this['windData']['width'],'height':this['windData']['height'],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1[_0xc8670e(-0x2a9,-0x311)],'flipY':this[_0xc8670e(-0x1e4,-0x245)]['flipY']??![],'sampler':new Sampler$1(_0x1c3ab6)};function _0x3c6f3a(_0x3f6ccb,_0x2195c4){return _0x5ba876(_0x3f6ccb- -0xa5,_0x2195c4);}this[_0xc8670e(-0x2b1,-0x25a)]={'U':new Texture$1({..._0x469bbf,'source':{'arrayBufferView':new Float32Array(this['windData']['u'][_0xc8670e(-0x2c6,-0x300)])}}),'V':new Texture$1({..._0x469bbf,'source':{'arrayBufferView':new Float32Array(this['windData']['v']['array'])}})};}['createParticlesTextures'](){const _0x3b7546={};_0x3b7546['minificationFilter']=TextureMinificationFilter$1[_0x3eb3c1(0x18b,0x14e)],_0x3b7546['magnificationFilter']=TextureMagnificationFilter$1['NEAREST'];function _0x51db7f(_0x1fcf9c,_0x50b32f){return _0x5ba876(_0x50b32f- -0x269,_0x1fcf9c);}function _0x3eb3c1(_0x1bff71,_0x3e345a){return _0x259635(_0x1bff71,_0x3e345a- -0x3f0);}const _0x5d3892={'context':this[_0x3eb3c1(0x18b,0x174)],'width':this[_0x51db7f(-0xa,-0x69)][_0x51db7f(-0x164,-0x16a)],'height':this['options'][_0x3eb3c1(0xcf,0xc8)],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options']['particlesTextureSize']*this[_0x3eb3c1(0x14d,0x1c9)][_0x51db7f(-0x1a7,-0x16a)]*0x4)[_0x51db7f(-0x5f,-0xd2)](0x0)},'sampler':new Sampler$1(_0x3b7546)};this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0x5d3892),'currentParticlesPosition':new Texture$1(_0x5d3892),'nextParticlesPosition':new Texture$1(_0x5d3892),'postProcessingPosition':new Texture$1(_0x5d3892),'particlesSpeed':new Texture$1(_0x5d3892)};}[_0x5ba876(0x1df,0x197)](){function _0x4ae1ff(_0x5590bf,_0x744ad8){return _0x259635(_0x5590bf,_0x744ad8- -0x726);}function _0x434c8a(_0x5d9d2e,_0x449aa9){return _0x5ba876(_0x449aa9-0xee,_0x5d9d2e);}Object['values'](this[_0x4ae1ff(-0x178,-0x191)])[_0x434c8a(0x27c,0x22a)](_0x45ecd4=>_0x45ecd4['destroy']());}['createComputingPrimitives'](){function _0x1262ab(_0x58d423,_0x5cb0ae){return _0x259635(_0x58d423,_0x5cb0ae- -0x670);}function _0x4728a0(_0x3e1314,_0x4e1ae0){return _0x259635(_0x3e1314,_0x4e1ae0- -0x534);}this[_0x1262ab(-0xe7,-0x127)]={'calculateSpeed':new CustomPrimitive({'commandType':_0x4728a0(-0x33,0x1b),'uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this[_0x4728a0(-0x9a,-0x48)]['V'],'uRange':()=>new Cartesian2$1(this[_0x4728a0(0x7e,0x68)]['u'][_0x1262ab(-0x151,-0xc9)],this['windData']['u']['max']),'vRange':()=>new Cartesian2$1(this['windData']['v']['min'],this['windData']['v']['max']),'speedRange':()=>new Cartesian2$1(this[_0x1262ab(-0x151,-0xd4)]['speed']['min'],this['windData']['speed']['max']),'currentParticlesPosition':()=>this['particlesTextures'][_0x1262ab(-0x18c,-0x144)],'speedScaleFactor':()=>{function _0x5579d9(_0x5a372f,_0x5349b1){return _0x1262ab(_0x5a372f,_0x5349b1- -0x45);}return(this[_0x5579d9(-0x154,-0x16d)]['pixelSize']+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this['frameRateAdjustment'],'dimension':()=>new Cartesian2$1(this['windData']['width'],this[_0x1262ab(-0x154,-0xd4)][_0x4728a0(-0xa3,-0x50)]),'minimum':()=>new Cartesian2$1(this['windData']['bounds'][_0x1262ab(-0xab,-0x101)],this[_0x4728a0(0xb2,0x68)]['bounds']['south']),'maximum':()=>new Cartesian2$1(this[_0x4728a0(0xaa,0x68)]['bounds']['east'],this[_0x1262ab(-0xa7,-0xd4)]['bounds'][_0x1262ab(-0xe6,-0x10e)])},'fragmentShaderSource':ShaderManager[_0x1262ab(-0x7d,-0xc7)](),'outputTexture':this['particlesTextures']['particlesSpeed'],'preExecute':()=>{const _0x3e4c50=this['particlesTextures']['previousParticlesPosition'];function _0x57bd55(_0x58893e,_0x5078e){return _0x1262ab(_0x58893e,_0x5078e-0x126);}function _0x3b5ea0(_0x41b165,_0x428fa7){return _0x1262ab(_0x428fa7,_0x41b165-0x4d7);}this['particlesTextures'][_0x57bd55(0x67,0x0)]=this[_0x57bd55(0x3d,0x4b)][_0x3b5ea0(0x393,0x41d)],this[_0x3b5ea0(0x3fc,0x448)]['currentParticlesPosition']=this['particlesTextures'][_0x57bd55(0x54,-0x23)],this['particlesTextures']['postProcessingPosition']=_0x3e4c50,this['primitives']['calculateSpeed']['commandToExecute']&&(this['primitives']['calculateSpeed']['commandToExecute'][_0x57bd55(0x85,0x66)]=this['particlesTextures'][_0x3b5ea0(0x363,0x2fc)]);},'isDynamic':()=>this[_0x1262ab(-0x4c,-0xb7)]['dynamic']}),'updatePosition':new CustomPrimitive({'commandType':_0x1262ab(-0x115,-0x121),'uniformMap':{'currentParticlesPosition':()=>this['particlesTextures'][_0x1262ab(-0x19f,-0x144)],'particlesSpeed':()=>this['particlesTextures'][_0x4728a0(-0x8f,-0x38)]},'fragmentShaderSource':ShaderManager['getUpdatePositionShader'](),'outputTexture':this[_0x4728a0(0x24,0x61)]['nextParticlesPosition'],'preExecute':()=>{function _0x336927(_0x47a58a,_0x41d2f7){return _0x1262ab(_0x41d2f7,_0x47a58a-0xfb);}function _0x25c64b(_0x1f6648,_0x563eeb){return _0x1262ab(_0x563eeb,_0x1f6648- -0x4);}this[_0x336927(-0x2c,-0x7b)][_0x25c64b(-0x11a,-0x9d)]['commandToExecute']&&(this['primitives']['updatePosition']['commandToExecute'][_0x25c64b(-0xc4,-0x4f)]=this[_0x25c64b(-0xdf,-0x77)][_0x25c64b(-0x169,-0x1bd)]);},'isDynamic':()=>this['options']['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this[_0x1262ab(-0x8d,-0xdb)]['nextParticlesPosition'],'particlesSpeed':()=>this['particlesTextures'][_0x4728a0(-0x8f,-0x38)],'lonRange':()=>this[_0x1262ab(-0x108,-0x128)]['lonRange'],'latRange':()=>this[_0x1262ab(-0x18f,-0x128)][_0x4728a0(-0x2b,-0x55)],'dataLonRange':()=>new Cartesian2$1(this['windData']['bounds']['west'],this['windData'][_0x4728a0(0x7d,-0x7)][_0x1262ab(-0x10a,-0xea)]),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0x1262ab(-0x16f,-0x143)]['south'],this['windData']['bounds'][_0x4728a0(-0x3b,0x2e)]),'randomCoefficient':function(){return Math['random']();},'dropRate':()=>this['options'][_0x4728a0(0x12,-0x4)],'dropRateBump':()=>this[_0x1262ab(-0x44,-0xb7)]['dropRateBump'],'useViewerBounds':()=>this[_0x4728a0(0x81,0x85)]['useViewerBounds']},'fragmentShaderSource':ShaderManager[_0x1262ab(-0x12f,-0x10a)](),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':()=>{function _0x263841(_0x237cdc,_0x5c09e1){return _0x1262ab(_0x5c09e1,_0x237cdc-0x5a1);}function _0x1361f3(_0x1fe7ad,_0x4c7e9b){return _0x4728a0(_0x1fe7ad,_0x4c7e9b-0x8d);}this['primitives']['postProcessingPosition'][_0x1361f3(0x13a,0xf2)]&&(this['primitives'][_0x1361f3(0xc,0x80)]['commandToExecute'][_0x263841(0x4e1,0x522)]=this['particlesTextures']['postProcessingPosition']);},'isDynamic':()=>this[_0x1262ab(-0xcf,-0xb7)]['dynamic']})};}['reCreateWindTextures'](){this[_0x5a29f3(-0x2b9,-0x258)]['U'][_0x4a771a(-0x52,-0xb1)]();function _0x4a771a(_0x3ab4f2,_0x2e2367){return _0x5ba876(_0x2e2367- -0x210,_0x3ab4f2);}function _0x5a29f3(_0x218c0e,_0x3f1553){return _0x5ba876(_0x218c0e- -0x3ec,_0x3f1553);}this[_0x4a771a(-0x9a,-0xdd)]['V']['destroy'](),this['createWindTextures']();}['updateWindData'](_0x277fc6){this['windData']=_0x277fc6,this['reCreateWindTextures']();}['updateOptions'](_0x378d4b){function _0xefc8ed(_0x1a8e86,_0x36f8ce){return _0x5ba876(_0x36f8ce-0x223,_0x1a8e86);}const _0xaba564=_0x378d4b['flipY']!==undefined&&_0x378d4b[_0x3a06bf(-0x11a,-0x140)]!==this['options']['flipY'];function _0x3a06bf(_0x43d321,_0x508cbe){return _0x259635(_0x43d321,_0x508cbe- -0x6a7);}this[_0x3a06bf(-0x71,-0xee)]=deepMerge(_0x378d4b,this['options']),_0xaba564&&this['reCreateWindTextures']();}['processWindData'](_0x24273d){const {array:_0x4b51af}=_0x24273d;let {min:_0x3c36a8,max:_0x24a6b0}=_0x24273d;const _0x5595f8=new Float32Array(_0x4b51af[_0x97161(-0x2c4,-0x253)]);_0x3c36a8===undefined&&(console['warn'](_0x50a378(0x532,0x53b)),_0x3c36a8=Math[_0x97161(-0x151,-0x1aa)](..._0x4b51af));_0x24a6b0===undefined&&(console[_0x97161(-0x238,-0x1b2)]('max\x20is\x20undefined,\x20calculate\x20max'),_0x24a6b0=Math['max'](..._0x4b51af));const _0x5c272f=Math['max'](Math[_0x97161(-0x225,-0x21b)](_0x3c36a8),Math['abs'](_0x24a6b0));for(let _0x345ce0=0x0;_0x345ce0<_0x4b51af[_0x50a378(0x46b,0x4dc)];_0x345ce0++){const _0x4095ee=_0x4b51af[_0x345ce0]/_0x5c272f;_0x5595f8[_0x345ce0]=_0x4095ee;}function _0x50a378(_0x5da71a,_0x4e9bf4){return _0x259635(_0x5da71a,_0x4e9bf4- -0x22);}function _0x97161(_0x14bba0,_0x4b5f35){return _0x5ba876(_0x4b5f35- -0x398,_0x14bba0);}return _0x5595f8;}['destroy'](){function _0x9af3a5(_0x4186c7,_0x5cebbf){return _0x259635(_0x4186c7,_0x5cebbf- -0x388);}function _0x24e231(_0x3fcf9b,_0x594771){return _0x259635(_0x3fcf9b,_0x594771- -0x781);}Object[_0x9af3a5(0x243,0x227)](this[_0x24e231(-0x2ea,-0x295)])['forEach'](_0x507cea=>_0x507cea['destroy']()),Object['values'](this['particlesTextures'])[_0x24e231(-0x22a,-0x28c)](_0x3f61c1=>_0x3f61c1['destroy']()),Object['values'](this['primitives'])[_0x24e231(-0x22e,-0x28c)](_0x30be14=>_0x30be14[_0x9af3a5(0x1d0,0x190)]()),this['frameRateMonitor'][_0x9af3a5(0x127,0x190)]();}}function _0x42eb(){const _0x8fba67=['speedRate','1151508rSQjFN','bind','preExecute','remove','#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','pow','particlesTextureSize','Cartesian2','ONE_MINUS_SRC_ALPHA','frameTime','EventType','toRadians','max','sqrt','getUVByXY','processWindData','grid','defineProperty','Log','requestAnimationFrame','enabled','initFrameRate','fromGeometry','floor','_showHook','_randomParticle','_speedRate','canvas','visibility','lat','mode','873MvNVca','postMessage','changed','_mountedHook','fixedHeight','frameRateAdjustment','array','tlat','UNSIGNED_INT','blending','_removedHook','lineWidth','south','viewport','latRange','lighter','segments','_updateIng','_bilinearInterpolation','height','addEventListener','OPAQUE','vertexArray','MAX_VALUE','clearCommand','_pointerEvents','rows','windTextures','clientWidth','clearFramebuffers','speed','colors','lonRange','40035eqyAEc','width','FLOAT','forEach','show','127722WplVmg','blendFuncSource','colorTable','worker','createRawRenderState','particlesSpeed','DomUtil','length','segmentsColor','segmentsDepth','moveTo','createComputingPrimitives','setDate','shaderProgram','vmax','createRenderingTextures','textures','dynamic','attributeLocations','21cfWnbG','nextParticlesPosition','geometry','getDefaultRenderState','primitiveType','SRC_ALPHA','tlng','green','update','atan2','umin','createColorTableTexture','_map','value','destroy','createParticlesTextures','Rectangle','cancelAnimationFrame','mars3d-canvasWind','fragmentShaderSource','onParticlesTextureSizeChange','Math','scene','getDataAtLonLat','alt','updateOptions','_onMouseDownEvent','createPrimitives','layer','postProcessingPosition','sources','_calc_speedRate','xmax','Cesium','currentParticlesPosition','bounds','getSegmentDrawVertexShader','24872ufNQDu','dropRate','beginPath','create','_updateIng2','frameRate','commandList','abs','clientHeight','type','windField','updateViewerParameters','UNSIGNED_BYTE','off','_drawLines','NEAREST','morphComplete','componentsPerAttribute','globalAlpha','container','cols','maxAge','pixelSize','_setOptionsHook','canvasWidth','viewerParameters','primitives','previousParticlesPosition','createCommand','computing','strokeStyle','particles','Compute','fill','mouse_down','_animateFrame','ymax','requestRender','_createCanvas','LayerUtil','prototype','pixelFormat','createRenderingFramebuffers','updatePosition','udata','lng','min\x20is\x20undefined,\x20calculate\x20min','getSegmentDrawFragmentShader','color','80452pxbzxx','rendering','north','LINEAR','context','isDynamic','getPostProcessingPositionShader','flipY','keys','age','lineLength','172641QpHKGy','persists','logInfo','vertexShaderSource','west','sin','cartesianToCartographic','owner','normal','mouseDown','mouseHidden','data','framebuffer','style','canvasContext','depthTest','_maxAge','ymin','__esModule','createSegmentsGeometry','applyViewerParameters','none','setData','fromDegrees','willReadFrequently','ellipsoid','frameRateMonitor','east','_onMapWhellEvent','pointerEvents','samplingWindow','round','zIndex','xmin','_calcUV','left','CLAMP_TO_EDGE','rectangle','SceneMode','minificationFilter','_onMouseUpEvent','isPointVisible','particlesTextures','_tomap','blue','destroyParticlesTextures','commandToExecute','particlesNumber','positionWC','windData','vmin','globe','warn','_canvasParticles','stroke','mouse_move','2110745qnidZq','refreshTimer','default','pass','min','bindEvent','getCalculateSpeedShader','RGBA','clear','log','stringify','wrapS','values','outputTexture','uniformMap','getUVByPoint','_addedHook','changeOptions','_onMouseMoveEvent','latitude','drawingBufferHeight','push','options','STATIC_DRAW','particleSystem','resize','ColorRamp','framebuffers','call','add','mouseMove','fromCssColorString','rawRenderState','camera','_colorRamp'];_0x42eb=function(){return _0x8fba67;};return _0x42eb();}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace['Cesium'];class WindParticlesRendering{constructor(_0x4ea07e,_0x1d0507,_0x43c416,_0x468341){this['context']=_0x4ea07e,this[_0x5c2cba(-0x188,-0x1f7)]=_0x1d0507,this[_0x5b4113(-0x2de,-0x27e)]=_0x43c416;function _0x5c2cba(_0x43670f,_0x49c9d6){return _0x259635(_0x43670f,_0x49c9d6- -0x7b0);}this['computing']=_0x468341;(typeof this['options']['particlesTextureSize']!=='number'||this['options']['particlesTextureSize']<=0x0)&&(console['error']('Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.'),this['options'][_0x5c2cba(-0x319,-0x2f8)]=0x100);function _0x5b4113(_0x35d7ca,_0x2c36ee){return _0x259635(_0x35d7ca,_0x2c36ee- -0x7c6);}this['colorTable']=this['createColorTableTexture'](),this[_0x5c2cba(-0x2c0,-0x2a9)]=this[_0x5b4113(-0x2a7,-0x2c0)](),this['framebuffers']=this[_0x5b4113(-0x219,-0x26d)](),this['primitives']=this[_0x5c2cba(-0x23a,-0x28b)]();}[_0x259635(0x512,0x506)](){const _0x42ba3c={};_0x42ba3c['context']=this['context'],_0x42ba3c['width']=this[_0x1fdfb4(0x2d2,0x2fe)]['drawingBufferWidth'],_0x42ba3c[_0x32d320(-0x61,-0xb7)]=this[_0x1fdfb4(0x384,0x2fe)][_0x1fdfb4(0x307,0x351)],_0x42ba3c[_0x32d320(0x13,0x7d)]=PixelFormat['RGBA'];function _0x32d320(_0x31de9e,_0x333676){return _0x5ba876(_0x31de9e- -0x18c,_0x333676);}_0x42ba3c['pixelDatatype']=PixelDatatype[_0x1fdfb4(0x31f,0x2d5)];const _0x57d6ba=_0x42ba3c,_0x350afd={};_0x350afd['context']=this['context'],_0x350afd[_0x1fdfb4(0x293,0x28d)]=this['context']['drawingBufferWidth'];function _0x1fdfb4(_0x44f366,_0x38a1b4){return _0x259635(_0x44f366,_0x38a1b4- -0x266);}_0x350afd['height']=this[_0x1fdfb4(0x349,0x2fe)][_0x1fdfb4(0x36b,0x351)],_0x350afd['pixelFormat']=PixelFormat['DEPTH_COMPONENT'],_0x350afd['pixelDatatype']=PixelDatatype[_0x32d320(-0x6c,-0xef)];const _0x2b8c26=_0x350afd;return{'segmentsColor':new Texture(_0x57d6ba),'segmentsDepth':new Texture(_0x2b8c26)};}['createRenderingFramebuffers'](){const _0x552ab9={};_0x552ab9['context']=this[_0xdb588e(0x142,0x112)];function _0x5e7b44(_0x1ffcdf,_0x551812){return _0x259635(_0x1ffcdf,_0x551812- -0x26f);}_0x552ab9['colorTextures']=[this['textures'][_0x5e7b44(0x315,0x290)]];function _0xdb588e(_0x2601fb,_0x23783e){return _0x5ba876(_0x2601fb- -0x69,_0x23783e);}return _0x552ab9['depthTexture']=this[_0x5e7b44(0x2bd,0x298)][_0x5e7b44(0x28a,0x291)],{'segments':new Framebuffer(_0x552ab9)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x148a26=>{_0x148a26['destroy']();});}[_0x259635(0x506,0x515)](){const _0x400b53=new Float32Array(this[_0x3be0e1(-0x113,-0x13c)]['colors']['flatMap'](_0x1df3d4=>{function _0x5d6840(_0x3541e8,_0x45fed6){return _0x3be0e1(_0x45fed6-0x4b2,_0x3541e8);}const _0x5bfa6d=Color$1[_0x5d6840(0x339,0x3a8)](_0x1df3d4);function _0x496779(_0x28e3a7,_0x103f02){return _0x3be0e1(_0x28e3a7-0x2e7,_0x103f02);}return[_0x5bfa6d['red'],_0x5bfa6d[_0x5d6840(0x2d5,0x2f7)],_0x5bfa6d[_0x496779(0x1b2,0x197)],_0x5bfa6d['alpha']];}));function _0x3b69b7(_0x5ed4c7,_0x4dacc0){return _0x259635(_0x4dacc0,_0x5ed4c7- -0x54b);}function _0x3be0e1(_0x56b03a,_0x3fdc6e){return _0x259635(_0x3fdc6e,_0x56b03a- -0x6cc);}const _0xefa5e1={};return _0xefa5e1[_0x3be0e1(-0x13a,-0xe7)]=TextureMinificationFilter[_0x3be0e1(-0x169,-0xfe)],_0xefa5e1['magnificationFilter']=TextureMagnificationFilter['LINEAR'],_0xefa5e1[_0x3b69b7(0x63,0x18)]=TextureWrap[_0x3be0e1(-0x13d,-0x180)],_0xefa5e1['wrapT']=TextureWrap['CLAMP_TO_EDGE'],new Texture({'context':this[_0x3be0e1(-0x168,-0x1b0)],'width':this['options']['colors']['length'],'height':0x1,'pixelFormat':PixelFormat[_0x3b69b7(0x5f,-0x10)],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0xefa5e1),'source':{'width':this[_0x3b69b7(0x6e,0x46)][_0x3be0e1(-0x1dc,-0x15c)]['length'],'height':0x1,'arrayBufferView':_0x400b53}});}['createSegmentsGeometry'](){const _0x2b67ee=0x4,_0x113b44=this['options']['particlesTextureSize'];let _0x363389=[];for(let _0x2d2c1d=0x0;_0x2d2c1d<_0x113b44;_0x2d2c1d++){for(let _0x4d290e=0x0;_0x4d290e<_0x113b44;_0x4d290e++){for(let _0x7e711b=0x0;_0x7e711b<_0x2b67ee;_0x7e711b++){_0x363389['push'](_0x2d2c1d/_0x113b44),_0x363389['push'](_0x4d290e/_0x113b44);}}}_0x363389=new Float32Array(_0x363389);const _0x11e4e1=this['options'][_0x425a3a(0x4c7,0x4ae)]**0x2;let _0x54e592=[];for(let _0x272755=0x0;_0x272755<_0x11e4e1;_0x272755++){_0x54e592['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x54e592=new Float32Array(_0x54e592);let _0x95855b=[];for(let _0xde36ec=0x0,_0x577dbe=0x0;_0xde36ec<_0x11e4e1;_0xde36ec++){_0x95855b['push'](_0x577dbe+0x0,_0x577dbe+0x1,_0x577dbe+0x2,_0x577dbe+0x2,_0x577dbe+0x1,_0x577dbe+0x3),_0x577dbe+=_0x2b67ee;}_0x95855b=new Uint32Array(_0x95855b);const _0x5dc57f={};_0x5dc57f['componentDatatype']=ComponentDatatype['FLOAT'],_0x5dc57f[_0x42fd17(0x6a,0xeb)]=0x2,_0x5dc57f['values']=_0x363389;const _0x1db07d={};_0x1db07d['componentDatatype']=ComponentDatatype[_0x42fd17(0x1e,0x6d)],_0x1db07d['componentsPerAttribute']=0x3;function _0x425a3a(_0x58e84c,_0x26c81f){return _0x259635(_0x58e84c,_0x26c81f- -0xa);}function _0x42fd17(_0x3b0a18,_0x38bf6f){return _0x5ba876(_0x3b0a18- -0x11d,_0x38bf6f);}_0x1db07d['values']=_0x54e592;const _0x507225=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x5dc57f),'normal':new GeometryAttribute(_0x1db07d)}),'indices':_0x95855b});return _0x507225;}['createRawRenderState'](_0x39182a){const _0x134de7={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x39182a};function _0x3d0b71(_0x34ce1c,_0x2d13a7){return _0x259635(_0x34ce1c,_0x2d13a7- -0x313);}return Appearance[_0x3d0b71(0x1bc,0x1fa)](!![],![],_0x134de7);}['createPrimitives'](){const _0x1ad51f={};_0x1ad51f['st']=0x0,_0x1ad51f[_0x4ae1f4(0x14d,0xe5)]=0x1;const _0x51c570={};_0x51c570['enabled']=!![];function _0x5ba460(_0x5c6631,_0x59c86a){return _0x259635(_0x59c86a,_0x5c6631- -0x19c);}const _0x524e4e={};_0x524e4e[_0x5ba460(0x32a,0x2ce)]=!![],_0x524e4e['blendEquation']=WebGLRenderingContext['FUNC_ADD'],_0x524e4e[_0x5ba460(0x35c,0x3da)]=WebGLRenderingContext[_0x4ae1f4(0xe9,0x13f)],_0x524e4e['blendFuncDestination']=WebGLRenderingContext[_0x4ae1f4(0x94,0x18)];const _0x5ccddc={};function _0x4ae1f4(_0x37aeb4,_0x2ce09a){return _0x5ba876(_0x37aeb4- -0x6d,_0x2ce09a);}_0x5ccddc[_0x5ba460(0x342,0x36b)]=undefined,_0x5ccddc[_0x4ae1f4(0x154,0x175)]=_0x51c570,_0x5ccddc['depthMask']=!![],_0x5ccddc[_0x5ba460(0x33e,0x3be)]=_0x524e4e;const _0x15eadc=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x1ad51f,'geometry':this[_0x4ae1f4(0x158,0x12b)](),'primitiveType':PrimitiveType['TRIANGLES'],'uniformMap':{'previousParticlesPosition':()=>this[_0x5ba460(0x3b0,0x3a0)]['particlesTextures'][_0x5ba460(0x3ae,0x3a4)],'currentParticlesPosition':()=>this['computing'][_0x4ae1f4(0x16f,0xe8)][_0x5ba460(0x390,0x340)],'postProcessingPosition':()=>this['computing'][_0x5ba460(0x3f9,0x43c)]['postProcessingPosition'],'particlesSpeed':()=>this['computing']['particlesTextures']['particlesSpeed'],'frameRateAdjustment':()=>this['computing']['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{function _0x3bf7e5(_0xa90fe7,_0xdfbd52){return _0x4ae1f4(_0xa90fe7- -0x63,_0xdfbd52);}function _0x42086d(_0x5475fb,_0x2b84fd){return _0x4ae1f4(_0x5475fb-0x82,_0x2b84fd);}var _0x135a83,_0x2cb7ee;const _0x4cb380=new Cartesian2(((_0x135a83=this[_0x3bf7e5(0x130,0x1b5)]['domain'])===null||_0x135a83===void 0x0?void 0x0:_0x135a83['min'])??this['computing']['windData']['speed']['min'],((_0x2cb7ee=this[_0x42086d(0x215,0x1b8)]['domain'])===null||_0x2cb7ee===void 0x0?void 0x0:_0x2cb7ee['max'])??this[_0x42086d(0x1a8,0x20e)]['windData'][_0x42086d(0x14b,0x131)][_0x3bf7e5(0x35,0x4f)]);return _0x4cb380;},'displayRange':()=>{var _0x1e5ec2,_0x511d23;function _0x30202f(_0x3572a4,_0x238908){return _0x5ba460(_0x238908- -0x351,_0x3572a4);}function _0x311cad(_0x454097,_0x5500db){return _0x4ae1f4(_0x5500db-0x3e3,_0x454097);}const _0x33318f=new Cartesian2(((_0x1e5ec2=this['options']['displayRange'])===null||_0x1e5ec2===void 0x0?void 0x0:_0x1e5ec2['min'])??this['computing'][_0x30202f(0x52,0xaf)]['speed'][_0x30202f(0xd9,0xba)],((_0x511d23=this['options']['displayRange'])===null||_0x511d23===void 0x0?void 0x0:_0x511d23[_0x30202f(-0x2e,-0x2f)])??this['computing'][_0x30202f(0x125,0xaf)]['speed']['max']);return _0x33318f;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x4ae1f4(0x13e,0x17b)]['drawingBufferWidth']/this[_0x4ae1f4(0x13e,0x197)][_0x4ae1f4(0x191,0x112)],'pixelSize':()=>this[_0x5ba460(0x3ac,0x409)][_0x5ba460(0x3a9,0x417)],'lineWidth':()=>{function _0x5704db(_0x47b0e2,_0x3c551c){return _0x5ba460(_0x47b0e2- -0x342,_0x3c551c);}const _0x1db54d={};_0x1db54d[_0x31df9a(-0x1c8,-0x167)]=0x1,_0x1db54d['max']=0x2;function _0x31df9a(_0x2897a9,_0x33d610){return _0x4ae1f4(_0x33d610- -0x2e8,_0x2897a9);}const _0xae1389=this['options'][_0x31df9a(-0x202,-0x232)]||_0x1db54d;return new Cartesian2(_0xae1389['min'],_0xae1389[_0x5704db(-0x20,-0x3a)]);},'lineLength':()=>{const _0x15c00c={};_0x15c00c[_0xd629b5(-0x54,-0xbc)]=0x14,_0x15c00c[_0xd629b5(-0x13d,-0x109)]=0x64;function _0xd629b5(_0x27bfd8,_0xca2217){return _0x4ae1f4(_0x27bfd8- -0x1d5,_0xca2217);}function _0x584b66(_0x17f18b,_0x3d06f6){return _0x5ba460(_0x17f18b- -0x61c,_0x3d06f6);}const _0x3afd4f=this[_0x584b66(-0x1ff,-0x17e)][_0xd629b5(-0x91,-0xeb)]||_0x15c00c;return new Cartesian2(_0x3afd4f['min'],_0x3afd4f['max']);},'is3D':()=>this[_0x5ba460(0x3ac,0x3d2)]['sceneMode']===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this[_0x4ae1f4(0xe1,0x152)][_0x4ae1f4(0xda,0xae)]},'vertexShaderSource':ShaderManager[_0x4ae1f4(0x108,0x8c)](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this[_0x4ae1f4(0xd5,0x106)](_0x5ccddc)}),_0x4f67ea={};return _0x4f67ea['segments']=_0x15eadc,_0x4f67ea;}[_0x259635(0x55c,0x51e)](){const _0x5ab643=this['createSegmentsGeometry']();this['primitives'][_0x4dbbec(-0x19a,-0x1a7)][_0x5e9eb9(0x3a4,0x364)]=_0x5ab643;const _0x499599={};_0x499599[_0x5e9eb9(0x3ff,0x3bc)]=this[_0x4dbbec(-0x117,-0x133)];function _0x5e9eb9(_0x28a398,_0x20304b){return _0x5ba876(_0x20304b-0x211,_0x28a398);}_0x499599[_0x5e9eb9(0x3dc,0x364)]=_0x5ab643;function _0x4dbbec(_0x47fe85,_0x49ea84){return _0x5ba876(_0x47fe85- -0x2c2,_0x49ea84);}_0x499599[_0x4dbbec(-0x172,-0x106)]=this[_0x5e9eb9(0x426,0x3a1)][_0x4dbbec(-0x19a,-0x163)][_0x4dbbec(-0x172,-0x15f)],_0x499599['bufferUsage']=BufferUsage['STATIC_DRAW'];const _0x2cee5a=VertexArray[_0x5e9eb9(0x311,0x320)](_0x499599);this['primitives'][_0x5e9eb9(0x308,0x339)]['commandToExecute']&&(this['primitives']['segments']['commandToExecute']['vertexArray']=_0x2cee5a);}['onColorTableChange'](){this[_0x467391(-0x24a,-0x2ae)]['destroy']();function _0x467391(_0x1788cf,_0x2c2ae8){return _0x5ba876(_0x2c2ae8- -0x3ee,_0x1788cf);}function _0xe83e03(_0x328db2,_0x4db9ba){return _0x259635(_0x328db2,_0x4db9ba- -0x182);}this[_0x467391(-0x2ee,-0x2ae)]=this[_0xe83e03(0x333,0x393)]();}[_0x5ba876(0x16a,0x1e8)](_0x42b751){function _0x430d2e(_0x70f130,_0x2313e0){return _0x259635(_0x70f130,_0x2313e0- -0x56);}const _0xadd656=_0x42b751['colors']&&JSON['stringify'](_0x42b751[_0x430d2e(0x46c,0x49a)])!==JSON[_0x4082c6(0xee,0x9e)](this['options'][_0x4082c6(0x45,-0x1f)]);this[_0x4082c6(0xc0,0xaa)]=deepMerge(_0x42b751,this['options']);function _0x4082c6(_0x475704,_0xc4de5f){return _0x5ba876(_0xc4de5f- -0x156,_0x475704);}_0xadd656&&this['onColorTableChange']();}['destroy'](){Object['values'](this[_0x4ab28b(-0xfd,-0x177)])[_0x4ab28b(-0x27f,-0x240)](_0x220c70=>{_0x220c70['destroy']();});function _0xf9753c(_0x18f09b,_0x3e53ee){return _0x5ba876(_0x3e53ee-0x20,_0x18f09b);}Object['values'](this[_0xf9753c(0x18e,0x1b0)])[_0xf9753c(0x1b7,0x15c)](_0x49f69a=>{_0x49f69a['destroy']();});function _0x4ab28b(_0x278129,_0x569776){return _0x259635(_0x278129,_0x569776- -0x735);}this['colorTable'][_0x4ab28b(-0x1f3,-0x21d)]();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0x5ba876(0x172,0x139)];class WindParticleSystem{constructor(_0x3a1349,_0x329a77,_0x493699,_0x2fdd24,_0x5b4ab7){function _0x4a19f9(_0x2b6c68,_0x356860){return _0x5ba876(_0x2b6c68- -0x3d0,_0x356860);}this['context']=_0x3a1349;function _0x358e07(_0x15de93,_0x2ee9a8){return _0x5ba876(_0x2ee9a8-0x249,_0x15de93);}this['options']=_0x493699,this[_0x358e07(0x402,0x3d8)]=_0x2fdd24,this['computing']=new WindParticlesComputing(_0x3a1349,_0x329a77,_0x493699,_0x2fdd24,_0x5b4ab7),this[_0x4a19f9(-0x228,-0x293)]=new WindParticlesRendering(_0x3a1349,_0x493699,_0x2fdd24,this['computing']),this['clearFramebuffers']();}['getPrimitives'](){function _0xc1fe62(_0x37c2fe,_0x16612a){return _0x259635(_0x16612a,_0x37c2fe- -0x6ca);}function _0x350e4e(_0x39ab50,_0x256658){return _0x5ba876(_0x39ab50- -0x139,_0x256658);}const _0x24ad2c=[this['computing'][_0x350e4e(0x57,0x4f)]['calculateSpeed'],this[_0xc1fe62(-0x17e,-0x146)]['primitives'][_0xc1fe62(-0x170,-0x15b)],this['computing']['primitives']['postProcessingPosition'],this['rendering'][_0x350e4e(0x57,0x86)]['segments']];return _0x24ad2c;}[_0x259635(0x545,0x4ee)](){function _0x41a3d8(_0x55ce8,_0x32f9a8){return _0x5ba876(_0x55ce8-0x12c,_0x32f9a8);}const _0x4ec1ab=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass[_0x41a3d8(0x259,0x20b)]});function _0x58144b(_0x4cd07e,_0x591d46){return _0x5ba876(_0x4cd07e-0x2c3,_0x591d46);}Object[_0x41a3d8(0x2db,0x35f)](this[_0x58144b(0x46b,0x4ad)]['framebuffers'])['forEach'](_0x5915d3=>{_0x4ec1ab['framebuffer']=this['rendering']['framebuffers'][_0x5915d3],_0x4ec1ab['execute'](this['context']);});}[_0x5ba876(0x1fb,0x17c)](_0x4ae9e5){let _0x25edf6=![];function _0x109ad7(_0x2da48b,_0x9dc77a){return _0x5ba876(_0x9dc77a-0x3ac,_0x2da48b);}_0x4ae9e5[_0x39993a(0x23f,0x255)]&&this['options'][_0x109ad7(0x45f,0x4ab)]!==_0x4ae9e5['particlesTextureSize']&&(_0x25edf6=!![]);const _0x380505=deepMerge(_0x4ae9e5,this['options']);if(_0x380505['particlesTextureSize']<0x1)throw new Error('particlesTextureSize\x20must\x20be\x20greater\x20than\x200');function _0x39993a(_0x1f2ee2,_0x31122d){return _0x5ba876(_0x31122d-0x156,_0x1f2ee2);}this['options']=_0x380505,this['rendering']['updateOptions'](_0x4ae9e5),this['computing']['updateOptions'](_0x4ae9e5),_0x25edf6&&(this['computing']['destroyParticlesTextures'](),this['computing'][_0x39993a(0x26f,0x2b6)](),this['rendering']['onParticlesTextureSizeChange']());}[_0x259635(0x5fe,0x57f)](_0x2cb207){function _0xc896db(_0x3e68d7,_0x5372b4){return _0x259635(_0x3e68d7,_0x5372b4- -0xe5);}this[_0x2c37eb(0x32,-0x29)]=_0x2cb207,this[_0xc896db(0x4ca,0x467)]['viewerParameters']=_0x2cb207;function _0x2c37eb(_0x4a43d6,_0x52d5e9){return _0x5ba876(_0x52d5e9- -0x1b8,_0x4a43d6);}this['rendering']['viewerParameters']=_0x2cb207;}['destroy'](){this[_0x47b953(-0xe5,-0x81)]['destroy']();function _0x5e31f1(_0x47b9ac,_0x469546){return _0x5ba876(_0x469546- -0xeb,_0x47b9ac);}function _0x47b953(_0x5be734,_0x1dbf41){return _0x5ba876(_0x5be734- -0x278,_0x1dbf41);}this[_0x5e31f1(0x80,0xbd)][_0x5e31f1(0x43,0x74)]();}}const Cesium$1=mars3d__namespace[_0x5ba876(0x172,0x1c0)],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],_0x1c4f26={};_0x1c4f26['min']=0x1,_0x1c4f26['max']=0x2;const _0x490a47={};_0x490a47['min']=0x14,_0x490a47['max']=0x64;const _0x409da0={};_0x409da0['particlesTextureSize']=0x64,_0x409da0['fixedHeight']=0x0,_0x409da0[_0x5ba876(0x123,0x1a5)]=_0x1c4f26,_0x409da0['lineLength']=_0x490a47,_0x409da0['speedFactor']=0x1,_0x409da0['dropRate']=0.003,_0x409da0['dropRateBump']=0.001;function _0x5ba876(_0x59b3fe,_0x131f18){return _0x17b6(_0x59b3fe-0x25,_0x131f18);}_0x409da0['colors']=['rgb(206,255,255)'],_0x409da0['flipY']=![],_0x409da0[_0x5ba876(0x14f,0x1d8)]=!![];function _0x17b6(_0x292342,_0x5a694a){const _0x42eb16=_0x42eb();return _0x17b6=function(_0x17b61f,_0x3e9ed0){_0x17b61f=_0x17b61f-0xd9;let _0x5a0b1c=_0x42eb16[_0x17b61f];return _0x5a0b1c;},_0x17b6(_0x292342,_0x5a694a);}const DEF_OPTIONS=_0x409da0;class WindLayer extends BaseLayer$1{constructor(_0x54b600={}){_0x54b600={...DEF_OPTIONS,..._0x54b600},super(_0x54b600),this['_setOptionsHook'](_0x54b600,_0x54b600);}get[_0x259635(0x4bd,0x526)](){return this['primitives'];}get[_0x5ba876(0x1bd,0x13d)](){function _0xa18af7(_0x586452,_0x5b58f7){return _0x259635(_0x5b58f7,_0x586452- -0x75e);}function _0x158cf1(_0x32b9b0,_0x2cc7d3){return _0x259635(_0x2cc7d3,_0x32b9b0- -0x3bf);}return this[_0x158cf1(0x1fa,0x181)][_0xa18af7(-0x1e8,-0x17d)];}set['data'](_0x51a088){this['options'][_0x30c431(0x4e5,0x4ce)]=_0x51a088;function _0x30c431(_0x458332,_0x5cac48){return _0x259635(_0x5cac48,_0x458332- -0x91);}function _0x33c5a4(_0x3de7b6,_0x3e7aa3){return _0x259635(_0x3de7b6,_0x3e7aa3- -0x67c);}this[_0x30c431(0x4f0,0x53f)](_0x51a088);}get['colors'](){function _0x19ea73(_0x36c14f,_0x4be91f){return _0x5ba876(_0x4be91f-0x361,_0x36c14f);}return this[_0x19ea73(0x5b2,0x561)]['colors'];}set[_0x5ba876(0x137,0x109)](_0x437f5b){function _0x7138f3(_0x53f10a,_0x1b013a){return _0x259635(_0x53f10a,_0x1b013a- -0x372);}this[_0x7138f3(0x20e,0x247)]['colors']=_0x437f5b;function _0x198364(_0x20a920,_0x26466e){return _0x259635(_0x20a920,_0x26466e- -0x457);}const _0x388dc0={};_0x388dc0[_0x198364(0x10d,0x99)]=_0x437f5b,this['_setOptionsHook'](this['options'],_0x388dc0);}[_0x5ba876(0x111,0x132)](_0x29f7ae){function _0x44176b(_0x1efd60,_0x43f766){return _0x259635(_0x43f766,_0x1efd60- -0x676);}_0x29f7ae?this['_addedHook']():this[_0x44176b(-0x19b,-0x128)]();}[_0x259635(0x489,0x4d4)](){}['_addedHook'](){this[_0x2f8923(0x3d1,0x390)]=this['_map']['scene'],this[_0x2f8923(0x475,0x495)]=this[_0xbf03e1(0x210,0x18f)]['camera'];function _0xbf03e1(_0x58af41,_0x2dd492){return _0x259635(_0x2dd492,_0x58af41- -0x306);}this[_0xbf03e1(0x2b3,0x2f6)][_0x2f8923(0x427,0x42f)]&&this[_0x2f8923(0x432,0x4b2)](this['options'][_0xbf03e1(0x270,0x2a7)]);if(!this['windData']||!this[_0x2f8923(0x3a7,0x33e)])return;this['viewerParameters']={'lonRange':new Cesium$1[(_0xbf03e1(0x1b3,0x14c))](-0xb4,0xb4),'latRange':new Cesium$1['Cartesian2'](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this['scene']['mode']},this['updateViewerParameters'](),this[_0xbf03e1(0x2b5,0x2f8)]=new WindParticleSystem(this[_0x2f8923(0x3d1,0x3ab)]['context'],this[_0xbf03e1(0x296,0x2a9)],this['options'],this['viewerParameters'],this[_0x2f8923(0x3d1,0x3ad)]),this[_0x2f8923(0x3fa,0x421)]=this[_0x2f8923(0x46c,0x3fa)]['getPrimitives'](),this['primitives']['forEach'](_0x519329=>{function _0xba55ee(_0x133704,_0x5d6914){return _0x2f8923(_0x133704- -0x40,_0x5d6914);}function _0x3f1ecf(_0x22da30,_0x3f02ec){return _0xbf03e1(_0x22da30- -0x4be,_0x3f02ec);}this[_0x3f1ecf(-0x2a4,-0x29c)][_0x3f1ecf(-0x27b,-0x29f)][_0x3f1ecf(-0x204,-0x183)](_0x519329);}),this['camera']['percentageChanged']=0.01,this['camera'][_0xbf03e1(0x1cd,0x23c)][_0xbf03e1(0x1df,0x189)](this[_0xbf03e1(0x234,0x1fd)]['bind'](this));function _0x2f8923(_0x5c8abe,_0x82710b){return _0x259635(_0x82710b,_0x5c8abe- -0x14f);}this['scene'][_0xbf03e1(0x239,0x29f)][_0xbf03e1(0x1df,0x22f)](this[_0xbf03e1(0x234,0x285)]['bind'](this)),window['addEventListener']('resize',this['updateViewerParameters'][_0xbf03e1(0x2c2,0x250)](this));}['_removedHook'](){function _0x32c756(_0x4cad63,_0x38cdee){return _0x259635(_0x4cad63,_0x38cdee- -0x61c);}function _0x60515e(_0x210ce1,_0x55636e){return _0x259635(_0x210ce1,_0x55636e- -0x33b);}this['camera'][_0x60515e(0x1e5,0x198)]['removeEventListener'](this['updateViewerParameters']['bind'](this)),this['scene'][_0x60515e(0x24f,0x204)]['removeEventListener'](this[_0x32c756(-0xbd,-0xe2)]['bind'](this)),window['removeEventListener'](_0x60515e(0x243,0x281),this['updateViewerParameters']['bind'](this)),this['primitives']&&(this['primitives']['forEach'](_0x324722=>{function _0x11cf44(_0x1bb997,_0x5966d3){return _0x32c756(_0x5966d3,_0x1bb997-0x1eb);}function _0x133f59(_0x2d38e5,_0x34d04a){return _0x60515e(_0x34d04a,_0x2d38e5- -0x215);}this['scene'][_0x11cf44(0x118,0x16e)][_0x11cf44(0x199,0x175)](_0x324722);}),delete this['primitives']),this[_0x32c756(-0x48,-0x61)]&&(this[_0x32c756(-0xaf,-0x61)]['destroy'](),delete this['particleSystem']);}['setData'](_0x51ed13,_0x349941){this['windData']=this['processWindData'](_0x51ed13);if(_0x349941){this['_removedHook'](),this[_0x4088ab(0x394,0x385)]();return;}function _0x4088ab(_0x25bb96,_0x2100db){return _0x259635(_0x25bb96,_0x2100db- -0x22e);}function _0x37ba76(_0x47347b,_0x12d014){return _0x259635(_0x47347b,_0x12d014- -0x15a);}this[_0x37ba76(0x409,0x461)]?(this[_0x4088ab(0x3ab,0x38d)]['computing']['updateWindData'](this['windData']),this['scene'][_0x37ba76(0x3cc,0x3fa)]()):this['_addedHook']();}['_setOptionsHook'](_0x1e75f9,_0x3af7b4){this['particleSystem']&&(this['particleSystem']['changeOptions'](_0x3af7b4),this['scene']['requestRender']());}[_0x259635(0x472,0x4c1)](_0x369a44){var _0x5a91c2,_0x2c7a49;const _0x22ca8a={..._0x369a44};function _0x189e71(_0x444ee0,_0x20bb5d){return _0x259635(_0x444ee0,_0x20bb5d- -0x3f9);}const _0x2e3b22=_0x22ca8a;!_0x2e3b22['height']&&_0x2e3b22['rows']&&(_0x2e3b22[_0x189e71(0x76,0xeb)]=_0x2e3b22[_0x189e71(0xb6,0xf2)]);function _0x6344be(_0x510869,_0x5e6866){return _0x5ba876(_0x5e6866-0x27,_0x510869);}!_0x2e3b22['width']&&_0x2e3b22['cols']&&(_0x2e3b22['width']=_0x2e3b22[_0x6344be(0x126,0x1b1)]);!_0x2e3b22[_0x189e71(0x165,0x134)]&&(_0x2e3b22['bounds']={'west':_0x2e3b22['xmin'],'south':_0x2e3b22['ymin'],'east':_0x2e3b22[_0x6344be(0x1fd,0x198)],'north':_0x2e3b22['ymax']});if(!_0x2e3b22['u']){const _0x27a6c3={};_0x27a6c3[_0x6344be(0xd8,0x145)]=_0x369a44[_0x189e71(0x148,0x162)],_0x27a6c3[_0x189e71(0x178,0x1ae)]=_0x369a44[_0x6344be(0x1d2,0x182)],_0x27a6c3[_0x6344be(0x186,0x12c)]=_0x369a44['umax'],_0x2e3b22['u']=_0x27a6c3;}if(!_0x2e3b22['v']){const _0x43e250={};_0x43e250[_0x6344be(0x15b,0x145)]=_0x369a44['vdata'],_0x43e250[_0x6344be(0x19c,0x215)]=_0x369a44[_0x189e71(0x120,0x1a4)],_0x43e250[_0x189e71(0x9e,0xc5)]=_0x369a44[_0x189e71(0x134,0x10c)],_0x2e3b22['v']=_0x43e250;}if(((_0x5a91c2=_0x2e3b22[_0x189e71(0x120,0xf6)])===null||_0x5a91c2===void 0x0?void 0x0:_0x5a91c2['min'])===undefined||((_0x2c7a49=_0x2e3b22['speed'])===null||_0x2c7a49===void 0x0?void 0x0:_0x2c7a49['max'])===undefined||_0x2e3b22[_0x189e71(0x8f,0xf6)]['array']===undefined){const _0x56f030={'array':new Float32Array(_0x2e3b22['u'][_0x6344be(0xd9,0x145)]['length']),'min':Number[_0x189e71(0xd5,0xef)],'max':Number['MIN_VALUE']};for(let _0x7b654e=0x0;_0x7b654e<_0x2e3b22['u'][_0x189e71(0x13e,0xde)][_0x189e71(0xa3,0x105)];_0x7b654e++){_0x56f030['array'][_0x7b654e]=Math['sqrt'](_0x2e3b22['u'][_0x6344be(0x128,0x145)][_0x7b654e]*_0x2e3b22['u'][_0x189e71(0xd4,0xde)][_0x7b654e]+_0x2e3b22['v']['array'][_0x7b654e]*_0x2e3b22['v']['array'][_0x7b654e]),_0x56f030[_0x6344be(0x1a4,0x145)][_0x7b654e]!==0x0&&(_0x56f030[_0x6344be(0x20c,0x215)]=Math['min'](_0x56f030[_0x6344be(0x1eb,0x215)],_0x56f030['array'][_0x7b654e]),_0x56f030['max']=Math['max'](_0x56f030['max'],_0x56f030['array'][_0x7b654e]));}_0x2e3b22['speed']=_0x56f030;}return _0x2e3b22;}['updateViewerParameters'](){var _0xbbd40;const _0x1c40c1=this[_0x36f9bb(0x3a2,0x317)];if(!_0x1c40c1)return;function _0x36f9bb(_0x13b5ab,_0x33dc38){return _0x5ba876(_0x13b5ab-0x23b,_0x33dc38);}const _0x20584b=_0x1c40c1['canvas'],_0x528832={};_0x528832['x']=0x0,_0x528832['y']=0x0;const _0x1ba87c={};function _0x42d717(_0xd1cda0,_0x58d04f){return _0x259635(_0x58d04f,_0xd1cda0- -0x610);}_0x1ba87c['x']=0x0,_0x1ba87c['y']=_0x20584b['clientHeight'];const _0x2563f9={};_0x2563f9['x']=_0x20584b['clientWidth'],_0x2563f9['y']=0x0;const _0x400964={};_0x400964['x']=_0x20584b[_0x42d717(-0x123,-0x104)],_0x400964['y']=_0x20584b['clientHeight'];const _0x470ca4=[_0x528832,_0x1ba87c,_0x2563f9,_0x400964];let _0x5b98f9=0xb4,_0x3f957f=-0xb4,_0x5244f4=0x5a,_0x3b300b=-0x5a,_0x4f11b4=![];for(const _0x412d0f of _0x470ca4){const _0x138d6a=_0x1c40c1['camera']['pickEllipsoid'](new Cesium$1['Cartesian2'](_0x412d0f['x'],_0x412d0f['y']),_0x1c40c1['globe'][_0x36f9bb(0x406,0x46d)]);if(!_0x138d6a){_0x4f11b4=!![];break;}const _0x11412f=_0x1c40c1[_0x36f9bb(0x420,0x3d5)]['ellipsoid'][_0x42d717(-0x9f,-0xcf)](_0x138d6a),_0x309f7b=Cesium$1['Math']['toDegrees'](_0x11412f['longitude']),_0x118314=Cesium$1['Math']['toDegrees'](_0x11412f[_0x42d717(-0x5a,-0x83)]);_0x5b98f9=Math['min'](_0x5b98f9,_0x309f7b),_0x3f957f=Math['max'](_0x3f957f,_0x309f7b),_0x5244f4=Math['min'](_0x5244f4,_0x118314),_0x3b300b=Math['max'](_0x3b300b,_0x118314);}if(!_0x4f11b4){const _0x56ba8e=new Cesium$1[(_0x42d717(-0x157,-0x1db))](Math['max'](this['windData'][_0x42d717(-0xe3,-0x124)]['west'],_0x5b98f9),Math['min'](this[_0x36f9bb(0x41e,0x471)]['bounds'][_0x36f9bb(0x408,0x389)],_0x3f957f)),_0x1d8ddf=new Cesium$1['Cartesian2'](Math[_0x36f9bb(0x340,0x300)](this['windData'][_0x42d717(-0xe3,-0xdf)]['south'],_0x5244f4),Math['min'](this['windData']['bounds'][_0x42d717(-0xae,-0x35)],_0x3b300b)),_0x402bd2=(_0x56ba8e['y']-_0x56ba8e['x'])*0.05,_0x233a67=(_0x1d8ddf['y']-_0x1d8ddf['x'])*0.05;_0x56ba8e['x']=Math[_0x36f9bb(0x340,0x2f0)](this[_0x42d717(-0x74,-0xaa)]['bounds'][_0x42d717(-0xa1,-0x56)],_0x56ba8e['x']-_0x402bd2),_0x56ba8e['y']=Math[_0x36f9bb(0x429,0x449)](this[_0x42d717(-0x74,-0xb2)]['bounds']['east'],_0x56ba8e['y']+_0x402bd2),_0x1d8ddf['x']=Math['max'](this[_0x42d717(-0x74,-0xde)][_0x36f9bb(0x3af,0x38b)][_0x42d717(-0x133,-0x1a1)],_0x1d8ddf['x']-_0x233a67),_0x1d8ddf['y']=Math['min'](this['windData']['bounds']['north'],_0x1d8ddf['y']+_0x233a67),this['viewerParameters'][_0x42d717(-0x11f,-0x19e)]=_0x56ba8e,this['viewerParameters']['latRange']=_0x1d8ddf;const _0x26b184=this['windData']['bounds']['east']-this[_0x42d717(-0x74,-0x54)][_0x42d717(-0xe3,-0x93)]['west'],_0x4318b2=this[_0x42d717(-0x74,-0x59)][_0x36f9bb(0x3af,0x3ea)]['north']-this[_0x42d717(-0x74,-0x4b)][_0x36f9bb(0x3af,0x347)]['south'],_0x37d77c=(_0x56ba8e['y']-_0x56ba8e['x'])/_0x26b184,_0x56af0c=(_0x1d8ddf['y']-_0x1d8ddf['x'])/_0x4318b2,_0x55a6ae=Math['min'](_0x37d77c,_0x56af0c),_0x22c52f=0x3e8*_0x55a6ae;_0x22c52f>0x0&&(this[_0x42d717(-0xc8,-0x103)]['pixelSize']=Math[_0x42d717(-0x152,-0x171)](0x0,Math['min'](0x3e8,_0x22c52f)));}this['viewerParameters']['sceneMode']=this['scene'][_0x42d717(-0x140,-0x150)],(_0xbbd40=this[_0x42d717(-0x55,-0x84)])===null||_0xbbd40===void 0x0||_0xbbd40[_0x42d717(-0x91,-0x5b)](this['viewerParameters']);}[_0x5ba876(0x168,0xf1)](_0x122ddb,_0x471c1b){const {bounds:_0x173105,width:_0x2ab400,height:_0x3ad637,u:_0x2d711f,v:_0x4cd318,speed:_0x5a9995}=this[_0x2e0021(0x51b,0x492)],{flipY:_0x2483d4}=this['options'];if(_0x122ddb<_0x173105['west']||_0x122ddb>_0x173105[_0x220942(0x17e,0x164)]||_0x471c1b<_0x173105['south']||_0x471c1b>_0x173105[_0x2e0021(0x46e,0x458)])return null;const _0x12fd7a=(_0x122ddb-_0x173105['west'])/(_0x173105['east']-_0x173105[_0x220942(0x173,0x14d)])*(_0x2ab400-0x1);let _0x4ab612=(_0x471c1b-_0x173105[_0x2e0021(0x399,0x3d3)])/(_0x173105['north']-_0x173105['south'])*(_0x3ad637-0x1);_0x2483d4&&(_0x4ab612=_0x3ad637-0x1-_0x4ab612);const _0x4945ff=Math['floor'](_0x12fd7a),_0x38d0b3=Math['floor'](_0x4ab612);function _0x220942(_0x5d747b,_0x443a33){return _0x5ba876(_0x443a33- -0x69,_0x5d747b);}const _0x540a9b=Math[_0x2e0021(0x355,0x3bf)](_0x12fd7a),_0x3b07db=Math[_0x2e0021(0x489,0x49d)](_0x540a9b+0x1,_0x2ab400-0x1),_0x6b36fb=Math['floor'](_0x4ab612),_0x2093aa=Math[_0x220942(0x19a,0x185)](_0x6b36fb+0x1,_0x3ad637-0x1),_0x3e8544=_0x12fd7a-_0x540a9b,_0x22f481=_0x4ab612-_0x6b36fb,_0x3176e7=_0x38d0b3*_0x2ab400+_0x4945ff,_0x4e523c=_0x6b36fb*_0x2ab400+_0x540a9b,_0x6e8b87=_0x6b36fb*_0x2ab400+_0x3b07db,_0x4aef87=_0x2093aa*_0x2ab400+_0x540a9b,_0x41d25b=_0x2093aa*_0x2ab400+_0x3b07db,_0x44259e=_0x2d711f['array'][_0x4e523c],_0x2b18c7=_0x2d711f['array'][_0x6e8b87],_0x873bb7=_0x2d711f[_0x2e0021(0x442,0x3cd)][_0x4aef87],_0x1a2737=_0x2d711f['array'][_0x41d25b],_0x14e5d6=(0x1-_0x3e8544)*(0x1-_0x22f481)*_0x44259e+_0x3e8544*(0x1-_0x22f481)*_0x2b18c7+(0x1-_0x3e8544)*_0x22f481*_0x873bb7+_0x3e8544*_0x22f481*_0x1a2737,_0x58a5cb=_0x4cd318[_0x2e0021(0x42d,0x3cd)][_0x4e523c],_0x248279=_0x4cd318[_0x220942(0xa8,0xb5)][_0x6e8b87],_0x47acf5=_0x4cd318['array'][_0x4aef87],_0x4c728e=_0x4cd318[_0x220942(0xe0,0xb5)][_0x41d25b],_0x49164a=(0x1-_0x3e8544)*(0x1-_0x22f481)*_0x58a5cb+_0x3e8544*(0x1-_0x22f481)*_0x248279+(0x1-_0x3e8544)*_0x22f481*_0x47acf5+_0x3e8544*_0x22f481*_0x4c728e,_0x2e046d=Math['sqrt'](_0x14e5d6*_0x14e5d6+_0x49164a*_0x49164a),_0x43461e={};_0x43461e['u']=_0x2d711f[_0x2e0021(0x442,0x3cd)][_0x3176e7],_0x43461e['v']=_0x4cd318['array'][_0x3176e7],_0x43461e['speed']=_0x5a9995['array'][_0x3176e7];const _0x1cd010={};_0x1cd010['u']=_0x14e5d6;function _0x2e0021(_0x2b51d2,_0x3eef3d){return _0x259635(_0x2b51d2,_0x3eef3d- -0x10a);}_0x1cd010['v']=_0x49164a,_0x1cd010['speed']=_0x2e046d;const _0x27f535={};return _0x27f535['original']=_0x43461e,_0x27f535['interpolated']=_0x1cd010,_0x27f535;}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this[_0x11811d(0x23b,0x1f1)]=null,this[_0x2e6262(-0x3,0x75)]=null,this[_0x11811d(0x1ef,0x174)]=null;function _0x11811d(_0x3fda90,_0xb527c0){return _0x259635(_0xb527c0,_0x3fda90- -0x321);}this['tlat']=null,this['age']=null;function _0x2e6262(_0x335163,_0x5b9e23){return _0x259635(_0x335163,_0x5b9e23- -0x45a);}this['speed']=null;}['destroy'](){for(const _0x3394e7 in this){delete this[_0x3394e7];}}}class CanvasWindField{constructor(_0x2ab94f){this['setOptions'](_0x2ab94f);}get['speedRate'](){return this['_speedRate'];}set[_0x5ba876(0x20d,0x288)](_0x50e5d0){function _0x3758f2(_0x53c065,_0x4fd2da){return _0x259635(_0x53c065,_0x4fd2da- -0x193);}this[_0x3758f2(0x35e,0x339)]=(0x64-(_0x50e5d0>0x63?0x63:_0x50e5d0))*0x64;function _0x59d798(_0x163a1a,_0x51098a){return _0x259635(_0x163a1a,_0x51098a- -0xa1);}this['_calc_speedRate']=[(this[_0x59d798(0x4f3,0x489)]-this['xmin'])/this[_0x3758f2(0x356,0x339)],(this['ymax']-this[_0x3758f2(0x3e9,0x3e9)])/this[_0x59d798(0x3a2,0x42b)]];}get[_0x5ba876(0x18b,0x193)](){function _0x437174(_0x84791,_0x12bf55){return _0x259635(_0x84791,_0x12bf55- -0x397);}return this[_0x437174(0x208,0x1e4)];}set[_0x5ba876(0x18b,0x1a7)](_0x16cc91){function _0x1da867(_0x52dd0d,_0x422a11){return _0x5ba876(_0x422a11- -0x132,_0x52dd0d);}this[_0x1da867(0xd0,0x90)]=_0x16cc91;}['setOptions'](_0x1540c5){this[_0x5b5237(-0x6f,0x13)]=_0x1540c5;function _0x3d2808(_0x3ad53e,_0x45d0da){return _0x5ba876(_0x3ad53e-0x36f,_0x45d0da);}this[_0x3d2808(0x4fa,0x47a)]=_0x1540c5['maxAge']||0x78,this['speedRate']=_0x1540c5[_0x5b5237(-0x11,0x20)]||0x32;function _0x5b5237(_0x390876,_0x26ad2c){return _0x259635(_0x390876,_0x26ad2c- -0x5a6);}this['particles']=[];const _0x53f157=_0x1540c5[_0x3d2808(0x550,0x4fe)]||0x1000;for(let _0x413bad=0x0;_0x413bad<_0x53f157;_0x413bad++){const _0xe0f1e0=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0xe0f1e0);}}['setDate'](_0x38de7c){this['rows']=_0x38de7c['rows'],this['cols']=_0x38de7c['cols'],this[_0xbd3912(0x8f,0x87)]=_0x38de7c['xmin'],this['xmax']=_0x38de7c['xmax'],this[_0x8e2639(-0x125,-0x132)]=_0x38de7c[_0x8e2639(-0xbc,-0x132)],this[_0xbd3912(0x2,0x4e)]=_0x38de7c[_0xbd3912(0x1e,0x4e)],this[_0x8e2639(-0x1c1,-0x1ec)]=[];const _0xabd4c8=_0x38de7c['udata'],_0x153950=_0x38de7c['vdata'];function _0x8e2639(_0x366dfb,_0x19c5c2){return _0x259635(_0x366dfb,_0x19c5c2- -0x6ae);}function _0xbd3912(_0x3bc9f9,_0x4f8bd8){return _0x259635(_0x3bc9f9,_0x4f8bd8- -0x505);}let _0x240114=![];_0xabd4c8[_0x8e2639(-0x1df,-0x1b0)]===this['rows']&&_0xabd4c8[0x0]['length']===this['cols']&&(_0x240114=!![]);let _0x2ae4d7=0x0,_0x571e32=null,_0x1e660f=null;for(let _0x438e1f=0x0;_0x438e1f<this[_0x8e2639(-0x1ad,-0x1c3)];_0x438e1f++){_0x571e32=[];for(let _0x52c261=0x0;_0x52c261<this['cols'];_0x52c261++,_0x2ae4d7++){_0x240114?_0x1e660f=this['_calcUV'](_0xabd4c8[_0x438e1f][_0x52c261],_0x153950[_0x438e1f][_0x52c261]):_0x1e660f=this['_calcUV'](_0xabd4c8[_0x2ae4d7],_0x153950[_0x2ae4d7]),_0x571e32[_0x8e2639(-0xca,-0xf6)](_0x1e660f);}this[_0xbd3912(-0xcd,-0x43)]['push'](_0x571e32);}!this['options'][_0xbd3912(0xa,0x62)]&&this[_0xbd3912(-0x30,-0x43)]['reverse']();}['clear'](){delete this['rows'],delete this['cols'],delete this[_0x48308f(0xc2,0x12a)],delete this[_0x48308f(0x10c,0xc8)],delete this[_0x1983f7(0x8c,0x9b)];function _0x1983f7(_0x2bc7a3,_0x2a9f24){return _0x5ba876(_0x2a9f24- -0x128,_0x2bc7a3);}function _0x48308f(_0x18e120,_0xd08bf9){return _0x5ba876(_0xd08bf9- -0xa9,_0x18e120);}delete this['ymax'],delete this[_0x48308f(-0x2a,0x60)],delete this['particles'];}['toGridXY'](_0xe515c8,_0x513161){const _0x28cd3f=(_0xe515c8-this['xmin'])/(this[_0x29bca7(-0xa7,-0x95)]-this[_0x29bca7(0x48,-0x33)])*(this['cols']-0x1),_0x2edce6=(this[_0x29bca7(-0x1,-0x6c)]-_0x513161)/(this[_0x29bca7(-0xab,-0x6c)]-this['ymin'])*(this['rows']-0x1);function _0x2144c6(_0x50f0f6,_0x3829f2){return _0x5ba876(_0x50f0f6-0x287,_0x3829f2);}function _0x29bca7(_0x227d7f,_0x27f4d0){return _0x259635(_0x227d7f,_0x27f4d0- -0x5bf);}return[_0x28cd3f,_0x2edce6];}['getUVByXY'](_0x2561d7,_0x59cc08){if(_0x2561d7<0x0||_0x2561d7>=this['cols']||_0x59cc08>=this[_0x2aa2af(-0x2d7,-0x29c)])return[0x0,0x0,0x0];const _0x13c1cc=Math[_0x3b0c1c(0x432,0x4af)](_0x2561d7),_0x1225a1=Math['floor'](_0x59cc08);if(_0x13c1cc===_0x2561d7&&_0x1225a1===_0x59cc08)return this[_0x2aa2af(-0x300,-0x2f4)][_0x59cc08][_0x2561d7];const _0x37608d=_0x13c1cc+0x1,_0x336b70=_0x1225a1+0x1;function _0x3b0c1c(_0x3bd8b7,_0x42cebb){return _0x5ba876(_0x3bd8b7-0x322,_0x42cebb);}function _0x2aa2af(_0x4fc8cb,_0xc83522){return _0x259635(_0xc83522,_0x4fc8cb- -0x7c2);}const _0x1203dc=this[_0x3b0c1c(0x429,0x415)](_0x13c1cc,_0x1225a1),_0x1d8c1a=this[_0x2aa2af(-0x302,-0x285)](_0x37608d,_0x1225a1),_0x14c8b4=this[_0x3b0c1c(0x429,0x47b)](_0x13c1cc,_0x336b70),_0x3f15cd=this['getUVByXY'](_0x37608d,_0x336b70);let _0x3ed1c3=null;try{_0x3ed1c3=this[_0x2aa2af(-0x2df,-0x348)](_0x2561d7-_0x13c1cc,_0x59cc08-_0x1225a1,_0x1203dc,_0x1d8c1a,_0x14c8b4,_0x3f15cd);}catch(_0x1f6319){console[_0x2aa2af(-0x216,-0x262)](_0x2561d7,_0x59cc08);}return _0x3ed1c3;}['_bilinearInterpolation'](_0x536799,_0xf9c378,_0x39da3f,_0x15ff94,_0x45a852,_0x2bfee1){const _0x1694c9=0x1-_0x536799,_0x210fe7=0x1-_0xf9c378,_0xb6fa53=_0x1694c9*_0x210fe7,_0x18359f=_0x536799*_0x210fe7,_0x4d6870=_0x1694c9*_0xf9c378,_0x368378=_0x536799*_0xf9c378,_0x27615e=_0x39da3f[0x0]*_0xb6fa53+_0x15ff94[0x0]*_0x18359f+_0x45a852[0x0]*_0x4d6870+_0x2bfee1[0x0]*_0x368378,_0xaa68a9=_0x39da3f[0x1]*_0xb6fa53+_0x15ff94[0x1]*_0x18359f+_0x45a852[0x1]*_0x4d6870+_0x2bfee1[0x1]*_0x368378;return this['_calcUV'](_0x27615e,_0xaa68a9);}[_0x259635(0x608,0x58d)](_0x2681df,_0x66ef59){return[+_0x2681df,+_0x66ef59,Math['sqrt'](_0x2681df*_0x2681df+_0x66ef59*_0x66ef59)];}[_0x5ba876(0x1f9,0x1d4)](_0x9a194,_0x38538d){if(!this['isInExtent'](_0x9a194,_0x38538d))return null;const _0xf05e29=this['toGridXY'](_0x9a194,_0x38538d),_0x4185b7=this['getUVByXY'](_0xf05e29[0x0],_0xf05e29[0x1]);return _0x4185b7;}['isInExtent'](_0x10eed9,_0x19f1b6){function _0xc98a12(_0x2dbcd2,_0x148eb4){return _0x259635(_0x2dbcd2,_0x148eb4- -0x3ea);}function _0x284267(_0x1093b2,_0x529b79){return _0x5ba876(_0x529b79-0x175,_0x1093b2);}return _0x10eed9>=this['xmin']&&_0x10eed9<=this[_0x284267(0x27f,0x2e6)]&&_0x19f1b6>=this['ymin']&&_0x19f1b6<=this[_0x284267(0x2dc,0x30f)]?!![]:![];}['getRandomLatLng'](){function _0x3a4300(_0x3ee7de,_0x13cd0a){return _0x259635(_0x13cd0a,_0x3ee7de- -0x514);}const _0x2df264=fRandomByfloat(this['xmin'],this['xmax']),_0x354954=fRandomByfloat(this['ymin'],this['ymax']),_0x31a97f={};return _0x31a97f['lat']=_0x354954,_0x31a97f[_0x3a4300(0x48,0x8a)]=_0x2df264,_0x31a97f;}['getParticles'](){let _0x34cd7e,_0x179f40,_0x46d900;function _0x2185c(_0x485902,_0x44ba85){return _0x5ba876(_0x44ba85- -0x2f7,_0x485902);}for(let _0x1850da=0x0,_0x3b4fc7=this['particles']['length'];_0x1850da<_0x3b4fc7;_0x1850da++){let _0x3dbe6c=this['particles'][_0x1850da];_0x3dbe6c[_0x5a3779(-0xf,0x51)]<=0x0&&(_0x3dbe6c=this[_0x5a3779(-0xad,-0x84)](_0x3dbe6c));if(_0x3dbe6c['age']>0x0){const _0x54604e=_0x3dbe6c[_0x2185c(-0x14d,-0x1a0)],_0x5727e5=_0x3dbe6c[_0x2185c(-0x21e,-0x1d8)];_0x46d900=this[_0x5a3779(0x3a,0x42)](_0x54604e,_0x5727e5),_0x46d900?(_0x34cd7e=_0x54604e+this[_0x5a3779(-0x4f,-0x8b)][0x0]*_0x46d900[0x0],_0x179f40=_0x5727e5+this['_calc_speedRate'][0x1]*_0x46d900[0x1],_0x3dbe6c['lng']=_0x54604e,_0x3dbe6c[_0x5a3779(-0xa9,-0x6b)]=_0x5727e5,_0x3dbe6c[_0x2185c(-0x1d7,-0x1a0)]=_0x34cd7e,_0x3dbe6c['tlat']=_0x179f40,_0x3dbe6c['speed']=_0x46d900[0x2],_0x3dbe6c[_0x5a3779(-0xf,0x6c)]--):_0x3dbe6c[_0x2185c(-0x1c0,-0x147)]=0x0;}}function _0x5a3779(_0xd0d52b,_0x409d0d){return _0x259635(_0x409d0d,_0xd0d52b- -0x578);}return this[_0x2185c(-0x166,-0x162)];}['_randomParticle'](_0x2675b5){let _0x296c64,_0x3dd6b4;for(let _0x526f18=0x0;_0x526f18<0x1e;_0x526f18++){_0x296c64=this['getRandomLatLng'](),_0x3dd6b4=this['getUVByPoint'](_0x296c64['lng'],_0x296c64['lat']);if(_0x3dd6b4&&_0x3dd6b4[0x2]>0x0)break;}if(!_0x3dd6b4)return _0x2675b5;function _0x560d3b(_0x3c6cc5,_0x45856e){return _0x5ba876(_0x3c6cc5-0x30f,_0x45856e);}const _0x27207d=_0x296c64['lng']+this['_calc_speedRate'][0x0]*_0x3dd6b4[0x0],_0x535118=_0x296c64['lat']+this[_0x29f55e(-0x253,-0x2d3)][0x1]*_0x3dd6b4[0x1];_0x2675b5['lng']=_0x296c64['lng'],_0x2675b5[_0x29f55e(-0x2ad,-0x296)]=_0x296c64[_0x29f55e(-0x2ad,-0x314)],_0x2675b5['tlng']=_0x27207d,_0x2675b5['tlat']=_0x535118,_0x2675b5[_0x560d3b(0x4bf,0x45f)]=Math[_0x29f55e(-0x1f2,-0x175)](0xa+Math['random']()*this[_0x29f55e(-0x238,-0x21f)]),_0x2675b5[_0x560d3b(0x445,0x4a1)]=_0x3dd6b4[0x2];function _0x29f55e(_0x3a8587,_0x12712a){return _0x5ba876(_0x3a8587- -0x3c3,_0x12712a);}return _0x2675b5;}[_0x5ba876(0x15f,0x1bd)](){for(const _0x48853a in this){delete this[_0x48853a];}}}function fRandomByfloat(_0x30cbbb,_0x4ab87c){return _0x30cbbb+Math['random']()*(_0x4ab87c-_0x30cbbb);}const Cesium=mars3d__namespace[_0x5ba876(0x172,0x1ad)],BaseLayer=mars3d__namespace[_0x259635(0x4d0,0x526)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x44140e={}){super(_0x44140e),this['_setOptionsHook'](_0x44140e),this[_0x5a1c71(0x3ac,0x326)]=null;function _0x5a1c71(_0x3acd36,_0x28cb2e){return _0x259635(_0x3acd36,_0x28cb2e- -0x1a7);}function _0x53bb48(_0xd8d2e2,_0x335c98){return _0x5ba876(_0xd8d2e2-0x36f,_0x335c98);}_0x44140e['colors']&&_0x44140e['steps']&&(this['_colorRamp']=new mars3d__namespace[(_0x53bb48(0x573,0x5b3))](_0x44140e));}[_0x259635(0x4dd,0x546)](_0x51cb01,_0x35b6e8){this['frameTime']=0x3e8/(_0x51cb01[_0x18a98b(-0x203,-0x266)]||0xa),this[_0x18a98b(-0x24d,-0x23b)]=this[_0x377ef0(0x27a,0x1f8)][_0x377ef0(0x249,0x24b)]??![],this[_0x377ef0(0x220,0x1a4)]=_0x51cb01['color']||'#ffffff',this['lineWidth']=_0x51cb01[_0x377ef0(0x19d,0x1b0)]||0x1,this['fixedHeight']=_0x51cb01['fixedHeight']??0x0,this[_0x18a98b(-0x1d0,-0x1cc)]=_0x51cb01['flipY']??![];function _0x18a98b(_0xd766a2,_0x3203ef){return _0x5ba876(_0xd766a2- -0x37e,_0x3203ef);}function _0x377ef0(_0x4c5b74,_0x884504){return _0x5ba876(_0x4c5b74-0x7a,_0x884504);}this['windField']&&this['windField']['setOptions'](_0x51cb01);}get['layer'](){function _0x24306f(_0x5199d4,_0x188c43){return _0x5ba876(_0x188c43-0x23d,_0x5199d4);}return this[_0x24306f(0x377,0x351)];}get[_0x5ba876(0x18e,0x17b)](){function _0x22fea0(_0x56df4e,_0x419d4b){return _0x259635(_0x419d4b,_0x56df4e- -0x207);}function _0x8110e(_0x5877e4,_0x5622bc){return _0x259635(_0x5622bc,_0x5877e4- -0x799);}return this[_0x8110e(-0x283,-0x309)]['scene'][_0x8110e(-0x2cc,-0x34c)]['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){function _0x274510(_0x2f9905,_0x4884ef){return _0x259635(_0x2f9905,_0x4884ef- -0x35f);}return this[_0x274510(0x160,0x18b)];}set['pointerEvents'](_0x20a75c){function _0xe5c658(_0x42f828,_0x613a27){return _0x5ba876(_0x42f828- -0x171,_0x613a27);}function _0x18b510(_0x5b6dc0,_0x44036a){return _0x5ba876(_0x44036a-0x37d,_0x5b6dc0);}this['_pointerEvents']=_0x20a75c;if(!this['canvas'])return;_0x20a75c?this[_0x18b510(0x519,0x491)]['style']['pointer-events']='all':this['canvas']['style']['pointer-events']=_0xe5c658(0x56,0x77);}get['particlesNumber'](){return this['options']['particlesNumber'];}set['particlesNumber'](_0x392fd1){this['options']['particlesNumber']=_0x392fd1,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x5ba876(0x20d,0x1fa)](){function _0xde4666(_0x1b4d9f,_0x287195){return _0x259635(_0x287195,_0x1b4d9f- -0x6da);}function _0x820936(_0x42bce5,_0x4013e3){return _0x259635(_0x42bce5,_0x4013e3- -0x237);}return this[_0xde4666(-0x121,-0x164)][_0xde4666(-0x114,-0xc6)];}set[_0x5ba876(0x20d,0x227)](_0x2ef52c){this[_0x51d617(0x472,0x4d1)]['speedRate']=_0x2ef52c;function _0x16b8e5(_0x42f3d4,_0x4b280e){return _0x259635(_0x42f3d4,_0x4b280e- -0x88);}function _0x51d617(_0x5954a5,_0x581de9){return _0x259635(_0x5954a5,_0x581de9- -0xe8);}this[_0x16b8e5(0x483,0x4b1)]&&(this['windField'][_0x16b8e5(0x5b1,0x53e)]=_0x2ef52c);}get['maxAge'](){return this['options']['maxAge'];}set['maxAge'](_0x308e1e){function _0x1d7948(_0x4a337f,_0x4d419a){return _0x259635(_0x4a337f,_0x4d419a- -0x128);}function _0x1575c9(_0x324d42,_0x239d7f){return _0x5ba876(_0x324d42- -0x95,_0x239d7f);}this[_0x1d7948(0x4e9,0x491)]['maxAge']=_0x308e1e,this[_0x1d7948(0x48d,0x411)]&&(this[_0x1d7948(0x440,0x411)][_0x1575c9(0xf6,0x15f)]=_0x308e1e);}get[_0x259635(0x56b,0x576)](){return this['windData'];}set['data'](_0x5dd27c){this['setData'](_0x5dd27c);}get[_0x259635(0x5c5,0x590)](){let _0x42781d=this['windData'][_0x263caa(0x489,0x4be)],_0x3983d1=this['windData']['xmax'],_0x565d77=this[_0x567550(0x30d,0x384)][_0x567550(0x2ed,0x2a4)],_0x1e1037=this[_0x567550(0x30d,0x2c1)]['ymax'];_0x3983d1>=0x167&&_0x42781d===0x0&&(_0x42781d=-0xb4,_0x3983d1=0xb4);_0x42781d=Math['max'](_0x42781d,-0xb4);function _0x567550(_0x2b51f7,_0x1e22ff){return _0x5ba876(_0x2b51f7-0x12a,_0x1e22ff);}_0x3983d1=Math['min'](_0x3983d1,0xb4),_0x565d77=Math['max'](_0x565d77,-0x5a);function _0x263caa(_0x511e85,_0x33efc2){return _0x259635(_0x33efc2,_0x511e85- -0x103);}return _0x1e1037=Math[_0x263caa(0x4a4,0x4c5)](_0x1e1037,0x5a),Cesium[_0x567550(0x28b,0x2d5)][_0x567550(0x2f3,0x33e)](_0x42781d,_0x565d77,_0x3983d1,_0x1e1037);}['_showHook'](_0x119c86){function _0xd514fc(_0x1bc641,_0x3b1570){return _0x259635(_0x3b1570,_0x1bc641- -0x77f);}function _0x5f185f(_0x323c21,_0x12084c){return _0x259635(_0x323c21,_0x12084c- -0x1f0);}_0x119c86?this[_0x5f185f(0x3fd,0x3c3)]():(this[_0x5f185f(0x427,0x3ac)]&&(this[_0x5f185f(0x3db,0x3c9)][_0x5f185f(0x300,0x386)]=this['windData']),this[_0xd514fc(-0x2a4,-0x285)]());}['_mountedHook'](){function _0x50ab03(_0x24f015,_0x4b39f2){return _0x259635(_0x4b39f2,_0x24f015- -0x6c6);}function _0x2a5d0f(_0x54553e,_0x210f31){return _0x5ba876(_0x54553e-0x42,_0x210f31);}this['options'][_0x50ab03(-0x1cc,-0x19a)]?this['initWorker']():this[_0x2a5d0f(0x1c2,0x178)]=new CanvasWindField(this[_0x50ab03(-0x10d,-0x196)]);}[_0x5ba876(0x1fa,0x1da)](){function _0x59fbe4(_0x2aa4ba,_0x5d08e7){return _0x5ba876(_0x2aa4ba- -0x9c,_0x5d08e7);}this[_0x59fbe4(0x78,0xbe)]=this['_createCanvas']();const _0x4a4a54={};_0x4a4a54[_0x3b0a35(-0x1c9,-0x148)]=!![];function _0x3b0a35(_0x25aa70,_0x53bdef){return _0x259635(_0x25aa70,_0x53bdef- -0x6cb);}this['canvasContext']=this['canvas']['getContext']('2d',_0x4a4a54),this[_0x3b0a35(-0xee,-0x123)](),this[_0x59fbe4(0x164,0x1bf)][_0x59fbe4(0x121,0xb6)]&&this[_0x59fbe4(0x12c,0x13f)](this['options']['data']);}[_0x5ba876(0x122,0x124)](){function _0x32063c(_0x44afa5,_0x2d4201){return _0x5ba876(_0x44afa5- -0x2ec,_0x2d4201);}this[_0x29a2fc(0x36,0x42)](),this['unbindEvent']();function _0x29a2fc(_0x296d1a,_0x1ef811){return _0x5ba876(_0x296d1a- -0x1bc,_0x1ef811);}this['canvas']&&(this[_0x29a2fc(-0x5f,-0xdb)][_0x32063c(-0x163,-0x1b8)]['removeChild'](this['canvas']),delete this[_0x29a2fc(-0xa8,-0x109)]);}[_0x259635(0x555,0x555)](){const _0x458d12=mars3d__namespace[_0x516b06(0x47f,0x439)][_0x516b06(0x4b4,0x42a)](_0xe7abad(0x3c8,0x430),_0x516b06(0x49e,0x461),this['_map'][_0x516b06(0x4c4,0x4e6)]);_0x458d12[_0xe7abad(0x473,0x4da)]['position']='absolute',_0x458d12['style']['top']='0px';function _0x516b06(_0x1cee05,_0xd634ce){return _0x5ba876(_0x1cee05-0x33b,_0xd634ce);}_0x458d12[_0x516b06(0x4fa,0x4e8)][_0xe7abad(0x489,0x42b)]='0px',_0x458d12[_0x516b06(0x4fa,0x540)]['width']=this['_map'][_0xe7abad(0x41b,0x3c9)]['canvas'][_0x516b06(0x46f,0x4b4)]+'px';function _0xe7abad(_0x5f05f6,_0x28aabe){return _0x5ba876(_0x5f05f6-0x2b4,_0x28aabe);}return _0x458d12['style']['height']=this[_0xe7abad(0x411,0x405)]['scene'][_0x516b06(0x44f,0x41b)]['clientHeight']+'px',_0x458d12[_0x516b06(0x4fa,0x4c0)]['pointerEvents']=this[_0xe7abad(0x3e5,0x41d)]?'auto':'none',_0x458d12[_0x516b06(0x4fa,0x47d)][_0xe7abad(0x486,0x4c4)]=this['options'][_0x516b06(0x50d,0x4a2)]??0x9,_0x458d12[_0x516b06(0x475,0x444)]=this[_0x516b06(0x498,0x47c)]['scene']['canvas'][_0x516b06(0x46f,0x497)],_0x458d12['height']=this['_map'][_0xe7abad(0x41b,0x400)]['canvas'][_0xe7abad(0x432,0x464)],_0x458d12;}[_0x5ba876(0x203,0x27f)](){function _0x31fe87(_0x17df58,_0x9e1548){return _0x259635(_0x17df58,_0x9e1548- -0x15a);}function _0x2771a0(_0x23e501,_0x516408){return _0x5ba876(_0x23e501- -0x2e9,_0x516408);}this['canvas']&&(this['canvas'][_0x31fe87(0x436,0x41e)]['width']=this['_map']['scene']['canvas'][_0x31fe87(0x41c,0x393)]+'px',this[_0x31fe87(0x335,0x373)][_0x2771a0(-0x12a,-0xfb)][_0x31fe87(0x414,0x38a)]=this['_map']['scene'][_0x2771a0(-0x1d5,-0x250)][_0x2771a0(-0x16b,-0x1a2)]+'px',this['canvas']['width']=this['_map'][_0x31fe87(0x3ef,0x3c6)]['canvas']['clientWidth'],this[_0x2771a0(-0x1d5,-0x166)][_0x31fe87(0x317,0x38a)]=this[_0x2771a0(-0x18c,-0x14e)]['scene']['canvas'][_0x31fe87(0x414,0x3dd)]);}[_0x259635(0x614,0x5a8)](){function _0x1e3ad6(_0x41e6ef,_0x269ef2){return _0x259635(_0x41e6ef,_0x269ef2- -0x3c7);}const _0x578759=this;function _0x434383(_0x12f986,_0x2bce7a){return _0x259635(_0x2bce7a,_0x12f986- -0x337);}let _0x83d8a8=Date['now']();(function _0x40b035(){function _0xa75253(_0x20b134,_0x53be5a){return _0x17b6(_0x53be5a- -0x3ce,_0x20b134);}if(_0x578759['isDestroy'])return;function _0x11ee1c(_0xef6c6e,_0x22bbe7){return _0x17b6(_0x22bbe7-0x13d,_0xef6c6e);}_0x578759['_animateFrame']=window[_0xa75253(-0x370,-0x2e7)](_0x40b035);if(_0x578759[_0x11ee1c(0x1f1,0x255)]&&_0x578759[_0xa75253(-0x221,-0x273)]){const _0x3ff77d=Date['now'](),_0x59d8fd=_0x3ff77d-_0x83d8a8;_0x59d8fd>_0x578759[_0x11ee1c(0x1e5,0x21a)]&&(_0x83d8a8=_0x3ff77d-_0x59d8fd%_0x578759['frameTime'],_0x578759['update']());}}(),window[_0x434383(0x1ae,0x196)](_0x434383(0x285,0x221),this[_0x434383(0x285,0x222)]['bind'](this),![]),this['mouse_down']=![],this[_0x434383(0x26b,0x23d)]=![],this['options'][_0x1e3ad6(0x224,0x1ae)]&&(this['_map']['on'](mars3d__namespace[_0x434383(0x185,0x1b4)]['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x434383(0x1ed,0x1fa)],this),this[_0x1e3ad6(0x106,0x14f)]['on'](mars3d__namespace[_0x1e3ad6(0x148,0xf5)]['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){window[_0x40703f(-0xc5,-0x125)](this['_animateFrame']),delete this[_0x40703f(-0x96,-0xee)];function _0x40703f(_0x4d8b24,_0x316f5a){return _0x5ba876(_0x316f5a- -0x287,_0x4d8b24);}function _0x5d52a4(_0x2152bd,_0x5a1157){return _0x5ba876(_0x5a1157-0x1bd,_0x2152bd);}window['removeEventListener']('resize',this['resize']),this['options'][_0x5d52a4(0x347,0x379)]&&(this['_map'][_0x40703f(-0xba,-0x104)](mars3d__namespace[_0x40703f(-0x1e6,-0x184)]['wheel'],this[_0x40703f(-0xb3,-0xb9)],this),this[_0x40703f(-0xe5,-0x12a)][_0x40703f(-0x187,-0x104)](mars3d__namespace[_0x40703f(-0x14f,-0x184)][_0x40703f(-0xd0,-0xcc)],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this[_0x5d52a4(0x3e1,0x397)],this),this['_map'][_0x5d52a4(0x320,0x340)](mars3d__namespace[_0x40703f(-0x198,-0x184)][_0x40703f(-0x72,-0x7f)],this[_0x40703f(-0xd7,-0x8b)],this));}[_0x5ba876(0x1ce,0x21a)](_0x2002b7){clearTimeout(this[_0x4e1f52(-0xe4,-0x9a)]);function _0x4e1f52(_0x5cd2e2,_0x3d87c7){return _0x259635(_0x5cd2e2,_0x3d87c7- -0x63e);}if(!this['show']||!this[_0x258035(0xe0,0x56)])return;this['canvas'][_0x4e1f52(-0x4b,-0xc6)][_0x258035(0xe1,0xbf)]='hidden';function _0x258035(_0x19e0e0,_0x31589f){return _0x5ba876(_0x19e0e0- -0x34,_0x31589f);}this['refreshTimer']=setTimeout(()=>{function _0x4d31ce(_0x3566ad,_0x53a9f7){return _0x4e1f52(_0x53a9f7,_0x3566ad-0x1fb);}function _0x19b5ad(_0x4b2701,_0x5ba94e){return _0x258035(_0x4b2701-0x29f,_0x5ba94e);}if(!this['show'])return;this['redraw'](),this[_0x19b5ad(0x37f,0x38f)]['style'][_0x19b5ad(0x380,0x35b)]='visible';},0xc8);}[_0x5ba876(0x16b,0x154)](_0x49ec03){function _0x44a082(_0x29ee3e,_0xde6520){return _0x259635(_0x29ee3e,_0xde6520- -0x500);}function _0x5d2f07(_0x940f80,_0x253652){return _0x5ba876(_0x940f80-0x66,_0x253652);}this['mouse_down']=!![],this['_map'][_0x5d2f07(0x1e9,0x194)](mars3d__namespace['EventType'][_0x5d2f07(0x26e,0x222)],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x44a082(0x107,0xc1)],this[_0x44a082(0xd0,0xb5)],this);}[_0x5ba876(0x1fc,0x1ad)](_0x42e100){function _0x5d8000(_0x2de3a4,_0x57c9e4){return _0x5ba876(_0x2de3a4- -0xca,_0x57c9e4);}if(!this['show']||!this['canvas'])return;function _0x96fa51(_0x152f66,_0x5c09d5){return _0x259635(_0x5c09d5,_0x152f66- -0x444);}this['mouse_down']&&(this[_0x96fa51(0x89,0x6a)][_0x5d8000(0xf5,0x74)]['visibility']='hidden',this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x5ae349){function _0x33c54c(_0x37a629,_0x29f1ed){return _0x5ba876(_0x37a629-0xb9,_0x29f1ed);}if(!this['show']||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);function _0xeeccf8(_0x4d8c74,_0x42f285){return _0x259635(_0x42f285,_0x4d8c74- -0x3d0);}this[_0xeeccf8(0x181,0x146)]&&this[_0x33c54c(0x2a2,0x247)]&&this['redraw'](),this['canvas']['style'][_0xeeccf8(0xfe,0xa6)]='visible',this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x5d8cca){this['clear']();function _0x10694b(_0x12cf20,_0x130e72){return _0x259635(_0x12cf20,_0x130e72- -0x31b);}this[_0x10694b(0x270,0x281)]=_0x5d8cca,this['windField']['setDate'](_0x5d8cca),this['redraw']();}['redraw'](){if(!this['show'])return;this['windField']['setOptions'](this[_0x15f08b(-0x82,-0x1e)]);function _0x15f08b(_0x344474,_0x4be710){return _0x259635(_0x344474,_0x4be710- -0x5d7);}this['update']();}[_0x5ba876(0x159,0xe4)](){if(this[_0x372d5d(-0xac,-0xe8)])return;this[_0x24ae5d(0xdf,0xe2)]=!![];function _0x372d5d(_0x280051,_0x15ec58){return _0x5ba876(_0x280051- -0x1d5,_0x15ec58);}if(this['worker'])this['windField']['update']();else{const _0x5603fe=this['windField']['getParticles']();this['_drawLines'](_0x5603fe);}function _0x24ae5d(_0x1c0a25,_0x51ee19){return _0x259635(_0x1c0a25,_0x51ee19- -0x400);}this['_updateIng']=![];}[_0x259635(0x4fe,0x53d)](_0x36ef73){this[_0x1d0e13(0x251,0x2bd)]=_0x36ef73,this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this[_0x1d0e13(0x1e5,0x264)],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']=_0x1d0e13(0x267,0x1fd),this['canvasContext'][_0xb5120f(-0x11e,-0xbd)]=0.9;function _0x1d0e13(_0x11ae7b,_0x5c2bbe){return _0x259635(_0x11ae7b,_0x5c2bbe- -0x2e3);}const _0xb235=this['_map']['scene']['mode']!==Cesium[_0x1d0e13(0x2e1,0x2ae)]['SCENE3D'],_0x22f7b0=this['canvasWidth']*0.25;function _0xb5120f(_0x170ad8,_0x108615){return _0x5ba876(_0x170ad8- -0x2a6,_0x108615);}if(this[_0x1d0e13(0x327,0x2e2)])for(let _0x25939d=0x0,_0x1cd605=_0x36ef73['length'];_0x25939d<_0x1cd605;_0x25939d++){const _0x2f77b4=_0x36ef73[_0x25939d],_0x10b165=this['_tomap'](_0x2f77b4,_0x2f77b4[_0xb5120f(-0x103,-0x188)],_0x2f77b4['lat'],_0x2f77b4[_0xb5120f(-0x13d,-0x12f)]),_0x323fda=this[_0xb5120f(-0xc9,-0xf1)](_0x2f77b4,_0x2f77b4[_0xb5120f(-0x14f,-0xc5)],_0x2f77b4['tlat'],_0x2f77b4['talt']);if(!_0x10b165||!_0x323fda)continue;if(_0xb235&&Math[_0x1d0e13(0x2ce,0x253)](_0x10b165[0x0]-_0x323fda[0x0])>=_0x22f7b0)continue;this[_0x1d0e13(0x24d,0x296)][_0x1d0e13(0x2bc,0x24e)](),this['canvasContext']['lineWidth']=this[_0x1d0e13(0x1e4,0x1f9)],this[_0x1d0e13(0x270,0x296)]['strokeStyle']=this['_colorRamp']['getColor'](_0x2f77b4[_0x1d0e13(0x1e4,0x20c)]),this['canvasContext']['moveTo'](_0x10b165[0x0],_0x10b165[0x1]),this[_0xb5120f(-0xe6,-0xe6)]['lineTo'](_0x323fda[0x0],_0x323fda[0x1]),this[_0x1d0e13(0x2d5,0x296)][_0xb5120f(-0xbe,-0x9c)]();}else{this[_0xb5120f(-0xe6,-0x90)]['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this[_0x1d0e13(0x21d,0x296)][_0x1d0e13(0x205,0x26a)]=this[_0x1d0e13(0x259,0x27c)];for(let _0x55ccdc=0x0,_0x2c0348=_0x36ef73['length'];_0x55ccdc<_0x2c0348;_0x55ccdc++){const _0x29002e=_0x36ef73[_0x55ccdc],_0x3b09b9=this['_tomap'](_0x29002e,_0x29002e['lng'],_0x29002e['lat'],_0x29002e[_0x1d0e13(0x2b7,0x23f)]),_0x31dbbf=this['_tomap'](_0x29002e,_0x29002e['tlng'],_0x29002e['tlat'],_0x29002e['talt']);if(!_0x3b09b9||!_0x31dbbf)continue;if(_0xb235&&Math['abs'](_0x3b09b9[0x0]-_0x31dbbf[0x0])>=_0x22f7b0)continue;this[_0xb5120f(-0xe6,-0xfb)][_0x1d0e13(0x284,0x21e)](_0x3b09b9[0x0],_0x3b09b9[0x1]),this['canvasContext']['lineTo'](_0x31dbbf[0x0],_0x31dbbf[0x1]);}this['canvasContext']['stroke']();}}[_0x5ba876(0x1dd,0x16f)](_0x5ce651,_0x28f425,_0x801d5,_0x28b1b0){const _0xa9ae48=Cesium['Cartesian3']['fromDegrees'](_0x28f425,_0x801d5,_0x28b1b0??this[_0x566bc4(-0x1a7,-0x165)]),_0x5a503c=this[_0x20f520(0x3f3,0x444)]['scene'];function _0x20f520(_0x6fc1e,_0x4ca32c){return _0x259635(_0x6fc1e,_0x4ca32c- -0xd2);}if(_0x5a503c['mode']===Cesium['SceneMode']['SCENE3D']){const _0x229495=new Cesium['EllipsoidalOccluder'](_0x5a503c[_0x20f520(0x535,0x4cc)]['ellipsoid'],_0x5a503c[_0x566bc4(-0x4,-0x76)][_0x566bc4(-0x11a,-0x9f)]),_0x1b5c54=_0x229495[_0x20f520(0x4d5,0x4c2)](_0xa9ae48);if(!_0x1b5c54)return _0x5ce651[_0x20f520(0x433,0x497)]=0x0,null;}const _0x17b4c5=mars3d__namespace['PointTrans']['toWindowCoordinates'](this['_map']['scene'],_0xa9ae48);function _0x566bc4(_0x4b9f15,_0x279bcc){return _0x259635(_0x4b9f15,_0x279bcc- -0x63a);}return _0x17b4c5?[_0x17b4c5['x'],_0x17b4c5['y']]:null;}['clear'](){function _0x4c09c7(_0x1a3a2d,_0x228914){return _0x5ba876(_0x1a3a2d-0x25b,_0x228914);}function _0x34758a(_0x48071e,_0x4ec5ed){return _0x259635(_0x4ec5ed,_0x48071e- -0x61e);}this[_0x4c09c7(0x3db,0x3c4)]['clear'](),delete this[_0x4c09c7(0x43e,0x4b3)];}['initWorker'](){this[_0x133411(0x4bb,0x437)]=new Worker(this[_0x158818(0x3aa,0x37d)][_0x158818(0x2fd,0x2be)]);function _0x133411(_0x330066,_0x4de367){return _0x5ba876(_0x4de367-0x2f6,_0x330066);}this[_0x133411(0x3f4,0x437)]['onmessage']=_0x20f06d=>{this['_drawLines'](_0x20f06d[_0x13a0d3(0x1c1,0x1a1)]['particles']);function _0x4c8ac9(_0x3b35cf,_0x433be5){return _0x158818(_0x433be5,_0x3b35cf- -0x36f);}function _0x13a0d3(_0x55fceb,_0xafcd93){return _0x133411(_0x55fceb,_0xafcd93- -0x312);}this[_0x13a0d3(0x1a8,0x15e)]=![];},this['windField']={'init':_0x49fc0b=>{const _0x56588a={};_0x56588a['type']='init',_0x56588a['options']=_0x49fc0b,this['worker']['postMessage'](_0x56588a);},'setOptions':_0x297596=>{function _0x3053d4(_0x1dfd24,_0x57f10c){return _0x158818(_0x1dfd24,_0x57f10c-0x19d);}const _0x299e3c={};_0x299e3c[_0xc35899(0x108,0x18e)]='setOptions',_0x299e3c[_0xc35899(0x24d,0x20f)]=_0x297596;function _0xc35899(_0xdcd86d,_0x3f974c){return _0x133411(_0xdcd86d,_0x3f974c- -0x2e7);}this['worker']['postMessage'](_0x299e3c);},'setDate':_0x1676b6=>{const _0x419703={};_0x419703[_0x390aec(-0x255,-0x230)]=_0x390aec(-0x280,-0x265),_0x419703['data']=_0x1676b6;function _0x390aec(_0x439af5,_0x5088ed){return _0x158818(_0x439af5,_0x5088ed- -0x52c);}function _0xbcfc59(_0xd0135b,_0x2ffebf){return _0x133411(_0xd0135b,_0x2ffebf-0x6);}this['worker'][_0xbcfc59(0x42b,0x415)](_0x419703);},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![];function _0x399821(_0x1ecfdb,_0x20e4de){return _0x158818(_0x1ecfdb,_0x20e4de- -0x4b5);}function _0x5ee756(_0x4bceae,_0x429e02){return _0x158818(_0x429e02,_0x4bceae- -0x2cb);}const _0x235997={};_0x235997[_0x399821(-0x156,-0x1b9)]=_0x5ee756(0xb,-0x5a),this['worker']['postMessage'](_0x235997);},'clear':()=>{function _0x304ce2(_0x471bc8,_0x24cfed){return _0x133411(_0x471bc8,_0x24cfed- -0x6bd);}const _0x278cd0={};_0x278cd0['type']=_0x304ce2(-0x1ea,-0x1d5),this['worker']['postMessage'](_0x278cd0);}};function _0x158818(_0x2245d1,_0x2eb6e2){return _0x259635(_0x2245d1,_0x2eb6e2- -0x23c);}this['windField']['init'](this['options']);}}mars3d__namespace[_0x259635(0x4f4,0x556)]['register']('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x5ba876(0x10b,0x114)][_0x5ba876(0x1b4,0x1f2)]('mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:'+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil;const _0x37aee5={};_0x37aee5[_0x259635(0x49e,0x517)]=!![],Object[_0x5ba876(0x10a,0x185)](exports,'__esModule',_0x37aee5);
14
+ 'use strict';(function(_0x4db8e9,_0x622875){const _0x36bc73=_0x4db8e9();function _0x1927a2(_0x80b20e,_0xd5864e){return _0x34ed(_0xd5864e-0x296,_0x80b20e);}function _0x4ac8f3(_0x1d8c1d,_0x2bfbf7){return _0x34ed(_0x1d8c1d- -0x2bd,_0x2bfbf7);}while(!![]){try{const _0x5e9345=parseInt(_0x1927a2(0x42d,0x489))/0x1*(-parseInt(_0x1927a2(0x4e0,0x482))/0x2)+-parseInt(_0x4ac8f3(-0x69,-0x2))/0x3+parseInt(_0x4ac8f3(-0x2,-0x65))/0x4*(-parseInt(_0x1927a2(0x491,0x491))/0x5)+parseInt(_0x1927a2(0x512,0x48a))/0x6+parseInt(_0x1927a2(0x491,0x4a6))/0x7+-parseInt(_0x4ac8f3(-0x67,-0x3f))/0x8*(parseInt(_0x4ac8f3(-0x5e,-0x3d))/0x9)+parseInt(_0x4ac8f3(-0x98,-0xd6))/0xa;if(_0x5e9345===_0x622875)break;else _0x36bc73['push'](_0x36bc73['shift']());}catch(_0x4203be){_0x36bc73['push'](_0x36bc73['shift']());}}}(_0x55d3,0x74d76));function _interopNamespace(_0x2eed67){if(_0x2eed67&&_0x2eed67[_0x1b255f(0x3a2,0x35a)])return _0x2eed67;var _0x2839a3=Object['create'](null);_0x2eed67&&Object[_0x1b255f(0x30e,0x327)](_0x2eed67)[_0x1b255f(0x293,0x28b)](function(_0x362c9c){function _0x3e58b5(_0x539b5b,_0xdb1a3d){return _0x1b255f(_0xdb1a3d,_0x539b5b-0x22d);}if(_0x362c9c!==_0x3e58b5(0x4e7,0x523)){var _0x49d022=Object['getOwnPropertyDescriptor'](_0x2eed67,_0x362c9c);Object['defineProperty'](_0x2839a3,_0x362c9c,_0x49d022['get']?_0x49d022:{'enumerable':!![],'get':function(){return _0x2eed67[_0x362c9c];}});}});_0x2839a3[_0x4668bb(0x58f,0x59c)]=_0x2eed67;function _0x1b255f(_0x57c468,_0x210260){return _0x34ed(_0x210260-0xa2,_0x57c468);}function _0x4668bb(_0x42119b,_0x40233b){return _0x34ed(_0x40233b-0x384,_0x42119b);}return _0x2839a3;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function getU(_0x59525a,_0x599916){function _0x402c2b(_0x2fdff2,_0x34cbd8){return _0x34ed(_0x34cbd8- -0x99,_0x2fdff2);}const _0x4b06ed=_0x59525a*Math['cos'](Cesium$2['Math'][_0x402c2b(0x1eb,0x1e3)](_0x599916));return _0x4b06ed;}function getV(_0x572f4d,_0x120021){const _0x1548f2=_0x572f4d*Math['sin'](Cesium$2[_0x4c535a(0x2cc,0x31f)]['toRadians'](_0x120021));function _0x4c535a(_0x12c768,_0x321062){return _0x34ed(_0x321062-0xcd,_0x12c768);}return _0x1548f2;}function getSpeed(_0x24da37,_0x4a80c7){const _0x5d1981=Math['sqrt'](Math['pow'](_0x24da37,0x2)+Math['pow'](_0x4a80c7,0x2));return _0x5d1981;}function getDirection(_0x56e068,_0x55bb35){function _0x5866cd(_0x1e4aaa,_0x478954){return _0x34ed(_0x478954-0x357,_0x1e4aaa);}let _0x43596c=Cesium$2[_0x5866cd(0x54a,0x5a9)]['toDegrees'](Math['atan2'](_0x55bb35,_0x56e068));return _0x43596c+=_0x43596c<0x0?0x168:0x0,_0x43596c;}const _0x60ab1b={};_0x60ab1b[_0x27febc(0x1a,-0x6c)]=null,_0x60ab1b[_0x27febc(-0x8e,-0xed)]=getU,_0x60ab1b['getV']=getV,_0x60ab1b['getSpeed']=getSpeed,_0x60ab1b['getDirection']=getDirection;function _0x27febc(_0x198352,_0x3b426f){return _0x34ed(_0x198352- -0x295,_0x3b426f);}var WindUtil=_0x60ab1b;const version=_0x27febc(-0x9d,-0x50),buildTime='2026-04-08\x2016:11';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=_0x27febc(-0xbc,-0x5a),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[_0x27febc(-0x7b,0xc)];class ShaderManager{static['getCalculateSpeedShader'](){const _0x3dc1c5={};return _0x3dc1c5['sources']=[calculateSpeedShader],new ShaderSource$1(_0x3dc1c5);}static['getUpdatePositionShader'](){const _0x16a733={};return _0x16a733['sources']=[updatePositionShader],new ShaderSource$1(_0x16a733);}static['getSegmentDrawVertexShader'](){function _0x5d5b33(_0x461bf7,_0x42d864){return _0x4445ca(_0x461bf7,_0x42d864- -0xef);}const _0x208715={};return _0x208715[_0x5d5b33(0x3fc,0x45f)]=[renderParticlesVertexShader],new ShaderSource$1(_0x208715);}static['getSegmentDrawFragmentShader'](){const _0x5ceef4={};return _0x5ceef4['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x5ceef4);}static['getPostProcessingPositionShader'](){function _0x5cb7a3(_0x73efab,_0x14474e){return _0x27febc(_0x14474e- -0xa2,_0x73efab);}const _0x383c96={};return _0x383c96[_0x5cb7a3(-0xde,-0x114)]=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x383c96);}}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[_0x4445ca(0x4c6,0x545)];class CustomPrimitive{constructor(_0x3f3413){this['commandType']=_0x3f3413['commandType'];function _0x45aa87(_0x2d228c,_0x4d88d5){return _0x4445ca(_0x2d228c,_0x4d88d5- -0x66e);}this['geometry']=_0x3f3413[_0x4cd839(0x17c,0x1ae)],this[_0x4cd839(0x21c,0x1b4)]=_0x3f3413[_0x45aa87(-0x10c,-0x11f)],this['primitiveType']=_0x3f3413[_0x45aa87(-0x1c5,-0x15d)],this['uniformMap']=_0x3f3413['uniformMap']||{},this[_0x4cd839(0x246,0x256)]=_0x3f3413[_0x4cd839(0x234,0x256)],this[_0x45aa87(-0xe0,-0xf6)]=_0x3f3413['fragmentShaderSource'],this['rawRenderState']=_0x3f3413[_0x45aa87(-0x3,-0x7f)],this[_0x45aa87(-0x7c,-0x6d)]=_0x3f3413['framebuffer'],this[_0x45aa87(-0xbc,-0xde)]=_0x3f3413[_0x45aa87(-0xde,-0xde)],this['autoClear']=_0x3f3413['autoClear']??![],this[_0x45aa87(-0x179,-0x136)]=_0x3f3413['preExecute'],this['show']=!![],this[_0x45aa87(-0x11b,-0xcf)]=undefined,this[_0x45aa87(-0x195,-0x16f)]=undefined,this[_0x4cd839(0x135,0x17e)]=_0x3f3413[_0x4cd839(0x162,0x17e)]??(()=>!![]);function _0x4cd839(_0x1c12f1,_0x20effd){return _0x4445ca(_0x1c12f1,_0x20effd- -0x39b);}this['autoClear']&&(this['clearCommand']=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Pass$1['OPAQUE']}));}['createCommand'](_0x10f39f){function _0x4bc518(_0x1866b8,_0x4e7f28){return _0x27febc(_0x4e7f28-0x429,_0x1866b8);}function _0x5e9f88(_0x17f0f3,_0x3261a8){return _0x27febc(_0x17f0f3-0x17f,_0x3261a8);}if(this['commandType']==='Draw'){const _0x374514={};_0x374514['context']=_0x10f39f,_0x374514[_0x5e9f88(0x108,0x176)]=this['geometry'],_0x374514['attributeLocations']=this['attributeLocations'],_0x374514['bufferUsage']=BufferUsage$1['STATIC_DRAW'];const _0x490c4e=VertexArray$1[_0x5e9f88(0x18b,0x165)](_0x374514),_0x2a3601={};_0x2a3601[_0x4bc518(0x4a7,0x429)]=_0x10f39f,_0x2a3601['vertexShaderSource']=this[_0x4bc518(0x3ec,0x45a)],_0x2a3601['fragmentShaderSource']=this[_0x5e9f88(0x137,0x175)],_0x2a3601[_0x5e9f88(0x10e,0xf7)]=this['attributeLocations'];const _0x3abbdf=ShaderProgram['fromCache'](_0x2a3601),_0x4e6014=RenderState[_0x5e9f88(0xbc,0xe3)](this['rawRenderState']),_0x10da6d={};return _0x10da6d[_0x5e9f88(0x159,0x138)]=this,_0x10da6d[_0x5e9f88(0xed,0x9e)]=_0x490c4e,_0x10da6d[_0x4bc518(0x34e,0x37a)]=this[_0x4bc518(0x3df,0x37a)],_0x10da6d['modelMatrix']=Matrix4['IDENTITY'],_0x10da6d['renderState']=_0x4e6014,_0x10da6d['shaderProgram']=_0x3abbdf,_0x10da6d['framebuffer']=this['framebuffer'],_0x10da6d['uniformMap']=this['uniformMap'],_0x10da6d['pass']=Pass$1[_0x5e9f88(0x18e,0x1b6)],new DrawCommand(_0x10da6d);}else{if(this['commandType']==='Compute'){const _0x5dda8e={};return _0x5dda8e[_0x5e9f88(0x159,0x108)]=this,_0x5dda8e['fragmentShaderSource']=this[_0x5e9f88(0x137,0x112)],_0x5dda8e[_0x5e9f88(0x190,0x138)]=this[_0x4bc518(0x47f,0x43a)],_0x5dda8e['outputTexture']=this['outputTexture'],_0x5dda8e[_0x4bc518(0x48a,0x400)]=!![],new ComputeCommand(_0x5dda8e);}else throw new Error(_0x4bc518(0x367,0x3c8));}}['setGeometry'](_0x21e9da,_0x398575){this[_0x2a1cb7(0x4bd,0x435)]=_0x398575;function _0x2a1cb7(_0x1ef2d1,_0x4284c7){return _0x27febc(_0x4284c7-0x4ac,_0x1ef2d1);}function _0x237a8f(_0x4de1c4,_0x45c3cf){return _0x4445ca(_0x4de1c4,_0x45c3cf- -0x539);}defined(this['commandToExecute'])&&(this['commandToExecute'][_0x2a1cb7(0x3f0,0x41a)]=VertexArray$1[_0x2a1cb7(0x4bc,0x4b8)]({'context':_0x21e9da,'geometry':this[_0x237a8f(-0x1c,0x10)],'attributeLocations':this[_0x2a1cb7(0x421,0x43b)],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}[_0x4445ca(0x528,0x55b)](_0x58ec54){function _0x57ee08(_0x319731,_0x1fc88d){return _0x4445ca(_0x319731,_0x1fc88d- -0x22b);}if(!this['isDynamic']())return;if(!this[_0x37579d(0x61d,0x69f)]||!defined(_0x58ec54))return;function _0x37579d(_0x553b35,_0x2a04df){return _0x4445ca(_0x2a04df,_0x553b35-0x1f);}!defined(this[_0x57ee08(0x314,0x374)])&&(this[_0x37579d(0x5be,0x5d6)]=this['createCommand'](_0x58ec54['context']));defined(this[_0x37579d(0x557,0x5ad)])&&this[_0x37579d(0x557,0x5e1)]();if(!_0x58ec54['commandList']){console['warn'](_0x37579d(0x554,0x4f3));return;}defined(this[_0x37579d(0x51e,0x572)])&&_0x58ec54[_0x57ee08(0x43f,0x3c5)]['push'](this['clearCommand']),defined(this['commandToExecute'])&&_0x58ec54['commandList']['push'](this[_0x57ee08(0x390,0x374)]);}['isDestroyed'](){return![];}['destroy'](){if(defined(this[_0x129430(0x572,0x519)])){var _0x70a61b;(_0x70a61b=this['commandToExecute'][_0x10247d(0x584,0x507)])===null||_0x70a61b===void 0x0||_0x70a61b[_0x129430(0x4a1,0x503)](),this[_0x10247d(0x577,0x571)]['shaderProgram']=undefined;}function _0x129430(_0x170c12,_0x281cab){return _0x4445ca(_0x170c12,_0x281cab- -0x86);}function _0x10247d(_0x2055de,_0x50b1c2){return _0x27febc(_0x2055de-0x598,_0x50b1c2);}return destroyObject(this);}}function deepMerge(_0x53361e,_0xc12b0e){if(!_0x53361e)return _0xc12b0e;if(!_0xc12b0e)return _0x53361e;function _0x426586(_0x189e64,_0x4b02e1){return _0x27febc(_0x4b02e1-0x5b9,_0x189e64);}const _0x5d9cab={..._0xc12b0e};function _0x355838(_0x2012ee,_0xa6ee25){return _0x4445ca(_0xa6ee25,_0x2012ee-0x8e);}const _0x1bc1ab=_0x5d9cab;for(const _0x524041 in _0x53361e){if(Object['prototype']['hasOwnProperty']['call'](_0x53361e,_0x524041)){const _0x102919=_0x53361e[_0x524041],_0x1cee42=_0xc12b0e[_0x524041];if(Array['isArray'](_0x102919)){_0x1bc1ab[_0x524041]=_0x102919[_0x355838(0x65e,0x61a)]();continue;}if(_0x102919&&typeof _0x102919===_0x426586(0x4b2,0x50c)){_0x1bc1ab[_0x524041]=deepMerge(_0x102919,_0x1cee42||{});continue;}_0x102919!==undefined&&(_0x1bc1ab[_0x524041]=_0x102919);}}return _0x1bc1ab;}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(_0xf50c62,_0x16c741,_0x6bcb31,_0x393705,_0x2bd38f){this[_0xa11870(-0x6,0x17)]=_0xf50c62,this[_0x213d62(0x26e,0x2a1)]=_0x6bcb31,this['viewerParameters']=_0x393705,this[_0x213d62(0x23d,0x20c)]=_0x16c741;function _0xa11870(_0x20745e,_0x55f647){return _0x4445ca(_0x20745e,_0x55f647- -0x5a9);}this['frameRate']=0x3c,this['frameRateAdjustment']=0x1;const _0x605e5b={};_0x605e5b['scene']=_0x2bd38f,_0x605e5b[_0xa11870(0x9,-0x1b)]=0x1,_0x605e5b[_0x213d62(0x1ea,0x17c)]=0x0,this['frameRateMonitor']=new FrameRateMonitor(_0x605e5b),this[_0x213d62(0x28e,0x215)](),this['createWindTextures']();function _0x213d62(_0x6a68ec,_0x1828fc){return _0x27febc(_0x6a68ec-0x249,_0x1828fc);}this[_0x213d62(0x281,0x295)](),this[_0x213d62(0x27f,0x213)]();}[_0x4445ca(0x65f,0x605)](){const _0x506c9d=()=>{function _0x3badba(_0x52dedc,_0xf3896e){return _0x34ed(_0x52dedc- -0x38e,_0xf3896e);}function _0x42c9f8(_0x424184,_0x29f1b2){return _0x34ed(_0x424184- -0xc4,_0x29f1b2);}this[_0x42c9f8(0x205,0x196)]['lastFramesPerSecond']>0x14&&(this['frameRate']=this[_0x3badba(-0xc5,-0x47)][_0x42c9f8(0x163,0x161)],this[_0x3badba(-0xb3,-0x50)]=0x3c/Math[_0x3badba(-0xc0,-0x88)](this[_0x42c9f8(0x14b,0x134)],0x1));};function _0x738ec7(_0x5ca6b4,_0x436bd3){return _0x27febc(_0x5ca6b4-0x674,_0x436bd3);}_0x506c9d();const _0x182074=setInterval(_0x506c9d,0x3e8),_0x248f03=this['destroy']['bind'](this);this[_0x738ec7(0x63d,0x604)]=()=>{clearInterval(_0x182074),_0x248f03();};}['createWindTextures'](){const _0x3b15d6={};function _0x358e60(_0x1407e9,_0x56f73f){return _0x4445ca(_0x56f73f,_0x1407e9- -0x30e);}_0x3b15d6['minificationFilter']=TextureMinificationFilter$1['LINEAR'];function _0x52a162(_0x43b4e3,_0x59d306){return _0x27febc(_0x59d306-0x11a,_0x43b4e3);}_0x3b15d6['magnificationFilter']=TextureMagnificationFilter$1[_0x52a162(0x114,0x107)];const _0x1f7f78={'context':this[_0x52a162(0x10f,0x11a)],'width':this['windData'][_0x52a162(0x1ba,0x143)],'height':this['windData']['height'],'pixelFormat':PixelFormat$1[_0x52a162(0x149,0x144)],'pixelDatatype':PixelDatatype$1[_0x52a162(0xb5,0xef)],'flipY':this[_0x358e60(0x2d7,0x33e)][_0x52a162(0xe4,0x6f)]??![],'sampler':new Sampler$1(_0x3b15d6)};this[_0x52a162(0xdf,0xc1)]={'U':new Texture$1({..._0x1f7f78,'source':{'arrayBufferView':new Float32Array(this['windData']['u']['array'])}}),'V':new Texture$1({..._0x1f7f78,'source':{'arrayBufferView':new Float32Array(this['windData']['v']['array'])}})};}['createParticlesTextures'](){const _0x2293f0={};_0x2293f0[_0x3f0853(0xf6,0x9b)]=TextureMinificationFilter$1['NEAREST'];function _0x3f0853(_0x335100,_0x3fcbba){return _0x4445ca(_0x3fcbba,_0x335100- -0x4bf);}_0x2293f0[_0x3f0853(0x125,0x158)]=TextureMagnificationFilter$1[_0x2b140c(0x2bc,0x2a3)];function _0x2b140c(_0x49c248,_0x3efc2c){return _0x4445ca(_0x3efc2c,_0x49c248- -0x305);}const _0xa28d0f={'context':this[_0x3f0853(0x101,0x16d)],'width':this['options'][_0x3f0853(0x44,0x86)],'height':this['options'][_0x3f0853(0x44,0xce)],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1[_0x3f0853(0xd6,0xb6)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options']['particlesTextureSize']*this[_0x3f0853(0x126,0x159)][_0x2b140c(0x1fe,0x21e)]*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x2293f0)};this[_0x2b140c(0x216,0x205)]={'previousParticlesPosition':new Texture$1(_0xa28d0f),'currentParticlesPosition':new Texture$1(_0xa28d0f),'nextParticlesPosition':new Texture$1(_0xa28d0f),'postProcessingPosition':new Texture$1(_0xa28d0f),'particlesSpeed':new Texture$1(_0xa28d0f)};}[_0x4445ca(0x5d2,0x5a9)](){Object['values'](this['particlesTextures'])['forEach'](_0x56f463=>_0x56f463['destroy']());}[_0x27febc(0x36,0x96)](){function _0x109418(_0x7bc12e,_0x4b959c){return _0x4445ca(_0x7bc12e,_0x4b959c- -0x589);}function _0x4fd1e2(_0x53c48e,_0x36b221){return _0x27febc(_0x53c48e- -0x1a,_0x36b221);}this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this[_0x4fd1e2(-0x26,-0x68)]['u']['min'],this[_0x109418(-0x52,0x2b)]['u']['max']),'vRange':()=>new Cartesian2$1(this[_0x109418(0x49,0x2b)]['v'][_0x4fd1e2(-0x60,-0x60)],this[_0x4fd1e2(-0x26,0x37)]['v']['max']),'speedRange':()=>new Cartesian2$1(this[_0x4fd1e2(-0x26,0x1c)]['speed']['min'],this[_0x109418(-0x12,0x2b)]['speed']['max']),'currentParticlesPosition':()=>this['particlesTextures'][_0x109418(-0x13,0x58)],'speedScaleFactor':()=>{function _0x59efa2(_0x21348b,_0x22913e){return _0x109418(_0x22913e,_0x21348b- -0x11);}return(this['viewerParameters'][_0x59efa2(0x71,0x98)]+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this[_0x4fd1e2(0x2c,-0x4d)],'dimension':()=>new Cartesian2$1(this[_0x4fd1e2(-0x26,-0xab)]['width'],this['windData']['height']),'minimum':()=>new Cartesian2$1(this['windData']['bounds']['west'],this['windData']['bounds'][_0x4fd1e2(0x2,0x2b)]),'maximum':()=>new Cartesian2$1(this['windData']['bounds'][_0x4fd1e2(-0xc,0x4d)],this[_0x109418(0x79,0x2b)]['bounds'][_0x109418(0x4,-0x68)])},'fragmentShaderSource':ShaderManager[_0x4fd1e2(-0x63,-0x10)](),'outputTexture':this[_0x109418(-0x17,-0x6e)][_0x109418(-0x3b,-0x48)],'preExecute':()=>{function _0x381766(_0xc1e707,_0x205d77){return _0x109418(_0xc1e707,_0x205d77-0x28);}const _0x46be6b=this['particlesTextures'][_0x9d19f9(0x3df,0x419)];this['particlesTextures']['previousParticlesPosition']=this['particlesTextures']['currentParticlesPosition'],this[_0x9d19f9(0x473,0x429)]['currentParticlesPosition']=this['particlesTextures'][_0x381766(0x85,0xa9)];function _0x9d19f9(_0x48d3f7,_0x49a08f){return _0x4fd1e2(_0x49a08f-0x4e8,_0x48d3f7);}this['particlesTextures']['postProcessingPosition']=_0x46be6b,this[_0x9d19f9(0x44c,0x461)]['calculateSpeed'][_0x381766(0x3c,0x3e)]&&(this[_0x381766(-0x1e,-0xe)]['calculateSpeed'][_0x381766(0xa9,0x3e)][_0x381766(0x85,0x2f)]=this['particlesTextures']['particlesSpeed']);},'isDynamic':()=>this[_0x4fd1e2(0xb,0x34)]['dynamic']}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this['particlesTextures']['currentParticlesPosition'],'particlesSpeed':()=>this['particlesTextures']['particlesSpeed']},'fragmentShaderSource':ShaderManager[_0x109418(-0xa8,-0x80)](),'outputTexture':this['particlesTextures'][_0x4fd1e2(0x3,0x41)],'preExecute':()=>{function _0x5208ff(_0x2cdf9e,_0x451184){return _0x4fd1e2(_0x451184-0x378,_0x2cdf9e);}function _0x42c8d4(_0x410df3,_0x5e0c18){return _0x109418(_0x5e0c18,_0x410df3-0x130);}this['primitives'][_0x42c8d4(0xfb,0x146)]['commandToExecute']&&(this['primitives'][_0x42c8d4(0xfb,0xdd)][_0x5208ff(0x2fa,0x33d)]['outputTexture']=this[_0x5208ff(0x245,0x2b9)][_0x42c8d4(0x184,0x1be)]);},'isDynamic':()=>this['options'][_0x4fd1e2(0x14,0x21)]}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x109418(-0x65,0xa),'uniformMap':{'nextParticlesPosition':()=>this['particlesTextures'][_0x109418(0x5b,0x54)],'particlesSpeed':()=>this[_0x109418(-0xf9,-0x6e)]['particlesSpeed'],'lonRange':()=>this['viewerParameters'][_0x4fd1e2(-0x13,0x1d)],'latRange':()=>this['viewerParameters']['latRange'],'dataLonRange':()=>new Cartesian2$1(this[_0x4fd1e2(-0x26,0x49)][_0x4fd1e2(-0xcb,-0x47)]['west'],this[_0x109418(0x5e,0x2b)]['bounds']['east']),'dataLatRange':()=>new Cartesian2$1(this['windData']['bounds'][_0x4fd1e2(0x2,-0x43)],this['windData'][_0x109418(-0xb0,-0x7a)]['north']),'randomCoefficient':function(){function _0x9ede30(_0x284d07,_0x3341af){return _0x109418(_0x3341af,_0x284d07-0x4e);}return Math[_0x9ede30(0x37,0xb1)]();},'dropRate':()=>this['options']['dropRate'],'dropRateBump':()=>this[_0x4fd1e2(0xb,-0x1)][_0x109418(-0x64,-0x26)],'useViewerBounds':()=>this[_0x109418(0x4c,0x5c)][_0x109418(0x52,0x63)]},'fragmentShaderSource':ShaderManager['getPostProcessingPositionShader'](),'outputTexture':this[_0x4fd1e2(-0xbf,-0x5c)]['postProcessingPosition'],'preExecute':()=>{function _0x1441f6(_0x2a61a9,_0x1a9765){return _0x4fd1e2(_0x1a9765-0x53c,_0x2a61a9);}function _0x33c5b2(_0x546a5b,_0x415bd5){return _0x109418(_0x415bd5,_0x546a5b-0x489);}this[_0x1441f6(0x480,0x4b5)]['postProcessingPosition'][_0x33c5b2(0x49f,0x42a)]&&(this['primitives'][_0x1441f6(0x5ed,0x56c)][_0x33c5b2(0x49f,0x483)]['outputTexture']=this['particlesTextures']['postProcessingPosition']);},'isDynamic':()=>this[_0x109418(0x57,0x5c)][_0x109418(0x87,0x65)]})};}['reCreateWindTextures'](){function _0x185f46(_0x1caaf7,_0x4814d8){return _0x27febc(_0x1caaf7- -0x132,_0x4814d8);}this[_0x185f46(-0x18b,-0x1d4)]['U']['destroy'](),this['windTextures']['V']['destroy'](),this['createWindTextures']();}[_0x4445ca(0x578,0x551)](_0x3bad27){function _0x4ae8a9(_0x4d38ee,_0x236966){return _0x4445ca(_0x236966,_0x4d38ee-0xc);}this['windData']=_0x3bad27,this[_0x4ae8a9(0x54b,0x57d)]();}['updateOptions'](_0x1f55d3){const _0x4d4ca4=_0x1f55d3['flipY']!==undefined&&_0x1f55d3[_0x121889(0x1ab,0x1f8)]!==this['options']['flipY'];function _0x121889(_0x18dda3,_0x3f6537){return _0x27febc(_0x18dda3-0x256,_0x3f6537);}this['options']=deepMerge(_0x1f55d3,this[_0x121889(0x27b,0x222)]);function _0x397aef(_0xf2c78a,_0x4b46a9){return _0x4445ca(_0xf2c78a,_0x4b46a9- -0x388);}_0x4d4ca4&&this[_0x121889(0x1d5,0x1c5)]();}[_0x27febc(-0x42,-0x99)](_0x1c27e7){const {array:_0x34c4ad}=_0x1c27e7;function _0x5ef094(_0x11c85d,_0x425a60){return _0x4445ca(_0x425a60,_0x11c85d- -0x54b);}let {min:_0x3c6e70,max:_0x5f188d}=_0x1c27e7;const _0x2be7a6=new Float32Array(_0x34c4ad[_0x1b2d24(-0x1f9,-0x1e6)]);_0x3c6e70===undefined&&(console['warn'](_0x1b2d24(-0x1c2,-0x1c8)),_0x3c6e70=Math['min'](..._0x34c4ad));function _0x1b2d24(_0x5a2e0d,_0x109be2){return _0x4445ca(_0x5a2e0d,_0x109be2- -0x6ed);}_0x5f188d===undefined&&(console[_0x5ef094(0x82,0xf2)](_0x1b2d24(-0x137,-0xfa)),_0x5f188d=Math[_0x1b2d24(-0x123,-0xf4)](..._0x34c4ad));const _0x401303=Math[_0x1b2d24(-0xd0,-0xf4)](Math[_0x5ef094(0x3b,-0x48)](_0x3c6e70),Math[_0x1b2d24(-0x101,-0x167)](_0x5f188d));for(let _0x38ff8d=0x0;_0x38ff8d<_0x34c4ad[_0x5ef094(-0x44,0x36)];_0x38ff8d++){const _0x3fb78c=_0x34c4ad[_0x38ff8d]/_0x401303;_0x2be7a6[_0x38ff8d]=_0x3fb78c;}return _0x2be7a6;}[_0x4445ca(0x580,0x589)](){function _0x41a14e(_0x22a490,_0x36f54f){return _0x27febc(_0x36f54f-0x2b,_0x22a490);}function _0x359a81(_0x33650b,_0x122f6b){return _0x27febc(_0x33650b-0x13b,_0x122f6b);}Object['values'](this[_0x41a14e(0x2f,-0x2e)])['forEach'](_0x58210b=>_0x58210b['destroy']()),Object[_0x41a14e(-0x1e,0x23)](this[_0x41a14e(-0x13,-0x7a)])['forEach'](_0x218b23=>_0x218b23['destroy']()),Object['values'](this['primitives'])[_0x41a14e(-0x57,-0x81)](_0x2ff09e=>_0x2ff09e[_0x41a14e(0x15,-0xc)]()),this[_0x41a14e(0xa9,0x5f)][_0x41a14e(-0x4f,-0xc)]();}}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace['Cesium'];class WindParticlesRendering{constructor(_0x2ba58c,_0x1c41dd,_0x28f45f,_0xe8e89f){this['context']=_0x2ba58c,this['options']=_0x1c41dd,this['viewerParameters']=_0x28f45f,this[_0x4ab8c2(0x335,0x37d)]=_0xe8e89f;function _0x4ab8c2(_0x2e6ab7,_0x4e12bd){return _0x4445ca(_0x4e12bd,_0x2e6ab7- -0x25c);}function _0x24febf(_0x3031b1,_0x1cdb00){return _0x27febc(_0x3031b1-0x239,_0x1cdb00);}(typeof this[_0x24febf(0x25e,0x2c6)][_0x24febf(0x17c,0x15e)]!=='number'||this[_0x24febf(0x25e,0x29d)][_0x24febf(0x17c,0x146)]<=0x0)&&(console[_0x4ab8c2(0x37f,0x338)](_0x4ab8c2(0x2e8,0x28a)),this[_0x24febf(0x25e,0x229)][_0x24febf(0x17c,0x1e7)]=0x100),this[_0x4ab8c2(0x32b,0x2ed)]=this[_0x24febf(0x23e,0x23a)](),this['textures']=this['createRenderingTextures'](),this[_0x24febf(0x243,0x290)]=this[_0x4ab8c2(0x345,0x3b5)](),this[_0x24febf(0x1cc,0x1a4)]=this['createPrimitives']();}['createRenderingTextures'](){const _0x25f4b9={};_0x25f4b9['context']=this['context'],_0x25f4b9[_0x33145c(0x24b,0x2a6)]=this[_0x33145c(0x273,0x27d)]['drawingBufferWidth'],_0x25f4b9[_0x1fcffa(0x311,0x2c7)]=this[_0x1fcffa(0x35b,0x3b9)]['drawingBufferHeight'],_0x25f4b9['pixelFormat']=PixelFormat['RGBA'];function _0x33145c(_0x27db25,_0x2be6e9){return _0x4445ca(_0x27db25,_0x2be6e9- -0x343);}_0x25f4b9[_0x1fcffa(0x39a,0x416)]=PixelDatatype['UNSIGNED_BYTE'];const _0x2c9334=_0x25f4b9,_0x1cfe68={};function _0x1fcffa(_0x170349,_0xdc3722){return _0x4445ca(_0xdc3722,_0x170349- -0x265);}_0x1cfe68['context']=this['context'],_0x1cfe68[_0x1fcffa(0x384,0x327)]=this[_0x1fcffa(0x35b,0x35f)][_0x33145c(0x233,0x265)],_0x1cfe68['height']=this[_0x33145c(0x283,0x27d)]['drawingBufferHeight'],_0x1cfe68[_0x33145c(0x272,0x283)]=PixelFormat['DEPTH_COMPONENT'],_0x1cfe68['pixelDatatype']=PixelDatatype['UNSIGNED_INT'];const _0x227b58=_0x1cfe68;return{'segmentsColor':new Texture(_0x2c9334),'segmentsDepth':new Texture(_0x227b58)};}[_0x27febc(-0x1f,-0x3c)](){const _0x156f78={};_0x156f78[_0x3c61dd(-0x104,-0x18c)]=this['context'];function _0x3c61dd(_0x1d0e2a,_0x5167fc){return _0x27febc(_0x1d0e2a- -0x104,_0x5167fc);}_0x156f78[_0x12a42b(0x6e,0x6)]=[this['textures'][_0x3c61dd(-0x11a,-0xaf)]];function _0x12a42b(_0x5382d9,_0x4fe162){return _0x27febc(_0x4fe162-0x69,_0x5382d9);}return _0x156f78['depthTexture']=this[_0x3c61dd(-0xbd,-0x121)]['segmentsDepth'],{'segments':new Framebuffer(_0x156f78)};}['destoryRenderingFramebuffers'](){function _0x1394a4(_0x39dc88,_0x4c0a68){return _0x27febc(_0x4c0a68-0x3c,_0x39dc88);}Object[_0x1394a4(0xb4,0x34)](this['framebuffers'])['forEach'](_0x4cd803=>{_0x4cd803['destroy']();});}[_0x27febc(0x5,0x3b)](){const _0x16f25a=new Float32Array(this['options'][_0x2649fe(0x49,0x1)]['flatMap'](_0x4102c1=>{function _0x1b6bfb(_0x236841,_0x5cf69a){return _0x2649fe(_0x236841,_0x5cf69a- -0x7c);}const _0x117c76=Color$1['fromCssColorString'](_0x4102c1);return[_0x117c76['red'],_0x117c76[_0x1b6bfb(-0x42,-0x36)],_0x117c76['blue'],_0x117c76['alpha']];}));function _0x38fb76(_0x47c599,_0x3cafa1){return _0x4445ca(_0x47c599,_0x3cafa1- -0x228);}const _0x5687b2={};_0x5687b2['minificationFilter']=TextureMinificationFilter['LINEAR'],_0x5687b2['magnificationFilter']=TextureMagnificationFilter['LINEAR'],_0x5687b2['wrapS']=TextureWrap[_0x2649fe(-0x86,-0x34)];function _0x2649fe(_0xba8097,_0x1593d1){return _0x27febc(_0x1593d1-0x34,_0xba8097);}return _0x5687b2['wrapT']=TextureWrap[_0x38fb76(0x350,0x330)],new Texture({'context':this['context'],'width':this[_0x2649fe(0xb8,0x59)][_0x2649fe(-0x88,0x1)]['length'],'height':0x1,'pixelFormat':PixelFormat['RGBA'],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x5687b2),'source':{'width':this['options']['colors'][_0x2649fe(-0xb2,-0x85)],'height':0x1,'arrayBufferView':_0x16f25a}});}[_0x4445ca(0x5ce,0x560)](){const _0x7c279a=0x4,_0x19f607=this[_0x363333(0x449,0x44d)]['particlesTextureSize'];function _0x267446(_0x157e68,_0x1c70ea){return _0x27febc(_0x1c70ea-0x7,_0x157e68);}let _0x1e8ec3=[];for(let _0x28b003=0x0;_0x28b003<_0x19f607;_0x28b003++){for(let _0x9a07e7=0x0;_0x9a07e7<_0x19f607;_0x9a07e7++){for(let _0x1772db=0x0;_0x1772db<_0x7c279a;_0x1772db++){_0x1e8ec3['push'](_0x28b003/_0x19f607),_0x1e8ec3[_0x363333(0x378,0x39b)](_0x9a07e7/_0x19f607);}}}_0x1e8ec3=new Float32Array(_0x1e8ec3);const _0x2f925a=this['options']['particlesTextureSize']**0x2;let _0x5a4290=[];for(let _0x456224=0x0;_0x456224<_0x2f925a;_0x456224++){_0x5a4290['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x5a4290=new Float32Array(_0x5a4290);let _0x505f5f=[];for(let _0x360caa=0x0,_0x2898a2=0x0;_0x360caa<_0x2f925a;_0x360caa++){_0x505f5f[_0x363333(0x414,0x39b)](_0x2898a2+0x0,_0x2898a2+0x1,_0x2898a2+0x2,_0x2898a2+0x2,_0x2898a2+0x1,_0x2898a2+0x3),_0x2898a2+=_0x7c279a;}_0x505f5f=new Uint32Array(_0x505f5f);const _0xbb3701={};function _0x363333(_0x11f590,_0x3dcb7f){return _0x27febc(_0x3dcb7f-0x428,_0x11f590);}_0xbb3701[_0x363333(0x3c1,0x3a4)]=ComponentDatatype['FLOAT'],_0xbb3701['componentsPerAttribute']=0x2,_0xbb3701['values']=_0x1e8ec3;const _0x2314a8={};_0x2314a8['componentDatatype']=ComponentDatatype['FLOAT'],_0x2314a8['componentsPerAttribute']=0x3,_0x2314a8['values']=_0x5a4290;const _0x261e55=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0xbb3701),'normal':new GeometryAttribute(_0x2314a8)}),'indices':_0x505f5f});return _0x261e55;}['createRawRenderState'](_0x8799ba){const _0xf0a13c={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x8799ba};return Appearance['getDefaultRenderState'](!![],![],_0xf0a13c);}[_0x27febc(-0x3e,0x14)](){const _0x1dd820={};_0x1dd820['st']=0x0,_0x1dd820['normal']=0x1;const _0x525c51={};_0x525c51[_0x3feff1(0x42a,0x412)]=!![];const _0x3c0837={};_0x3c0837['enabled']=!![],_0x3c0837[_0x15d2e5(0x4b7,0x4f8)]=WebGLRenderingContext[_0x3feff1(0x49e,0x417)],_0x3c0837['blendFuncSource']=WebGLRenderingContext[_0x3feff1(0x3bb,0x3ed)],_0x3c0837[_0x15d2e5(0x49b,0x480)]=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x256a22={};_0x256a22[_0x15d2e5(0x49f,0x491)]=undefined,_0x256a22['depthTest']=_0x525c51,_0x256a22[_0x3feff1(0x3bb,0x3b4)]=!![],_0x256a22['blending']=_0x3c0837;const _0x166659=new CustomPrimitive({'commandType':_0x15d2e5(0x54f,0x4cf),'attributeLocations':_0x1dd820,'geometry':this['createSegmentsGeometry'](),'primitiveType':PrimitiveType[_0x15d2e5(0x474,0x428)],'uniformMap':{'previousParticlesPosition':()=>this[_0x15d2e5(0x4b4,0x48c)]['particlesTextures'][_0x15d2e5(0x3a9,0x406)],'currentParticlesPosition':()=>this['computing']['particlesTextures']['currentParticlesPosition'],'postProcessingPosition':()=>this[_0x15d2e5(0x4c6,0x48c)]['particlesTextures'][_0x3feff1(0x507,0x48d)],'particlesSpeed':()=>this[_0x15d2e5(0x4da,0x48c)]['particlesTextures']['particlesSpeed'],'frameRateAdjustment':()=>this['computing'][_0x15d2e5(0x4a0,0x501)],'colorTable':()=>this[_0x3feff1(0x47c,0x40a)],'domain':()=>{function _0x845f07(_0x3dc9b2,_0x501bda){return _0x15d2e5(_0x501bda,_0x3dc9b2- -0x42f);}var _0x33019e,_0x596306;const _0x4da1c0=new Cartesian2(((_0x33019e=this[_0x845f07(0xb1,0xce)][_0x3a522c(0x5ad,0x5b9)])===null||_0x33019e===void 0x0?void 0x0:_0x33019e['min'])??this['computing']['windData']['speed']['min'],((_0x596306=this['options']['domain'])===null||_0x596306===void 0x0?void 0x0:_0x596306['max'])??this['computing'][_0x845f07(0x80,0xc4)][_0x845f07(0x2e,0x9)]['max']);function _0x3a522c(_0x388dbb,_0x490c09){return _0x15d2e5(_0x490c09,_0x388dbb-0xf4);}return _0x4da1c0;},'displayRange':()=>{function _0x1364eb(_0x24a26d,_0x2b2869){return _0x3feff1(_0x2b2869,_0x24a26d- -0x199);}function _0x49a1d5(_0x13a857,_0x5e3338){return _0x15d2e5(_0x13a857,_0x5e3338-0xee);}var _0x360fb1,_0x3b7615;const _0x2fdfe8=new Cartesian2(((_0x360fb1=this['options'][_0x1364eb(0x2b5,0x260)])===null||_0x360fb1===void 0x0?void 0x0:_0x360fb1[_0x49a1d5(0x59e,0x563)])??this['computing']['windData']['speed']['min'],((_0x3b7615=this['options']['displayRange'])===null||_0x3b7615===void 0x0?void 0x0:_0x3b7615[_0x1364eb(0x2e3,0x304)])??this['computing']['windData']['speed']['max']);return _0x2fdfe8;},'particleHeight':()=>this[_0x15d2e5(0x4d8,0x4e0)]['fixedHeight']||0x0,'aspect':()=>this['context']['drawingBufferWidth']/this['context']['drawingBufferHeight'],'pixelSize':()=>this['viewerParameters'][_0x15d2e5(0x58f,0x506)],'lineWidth':()=>{function _0x3c6ccc(_0x5082b4,_0x14035f){return _0x3feff1(_0x14035f,_0x5082b4- -0x568);}const _0x1462d0={};_0x1462d0[_0x560ae7(0x327,0x2ca)]=0x1,_0x1462d0['max']=0x2;const _0x3a447=this[_0x560ae7(0x2ba,0x335)]['lineWidth']||_0x1462d0;function _0x560ae7(_0x41db3a,_0xc4f0d9){return _0x15d2e5(_0x41db3a,_0xc4f0d9- -0x1ab);}return new Cartesian2(_0x3a447['min'],_0x3a447[_0x560ae7(0x3ae,0x349)]);},'lineLength':()=>{const _0x26890d={};_0x26890d['min']=0x14,_0x26890d['max']=0x64;const _0x557759=this['options']['lineLength']||_0x26890d;return new Cartesian2(_0x557759['min'],_0x557759['max']);},'is3D':()=>this['viewerParameters']['sceneMode']===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this[_0x15d2e5(0x498,0x502)]['segmentsDepth']},'vertexShaderSource':ShaderManager['getSegmentDrawVertexShader'](),'fragmentShaderSource':ShaderManager[_0x15d2e5(0x519,0x4f6)](),'rawRenderState':this['createRawRenderState'](_0x256a22)}),_0x3e7f9={};_0x3e7f9[_0x3feff1(0x43d,0x3e9)]=_0x166659;function _0x15d2e5(_0x208de9,_0x27ed27){return _0x4445ca(_0x208de9,_0x27ed27- -0x105);}function _0x3feff1(_0x268fd6,_0x3beda2){return _0x27febc(_0x3beda2-0x443,_0x268fd6);}return _0x3e7f9;}[_0x4445ca(0x524,0x569)](){const _0x2e7ad9=this['createSegmentsGeometry']();this[_0xe7cdcf(0x4ec,0x494)][_0x411c44(-0x17,0x59)]['geometry']=_0x2e7ad9;const _0x246969={};_0x246969[_0x411c44(0x43,0xbd)]=this['context'],_0x246969[_0x411c44(-0x34,-0x71)]=_0x2e7ad9,_0x246969['attributeLocations']=this[_0x411c44(-0x2a,-0xd)][_0x411c44(-0x17,0x1b)]['attributeLocations'],_0x246969['bufferUsage']=BufferUsage['STATIC_DRAW'];function _0xe7cdcf(_0x753c0c,_0x960095){return _0x27febc(_0x960095-0x501,_0x753c0c);}const _0x556c4d=VertexArray[_0x411c44(0x4f,-0x1b)](_0x246969);function _0x411c44(_0x179e83,_0x138990){return _0x27febc(_0x179e83-0x43,_0x138990);}this['primitives'][_0x411c44(-0x17,-0x17)]['commandToExecute']&&(this['primitives']['segments'][_0xe7cdcf(0x4f1,0x4e0)][_0x411c44(-0x4f,-0x41)]=_0x556c4d);}['onColorTableChange'](){function _0x5d434a(_0x51223e,_0x207263){return _0x4445ca(_0x51223e,_0x207263- -0x24);}function _0x271b07(_0x4206b8,_0x24900b){return _0x27febc(_0x24900b-0x5e7,_0x4206b8);}this[_0x5d434a(0x4ea,0x563)]['destroy'](),this[_0x271b07(0x621,0x5ae)]=this['createColorTableTexture']();}['updateOptions'](_0x1c6606){const _0x1557d1=_0x1c6606['colors']&&JSON[_0x390b43(0x59d,0x513)](_0x1c6606['colors'])!==JSON['stringify'](this[_0x390b43(0x586,0x608)]['colors']);function _0x28b387(_0x239db4,_0x4fb29a){return _0x4445ca(_0x4fb29a,_0x239db4-0xa9);}this['options']=deepMerge(_0x1c6606,this['options']);function _0x390b43(_0x571c46,_0x1ee9af){return _0x4445ca(_0x1ee9af,_0x571c46- -0x5f);}_0x1557d1&&this['onColorTableChange']();}['destroy'](){function _0x2e4540(_0x3f0ad6,_0x582c26){return _0x4445ca(_0x582c26,_0x3f0ad6- -0x40);}Object['values'](this[_0x2e4540(0x58a,0x50b)])['forEach'](_0xfc4e2f=>{_0xfc4e2f['destroy']();}),Object['values'](this['primitives'])['forEach'](_0x4eb2fe=>{_0x4eb2fe['destroy']();});function _0x57b48d(_0x4c499a,_0x1a3b58){return _0x27febc(_0x4c499a-0xc3,_0x1a3b58);}this[_0x57b48d(0x8a,0xbe)][_0x2e4540(0x549,0x560)]();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0x4445ca(0x558,0x545)];class WindParticleSystem{constructor(_0x23aa6b,_0x2ff768,_0x23ecd4,_0x10fd4d,_0x5f442e){this[_0x58d9a2(0x180,0x1ac)]=_0x23aa6b,this['options']=_0x23ecd4,this['viewerParameters']=_0x10fd4d;function _0x542c83(_0x46e1a8,_0x34a751){return _0x4445ca(_0x34a751,_0x46e1a8- -0x67d);}this[_0x542c83(-0xec,-0xa1)]=new WindParticlesComputing(_0x23aa6b,_0x2ff768,_0x23ecd4,_0x10fd4d,_0x5f442e),this[_0x542c83(-0xcc,-0x133)]=new WindParticlesRendering(_0x23aa6b,_0x23ecd4,_0x10fd4d,this['computing']);function _0x58d9a2(_0x19a7e0,_0x667e9c){return _0x27febc(_0x667e9c-0x1ac,_0x19a7e0);}this[_0x542c83(-0xf1,-0xd5)]();}['getPrimitives'](){function _0x2e6e11(_0x4f511a,_0x32a0b0){return _0x4445ca(_0x32a0b0,_0x4f511a- -0x57d);}const _0x4e83bd=[this['computing'][_0x5aced8(0x53d,0x4b7)]['calculateSpeed'],this[_0x2e6e11(0x14,-0x12)]['primitives']['updatePosition'],this[_0x5aced8(0x4c2,0x4f5)][_0x2e6e11(-0x2a,0x5a)]['postProcessingPosition'],this[_0x5aced8(0x54e,0x515)]['primitives'][_0x2e6e11(-0x17,0x16)]];function _0x5aced8(_0x51e6c6,_0xdc4624){return _0x4445ca(_0x51e6c6,_0xdc4624- -0x9c);}return _0x4e83bd;}[_0x27febc(-0x34,-0x50)](){function _0x4be84e(_0x1cc6b7,_0x5b260b){return _0x4445ca(_0x5b260b,_0x1cc6b7- -0x6bd);}const _0x2447ff=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});function _0x4fc10b(_0x8efce1,_0x35b073){return _0x4445ca(_0x8efce1,_0x35b073- -0x56f);}Object[_0x4be84e(-0x10d,-0xcb)](this[_0x4fc10b(0x88,0x42)][_0x4fc10b(-0x18,0x5b)])['forEach'](_0x1a762f=>{_0x2447ff['framebuffer']=this[_0x4a5a92(0x130,0x117)]['framebuffers'][_0x1a762f];function _0x4a5a92(_0x4adb12,_0x290070){return _0x4be84e(_0x290070-0x223,_0x4adb12);}_0x2447ff['execute'](this['context']);});}['changeOptions'](_0x119a1c){function _0xfa039(_0x183b7e,_0x1d94f7){return _0x27febc(_0x1d94f7-0x4b7,_0x183b7e);}let _0x22faa2=![];_0x119a1c['particlesTextureSize']&&this['options']['particlesTextureSize']!==_0x119a1c['particlesTextureSize']&&(_0x22faa2=!![]);const _0x78f6=deepMerge(_0x119a1c,this[_0xfa039(0x457,0x4dc)]);if(_0x78f6['particlesTextureSize']<0x1)throw new Error('particlesTextureSize\x20must\x20be\x20greater\x20than\x200');this['options']=_0x78f6;function _0x362327(_0xdaa3b2,_0x447fe2){return _0x4445ca(_0x447fe2,_0xdaa3b2-0x4e);}this[_0xfa039(0x50c,0x4a8)][_0xfa039(0x4a0,0x467)](_0x119a1c),this['computing']['updateOptions'](_0x119a1c),_0x22faa2&&(this[_0x362327(0x5df,0x564)]['destroyParticlesTextures'](),this[_0xfa039(0x42e,0x488)][_0xfa039(0x49d,0x4ef)](),this['rendering'][_0x362327(0x5b7,0x5c8)]());}['applyViewerParameters'](_0x2d7b54){function _0x30ddfc(_0x4bc860,_0x32093f){return _0x4445ca(_0x4bc860,_0x32093f- -0x4e5);}this[_0x8e174d(0x62c,0x5ea)]=_0x2d7b54,this['computing']['viewerParameters']=_0x2d7b54;function _0x8e174d(_0x2bfd17,_0x555557){return _0x4445ca(_0x555557,_0x2bfd17-0x7e);}this['rendering'][_0x30ddfc(0xb7,0xc9)]=_0x2d7b54;}['destroy'](){function _0x4ce076(_0xa2e43f,_0x2ffde7){return _0x27febc(_0x2ffde7- -0xaf,_0xa2e43f);}this[_0x4ce076(-0x10c,-0xde)]['destroy'](),this['rendering']['destroy']();}}function _0x34ed(_0x168d26,_0xb79efa){const _0x55d3af=_0x55d3();return _0x34ed=function(_0x34ed1d,_0x345800){_0x34ed1d=_0x34ed1d-0x1d2;let _0x3ffc07=_0x55d3af[_0x34ed1d];return _0x3ffc07;},_0x34ed(_0x168d26,_0xb79efa);}const Cesium$1=mars3d__namespace[_0x27febc(-0x7b,-0x4f)],BaseLayer$1=mars3d__namespace[_0x27febc(-0x27,-0x43)]['BaseLayer'],_0x414cde={};_0x414cde['min']=0x1,_0x414cde[_0x4445ca(0x659,0x5f9)]=0x2;const _0x1a4a96={};_0x1a4a96[_0x4445ca(0x5f3,0x57a)]=0x14,_0x1a4a96['max']=0x64;const _0x1eee4f={};_0x1eee4f[_0x4445ca(0x504,0x503)]=0x64,_0x1eee4f['fixedHeight']=0x0,_0x1eee4f['lineWidth']=_0x414cde,_0x1eee4f['lineLength']=_0x1a4a96,_0x1eee4f['speedFactor']=0x1,_0x1eee4f[_0x4445ca(0x502,0x55a)]=0.003,_0x1eee4f['dropRateBump']=0.001,_0x1eee4f[_0x4445ca(0x507,0x58d)]=[_0x4445ca(0x560,0x4fe)],_0x1eee4f[_0x4445ca(0x4fe,0x515)]=![],_0x1eee4f['dynamic']=!![];const DEF_OPTIONS=_0x1eee4f;class WindLayer extends BaseLayer$1{constructor(_0x1fe0da={}){_0x1fe0da={...DEF_OPTIONS,..._0x1fe0da},super(_0x1fe0da),this['_setOptionsHook'](_0x1fe0da,_0x1fe0da);}get['layer'](){function _0x2a30e7(_0x2eed5d,_0x5ac3ff){return _0x27febc(_0x2eed5d-0x35d,_0x5ac3ff);}return this[_0x2a30e7(0x2f0,0x28a)];}get[_0x27febc(-0x2e,0x26)](){return this['options']['data'];}set[_0x4445ca(0x5c5,0x592)](_0x3fe9a7){function _0x47c80b(_0x5a8d51,_0x1a51e8){return _0x27febc(_0x5a8d51-0x242,_0x1a51e8);}this[_0x3101d5(0x214,0x1a5)]['data']=_0x3fe9a7;function _0x3101d5(_0x4e5e42,_0x373f87){return _0x27febc(_0x373f87-0x180,_0x4e5e42);}this[_0x3101d5(0x1e0,0x196)](_0x3fe9a7);}get['colors'](){function _0x5558c4(_0x285242,_0x553928){return _0x27febc(_0x285242- -0x143,_0x553928);}return this['options'][_0x5558c4(-0x176,-0x137)];}set['colors'](_0x469dbb){this['options']['colors']=_0x469dbb;const _0x45f203={};_0x45f203[_0x41dafa(-0x136,-0x15c)]=_0x469dbb;function _0x41dafa(_0xc1dac5,_0x11cfba){return _0x4445ca(_0xc1dac5,_0x11cfba- -0x6e9);}this['_setOptionsHook'](this['options'],_0x45f203);}[_0x4445ca(0x4e7,0x516)](_0x3eebda){function _0x48c17b(_0x3a5224,_0xe96940){return _0x4445ca(_0xe96940,_0x3a5224- -0x3f3);}_0x3eebda?this['_addedHook']():this[_0x48c17b(0x1ca,0x15c)]();}['_mountedHook'](){}['_addedHook'](){this[_0x4337f4(0x3d5,0x411)]=this[_0x4337f4(0x3a9,0x3e3)]['scene'],this['camera']=this[_0x4a70dc(0x32f,0x2c8)]['camera'];this['options']['data']&&this['setData'](this['options'][_0x4337f4(0x422,0x473)]);if(!this[_0x4a70dc(0x326,0x37a)]||!this['show'])return;this[_0x4a70dc(0x34d,0x374)]={'lonRange':new Cesium$1['Cartesian2'](-0xb4,0xb4),'latRange':new Cesium$1['Cartesian2'](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this['scene']['mode']};function _0x4a70dc(_0x54be0c,_0x361eea){return _0x27febc(_0x361eea-0x386,_0x54be0c);}this['updateViewerParameters'](),this[_0x4a70dc(0x401,0x3d2)]=new WindParticleSystem(this[_0x4337f4(0x495,0x411)][_0x4337f4(0x4c6,0x4a1)],this['windData'],this[_0x4337f4(0x54e,0x4c6)],this['viewerParameters'],this[_0x4a70dc(0x346,0x2f6)]),this[_0x4337f4(0x470,0x434)]=this['particleSystem'][_0x4a70dc(0x31e,0x39d)]();function _0x4337f4(_0x398644,_0x2c2e0d){return _0x27febc(_0x2c2e0d-0x4a1,_0x398644);}this[_0x4337f4(0x429,0x434)]['forEach'](_0x5747a1=>{function _0x53493f(_0x3860e6,_0x18f57a){return _0x4a70dc(_0x3860e6,_0x18f57a- -0x1c9);}this[_0x53493f(0x149,0x12d)]['primitives']['add'](_0x5747a1);}),this['camera']['percentageChanged']=0.01,this['camera']['changed']['addEventListener'](this[_0x4337f4(0x3e2,0x42c)][_0x4337f4(0x481,0x490)](this)),this['scene']['morphComplete'][_0x4337f4(0x4c5,0x4ce)](this['updateViewerParameters'][_0x4337f4(0x4f6,0x490)](this)),window['addEventListener']('resize',this[_0x4337f4(0x479,0x42c)]['bind'](this));}['_removedHook'](){this['camera'][_0x4d01e9(0x4a,0x82)][_0x8fe13e(0x35e,0x394)](this['updateViewerParameters']['bind'](this));function _0x8fe13e(_0xc158e5,_0x420f88){return _0x4445ca(_0xc158e5,_0x420f88- -0x1da);}this['scene']['morphComplete'][_0x8fe13e(0x352,0x394)](this['updateViewerParameters']['bind'](this));function _0x4d01e9(_0x17248a,_0x5563c4){return _0x4445ca(_0x5563c4,_0x17248a- -0x56f);}window[_0x8fe13e(0x41f,0x394)](_0x4d01e9(-0x5d,0x15),this['updateViewerParameters']['bind'](this)),this['primitives']&&(this['primitives']['forEach'](_0x22599b=>{this['scene']['primitives']['remove'](_0x22599b);}),delete this[_0x8fe13e(0x3e9,0x379)]),this['particleSystem']&&(this['particleSystem'][_0x8fe13e(0x3b1,0x3af)](),delete this['particleSystem']);}[_0x27febc(0x16,-0xe)](_0xd59f5c,_0x1ef1a0){this['windData']=this[_0x390600(0x37a,0x3b9)](_0xd59f5c);function _0x390600(_0x3d2f44,_0x490b0c){return _0x4445ca(_0x490b0c,_0x3d2f44- -0x204);}function _0x149ca4(_0x4bbc1a,_0x1d1d9e){return _0x27febc(_0x4bbc1a-0x1b9,_0x1d1d9e);}if(_0x1ef1a0){this[_0x149ca4(0x1b6,0x21a)](),this['_addedHook']();return;}this[_0x149ca4(0x205,0x28e)]?(this['particleSystem'][_0x149ca4(0x18a,0x17e)]['updateWindData'](this['windData']),this['scene']['requestRender']()):this['_addedHook']();}['_setOptionsHook'](_0x2624d1,_0xbebb94){function _0xcc140f(_0x2bb7a7,_0x523919){return _0x4445ca(_0x2bb7a7,_0x523919- -0x20f);}function _0x1f28b3(_0x7972f,_0x3a336c){return _0x27febc(_0x3a336c- -0x52,_0x7972f);}this[_0x1f28b3(-0x2d,-0x6)]&&(this['particleSystem'][_0x1f28b3(-0xeb,-0x6e)](_0xbebb94),this['scene']['requestRender']());}['processWindData'](_0x4455d2){var _0x41017b,_0x2ba6c6;function _0x704f5b(_0x5dcf7e,_0x37efc6){return _0x4445ca(_0x5dcf7e,_0x37efc6-0x29);}const _0x4cefed={..._0x4455d2},_0x27e92a=_0x4cefed;function _0x155e55(_0x50991a,_0x1070eb){return _0x27febc(_0x50991a-0x30,_0x1070eb);}!_0x27e92a['height']&&_0x27e92a['rows']&&(_0x27e92a['height']=_0x27e92a['rows']);!_0x27e92a[_0x155e55(0x59,0x6a)]&&_0x27e92a['cols']&&(_0x27e92a['width']=_0x27e92a[_0x155e55(0x78,0xcf)]);!_0x27e92a['bounds']&&(_0x27e92a['bounds']={'west':_0x27e92a['xmin'],'south':_0x27e92a[_0x704f5b(0x6a0,0x629)],'east':_0x27e92a['xmax'],'north':_0x27e92a['ymax']});if(!_0x27e92a['u']){const _0x44a939={};_0x44a939['array']=_0x4455d2['udata'],_0x44a939[_0x155e55(-0x16,0x5b)]=_0x4455d2['umin'],_0x44a939[_0x704f5b(0x604,0x622)]=_0x4455d2['umax'],_0x27e92a['u']=_0x44a939;}if(!_0x27e92a['v']){const _0x2c08d4={};_0x2c08d4['array']=_0x4455d2['vdata'],_0x2c08d4['min']=_0x4455d2['vmin'],_0x2c08d4['max']=_0x4455d2['vmax'],_0x27e92a['v']=_0x2c08d4;}if(((_0x41017b=_0x27e92a['speed'])===null||_0x41017b===void 0x0?void 0x0:_0x41017b['min'])===undefined||((_0x2ba6c6=_0x27e92a[_0x704f5b(0x51b,0x58b)])===null||_0x2ba6c6===void 0x0?void 0x0:_0x2ba6c6['max'])===undefined||_0x27e92a[_0x704f5b(0x59b,0x58b)][_0x155e55(0x22,0x92)]===undefined){const _0x218727={'array':new Float32Array(_0x27e92a['u']['array'][_0x155e55(-0x89,-0xf0)]),'min':Number['MAX_VALUE'],'max':Number[_0x704f5b(0x574,0x582)]};for(let _0xeff64f=0x0;_0xeff64f<_0x27e92a['u']['array'][_0x704f5b(0x4d1,0x530)];_0xeff64f++){_0x218727['array'][_0xeff64f]=Math['sqrt'](_0x27e92a['u']['array'][_0xeff64f]*_0x27e92a['u']['array'][_0xeff64f]+_0x27e92a['v'][_0x155e55(0x22,0x73)][_0xeff64f]*_0x27e92a['v'][_0x155e55(0x22,0x91)][_0xeff64f]),_0x218727[_0x704f5b(0x610,0x5db)][_0xeff64f]!==0x0&&(_0x218727[_0x155e55(-0x16,-0x87)]=Math[_0x704f5b(0x5c7,0x5a3)](_0x218727['min'],_0x218727[_0x155e55(0x22,-0x54)][_0xeff64f]),_0x218727['max']=Math['max'](_0x218727[_0x704f5b(0x652,0x622)],_0x218727['array'][_0xeff64f]));}_0x27e92a['speed']=_0x218727;}return _0x27e92a;}['updateViewerParameters'](){var _0x5d7fd9;const _0x30fe15=this[_0x1b464c(0x163,0x176)];if(!_0x30fe15)return;const _0x249742=_0x30fe15['canvas'],_0x54ddb4={};_0x54ddb4['x']=0x0;function _0x1b464c(_0x2e1ea8,_0x557d0a){return _0x27febc(_0x557d0a-0x206,_0x2e1ea8);}_0x54ddb4['y']=0x0;const _0x175c26={};_0x175c26['x']=0x0,_0x175c26['y']=_0x249742[_0x1b464c(0x234,0x24f)];function _0x5e5e0c(_0x5b2e86,_0x5efda7){return _0x27febc(_0x5b2e86-0x38d,_0x5efda7);}const _0x29f41d={};_0x29f41d['x']=_0x249742[_0x5e5e0c(0x3ad,0x435)],_0x29f41d['y']=0x0;const _0x9b7005={};_0x9b7005['x']=_0x249742['clientWidth'],_0x9b7005['y']=_0x249742['clientHeight'];const _0x506af1=[_0x54ddb4,_0x175c26,_0x29f41d,_0x9b7005];let _0x1305f7=0xb4,_0x51b3e0=-0xb4,_0x493c98=0x5a,_0x4e938a=-0x5a,_0x27bed9=![];for(const _0x5b82e4 of _0x506af1){const _0x5723f7=_0x30fe15['camera']['pickEllipsoid'](new Cesium$1[(_0x1b464c(0x1b5,0x21f))](_0x5b82e4['x'],_0x5b82e4['y']),_0x30fe15[_0x1b464c(0x16b,0x1bf)][_0x1b464c(0x150,0x183)]);if(!_0x5723f7){_0x27bed9=!![];break;}const _0xa21058=_0x30fe15['globe'][_0x1b464c(0x141,0x183)]['cartesianToCartographic'](_0x5723f7),_0x3af2a7=Cesium$1['Math']['toDegrees'](_0xa21058['longitude']),_0x16784f=Cesium$1[_0x1b464c(0x1d4,0x1c3)][_0x1b464c(0x1ec,0x23d)](_0xa21058['latitude']);_0x1305f7=Math[_0x5e5e0c(0x347,0x354)](_0x1305f7,_0x3af2a7),_0x51b3e0=Math['max'](_0x51b3e0,_0x3af2a7),_0x493c98=Math['min'](_0x493c98,_0x16784f),_0x4e938a=Math['max'](_0x4e938a,_0x16784f);}if(!_0x27bed9){const _0x5100b9=new Cesium$1[(_0x5e5e0c(0x3a6,0x425))](Math[_0x1b464c(0x23e,0x23f)](this['windData'][_0x5e5e0c(0x2dc,0x26f)][_0x1b464c(0x153,0x162)],_0x1305f7),Math['min'](this['windData']['bounds']['east'],_0x51b3e0)),_0x1cf93a=new Cesium$1[(_0x5e5e0c(0x3a6,0x329))](Math['max'](this['windData']['bounds']['south'],_0x493c98),Math['min'](this['windData']['bounds'][_0x5e5e0c(0x2ee,0x2c6)],_0x4e938a)),_0x9455b=(_0x5100b9['y']-_0x5100b9['x'])*0.05,_0xde653=(_0x1cf93a['y']-_0x1cf93a['x'])*0.05;_0x5100b9['x']=Math[_0x1b464c(0x243,0x23f)](this[_0x5e5e0c(0x381,0x32c)][_0x1b464c(0x132,0x155)]['west'],_0x5100b9['x']-_0x9455b),_0x5100b9['y']=Math['min'](this[_0x5e5e0c(0x381,0x405)]['bounds']['east'],_0x5100b9['y']+_0x9455b),_0x1cf93a['x']=Math['max'](this['windData']['bounds']['south'],_0x1cf93a['x']-_0xde653),_0x1cf93a['y']=Math[_0x5e5e0c(0x347,0x336)](this[_0x5e5e0c(0x381,0x35b)][_0x1b464c(0x120,0x155)]['north'],_0x1cf93a['y']+_0xde653),this['viewerParameters'][_0x5e5e0c(0x394,0x322)]=_0x5100b9,this[_0x5e5e0c(0x37b,0x3d7)][_0x5e5e0c(0x36d,0x318)]=_0x1cf93a;const _0x2a8fac=this['windData'][_0x5e5e0c(0x2dc,0x2a3)]['east']-this['windData']['bounds'][_0x5e5e0c(0x2e9,0x27c)],_0x54fe10=this[_0x1b464c(0x25f,0x1fa)][_0x5e5e0c(0x2dc,0x2a1)]['north']-this[_0x5e5e0c(0x381,0x380)][_0x5e5e0c(0x2dc,0x30a)]['south'],_0x3f49eb=(_0x5100b9['y']-_0x5100b9['x'])/_0x2a8fac,_0x40fe5b=(_0x1cf93a['y']-_0x1cf93a['x'])/_0x54fe10,_0x3647c4=Math[_0x5e5e0c(0x347,0x2e9)](_0x3f49eb,_0x40fe5b),_0x31632f=0x3e8*_0x3647c4;_0x31632f>0x0&&(this['viewerParameters']['pixelSize']=Math[_0x1b464c(0x2bd,0x23f)](0x0,Math[_0x1b464c(0x16d,0x1c0)](0x3e8,_0x31632f)));}this[_0x1b464c(0x16a,0x1f4)][_0x1b464c(0x234,0x1bb)]=this['scene']['mode'],(_0x5d7fd9=this['particleSystem'])===null||_0x5d7fd9===void 0x0||_0x5d7fd9['applyViewerParameters'](this['viewerParameters']);}['getDataAtLonLat'](_0x1a5cfd,_0x7270fe){const {bounds:_0x51e98c,width:_0x4b840c,height:_0x31609f,u:_0xd64309,v:_0x11725f,speed:_0x36766c}=this[_0x5c04d4(0x616,0x601)],{flipY:_0x293b7b}=this[_0x5c04d4(0x647,0x5ea)];if(_0x1a5cfd<_0x51e98c[_0x761fbd(0x28f,0x21c)]||_0x1a5cfd>_0x51e98c['east']||_0x7270fe<_0x51e98c['south']||_0x7270fe>_0x51e98c['north'])return null;const _0x54df2c=(_0x1a5cfd-_0x51e98c['west'])/(_0x51e98c[_0x761fbd(0x263,0x2ce)]-_0x51e98c['west'])*(_0x4b840c-0x1);let _0x157ea4=(_0x7270fe-_0x51e98c[_0x5c04d4(0x63e,0x628)])/(_0x51e98c['north']-_0x51e98c['south'])*(_0x31609f-0x1);_0x293b7b&&(_0x157ea4=_0x31609f-0x1-_0x157ea4);const _0x2b63c0=Math['floor'](_0x54df2c),_0x54f825=Math['floor'](_0x157ea4),_0x5dc2be=Math[_0x5c04d4(0x5ed,0x64c)](_0x54df2c),_0x4b8c1e=Math[_0x5c04d4(0x5dc,0x616)](_0x5dc2be+0x1,_0x4b840c-0x1),_0x25980b=Math['floor'](_0x157ea4),_0x4b1b64=Math[_0x761fbd(0x248,0x27a)](_0x25980b+0x1,_0x31609f-0x1),_0x3c5163=_0x54df2c-_0x5dc2be,_0x10135f=_0x157ea4-_0x25980b,_0x46c68f=_0x54f825*_0x4b840c+_0x2b63c0,_0x2eded4=_0x25980b*_0x4b840c+_0x5dc2be,_0x3f2fdc=_0x25980b*_0x4b840c+_0x4b8c1e,_0x508192=_0x4b1b64*_0x4b840c+_0x5dc2be,_0x3329ee=_0x4b1b64*_0x4b840c+_0x4b8c1e,_0x3ae4b2=_0xd64309['array'][_0x2eded4],_0x452cf2=_0xd64309['array'][_0x3f2fdc],_0xd38716=_0xd64309['array'][_0x508192],_0x63ddac=_0xd64309[_0x761fbd(0x232,0x2b2)][_0x3329ee];function _0x761fbd(_0x1721aa,_0x17ce8f){return _0x27febc(_0x17ce8f-0x2c0,_0x1721aa);}const _0xb8b1b7=(0x1-_0x3c5163)*(0x1-_0x10135f)*_0x3ae4b2+_0x3c5163*(0x1-_0x10135f)*_0x452cf2+(0x1-_0x3c5163)*_0x10135f*_0xd38716+_0x3c5163*_0x10135f*_0x63ddac,_0x3c1ece=_0x11725f[_0x5c04d4(0x614,0x592)][_0x2eded4],_0x5f5184=_0x11725f['array'][_0x3f2fdc],_0x3961dc=_0x11725f['array'][_0x508192],_0x527a5b=_0x11725f[_0x5c04d4(0x614,0x5c9)][_0x3329ee],_0x324442=(0x1-_0x3c5163)*(0x1-_0x10135f)*_0x3c1ece+_0x3c5163*(0x1-_0x10135f)*_0x5f5184+(0x1-_0x3c5163)*_0x10135f*_0x3961dc+_0x3c5163*_0x10135f*_0x527a5b,_0x194d39=Math[_0x5c04d4(0x5af,0x637)](_0xb8b1b7*_0xb8b1b7+_0x324442*_0x324442),_0x3c501b={};_0x3c501b['u']=_0xd64309['array'][_0x46c68f],_0x3c501b['v']=_0x11725f[_0x761fbd(0x2ca,0x2b2)][_0x46c68f];function _0x5c04d4(_0x20b714,_0x52de99){return _0x4445ca(_0x52de99,_0x20b714-0x62);}_0x3c501b['speed']=_0x36766c['array'][_0x46c68f];const _0x4b4d95={};_0x4b4d95['u']=_0xb8b1b7,_0x4b4d95['v']=_0x324442,_0x4b4d95[_0x5c04d4(0x5c4,0x5a9)]=_0x194d39;const _0xb8a85c={};return _0xb8a85c['original']=_0x3c501b,_0xb8a85c[_0x5c04d4(0x5c0,0x5a4)]=_0x4b4d95,_0xb8a85c;}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this[_0x426556(0x2a2,0x2ca)]=null;function _0x426556(_0x1ff5f7,_0x47c4d9){return _0x4445ca(_0x1ff5f7,_0x47c4d9- -0x278);}this['lat']=null,this['tlng']=null,this[_0x426556(0x32a,0x2de)]=null;function _0x2b39ec(_0x4e7463,_0x2bbf01){return _0x27febc(_0x4e7463-0x1d3,_0x2bbf01);}this[_0x426556(0x31f,0x367)]=null,this['speed']=null;}[_0x27febc(-0x37,-0x34)](){for(const _0x163021 in this){delete this[_0x163021];}}}class CanvasWindField{constructor(_0x4f4860){this['setOptions'](_0x4f4860);}get[_0x27febc(0x9,0x49)](){function _0x3f4742(_0x476f01,_0x2c25a3){return _0x27febc(_0x2c25a3-0x262,_0x476f01);}return this[_0x3f4742(0x214,0x213)];}set[_0x27febc(0x9,-0x8)](_0x33a58a){function _0x288628(_0xfcbc7f,_0x55f65c){return _0x27febc(_0x55f65c-0x59d,_0xfcbc7f);}function _0x9d6bde(_0x30e080,_0x2cff87){return _0x4445ca(_0x30e080,_0x2cff87- -0x33f);}this[_0x9d6bde(0x253,0x232)]=(0x64-(_0x33a58a>0x63?0x63:_0x33a58a))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this[_0x288628(0x512,0x54e)],(this['ymax']-this['ymin'])/this['_speedRate']];}get[_0x27febc(-0x58,0x2f)](){return this['_maxAge'];}set['maxAge'](_0x25d261){this['_maxAge']=_0x25d261;}['setOptions'](_0x19892b){function _0x35329d(_0x26c01e,_0x24c59c){return _0x27febc(_0x24c59c-0x453,_0x26c01e);}this['options']=_0x19892b,this['maxAge']=_0x19892b['maxAge']||0x78;function _0x153138(_0x472f1e,_0x2f78c1){return _0x4445ca(_0x472f1e,_0x2f78c1- -0x4ed);}this['speedRate']=_0x19892b['speedRate']||0x32,this[_0x153138(0xd1,0x108)]=[];const _0x3814b7=_0x19892b['particlesNumber']||0x1000;for(let _0x2f112f=0x0;_0x2f112f<_0x3814b7;_0x2f112f++){const _0x4dbc8e=this[_0x35329d(0x525,0x4a3)](new CanvasParticle());this['particles'][_0x153138(0x12,0x46)](_0x4dbc8e);}}['setDate'](_0x960381){this[_0x887bf9(0x44f,0x3e5)]=_0x960381[_0x191997(-0xb2,-0x42)],this[_0x887bf9(0x435,0x488)]=_0x960381[_0x191997(0xdc,0x61)],this['xmin']=_0x960381['xmin'],this['xmax']=_0x960381['xmax'],this[_0x191997(0x43,0x59)]=_0x960381[_0x887bf9(0x44c,0x480)],this[_0x887bf9(0x39e,0x390)]=_0x960381[_0x887bf9(0x37c,0x390)],this['grid']=[];const _0x31d7d0=_0x960381['udata'];function _0x191997(_0x2a7177,_0x328fe4){return _0x4445ca(_0x2a7177,_0x328fe4- -0x5a7);}const _0x11d16a=_0x960381['vdata'];let _0x76bb0e=![];function _0x887bf9(_0x21371a,_0x134f02){return _0x27febc(_0x134f02-0x440,_0x21371a);}_0x31d7d0['length']===this['rows']&&_0x31d7d0[0x0]['length']===this['cols']&&(_0x76bb0e=!![]);let _0x540fbe=0x0,_0x239ed7=null,_0xc5312c=null;for(let _0xc734dc=0x0;_0xc734dc<this['rows'];_0xc734dc++){_0x239ed7=[];for(let _0x155bc0=0x0;_0x155bc0<this['cols'];_0x155bc0++,_0x540fbe++){_0x76bb0e?_0xc5312c=this[_0x887bf9(0x3e2,0x3f4)](_0x31d7d0[_0xc734dc][_0x155bc0],_0x11d16a[_0xc734dc][_0x155bc0]):_0xc5312c=this['_calcUV'](_0x31d7d0[_0x540fbe],_0x11d16a[_0x540fbe]),_0x239ed7['push'](_0xc5312c);}this[_0x191997(-0x29,-0x9)]['push'](_0x239ed7);}!this[_0x887bf9(0x453,0x465)]['flipY']&&this[_0x887bf9(0x439,0x41e)]['reverse']();}['clear'](){function _0x46f32a(_0x1607e6,_0x301e12){return _0x4445ca(_0x1607e6,_0x301e12- -0x14f);}delete this['rows'];function _0x4f61f3(_0x6f8685,_0x509e71){return _0x4445ca(_0x509e71,_0x6f8685- -0x552);}delete this[_0x4f61f3(0xb6,0xf3)],delete this[_0x46f32a(0x417,0x475)],delete this['xmax'],delete this['ymin'],delete this['ymax'],delete this['grid'],delete this['particles'];}[_0x27febc(-0x23,-0x8f)](_0x589e3b,_0x4c0642){function _0x264d71(_0x37d957,_0x4d3afa){return _0x27febc(_0x4d3afa-0x5a2,_0x37d957);}const _0x19d7f8=(_0x589e3b-this['xmin'])/(this['xmax']-this['xmin'])*(this[_0xd6c77b(0x4e,0x49)]-0x1);function _0xd6c77b(_0x34000d,_0x114ecb){return _0x4445ca(_0x114ecb,_0x34000d- -0x5ba);}const _0x4f9bd9=(this['ymax']-_0x4c0642)/(this[_0x264d71(0x4c3,0x4f2)]-this['ymin'])*(this['rows']-0x1);return[_0x19d7f8,_0x4f9bd9];}[_0x4445ca(0x50c,0x52c)](_0x1b6f81,_0x29ade4){if(_0x1b6f81<0x0||_0x1b6f81>=this[_0x3aade5(0x129,0x155)]||_0x29ade4>=this['rows'])return[0x0,0x0,0x0];const _0x4296e9=Math['floor'](_0x1b6f81),_0x5ac5a1=Math['floor'](_0x29ade4);if(_0x4296e9===_0x1b6f81&&_0x5ac5a1===_0x29ade4)return this['grid'][_0x29ade4][_0x1b6f81];const _0xaa43cf=_0x4296e9+0x1;function _0x3aade5(_0x5cc5d7,_0x1e6f16){return _0x4445ca(_0x1e6f16,_0x5cc5d7- -0x4df);}const _0x4af8ec=_0x5ac5a1+0x1,_0x58652e=this['getUVByXY'](_0x4296e9,_0x5ac5a1),_0x16ff27=this[_0x299209(0x15f,0x11d)](_0xaa43cf,_0x5ac5a1);function _0x299209(_0x232553,_0x14ec50){return _0x4445ca(_0x232553,_0x14ec50- -0x40f);}const _0x19973f=this['getUVByXY'](_0x4296e9,_0x4af8ec),_0x437c9c=this[_0x299209(0x16d,0x11d)](_0xaa43cf,_0x4af8ec);let _0x429c4f=null;try{_0x429c4f=this['_bilinearInterpolation'](_0x1b6f81-_0x4296e9,_0x29ade4-_0x5ac5a1,_0x58652e,_0x16ff27,_0x19973f,_0x437c9c);}catch(_0x2cf33c){console[_0x299209(0x114,0x11b)](_0x1b6f81,_0x29ade4);}return _0x429c4f;}['_bilinearInterpolation'](_0x26c5e3,_0x51f1e2,_0x4a4dcd,_0x336b74,_0x4cb6a4,_0x2fea48){const _0xc051bf=0x1-_0x26c5e3,_0x114a7c=0x1-_0x51f1e2,_0x16b9c3=_0xc051bf*_0x114a7c,_0x3e7b81=_0x26c5e3*_0x114a7c,_0xaabec2=_0xc051bf*_0x51f1e2,_0x582a13=_0x26c5e3*_0x51f1e2,_0x47e6d4=_0x4a4dcd[0x0]*_0x16b9c3+_0x336b74[0x0]*_0x3e7b81+_0x4cb6a4[0x0]*_0xaabec2+_0x2fea48[0x0]*_0x582a13,_0x335ea7=_0x4a4dcd[0x1]*_0x16b9c3+_0x336b74[0x1]*_0x3e7b81+_0x4cb6a4[0x1]*_0xaabec2+_0x2fea48[0x1]*_0x582a13;return this['_calcUV'](_0x47e6d4,_0x335ea7);}['_calcUV'](_0x4f4465,_0xb9e396){function _0x45c571(_0x41788b,_0x113df8){return _0x4445ca(_0x113df8,_0x41788b- -0x558);}return[+_0x4f4465,+_0xb9e396,Math[_0x45c571(-0xb,0x7)](_0x4f4465*_0x4f4465+_0xb9e396*_0xb9e396)];}['getUVByPoint'](_0x4d502a,_0x10602f){if(!this[_0x27d962(-0xfb,-0x163)](_0x4d502a,_0x10602f))return null;function _0x545a4b(_0x1d3e26,_0x133043){return _0x27febc(_0x133043-0x244,_0x1d3e26);}const _0xfe510f=this[_0x27d962(-0x162,-0x103)](_0x4d502a,_0x10602f),_0x53eed7=this['getUVByXY'](_0xfe510f[0x0],_0xfe510f[0x1]);function _0x27d962(_0x2a9414,_0x478203){return _0x4445ca(_0x478203,_0x2a9414- -0x6ff);}return _0x53eed7;}[_0x27febc(0x44,0xa4)](_0x497dc1,_0x2068eb){function _0x4ac8c2(_0x303ee5,_0x12e81b){return _0x4445ca(_0x303ee5,_0x12e81b- -0x36b);}function _0x4df925(_0x466b4f,_0x501d77){return _0x27febc(_0x501d77-0x46d,_0x466b4f);}return _0x497dc1>=this[_0x4ac8c2(0x2ce,0x259)]&&_0x497dc1<=this[_0x4df925(0x3b5,0x3e4)]&&_0x2068eb>=this[_0x4df925(0x516,0x4ad)]&&_0x2068eb<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x3667de=fRandomByfloat(this[_0x12d04a(0xf9,0xca)],this['xmax']),_0x4afbae=fRandomByfloat(this['ymin'],this['ymax']);function _0x39b21b(_0xb71763,_0x3dbee2){return _0x27febc(_0x3dbee2-0xbe,_0xb71763);}const _0x44ab68={};_0x44ab68['lat']=_0x4afbae,_0x44ab68[_0x12d04a(0x77,-0x4)]=_0x3667de;function _0x12d04a(_0x29030b,_0x1a475f){return _0x27febc(_0x29030b-0xf5,_0x1a475f);}return _0x44ab68;}[_0x4445ca(0x636,0x5e8)](){let _0x49471b,_0x388389,_0x326ab4;for(let _0x29ae34=0x0,_0x2fb3ca=this['particles'][_0x11d7f1(0x4e2,0x549)];_0x29ae34<_0x2fb3ca;_0x29ae34++){let _0x187034=this['particles'][_0x29ae34];_0x187034['age']<=0x0&&(_0x187034=this[_0x524e82(0x3e6,0x39d)](_0x187034));if(_0x187034['age']>0x0){const _0x18c21e=_0x187034['tlng'],_0x5c0862=_0x187034['tlat'];_0x326ab4=this['getUVByPoint'](_0x18c21e,_0x5c0862),_0x326ab4?(_0x49471b=_0x18c21e+this['_calc_speedRate'][0x0]*_0x326ab4[0x0],_0x388389=_0x5c0862+this['_calc_speedRate'][0x1]*_0x326ab4[0x1],_0x187034[_0x11d7f1(0x51d,0x57e)]=_0x18c21e,_0x187034[_0x524e82(0x35a,0x315)]=_0x5c0862,_0x187034['tlng']=_0x49471b,_0x187034[_0x524e82(0x32f,0x2e3)]=_0x388389,_0x187034['speed']=_0x326ab4[0x2],_0x187034[_0x524e82(0x3da,0x36c)]--):_0x187034[_0x11d7f1(0x5ba,0x53a)]=0x0;}}function _0x11d7f1(_0x6649ab,_0x190cd8){return _0x27febc(_0x6649ab-0x59b,_0x190cd8);}function _0x524e82(_0x2c01a2,_0x5d4e39){return _0x4445ca(_0x2c01a2,_0x5d4e39- -0x273);}return this[_0x11d7f1(0x5d0,0x620)];}[_0x27febc(0x50,0x1d)](_0x4143d8){let _0x4d009b,_0x56a8de;function _0x5a4b2e(_0x10b44c,_0x379ec0){return _0x4445ca(_0x10b44c,_0x379ec0-0x27);}for(let _0x24beff=0x0;_0x24beff<0x1e;_0x24beff++){_0x4d009b=this['getRandomLatLng'](),_0x56a8de=this[_0x562862(0x4ad,0x46e)](_0x4d009b[_0x5a4b2e(0x528,0x569)],_0x4d009b['lat']);if(_0x56a8de&&_0x56a8de[0x2]>0x0)break;}if(!_0x56a8de)return _0x4143d8;const _0x537e81=_0x4d009b['lng']+this[_0x5a4b2e(0x66c,0x634)][0x0]*_0x56a8de[0x0],_0x8e49a8=_0x4d009b['lat']+this['_calc_speedRate'][0x1]*_0x56a8de[0x1];_0x4143d8[_0x5a4b2e(0x51a,0x569)]=_0x4d009b[_0x562862(0x3e6,0x3fa)];function _0x562862(_0x2581b1,_0x50b1bc){return _0x4445ca(_0x2581b1,_0x50b1bc- -0x148);}return _0x4143d8['lat']=_0x4d009b['lat'],_0x4143d8[_0x562862(0x3e7,0x463)]=_0x537e81,_0x4143d8['tlat']=_0x8e49a8,_0x4143d8['age']=Math[_0x562862(0x372,0x3d2)](0xa+Math[_0x5a4b2e(0x615,0x599)]()*this['maxAge']),_0x4143d8[_0x562862(0x453,0x41a)]=_0x56a8de[0x2],_0x4143d8;}[_0x27febc(-0x37,-0x99)](){for(const _0x21b05b in this){delete this[_0x21b05b];}}}function fRandomByfloat(_0xfdff4f,_0x14743d){function _0x39eb5f(_0x2aaa8a,_0x3f71cc){return _0x4445ca(_0x3f71cc,_0x2aaa8a- -0x49a);}return _0xfdff4f+Math[_0x39eb5f(0xd8,0x52)]()*(_0x14743d-_0xfdff4f);}const Cesium=mars3d__namespace[_0x4445ca(0x526,0x545)],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x12a0d4={}){function _0xb2a53c(_0xf30bab,_0x3c5615){return _0x4445ca(_0xf30bab,_0x3c5615- -0x6e5);}super(_0x12a0d4),this['_setOptionsHook'](_0x12a0d4),this['canvas']=null;function _0x1dd362(_0x1658f5,_0x45edd4){return _0x4445ca(_0x45edd4,_0x1658f5- -0x29f);}_0x12a0d4[_0xb2a53c(-0x1b3,-0x158)]&&_0x12a0d4['steps']&&(this[_0xb2a53c(-0x21f,-0x1af)]=new mars3d__namespace[(_0x1dd362(0x2dd,0x320))](_0x12a0d4));}[_0x4445ca(0x5e6,0x5c8)](_0xfccc45,_0x293f4a){function _0x43f1c1(_0x5b3908,_0x326a18){return _0x4445ca(_0x326a18,_0x5b3908-0x7);}this['frameTime']=0x3e8/(_0xfccc45['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0xfccc45[_0x43f1c1(0x5dc,0x57a)]||'#ffffff',this[_0x43f1c1(0x57a,0x5dc)]=_0xfccc45['lineWidth']||0x1,this['fixedHeight']=_0xfccc45['fixedHeight']??0x0,this['flipY']=_0xfccc45['flipY']??![];function _0x15b7ef(_0x4660bc,_0x3a25ff){return _0x27febc(_0x3a25ff-0x644,_0x4660bc);}this[_0x43f1c1(0x576,0x51f)]&&this['windField'][_0x15b7ef(0x5e9,0x5c4)](_0xfccc45);}get['layer'](){function _0x35113f(_0xa9537,_0x5cdd94){return _0x27febc(_0xa9537-0x2a9,_0x5cdd94);}return this[_0x35113f(0x2d0,0x2d8)];}get['canvasWidth'](){return this['_map']['scene']['canvas']['clientWidth'];}get[_0x27febc(0x4e,0x14)](){function _0x2876c6(_0xe96394,_0x6e7217){return _0x27febc(_0x6e7217-0x2ad,_0xe96394);}function _0x406c04(_0x320501,_0x14e1a5){return _0x4445ca(_0x14e1a5,_0x320501- -0x7f);}return this[_0x406c04(0x483,0x469)][_0x406c04(0x4b1,0x4b4)]['canvas']['clientHeight'];}get[_0x27febc(-0x6,-0x2)](){return this['_pointerEvents'];}set['pointerEvents'](_0x2d286e){function _0x5f2c2a(_0x597978,_0x11412e){return _0x4445ca(_0x597978,_0x11412e- -0x389);}this[_0x3d05f0(-0xd,-0x33)]=_0x2d286e;function _0x3d05f0(_0x59a6f7,_0x5373a8){return _0x27febc(_0x59a6f7-0x38,_0x5373a8);}if(!this[_0x3d05f0(0x5f,-0xa)])return;_0x2d286e?this['canvas'][_0x3d05f0(0x56,0x8e)][_0x3d05f0(-0x4a,-0x74)]='all':this[_0x3d05f0(0x5f,0xd1)]['style'][_0x3d05f0(-0x4a,-0x33)]=_0x3d05f0(-0x8,0x6f);}get['particlesNumber'](){function _0x1bf6c2(_0x2af336,_0x162a7b){return _0x4445ca(_0x2af336,_0x162a7b- -0x400);}function _0xefefe6(_0x1b25b8,_0x163a43){return _0x27febc(_0x163a43-0xc8,_0x1b25b8);}return this[_0x1bf6c2(0x23e,0x1e5)][_0xefefe6(0x93,0x10b)];}set['particlesNumber'](_0x4d49c8){function _0x4e6a02(_0x555a31,_0xeb7113){return _0x27febc(_0x555a31-0xbe,_0xeb7113);}this['options'][_0x4e6a02(0x101,0xb3)]=_0x4d49c8,clearTimeout(this['_canrefresh']);function _0x51c566(_0x5e8568,_0x14571b){return _0x4445ca(_0x5e8568,_0x14571b- -0x3f7);}this[_0x4e6a02(0x29,0x5e)]=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x4445ca(0x5ec,0x5c9)](){function _0x4e0fd7(_0x739bf9,_0x49d14a){return _0x27febc(_0x49d14a-0x60,_0x739bf9);}function _0x5bb07b(_0x570c4a,_0x433077){return _0x4445ca(_0x433077,_0x570c4a- -0x7b);}return this[_0x4e0fd7(0x18,0x85)][_0x5bb07b(0x54e,0x4ee)];}set[_0x27febc(0x9,0x25)](_0xd96477){this['options']['speedRate']=_0xd96477;function _0x4c9ee3(_0x5c3c97,_0x15faf5){return _0x4445ca(_0x15faf5,_0x5c3c97-0x4);}this[_0x4c9ee3(0x573,0x588)]&&(this['windField']['speedRate']=_0xd96477);}get['maxAge'](){function _0x5456e5(_0xa71a24,_0x3a73fd){return _0x4445ca(_0x3a73fd,_0xa71a24- -0xb4);}return this[_0x5456e5(0x531,0x529)]['maxAge'];}set['maxAge'](_0x10d90f){function _0x5bdd37(_0x112654,_0x1bd1cd){return _0x4445ca(_0x112654,_0x1bd1cd- -0x57);}function _0x12510a(_0x17b97c,_0x383f9d){return _0x4445ca(_0x383f9d,_0x17b97c- -0x365);}this[_0x12510a(0x280,0x232)][_0x12510a(0x203,0x20a)]=_0x10d90f,this['windField']&&(this[_0x12510a(0x20a,0x259)]['maxAge']=_0x10d90f);}get['data'](){return this['windData'];}set['data'](_0x20d466){this['setData'](_0x20d466);}get[_0x4445ca(0x582,0x522)](){function _0x253ab4(_0x458b6c,_0x2ff4a2){return _0x4445ca(_0x458b6c,_0x2ff4a2- -0x5c1);}let _0x18e637=this['windData'][_0x253ab4(-0x68,0x3)];function _0x1efccc(_0x4a91df,_0x3bff86){return _0x27febc(_0x3bff86- -0x46,_0x4a91df);}let _0xed1995=this[_0x253ab4(0x33,-0xd)]['xmax'],_0x6035aa=this[_0x253ab4(-0x94,-0xd)]['ymin'],_0x291354=this['windData']['ymax'];return _0xed1995>=0x167&&_0x18e637===0x0&&(_0x18e637=-0xb4,_0xed1995=0xb4),_0x18e637=Math['max'](_0x18e637,-0xb4),_0xed1995=Math[_0x253ab4(-0x6e,-0x47)](_0xed1995,0xb4),_0x6035aa=Math['max'](_0x6035aa,-0x5a),_0x291354=Math['min'](_0x291354,0x5a),Cesium['Rectangle']['fromDegrees'](_0x18e637,_0x6035aa,_0xed1995,_0x291354);}['_showHook'](_0x16e18b){function _0x3bc1dd(_0x17f268,_0x551911){return _0x4445ca(_0x551911,_0x17f268- -0x361);}function _0x554d38(_0x1ac979,_0x205a16){return _0x4445ca(_0x1ac979,_0x205a16- -0x456);}_0x16e18b?this['_addedHook']():(this[_0x3bc1dd(0x253,0x1e0)]&&(this['options']['data']=this[_0x3bc1dd(0x253,0x295)]),this[_0x3bc1dd(0x25c,0x2d6)]());}[_0x27febc(0x18,0x97)](){function _0x2ef02e(_0x4a3171,_0x24057c){return _0x4445ca(_0x4a3171,_0x24057c- -0x4da);}function _0x296403(_0x1b546e,_0x51acba){return _0x4445ca(_0x1b546e,_0x51acba- -0x10c);}this['options'][_0x296403(0x44b,0x423)]?this['initWorker']():this['windField']=new CanvasWindField(this[_0x296403(0x485,0x4d9)]);}[_0x27febc(-0x1a,0x64)](){this[_0x25fbaa(0x1ea,0x1cc)]=this['_createCanvas']();function _0x25fbaa(_0x29576f,_0x5b44dc){return _0x27febc(_0x29576f-0x1c3,_0x5b44dc);}const _0x39c607={};function _0x4a693c(_0x260136,_0x4eb842){return _0x27febc(_0x260136-0x10c,_0x4eb842);}_0x39c607[_0x25fbaa(0x16f,0x1b9)]=!![],this['canvasContext']=this[_0x25fbaa(0x1ea,0x1d5)]['getContext']('2d',_0x39c607),this['bindEvent'](),this['options'][_0x4a693c(0xde,0x54)]&&this['setData'](this[_0x4a693c(0x131,0x106)][_0x4a693c(0xde,0x64)]);}['_removedHook'](){function _0x11488c(_0x59f614,_0x4da999){return _0x4445ca(_0x59f614,_0x4da999- -0x16c);}this['clear']();function _0x9a47f6(_0x544119,_0x3e00d0){return _0x4445ca(_0x544119,_0x3e00d0- -0x2f1);}this[_0x9a47f6(0x249,0x233)](),this['canvas']&&(this['_map']['container'][_0x9a47f6(0x32b,0x2b2)](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x19d4f3=mars3d__namespace['DomUtil'][_0x5e09f4(0x3ec,0x41d)](_0x5e09f4(0x449,0x448),'mars3d-canvasWind',this[_0x1663d4(0x2ef,0x372)]['container']);function _0x5e09f4(_0x429e7f,_0x1568bf){return _0x27febc(_0x1568bf-0x421,_0x429e7f);}_0x19d4f3['style']['position']='absolute',_0x19d4f3[_0x1663d4(0x3cb,0x40b)][_0x5e09f4(0x4e7,0x472)]='0px',_0x19d4f3[_0x1663d4(0x3cb,0x3be)][_0x5e09f4(0x3ee,0x37e)]=_0x5e09f4(0x3f9,0x423),_0x19d4f3[_0x1663d4(0x3cb,0x3ad)][_0x5e09f4(0x450,0x44a)]=this[_0x5e09f4(0x2ff,0x363)][_0x1663d4(0x31d,0x38d)]['canvas']['clientWidth']+'px',_0x19d4f3['style']['height']=this['_map'][_0x5e09f4(0x40b,0x391)]['canvas'][_0x5e09f4(0x42a,0x46a)]+'px',_0x19d4f3[_0x5e09f4(0x454,0x43f)]['pointerEvents']=this[_0x5e09f4(0x44e,0x3dc)]?'auto':_0x1663d4(0x36d,0x3f0),_0x19d4f3['style']['zIndex']=this[_0x5e09f4(0x45c,0x446)]['zIndex']??0x9,_0x19d4f3[_0x1663d4(0x3d6,0x34d)]=this['_map']['scene'][_0x5e09f4(0x429,0x448)]['clientWidth'],_0x19d4f3['height']=this['_map']['scene'][_0x1663d4(0x3d4,0x3a3)]['clientHeight'];function _0x1663d4(_0xfc9f59,_0x5bc277){return _0x27febc(_0xfc9f59-0x3ad,_0x5bc277);}return _0x19d4f3;}[_0x4445ca(0x48e,0x512)](){function _0x4114e3(_0xade68a,_0x3a36bf){return _0x27febc(_0x3a36bf-0x534,_0xade68a);}function _0x47667d(_0x371c26,_0x50ee7e){return _0x27febc(_0x50ee7e-0x599,_0x371c26);}this['canvas']&&(this[_0x47667d(0x60f,0x5c0)]['style']['width']=this[_0x4114e3(0x3fd,0x476)][_0x47667d(0x568,0x509)]['canvas']['clientWidth']+'px',this['canvas']['style']['height']=this['_map'][_0x47667d(0x519,0x509)]['canvas']['clientHeight']+'px',this[_0x4114e3(0x527,0x55b)]['width']=this['_map']['scene']['canvas']['clientWidth'],this['canvas']['height']=this['_map']['scene'][_0x4114e3(0x594,0x55b)][_0x47667d(0x647,0x5e2)]);}['bindEvent'](){function _0x486cbf(_0x1e35ee,_0x4b5f4b){return _0x4445ca(_0x1e35ee,_0x4b5f4b- -0x6e9);}const _0x43e2df=this;let _0x12a721=Date[_0x486cbf(-0x15b,-0x1a2)]();(function _0x170142(){if(_0x43e2df['isDestroy'])return;function _0x82f0ee(_0x435325,_0xc57a23){return _0x486cbf(_0x435325,_0xc57a23-0x3ef);}_0x43e2df['_animateFrame']=window['requestAnimationFrame'](_0x170142);function _0x4196f1(_0x1b8015,_0x15a10e){return _0x486cbf(_0x15a10e,_0x1b8015-0x605);}if(_0x43e2df['show']&&_0x43e2df['windField']){const _0x422eb7=Date[_0x82f0ee(0x2c1,0x24d)](),_0xc0cda7=_0x422eb7-_0x12a721;_0xc0cda7>_0x43e2df['frameTime']&&(_0x12a721=_0x422eb7-_0xc0cda7%_0x43e2df['frameTime'],_0x43e2df[_0x4196f1(0x477,0x40b)]());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![]);function _0x401504(_0x1359b4,_0x5cd8a6){return _0x4445ca(_0x1359b4,_0x5cd8a6- -0x63c);}this['mouse_move']=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x486cbf(-0x182,-0x1e7)]['on'](mars3d__namespace[_0x486cbf(-0x16f,-0x1d1)][_0x401504(-0x1b5,-0x132)],this[_0x401504(-0x1a3,-0x12e)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this[_0x486cbf(-0xe0,-0x107)],this));}[_0x27febc(-0x9c,-0x46)](){window['cancelAnimationFrame'](this['_animateFrame']),delete this['_animateFrame'];function _0x28b280(_0x452260,_0x19609b){return _0x4445ca(_0x452260,_0x19609b- -0x566);}function _0x45718f(_0x15065b,_0x69b42e){return _0x27febc(_0x15065b-0x281,_0x69b42e);}window[_0x45718f(0x22f,0x1bb)]('resize',this[_0x28b280(-0xc2,-0x54)]),this['options'][_0x45718f(0x1e1,0x195)]&&(this['_map'][_0x28b280(-0x64,0x1d)](mars3d__namespace[_0x28b280(0x7,-0x4e)]['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace[_0x45718f(0x1d9,0x18d)][_0x28b280(-0x90,-0x5c)],this[_0x45718f(0x1cf,0x229)],this),this[_0x45718f(0x1c3,0x1d5)]['off'](mars3d__namespace['EventType'][_0x28b280(-0xa5,-0x1e)],this['_onMouseUpEvent'],this),this[_0x28b280(0x4,-0x64)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}[_0x4445ca(0x5c5,0x54a)](_0x2b0f28){function _0xe2d57c(_0x132e7a,_0x42de62){return _0x4445ca(_0x42de62,_0x132e7a- -0xfb);}function _0x142e27(_0x11576a,_0x4303a0){return _0x27febc(_0x11576a-0x1e2,_0x4303a0);}clearTimeout(this['refreshTimer']);if(!this['show']||!this[_0xe2d57c(0x4ec,0x54a)])return;this['canvas'][_0x142e27(0x200,0x242)][_0x142e27(0x1c7,0x212)]='hidden',this[_0x142e27(0x1d9,0x262)]=setTimeout(()=>{function _0x22ca80(_0x466a08,_0x18e697){return _0x142e27(_0x18e697- -0x220,_0x466a08);}if(!this['show'])return;function _0x5d2f1d(_0x145dc7,_0x781df0){return _0x142e27(_0x145dc7- -0x15e,_0x781df0);}this[_0x22ca80(-0x119,-0xf8)](),this[_0x22ca80(0x1c,-0x17)]['style']['visibility']='visible';},0xc8);}['_onMouseDownEvent'](_0x1bcf96){function _0x1f0a76(_0x323ac8,_0x1b0159){return _0x27febc(_0x1b0159-0x148,_0x323ac8);}this[_0x1f0a76(0x9d,0xf5)]=!![];function _0x3d8ccf(_0x25834d,_0x328be4){return _0x27febc(_0x328be4-0xfd,_0x25834d);}this['_map']['off'](mars3d__namespace[_0x3d8ccf(0x3,0x55)][_0x3d8ccf(0x95,0xd8)],this[_0x3d8ccf(0xfe,0xfc)],this),this['_map']['on'](mars3d__namespace[_0x3d8ccf(0xa0,0x55)]['mouseMove'],this[_0x1f0a76(0x17a,0x147)],this);}[_0x4445ca(0x640,0x5bf)](_0x19074d){function _0x529093(_0xae9016,_0x310955){return _0x4445ca(_0xae9016,_0x310955- -0x3fa);}function _0xe20fcf(_0x4d3d72,_0x3fc510){return _0x27febc(_0x4d3d72-0x64f,_0x3fc510);}if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this[_0x529093(0x240,0x1ed)]['style']['visibility']='hidden',this[_0xe20fcf(0x652,0x604)]=!![]);}[_0x27febc(0x22,0x97)](_0x5d12c3){function _0x23409a(_0x1eed03,_0x34ccb7){return _0x4445ca(_0x1eed03,_0x34ccb7- -0x1a1);}if(!this['show']||!this[_0x14c33d(0x97,0x61)])return;this['_map'][_0x14c33d(0x33,0x51)](mars3d__namespace[_0x14c33d(-0x38,0x4c)][_0x14c33d(0x4b,-0x1c)],this[_0x23409a(0x3c5,0x41e)],this);this['mouse_down']&&this[_0x23409a(0x4ab,0x422)]&&this[_0x23409a(0x34e,0x365)]();this[_0x23409a(0x407,0x446)]['style'][_0x14c33d(0x55,0x9c)]='visible';function _0x14c33d(_0x5772e1,_0x1255cb){return _0x4445ca(_0x1255cb,_0x5772e1- -0x550);}this[_0x23409a(0x442,0x3cc)]=![],this['mouse_move']=![];}[_0x27febc(0x16,0x51)](_0x5a667b){function _0x3f80a9(_0x494e81,_0x567b20){return _0x4445ca(_0x567b20,_0x494e81- -0x6fb);}this['clear'](),this[_0x3f80a9(-0x147,-0xf4)]=_0x5a667b,this[_0x415410(-0x64,-0xe7)][_0x3f80a9(-0xec,-0x85)](_0x5a667b);function _0x415410(_0x3d66d3,_0x255d1f){return _0x4445ca(_0x3d66d3,_0x255d1f- -0x656);}this['redraw']();}['redraw'](){function _0x224198(_0x4fea09,_0x52915e){return _0x4445ca(_0x52915e,_0x4fea09- -0x591);}function _0x3b1b40(_0x3edd22,_0x1107f8){return _0x4445ca(_0x3edd22,_0x1107f8- -0xe4);}if(!this['show'])return;this[_0x224198(-0x22,0x56)][_0x3b1b40(0x400,0x45c)](this[_0x224198(0x54,0x8e)]),this['update']();}['update'](){function _0x3c2f0a(_0x4bcf3f,_0x41babe){return _0x4445ca(_0x41babe,_0x4bcf3f- -0x366);}if(this['_updateIng'])return;function _0x5ec637(_0x13438b,_0x4f7f00){return _0x4445ca(_0x13438b,_0x4f7f00- -0x67d);}this[_0x3c2f0a(0x255,0x2b5)]=!![];if(this['worker'])this[_0x5ec637(-0xc5,-0x10e)]['update']();else{const _0x334a71=this[_0x3c2f0a(0x209,0x240)]['getParticles']();this['_drawLines'](_0x334a71);}this['_updateIng']=![];}['_drawLines'](_0x4dd270){this['_canvasParticles']=_0x4dd270,this['canvasContext'][_0x38918d(-0x46,0x1c)]='destination-in';function _0x4d4543(_0x7c134d,_0x162203){return _0x27febc(_0x7c134d-0x5b2,_0x162203);}this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']);function _0x38918d(_0x1c41f3,_0x1f6563){return _0x4445ca(_0x1c41f3,_0x1f6563- -0x518);}this[_0x38918d(0xfc,0x8a)][_0x38918d(0x50,0x1c)]=_0x4d4543(0x549,0x5a9),this[_0x4d4543(0x594,0x539)]['globalAlpha']=0.9;const _0x57811d=this['_map'][_0x38918d(0x17,0x18)]['mode']!==Cesium['SceneMode'][_0x38918d(-0x71,-0x17)],_0x2eb1e8=this['canvasWidth']*0.25;if(this['_colorRamp'])for(let _0x7901dc=0x0,_0x17b045=_0x4dd270['length'];_0x7901dc<_0x17b045;_0x7901dc++){const _0x160dc1=_0x4dd270[_0x7901dc],_0x5c85f2=this[_0x38918d(0x65,-0x13)](_0x160dc1,_0x160dc1[_0x38918d(0xaa,0x2a)],_0x160dc1['lat'],_0x160dc1[_0x4d4543(0x4fe,0x582)]),_0x35ef53=this[_0x38918d(0x16,-0x13)](_0x160dc1,_0x160dc1['tlng'],_0x160dc1[_0x38918d(0x81,0x3e)],_0x160dc1['talt']);if(!_0x5c85f2||!_0x35ef53)continue;if(_0x57811d&&Math[_0x38918d(-0x5,0x6e)](_0x5c85f2[0x0]-_0x35ef53[0x0])>=_0x2eb1e8)continue;this['canvasContext']['beginPath'](),this['canvasContext'][_0x4d4543(0x565,0x4e8)]=this['lineWidth'],this[_0x38918d(0x95,0x8a)]['strokeStyle']=this[_0x38918d(0x6b,0x1e)]['getColor'](_0x160dc1['speed']),this[_0x4d4543(0x594,0x517)][_0x38918d(-0x8a,-0x10)](_0x5c85f2[0x0],_0x5c85f2[0x1]),this['canvasContext'][_0x38918d(0x86,0x9b)](_0x35ef53[0x0],_0x35ef53[0x1]),this['canvasContext']['stroke']();}else{this[_0x38918d(0xf2,0x8a)][_0x38918d(0x21,0x84)](),this[_0x38918d(0x5d,0x8a)][_0x4d4543(0x565,0x586)]=this[_0x4d4543(0x565,0x4ee)],this[_0x4d4543(0x594,0x555)][_0x4d4543(0x5dd,0x653)]=this['color'];for(let _0x2d9d93=0x0,_0x1c526d=_0x4dd270[_0x38918d(-0x13,-0x11)];_0x2d9d93<_0x1c526d;_0x2d9d93++){const _0x3fc465=_0x4dd270[_0x2d9d93],_0x586d97=this[_0x38918d(-0x7a,-0x13)](_0x3fc465,_0x3fc465['lng'],_0x3fc465['lat'],_0x3fc465['alt']),_0x511faf=this['_tomap'](_0x3fc465,_0x3fc465[_0x4d4543(0x59d,0x600)],_0x3fc465[_0x4d4543(0x548,0x4da)],_0x3fc465['talt']);if(!_0x586d97||!_0x511faf)continue;if(_0x57811d&&Math['abs'](_0x586d97[0x0]-_0x511faf[0x0])>=_0x2eb1e8)continue;this['canvasContext']['moveTo'](_0x586d97[0x0],_0x586d97[0x1]),this[_0x4d4543(0x594,0x5c3)][_0x38918d(0x76,0x9b)](_0x511faf[0x0],_0x511faf[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x5a831a,_0x57bdf3,_0x55fcf1,_0x4296ae){const _0x3bd017=Cesium[_0x2ff29a(0x489,0x4a1)]['fromDegrees'](_0x57bdf3,_0x55fcf1,_0x4296ae??this[_0x5ec0bb(-0x1c0,-0x1bd)]);function _0x5ec0bb(_0x30e818,_0x19cb6a){return _0x4445ca(_0x19cb6a,_0x30e818- -0x6c0);}const _0x2557d9=this['_map']['scene'];if(_0x2557d9['mode']===Cesium[_0x5ec0bb(-0x155,-0x1d8)][_0x2ff29a(0x49e,0x446)]){const _0x2d8c9b=new Cesium[(_0x2ff29a(0x476,0x452))](_0x2557d9['globe']['ellipsoid'],_0x2557d9[_0x5ec0bb(-0xce,-0x13f)][_0x2ff29a(0x4aa,0x48b)]),_0x30ddfe=_0x2d8c9b['isPointVisible'](_0x3bd017);if(!_0x30ddfe)return _0x5a831a['age']=0x0,null;}function _0x2ff29a(_0x32a4fd,_0x5e136b){return _0x27febc(_0x5e136b-0x505,_0x32a4fd);}const _0x3a1664=mars3d__namespace[_0x5ec0bb(-0x16b,-0x1db)][_0x2ff29a(0x3e3,0x46e)](this[_0x2ff29a(0x454,0x447)]['scene'],_0x3bd017);return _0x3a1664?[_0x3a1664['x'],_0x3a1664['y']]:null;}['clear'](){this[_0x3f8c46(0x26,0x69)]['clear']();function _0x3f8c46(_0x240e9f,_0x2ce695){return _0x27febc(_0x240e9f-0x77,_0x2ce695);}delete this['windData'];}['initWorker'](){this[_0x398ff0(0x29,-0x20)]=new Worker(this['options'][_0x23530c(0x559,0x592)]);function _0x398ff0(_0x562437,_0x2844f4){return _0x27febc(_0x562437-0xba,_0x2844f4);}this['worker'][_0x398ff0(0xfc,0x149)]=_0x380bca=>{this[_0x36de5e(0x118,0xf4)](_0x380bca['data'][_0x2b1808(0x3dc,0x36e)]);function _0x2b1808(_0x834687,_0x3810f4){return _0x398ff0(_0x834687-0x2ed,_0x3810f4);}function _0x36de5e(_0x3a0536,_0x43cbd1){return _0x23530c(_0x3a0536- -0x43a,_0x43cbd1);}this['_updateIng2']=![];};function _0x23530c(_0x428546,_0x7fe77b){return _0x27febc(_0x428546-0x5ea,_0x7fe77b);}this['windField']={'init':_0x4a7a14=>{function _0x1bb825(_0x2eb2e5,_0x35baa9){return _0x398ff0(_0x35baa9-0x1c2,_0x2eb2e5);}const _0x5ce180={};_0x5ce180['type']=_0x1d867e(0x4bb,0x479),_0x5ce180['options']=_0x4a7a14;function _0x1d867e(_0x2dbb08,_0x46534f){return _0x398ff0(_0x2dbb08-0x49a,_0x46534f);}this[_0x1d867e(0x4c3,0x44c)]['postMessage'](_0x5ce180);},'setOptions':_0x37f933=>{const _0x397936={};_0x397936[_0x2cace7(-0x20f,-0x188)]='setOptions',_0x397936[_0xb22568(0x2cb,0x30d)]=_0x37f933;function _0x2cace7(_0x1ef036,_0xe1e226){return _0x398ff0(_0xe1e226- -0x206,_0x1ef036);}function _0xb22568(_0x3d2587,_0x41831f){return _0x398ff0(_0x3d2587-0x1ec,_0x41831f);}this['worker']['postMessage'](_0x397936);},'setDate':_0x31c7b7=>{function _0x3fe3f0(_0x3c2abd,_0x3b77dc){return _0x398ff0(_0x3b77dc-0x49d,_0x3c2abd);}const _0x5357a1={};_0x5357a1[_0x361899(-0x128,-0x1b0)]=_0x361899(-0x9d,-0x11e);function _0x361899(_0x4c00f3,_0x6115f0){return _0x23530c(_0x4c00f3- -0x6d6,_0x6115f0);}_0x5357a1['data']=_0x31c7b7,this['worker'][_0x361899(-0x148,-0x140)](_0x5357a1);},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![];function _0x3e4fb7(_0x3a6d0d,_0x45c663){return _0x398ff0(_0x45c663-0x11f,_0x3a6d0d);}function _0xef3d69(_0x19219d,_0x5b2a8b){return _0x398ff0(_0x19219d-0x4f8,_0x5b2a8b);}const _0x40abf5={};_0x40abf5['type']=_0x3e4fb7(0x1e4,0x174),this['worker'][_0x3e4fb7(0x139,0x17d)](_0x40abf5);},'clear':()=>{function _0x14433d(_0x1680bc,_0x1ce7e7){return _0x398ff0(_0x1ce7e7- -0x8b,_0x1680bc);}function _0x490b8d(_0x29a95a,_0x30446){return _0x398ff0(_0x30446-0x37f,_0x29a95a);}const _0x1168b0={};_0x1168b0[_0x490b8d(0x3ee,0x3fd)]='clear',this['worker'][_0x490b8d(0x41f,0x3dd)](_0x1168b0);}},this[_0x398ff0(0x69,0x96)][_0x398ff0(0x21,-0x2c)](this['options']);}}mars3d__namespace['LayerUtil']['register'](_0x27febc(0x3a,0xc2),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace[_0x4445ca(0x4fd,0x54c)]=CanvasWindField,mars3d__namespace['Log'][_0x4445ca(0x5d8,0x598)]('mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:'+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace[_0x27febc(-0x87,-0xb9)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x27febc(0x13,-0x6e)]=CanvasWindLayer;function _0x4445ca(_0x22b220,_0x5c245e){return _0x34ed(_0x5c245e-0x32b,_0x22b220);}exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil;function _0x55d3(){const _0x2daba2=['tlat','lighter','CLAMP_TO_EDGE','MIN_VALUE','dropRate','update','Cartesian3','colorTextures','interpolated','Unknown\x20command\x20type','createSegmentsGeometry','quietPeriod','speed','dropRateBump','postMessage','rows','segments','windTextures','maxAge','onParticlesTextureSizeChange','SRC_ALPHA','SceneMode','willReadFrequently','mouse_down','removeEventListener','windField','updateOptions','_speedRate','random','lineWidth','_calcUV','sceneMode','height','getCalculateSpeedShader','fragmentShaderSource','globe','min','_pointerEvents','ColorRamp','Math','processWindData','2318325GcIoOY','none','48qsSROK','createPrimitives','off','type','blendFuncDestination','abs','colorTable','lat','destroy','1185876EpPzMq','floor','clearFramebuffers','colors','samplingWindow','enabled','outputTexture','computing','data','Compute','FUNC_ADD','FLOAT','viewport','persists','logInfo','layer','owner','mouseMove','beginPath','toGridXY','grid','commandToExecute','latRange','createRenderingFramebuffers','canvasContext','removeChild','changeOptions','visibility','_addedHook','toRadians','drawingBufferWidth','destroyParticlesTextures','segmentsColor','tlng','shaderProgram','LINEAR','viewerParameters','bind','keys','rendering','array','lineTo','windData','minificationFilter','getUVByPoint','refreshTimer','values','changed','pointerEvents','_updateIng','create','_removedHook','domain','_onMouseMoveEvent','context','NEAREST','0px','mouse_move','xmin','createColorTableTexture','pixelFormat','lonRange','_setOptionsHook','speedRate','framebuffers','displayRange','fromGeometry','warn','east','OPAQUE','slice','uniformMap','green','CanvasWindLayer','Draw','color','setData','getPrimitives','_mountedHook','Cartesian2','__proto__','error','south','nextParticlesPosition','style','age','clientWidth','currentParticlesPosition','_onMouseUpEvent','__esModule','magnificationFilter','options','1032qOZySI','canvas','getParticles','width','RED','strokeStyle','useViewerBounds','addEventListener','dynamic','rawRenderState','commandList','vertexShaderSource','camera','max\x20is\x20undefined,\x20calculate\x20max','frameRateMonitor','particles','createComputingPrimitives','toDegrees','createParticlesTextures','max','canvasWind','getSegmentDrawFragmentShader','stringify','blendEquation','show','pixelDatatype','ymin','framebuffer','onmessage','particlesNumber','isInExtent','initFrameRate','frameRateAdjustment','textures','cols','clientHeight','postProcessingPosition','pixelSize','particleSystem','_calc_speedRate','canvasHeight','setDate','_randomParticle','top','fromCache','rgb(206,255,255)','clearCommand','fixedHeight','SCENE3D','_map','particlesTextureSize','#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','_tomap','redraw','length','moveTo','getUpdatePositionShader','mouseDown','previousParticlesPosition','alt','EllipsoidalOccluder','_onMouseDownEvent','bounds','ymax','primitiveType','resize','object','forEach','flipY','_showHook','1466264SiNPyd','EventType','isDynamic','round','particlesTextures','west','left','1CRkcEM','3041646cHWSxd','mouseHidden','north','rectangle','3.11.2','unbindEvent','min\x20is\x20undefined,\x20calculate\x20min','11495zdLfzx','init','_drawLines','toWindowCoordinates','log','_canrefresh','getUVByXY','TRIANGLES','vertexArray','worker','scene','depthMask','getU','push','globalCompositeOperation','frameState.commandList\x20is\x20undefined','_colorRamp','xmax','preExecute','WindUtil','frameRate','5305433MSDnFO','componentDatatype','ellipsoid','pointer-events','reCreateWindTextures','setOptions','particlesSpeed','lng','default','Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.','Cesium','positionWC','now','mouseUp','geometry','_onMapWhellEvent','updateViewerParameters','CanvasWindField','sqrt','sources','attributeLocations','21033550DKjFJg','updateWindData','lastFramesPerSecond','primitives','updatePosition','PointTrans'];_0x55d3=function(){return _0x2daba2;};return _0x55d3();}const _0xf8226={};_0xf8226['value']=!![],Object['defineProperty'](exports,_0x4445ca(0x559,0x5e3),_0xf8226);
15
15
  }));
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.11.0",
3
+ "version": "3.11.2",
4
4
  "description": "Mars3D平台插件,支持气象 风向图 功能插件",
5
5
  "main": "./mars3d-wind.js",
6
6
  "peerDependencies": {},
7
7
  "devDependencies": {
8
- "mars3d": "~3.11.0"
8
+ "mars3d": "~3.11.2"
9
9
  },
10
10
  "scripts": {
11
11
  "lint": "eslint ./src/**/*.{js,ts} --fix"
@@ -28,7 +28,7 @@
28
28
  "webgis",
29
29
  "wind"
30
30
  ],
31
- "author": "火星科技",
31
+ "author": "mars3d团队",
32
32
  "license": "Apache-2.0",
33
33
  "homepage": "http://mars3d.cn",
34
34
  "build": {