mars3d-wind 3.7.25 → 3.8.0
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 +24 -7
- package/dist/mars3d-wind.js +4 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -76,10 +76,14 @@ import "mars3d-wind";
|
|
|
76
76
|
CanvasWindLayer 参考了: https://blog.csdn.net/axiwang88/article/details/105737114
|
|
77
77
|
|
|
78
78
|
WindLayer 参考了: https://github.com/RaymanNg/3D-Wind-Field
|
|
79
|
-
https://github.com/
|
|
79
|
+
https://github.com/hongfaqiu/cesium-particle (主要)
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
|
|
83
|
+
## 数据说明
|
|
84
|
+
本例使用的demo.nc属于NetCDF version 3数据文件,文件分辨率28km,请参考这个网站上的数据 [Panoply](https://www.giss.nasa.gov/tools/panoply/)。
|
|
85
|
+
|
|
86
|
+
|
|
83
87
|
### 如何获取NetCDF文件(.nc)数据
|
|
84
88
|
演示数据来自NOAA全球预报系统。原始数据为GRIB2格式,我使用toolsUI将GRIB2文件转换为NetCDF V3文件。
|
|
85
89
|
下载数据:https://www.unidata.ucar.edu/software/netcdf/examples/files.html
|
|
@@ -91,9 +95,22 @@ NOAA全球预报系统:https://www.ncdc.noaa.gov/data-access/model-data/model-
|
|
|
91
95
|
https://www.unidata.ucar.edu/software/netcdf-java/v4.5/ToolsUI.html
|
|
92
96
|
|
|
93
97
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
|
|
99
|
+
### 怎样加载自己的.nc文件
|
|
100
|
+
|
|
101
|
+
.nc文件最好为NetCDF version 3形式
|
|
102
|
+
|
|
103
|
+
文件中必须至少包含以下属性:
|
|
104
|
+
|
|
105
|
+
- 横向速度矩阵 U (lev, lat, lon)
|
|
106
|
+
- 纵向速度矩阵 V (lev, lat, lon)
|
|
107
|
+
- 经度维度 lon(0 - 360)
|
|
108
|
+
- 纬度维度 lat
|
|
109
|
+
|
|
110
|
+
可使用`getFileFields()`方法读取.nc文件中的属性字段名、维度字段名
|
|
111
|
+
|
|
112
|
+
并配合数据后按API传入的`fields`字段,尝试加载到地球上。
|
|
113
|
+
|
|
114
|
+
noData值设为0, 或者加载时配置valueRange属性。
|
|
115
|
+
|
|
116
|
+
如果经度范围不在(0, 360),纬度范围不在(-90, 90),需要配置offset属性。
|
package/dist/mars3d-wind.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
|
|
3
3
|
*
|
|
4
|
-
* 版本信息:v3.
|
|
5
|
-
* 编译日期:2024-08-
|
|
4
|
+
* 版本信息:v3.8.0
|
|
5
|
+
* 编译日期:2024-08-21 13:53:16
|
|
6
6
|
* 版权所有:Copyright by 火星科技 http://mars3d.cn
|
|
7
|
-
* 使用单位:免费公开版 ,2024-01
|
|
7
|
+
* 使用单位:免费公开版 ,2024-08-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(_0x4c5e9b,_0x1d4b8d){function _0x46394c(_0x2a1a20,_0x340e72){return _0x3462(_0x2a1a20-0x378,_0x340e72);}const _0x5577dc=_0x4c5e9b();function _0x4af459(_0x478b4d,_0x42451d){return _0x3462(_0x478b4d- -0x269,_0x42451d);}while(!![]){try{const _0x47bd81=-parseInt(_0x4af459(-0xc4,-0x138))/0x1*(parseInt(_0x4af459(-0xec,-0x108))/0x2)+parseInt(_0x46394c(0x409,0x3f4))/0x3*(-parseInt(_0x46394c(0x4d9,0x54b))/0x4)+-parseInt(_0x4af459(-0x1dc,-0x235))/0x5*(parseInt(_0x46394c(0x447,0x46f))/0x6)+-parseInt(_0x4af459(-0x123,-0xbf))/0x7*(parseInt(_0x4af459(-0x1e4,-0x206))/0x8)+-parseInt(_0x46394c(0x473,0x4a0))/0x9*(-parseInt(_0x4af459(-0x161,-0x13b))/0xa)+-parseInt(_0x4af459(-0x1bc,-0x22a))/0xb*(-parseInt(_0x46394c(0x406,0x384))/0xc)+parseInt(_0x46394c(0x430,0x49e))/0xd;if(_0x47bd81===_0x1d4b8d)break;else _0x5577dc['push'](_0x5577dc['shift']());}catch(_0x4f72ca){_0x5577dc['push'](_0x5577dc['shift']());}}}(_0x556b,0x7f34e));function _interopNamespace(_0xaf1186){if(_0xaf1186&&_0xaf1186['__esModule'])return _0xaf1186;var _0x66f770=Object['create'](null);function _0x18925e(_0x5493cc,_0x257c4e){return _0x3462(_0x257c4e- -0x2b2,_0x5493cc);}_0xaf1186&&Object['keys'](_0xaf1186)[_0x17cb35(0xf4,0xac)](function(_0x218a4d){function _0x130e03(_0x3cab9f,_0x3c4646){return _0x17cb35(_0x3cab9f-0x28c,_0x3c4646);}if(_0x218a4d!=='default'){var _0x2212f7=Object['getOwnPropertyDescriptor'](_0xaf1186,_0x218a4d);Object['defineProperty'](_0x66f770,_0x218a4d,_0x2212f7[_0x130e03(0x326,0x345)]?_0x2212f7:{'enumerable':!![],'get':function(){return _0xaf1186[_0x218a4d];}});}});function _0x17cb35(_0x46397b,_0x242080){return _0x3462(_0x46397b- -0xa1,_0x242080);}return _0x66f770[_0x17cb35(-0x3,-0x28)]=_0xaf1186,_0x66f770;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x15082d,_0x43c5ec){const _0x11892a=_0x15082d*Math['cos'](Cesium$7['Math']['toRadians'](_0x43c5ec));return _0x11892a;}function getV(_0x5a973a,_0xbaf6cd){function _0x9dc5c0(_0x594cb5,_0x38123c){return _0x3462(_0x594cb5- -0x22e,_0x38123c);}const _0xdfb7a8=_0x5a973a*Math[_0x9dc5c0(-0x16f,-0x19d)](Cesium$7['Math']['toRadians'](_0xbaf6cd));return _0xdfb7a8;}function getSpeed(_0x30f88b,_0x4e2947){const _0xe7b581=Math['sqrt'](Math['pow'](_0x30f88b,0x2)+Math['pow'](_0x4e2947,0x2));return _0xe7b581;}function getDirection(_0x4576dc,_0xcb3540){let _0x180cc6=Cesium$7[_0x2a050a(-0x17e,-0x134)]['toDegrees'](Math['atan2'](_0xcb3540,_0x4576dc));_0x180cc6+=_0x180cc6<0x0?0x168:0x0;function _0x2a050a(_0x15000d,_0x39cf77){return _0x3462(_0x15000d- -0x239,_0x39cf77);}return _0x180cc6;}const _0x5e33b3={};_0x5e33b3['__proto__']=null,_0x5e33b3[_0x556281(-0x21b,-0x239)]=getU,_0x5e33b3[_0x5caa0a(0x10,-0x74)]=getV,_0x5e33b3['getSpeed']=getSpeed,_0x5e33b3[_0x556281(-0x399,-0x317)]=getDirection;function _0x3462(_0x24c853,_0x337f89){const _0x556b35=_0x556b();return _0x3462=function(_0x34625f,_0x36b6f1){_0x34625f=_0x34625f-0x83;let _0x5e9830=_0x556b35[_0x34625f];return _0x5e9830;},_0x3462(_0x24c853,_0x337f89);}var WindUtil=_0x5e33b3;const Cesium$6=mars3d__namespace[_0x5caa0a(0xf5,0xfb)];class CustomPrimitive{constructor(_0x5ce202){this['commandType']=_0x5ce202[_0x1f2a28(0xe5,0x105)],this[_0x1f2a28(0xf9,0xcd)]=_0x5ce202['geometry'];function _0x1f2a28(_0x88c035,_0x3ff81f){return _0x5caa0a(_0x88c035-0x2b,_0x3ff81f);}this[_0x1f2a28(0x86,0x4b)]=_0x5ce202['attributeLocations'],this['primitiveType']=_0x5ce202['primitiveType'],this['uniformMap']=_0x5ce202[_0x9c4462(-0x2d4,-0x254)],this['vertexShaderSource']=_0x5ce202['vertexShaderSource'];function _0x9c4462(_0x1e7b19,_0x546389){return _0x556281(_0x546389,_0x1e7b19- -0x26);}this['fragmentShaderSource']=_0x5ce202['fragmentShaderSource'],this[_0x1f2a28(0x11b,0x14b)]=_0x5ce202[_0x9c4462(-0x23b,-0x29e)],this['framebuffer']=_0x5ce202['framebuffer'],this['outputTexture']=_0x5ce202['outputTexture'],this['autoClear']=_0x5ce202[_0x1f2a28(0xbd,0x3f)]??![],this['preExecute']=_0x5ce202[_0x9c4462(-0x28c,-0x295)],this['show']=!![],this['commandToExecute']=undefined,this[_0x9c4462(-0x287,-0x234)]=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6[(_0x1f2a28(0x72,0x68))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x9c4462(-0x353,-0x30d)],'pass':Cesium$6[_0x9c4462(-0x2e6,-0x303)]['OPAQUE']}));}['createCommand'](_0x54effa){function _0x22034a(_0x31e9ec,_0x4ff1a3){return _0x5caa0a(_0x4ff1a3-0x2a9,_0x31e9ec);}function _0x2b249e(_0x16a245,_0x3609ea){return _0x5caa0a(_0x16a245-0x1e9,_0x3609ea);}switch(this['commandType']){case'Draw':{const _0x216ffa=Cesium$6[_0x2b249e(0x2d3,0x2d6)][_0x22034a(0x311,0x350)]({'context':_0x54effa,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x155673={};_0x155673['context']=_0x54effa,_0x155673[_0x2b249e(0x244,0x211)]=this[_0x22034a(0x394,0x304)],_0x155673[_0x2b249e(0x243,0x262)]=this['vertexShaderSource'],_0x155673[_0x2b249e(0x1ee,0x165)]=this[_0x2b249e(0x1ee,0x17b)];const _0x117a57=Cesium$6[_0x2b249e(0x1f7,0x1ad)][_0x22034a(0x3f7,0x376)](_0x155673),_0x38a9bd=Cesium$6[_0x2b249e(0x1bd,0x22c)]['fromCache'](this[_0x22034a(0x3f1,0x399)]);return new Cesium$6[(_0x22034a(0x25c,0x2a8))]({'primitiveType':this['primitiveType'],'shaderProgram':_0x117a57,'vertexArray':_0x216ffa,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x38a9bd,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass'][_0x2b249e(0x24c,0x24c)],'pickOnly':!![],'owner':this});}case _0x22034a(0x379,0x2eb):{const _0x1ccff4={};return _0x1ccff4['owner']=this,_0x1ccff4['fragmentShaderSource']=this[_0x22034a(0x322,0x2ae)],_0x1ccff4['uniformMap']=this[_0x2b249e(0x240,0x1e7)],_0x1ccff4[_0x2b249e(0x2d2,0x34b)]=this[_0x2b249e(0x2d2,0x25b)],_0x1ccff4['persists']=!![],new Cesium$6['ComputeCommand'](_0x1ccff4);}}}['setGeometry'](_0x41ce68,_0x30dd82){function _0x667ca7(_0x4877b7,_0x5aacd0){return _0x556281(_0x5aacd0,_0x4877b7-0x5ef);}this[_0x2414d2(0x268,0x2e1)]=_0x30dd82;function _0x2414d2(_0x532da0,_0x5966f0){return _0x5caa0a(_0x532da0-0x19a,_0x5966f0);}const _0x109e92=Cesium$6[_0x667ca7(0x3d4,0x3f0)]['fromGeometry']({'context':_0x41ce68,'geometry':this[_0x2414d2(0x268,0x2e6)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this[_0x667ca7(0x388,0x3f5)][_0x2414d2(0x1ce,0x1a4)]=_0x109e92;}[_0x556281(-0x304,-0x299)](_0x584ae0){function _0x3811fa(_0x472fdb,_0x4c5de7){return _0x5caa0a(_0x4c5de7- -0x170,_0x472fdb);}if(!this['show'])return;function _0x281bf0(_0x36b19c,_0x40b56c){return _0x556281(_0x40b56c,_0x36b19c-0x68);}if(_0x584ae0['mode']!==Cesium$6['SceneMode'][_0x281bf0(-0x22a,-0x1aa)])return;!Cesium$6['defined'](this['commandToExecute'])&&(this['commandToExecute']=this[_0x3811fa(-0x24,-0x91)](_0x584ae0['context'])),Cesium$6[_0x281bf0(-0x275,-0x20e)](this['preExecute'])&&this[_0x3811fa(-0x137,-0xd1)](),Cesium$6['defined'](this['clearCommand'])&&_0x584ae0[_0x3811fa(-0xdc,-0x158)]['push'](this[_0x3811fa(-0xca,-0xcc)]),_0x584ae0['commandList'][_0x281bf0(-0x1af,-0x212)](this[_0x281bf0(-0x1ff,-0x267)]);}['isDestroyed'](){return![];}[_0x5caa0a(0x21,-0x32)](){function _0x18e0d9(_0x48211a,_0x42559c){return _0x556281(_0x42559c,_0x48211a-0x193);}function _0x2308ac(_0x1dfc95,_0x2490ab){return _0x556281(_0x1dfc95,_0x2490ab- -0x5);}if(this['clearCommand']){var _0x38b3d3,_0x2adbd1;(_0x38b3d3=this['clearCommand'])!==null&&_0x38b3d3!==void 0x0&&_0x38b3d3['vertexArray']&&this['clearCommand'][_0x2308ac(-0x329,-0x2d6)]['destroy'](),(_0x2adbd1=this[_0x18e0d9(-0xce,-0x139)])!==null&&_0x2adbd1!==void 0x0&&_0x2adbd1['shaderProgram']&&this['clearCommand'][_0x18e0d9(-0xbc,-0x127)]['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this['commandToExecute'][_0x2308ac(-0x1ce,-0x254)]&&this['commandToExecute']['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6[_0x2308ac(-0x297,-0x2ec)](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x387ecf=function(){const _0x23865b=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x23865b;},_0x1d5cbb=function(_0x2176b3,_0x208bb5){if(Cesium$5['defined'](_0x208bb5)){const _0x5909b2={};_0x5909b2['arrayBufferView']=_0x208bb5,_0x2176b3['source']=_0x5909b2;}const _0x584626=new Cesium$5['Texture'](_0x2176b3);return _0x584626;},_0xdddbd9=function(_0x818613,_0x22355f,_0x5d2da7){const _0x313c18={};_0x313c18['context']=_0x818613,_0x313c18['colorTextures']=[_0x22355f],_0x313c18['depthTexture']=_0x5d2da7;const _0xd9a9d4=new Cesium$5['Framebuffer'](_0x313c18);return _0xd9a9d4;},_0x21d2b9=function(_0x1d5e7a){const _0xcf019e=!![],_0x467de7=![],_0x4d9d6f={};_0x4d9d6f['viewport']=_0x1d5e7a['viewport'],_0x4d9d6f['depthTest']=_0x1d5e7a[_0x53690f(-0x118,-0xa3)],_0x4d9d6f['depthMask']=_0x1d5e7a[_0x1c65ae(-0x78,-0x49)],_0x4d9d6f[_0x53690f(-0xfb,-0x106)]=_0x1d5e7a[_0x1c65ae(-0xcd,-0x143)];function _0x53690f(_0x3c25ef,_0x47c4c1){return _0x3462(_0x3c25ef- -0x22b,_0x47c4c1);}const _0x5b05f3=_0x4d9d6f,_0x139c19=Cesium$5['Appearance']['getDefaultRenderState'](_0xcf019e,_0x467de7,_0x5b05f3);function _0x1c65ae(_0x5e119d,_0x4a9b93){return _0x3462(_0x5e119d- -0x1fd,_0x4a9b93);}return _0x139c19;},_0x1d3c63=function(_0x51485f){const _0x4c499b={},_0x298ced=Cesium$5['Math']['mod'](_0x51485f[_0x5a53fa(0x2ff,0x2ae)],Cesium$5['Math'][_0x1c3e94(0x1b9,0x15e)]),_0x4edcdb=Cesium$5['Math']['mod'](_0x51485f[_0x5a53fa(0x2c8,0x260)],Cesium$5[_0x1c3e94(0x15b,0x153)]['TWO_PI']),_0x5737d9=_0x51485f['width'];let _0x5b2b95,_0x353e0f;_0x5737d9>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x5b2b95=0x0,_0x353e0f=Cesium$5['Math']['TWO_PI']):_0x4edcdb-_0x298ced<_0x5737d9?(_0x5b2b95=_0x298ced,_0x353e0f=_0x298ced+_0x5737d9):(_0x5b2b95=_0x298ced,_0x353e0f=_0x4edcdb);_0x4c499b[_0x1c3e94(0x221,0x27d)]={'min':Cesium$5['Math'][_0x1c3e94(0x1f2,0x1c2)](_0x5b2b95),'max':Cesium$5[_0x5a53fa(0x2df,0x29a)]['toDegrees'](_0x353e0f)};const _0x59a1cd=_0x51485f['south'],_0x14ec6f=_0x51485f[_0x1c3e94(0x1eb,0x215)];function _0x5a53fa(_0xbd5293,_0x1025ed){return _0x3462(_0xbd5293-0x224,_0x1025ed);}const _0x24eb7d=_0x51485f[_0x1c3e94(0x223,0x19d)],_0x8bfb3f=_0x24eb7d>Cesium$5['Math']['PI']/0xc?_0x24eb7d/0x2:0x0;let _0x522d9e=Cesium$5[_0x1c3e94(0x15b,0x161)]['clampToLatitudeRange'](_0x59a1cd-_0x8bfb3f),_0x1a4b3b=Cesium$5[_0x5a53fa(0x2df,0x2da)][_0x1c3e94(0x147,0xf0)](_0x14ec6f+_0x8bfb3f);_0x522d9e<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x522d9e=-Cesium$5['Math']['PI_OVER_TWO']);function _0x1c3e94(_0x1aadd7,_0x3d8853){return _0x3462(_0x1aadd7-0xa0,_0x3d8853);}return _0x1a4b3b>Cesium$5['Math'][_0x5a53fa(0x30f,0x2bd)]&&(_0x1a4b3b=Cesium$5['Math']['PI_OVER_TWO']),_0x4c499b[_0x1c3e94(0x16e,0x132)]={'min':Cesium$5[_0x1c3e94(0x15b,0x12b)]['toDegrees'](_0x522d9e),'max':Cesium$5['Math'][_0x1c3e94(0x1f2,0x1af)](_0x1a4b3b)},_0x4c499b;};function _0x24ed87(_0x51d5c0,_0x40bfbb){return _0x5caa0a(_0x51d5c0-0xf1,_0x40bfbb);}const _0x43408f={};_0x43408f['getFullscreenQuad']=_0x387ecf,_0x43408f['createTexture']=_0x1d5cbb,_0x43408f[_0x24ed87(0x1dc,0x193)]=_0xdddbd9,_0x43408f['createRawRenderState']=_0x21d2b9,_0x43408f[_0x24ed87(0x19b,0x16c)]=_0x1d3c63;function _0x578bd5(_0x5f1839,_0x210204){return _0x5caa0a(_0x5f1839- -0x16b,_0x210204);}return _0x43408f;}());var segmentDraw_vert=_0x5caa0a(0x14,0x34),segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert=_0x556281(-0x291,-0x246),trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20trailsColor;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$4=mars3d__namespace[_0x5caa0a(0xf5,0x180)];class ParticlesRendering{constructor(_0x406cbd,_0x1ba6c8,_0x1bd96e,_0x3f749b,_0x509163){this['createRenderingTextures'](_0x406cbd,_0x1ba6c8,_0x1bd96e['colors']);function _0x1ec51d(_0x39fc3e,_0x20806b){return _0x5caa0a(_0x39fc3e-0x396,_0x20806b);}this[_0x1ec51d(0x404,0x45b)](_0x406cbd),this['createRenderingPrimitives'](_0x406cbd,_0x1bd96e,_0x3f749b,_0x509163);}['createRenderingTextures'](_0x68ccd8,_0x513855,_0x5d24d7){const _0x1bcac7={};_0x1bcac7[_0x314ba2(-0x1af,-0x233)]=_0x68ccd8,_0x1bcac7[_0x314ba2(-0x291,-0x205)]=_0x68ccd8['drawingBufferWidth'],_0x1bcac7[_0x314ba2(-0x177,-0x181)]=_0x68ccd8['drawingBufferHeight'],_0x1bcac7['pixelFormat']=Cesium$4['PixelFormat'][_0x314ba2(-0x1eb,-0x18a)];function _0x314ba2(_0x1b83f5,_0x167036){return _0x556281(_0x1b83f5,_0x167036-0xb3);}_0x1bcac7['pixelDatatype']=Cesium$4[_0x314ba2(-0x18f,-0x214)]['UNSIGNED_BYTE'];const _0x30b838=_0x1bcac7,_0x55a08a={};_0x55a08a['context']=_0x68ccd8,_0x55a08a[_0x314ba2(-0x1f7,-0x205)]=_0x68ccd8['drawingBufferWidth'],_0x55a08a[_0x314ba2(-0x18f,-0x181)]=_0x68ccd8['drawingBufferHeight'],_0x55a08a[_0x2bf357(0x34d,0x34e)]=Cesium$4['PixelFormat']['DEPTH_COMPONENT'],_0x55a08a['pixelDatatype']=Cesium$4[_0x2bf357(0x2ba,0x340)]['UNSIGNED_INT'];const _0x3086c0=_0x55a08a,_0x1d447f=_0x5d24d7[_0x314ba2(-0x1cd,-0x22e)],_0x33d353=new Float32Array(_0x1d447f*0x3);for(let _0x473495=0x0;_0x473495<_0x1d447f;_0x473495++){const _0x5bcc53=Cesium$4['Color'][_0x2bf357(0x430,0x3c2)](_0x5d24d7[_0x473495]);_0x33d353[0x3*_0x473495]=_0x5bcc53['red'],_0x33d353[0x3*_0x473495+0x1]=_0x5bcc53['green'],_0x33d353[0x3*_0x473495+0x2]=_0x5bcc53['blue'];}const _0x3c885f={'context':_0x68ccd8,'width':_0x1d447f,'height':0x1,'pixelFormat':Cesium$4[_0x314ba2(-0x280,-0x20f)]['RGB'],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4[_0x2bf357(0x33f,0x381)]['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};function _0x2bf357(_0x4ddc88,_0x201d1e){return _0x556281(_0x4ddc88,_0x201d1e-0x607);}this['textures']={'segmentsColor':Util['createTexture'](_0x30b838),'segmentsDepth':Util[_0x314ba2(-0x2ca,-0x272)](_0x3086c0),'currentTrailsColor':Util[_0x314ba2(-0x1e2,-0x272)](_0x30b838),'currentTrailsDepth':Util[_0x314ba2(-0x293,-0x272)](_0x3086c0),'nextTrailsColor':Util[_0x2bf357(0x2da,0x2e2)](_0x30b838),'nextTrailsDepth':Util[_0x2bf357(0x295,0x2e2)](_0x3086c0),'colorTable':Util['createTexture'](_0x3c885f,_0x33d353)};}[_0x556281(-0x2e0,-0x297)](_0x36371d){function _0x422792(_0x913441,_0x11d9b2){return _0x556281(_0x913441,_0x11d9b2-0x31a);}function _0x39b2e4(_0x14c317,_0xf5d49d){return _0x556281(_0x14c317,_0xf5d49d-0x2e4);}this[_0x422792(0x4a,0x3a)]={'segments':Util['createFramebuffer'](_0x36371d,this['textures']['segmentsColor'],this['textures'][_0x422792(0xbe,0x3b)]),'currentTrails':Util['createFramebuffer'](_0x36371d,this['textures'][_0x422792(0x130,0x9f)],this[_0x422792(0x93,0x28)][_0x422792(0x112,0xe5)]),'nextTrails':Util[_0x39b2e4(0x98,0xca)](_0x36371d,this['textures'][_0x422792(0xaa,0x1d)],this[_0x422792(0xb1,0x28)][_0x422792(0xd5,0xc9)])};}['createSegmentsGeometry'](_0x163679){const _0x2e76e9=0x4;let _0x37bdb2=[];for(let _0x36f54d=0x0;_0x36f54d<_0x163679['particlesTextureSize'];_0x36f54d++){for(let _0xd21d59=0x0;_0xd21d59<_0x163679['particlesTextureSize'];_0xd21d59++){for(let _0x49720a=0x0;_0x49720a<_0x2e76e9;_0x49720a++){_0x37bdb2[_0x44cede(-0x1d3,-0x230)](_0x36f54d/_0x163679[_0x26b50a(0x4db,0x480)]),_0x37bdb2[_0x26b50a(0x55c,0x5a0)](_0xd21d59/_0x163679[_0x44cede(-0x254,-0x20b)]);}}}_0x37bdb2=new Float32Array(_0x37bdb2);let _0x479f5f=[];function _0x26b50a(_0x57460d,_0x2e73d2){return _0x556281(_0x2e73d2,_0x57460d-0x773);}const _0x34d386=[-0x1,0x1],_0x3de6fe=[-0x1,0x1];for(let _0x56504a=0x0;_0x56504a<_0x163679['maxParticles'];_0x56504a++){for(let _0x268650=0x0;_0x268650<_0x2e76e9/0x2;_0x268650++){for(let _0x135370=0x0;_0x135370<_0x2e76e9/0x2;_0x135370++){_0x479f5f['push'](_0x34d386[_0x268650]),_0x479f5f[_0x44cede(-0x1d3,-0x1cf)](_0x3de6fe[_0x135370]),_0x479f5f['push'](0x0);}}}_0x479f5f=new Float32Array(_0x479f5f);const _0x4b2f29=0x6*_0x163679[_0x26b50a(0x49a,0x431)],_0x199ef2=new Uint32Array(_0x4b2f29);for(let _0x2746bd=0x0,_0x13a41a=0x0,_0x12bbb9=0x0;_0x2746bd<_0x163679[_0x44cede(-0x295,-0x214)];_0x2746bd++){_0x199ef2[_0x13a41a++]=_0x12bbb9+0x0,_0x199ef2[_0x13a41a++]=_0x12bbb9+0x1,_0x199ef2[_0x13a41a++]=_0x12bbb9+0x2,_0x199ef2[_0x13a41a++]=_0x12bbb9+0x2,_0x199ef2[_0x13a41a++]=_0x12bbb9+0x1,_0x199ef2[_0x13a41a++]=_0x12bbb9+0x3,_0x12bbb9+=0x4;}const _0x21f645=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4[(_0x26b50a(0x545,0x59b))]({'componentDatatype':Cesium$4['ComponentDatatype'][_0x44cede(-0x235,-0x23c)],'componentsPerAttribute':0x2,'values':_0x37bdb2}),'normal':new Cesium$4[(_0x26b50a(0x545,0x533))]({'componentDatatype':Cesium$4['ComponentDatatype'][_0x26b50a(0x4fa,0x511)],'componentsPerAttribute':0x3,'values':_0x479f5f})}),'indices':_0x199ef2});function _0x44cede(_0x3c4809,_0x3b63bc){return _0x5caa0a(_0x3c4809- -0x2c1,_0x3b63bc);}return _0x21f645;}['createRenderingPrimitives'](_0x2fd6fa,_0x21796a,_0x1a824b,_0x8f92c8){const _0x383b9c=this,_0x2c8fe3={};_0x2c8fe3['st']=0x0,_0x2c8fe3['normal']=0x1;const _0x6d975a={};_0x6d975a[_0x49f14f(0x125,0x172)]=[segmentDraw_vert];const _0x533f23={};_0x533f23[_0x49f14f(0x1fe,0x172)]=[segmentDraw_frag];const _0x55a071={};_0x55a071['enabled']=!![];const _0x2d8f6c={};_0x2d8f6c['viewport']=undefined,_0x2d8f6c[_0x49f14f(0x1c2,0x1b9)]=_0x55a071,_0x2d8f6c['depthMask']=!![];const _0x361ddb={};_0x361ddb['position']=0x0,_0x361ddb['st']=0x1;const _0x35dbbb={};_0x35dbbb['defines']=[_0x49f14f(0x208,0x186)],_0x35dbbb[_0x451ac1(0x37e,0x339)]=[fullscreen_vert];const _0x139b04={};_0x139b04[_0x49f14f(0xa4,0x12d)]=['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],_0x139b04[_0x49f14f(0x1bf,0x172)]=[trailDraw_frag];const _0xc06c08={};_0xc06c08[_0x49f14f(0x26a,0x230)]=0x0;function _0x451ac1(_0x5e3499,_0x264cf4){return _0x5caa0a(_0x5e3499-0x364,_0x264cf4);}_0xc06c08['st']=0x1;const _0x28b50e={};_0x28b50e[_0x451ac1(0x339,0x398)]=[_0x49f14f(0x1ad,0x186)],_0x28b50e[_0x49f14f(0x158,0x172)]=[fullscreen_vert];const _0x580e2b={};_0x580e2b[_0x49f14f(0xc4,0x12d)]=[_0x49f14f(0x1a7,0x1fa)];function _0x49f14f(_0x54560b,_0x277063){return _0x556281(_0x54560b,_0x277063-0x45d);}_0x580e2b[_0x49f14f(0x1da,0x172)]=[screenDraw_frag];const _0x4aa85f={};_0x4aa85f['enabled']=![];const _0x499659={};_0x499659[_0x49f14f(0x1b9,0x1eb)]=!![],this[_0x451ac1(0x3a8,0x421)]={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x2c8fe3,'geometry':this['createSegmentsGeometry'](_0x21796a),'primitiveType':Cesium$4[_0x451ac1(0x3f4,0x43f)]['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){return _0x8f92c8['particlesTextures']['currentParticlesPosition'];},'postProcessingPosition':function(){return _0x8f92c8['particlesTextures']['postProcessingPosition'];},'postProcessingSpeed':function(){function _0x493627(_0x42c821,_0x1959af){return _0x49f14f(_0x1959af,_0x42c821- -0x96);}return _0x8f92c8[_0x493627(0xd9,0x4d)]['postProcessingSpeed'];},'colorTable':function(){function _0x1f1298(_0x30d0f9,_0x54a40d){return _0x451ac1(_0x30d0f9-0xfb,_0x54a40d);}return _0x383b9c[_0x1f1298(0x472,0x43c)]['colorTable'];},'aspect':function(){function _0xefe1b(_0x761d82,_0x9d95d8){return _0x49f14f(_0x761d82,_0x9d95d8-0x103);}return _0x2fd6fa['drawingBufferWidth']/_0x2fd6fa[_0xefe1b(0x203,0x27d)];},'pixelSize':function(){function _0xe763d(_0x55c763,_0x1f8862){return _0x49f14f(_0x55c763,_0x1f8862-0x140);}return _0x1a824b[_0xe763d(0x325,0x384)];},'lineWidth':function(){function _0x208018(_0x283c34,_0x457164){return _0x49f14f(_0x457164,_0x283c34- -0x80);}return _0x21796a[_0x208018(0x155,0x18f)];},'particleHeight':function(){function _0x4e8fc8(_0x3c3c16,_0xa30f67){return _0x451ac1(_0x3c3c16- -0x429,_0xa30f67);}return _0x21796a[_0x4e8fc8(-0xeb,-0x12b)];}},'vertexShaderSource':new Cesium$4[(_0x49f14f(0x29a,0x24e))](_0x6d975a),'fragmentShaderSource':new Cesium$4[(_0x49f14f(0x1ef,0x24e))](_0x533f23),'rawRenderState':Util[_0x49f14f(0x134,0x1b6)](_0x2d8f6c),'framebuffer':this[_0x49f14f(0x132,0x17d)]['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x361ddb,'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){function _0x1ac230(_0x53991a,_0x2f66e3){return _0x451ac1(_0x53991a- -0xa4,_0x2f66e3);}return _0x383b9c['textures'][_0x1ac230(0x32a,0x38c)];},'segmentsDepthTexture':function(){return _0x383b9c['textures']['segmentsDepth'];},'currentTrailsColor':function(){function _0x1234bd(_0x4a4884,_0x5469cb){return _0x451ac1(_0x5469cb-0x7e,_0x4a4884);}return _0x383b9c[_0x1234bd(0x406,0x407)]['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0x5093fd(_0x2ead70,_0xc8616e){return _0x451ac1(_0x2ead70- -0x67c,_0xc8616e);}return _0x383b9c['framebuffers'][_0x5093fd(-0x25c,-0x2e2)]['depthTexture'];},'fadeOpacity':function(){function _0x9c0389(_0x5096d9,_0x368ad8){return _0x451ac1(_0x368ad8- -0x33,_0x5096d9);}return _0x21796a[_0x9c0389(0x2f2,0x31a)];}},'vertexShaderSource':new Cesium$4[(_0x451ac1(0x45a,0x423))](_0x35dbbb),'fragmentShaderSource':new Cesium$4[(_0x49f14f(0x26f,0x24e))](_0x139b04),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x49f14f(0x130,0x164)][_0x49f14f(0x225,0x1f4)]},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x127cc6=_0x383b9c['framebuffers']['currentTrails'];_0x383b9c[_0x287071(-0x5,0x49)]['currentTrails']=_0x383b9c[_0x314353(-0x2f,0x53)][_0x314353(0x54,0x43)],_0x383b9c['framebuffers']['nextTrails']=_0x127cc6;function _0x287071(_0x12d469,_0x274bfb){return _0x49f14f(_0x274bfb,_0x12d469- -0x182);}_0x383b9c['primitives']['trails']['commandToExecute']['framebuffer']=_0x383b9c[_0x287071(-0x5,-0x45)][_0x314353(0x8a,0x43)];function _0x314353(_0xd12b49,_0x35ff47){return _0x451ac1(_0x35ff47- -0x336,_0xd12b49);}_0x383b9c['primitives']['trails']['clearCommand']['framebuffer']=_0x383b9c['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0x451ac1(0x41f,0x45b),'attributeLocations':_0xc06c08,'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x49f14f(0x25f,0x1e8)]['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){return _0x383b9c['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0x392444(_0x1f0275,_0x308154){return _0x451ac1(_0x1f0275- -0x42f,_0x308154);}function _0x49d00f(_0x5d8509,_0x27860c){return _0x451ac1(_0x5d8509- -0x5e8,_0x27860c);}return _0x383b9c[_0x392444(-0xa6,-0xb2)][_0x49d00f(-0x26f,-0x255)]['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x28b50e),'fragmentShaderSource':new Cesium$4[(_0x451ac1(0x45a,0x3da))](_0x580e2b),'rawRenderState':Util[_0x49f14f(0x131,0x1b6)]({'viewport':undefined,'depthTest':_0x4aa85f,'depthMask':!![],'blending':_0x499659}),'framebuffer':undefined})};}}var getWind_frag=_0x556281(-0x284,-0x244),updateSpeed_frag=_0x5caa0a(-0xd,-0x7f),updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a',postProcessingPosition_frag=_0x556281(-0x281,-0x24e),postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$3=mars3d__namespace[_0x5caa0a(0xf5,0x9a)];class ParticlesComputing{constructor(_0x34b1d0,_0x37ee9f,_0xbc82a2,_0x1c9727){function _0x1fb489(_0x4f7cd8,_0x3430c5){return _0x556281(_0x3430c5,_0x4f7cd8-0x743);}this['data']=_0x37ee9f,this[_0xd12db6(-0x249,-0x2a4)](_0x34b1d0,_0x37ee9f);function _0xd12db6(_0x5f0234,_0x2be043){return _0x5caa0a(_0x2be043- -0x325,_0x5f0234);}this[_0xd12db6(-0x299,-0x2df)](_0x34b1d0,_0xbc82a2,_0x1c9727),this['createComputingPrimitives'](_0x37ee9f,_0xbc82a2,_0x1c9727);}['createWindTextures'](_0x5dbe41,_0xabb3a4){function _0x126de(_0x3620ec,_0x383f6f){return _0x5caa0a(_0x383f6f-0x15d,_0x3620ec);}function _0x117e79(_0xbac31b,_0x1a2513){return _0x556281(_0x1a2513,_0xbac31b-0x1d5);}const _0x2809e8={'context':_0x5dbe41,'width':_0xabb3a4['dimensions'][_0x126de(0x2b3,0x22c)],'height':_0xabb3a4['dimensions']['lat']*(_0xabb3a4['dimensions'][_0x117e79(-0xc0,-0xc5)]||0x1),'pixelFormat':Cesium$3['PixelFormat'][_0x117e79(-0xc1,-0x117)],'pixelDatatype':Cesium$3['PixelDatatype'][_0x126de(0x1fa,0x1e9)],'flipY':![],'sampler':new Cesium$3[(_0x126de(0x16f,0x197))]({'minificationFilter':Cesium$3[_0x126de(0x1ba,0x1dc)]['NEAREST'],'magnificationFilter':Cesium$3[_0x126de(0x22b,0x1d7)]['NEAREST']})};this['windTextures']={'U':Util['createTexture'](_0x2809e8,_0xabb3a4['U']['array']),'V':Util[_0x117e79(-0x150,-0x13b)](_0x2809e8,_0xabb3a4['V']['array'])};}[_0x556281(-0x291,-0x2bf)](_0x2c4aad,_0x2c06e1,_0x4bc63d){const _0x344de5={'context':_0x2c4aad,'width':_0x2c06e1['particlesTextureSize'],'height':_0x2c06e1[_0x52d8e3(0x75,-0x10)],'pixelFormat':Cesium$3[_0x5cdc58(0x444,0x45f)][_0x52d8e3(0xd0,0xc3)],'pixelDatatype':Cesium$3['PixelDatatype'][_0x52d8e3(0x94,0x5c)],'flipY':![],'sampler':new Cesium$3[(_0x52d8e3(0x42,-0x35))]({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x52d8e3(0xed,0x14d)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x1c9614=this['randomizeParticles'](_0x2c06e1[_0x52d8e3(0x34,0x1c)],_0x4bc63d);function _0x52d8e3(_0x1fe39c,_0x94f4c2){return _0x556281(_0x94f4c2,_0x1fe39c-0x30d);}function _0x5cdc58(_0x14601d,_0x3485f5){return _0x556281(_0x3485f5,_0x14601d-0x706);}const _0x34187b=new Float32Array(0x4*_0x2c06e1['maxParticles'])['fill'](0x0);this[_0x5cdc58(0x418,0x3d9)]={'particlesWind':Util['createTexture'](_0x344de5),'currentParticlesPosition':Util[_0x52d8e3(-0x18,-0xa)](_0x344de5,_0x1c9614),'nextParticlesPosition':Util['createTexture'](_0x344de5,_0x1c9614),'currentParticlesSpeed':Util['createTexture'](_0x344de5,_0x34187b),'nextParticlesSpeed':Util['createTexture'](_0x344de5,_0x34187b),'postProcessingPosition':Util[_0x5cdc58(0x3e1,0x3c4)](_0x344de5,_0x1c9614),'postProcessingSpeed':Util['createTexture'](_0x344de5,_0x34187b)};}[_0x5caa0a(-0x8,0x3f)](_0x1d5c92,_0x4c9ee2){const _0x576df9=new Float32Array(0x4*_0x1d5c92);function _0x31df81(_0x155b36,_0x2bcb00){return _0x556281(_0x155b36,_0x2bcb00-0x63c);}function _0x2ae57a(_0x2ff292,_0x58512d){return _0x556281(_0x2ff292,_0x58512d-0x389);}for(let _0x213e79=0x0;_0x213e79<_0x1d5c92;_0x213e79++){_0x576df9[0x4*_0x213e79]=Cesium$3[_0x31df81(0x2ea,0x340)]['randomBetween'](_0x4c9ee2['lonRange']['x'],_0x4c9ee2[_0x31df81(0x30e,0x399)]['y']),_0x576df9[0x4*_0x213e79+0x1]=Cesium$3['Math'][_0x31df81(0x2ae,0x31d)](_0x4c9ee2['latRange']['x'],_0x4c9ee2['latRange']['y']),_0x576df9[0x4*_0x213e79+0x2]=Cesium$3['Math']['randomBetween'](this['data'][_0x2ae57a(0x161,0xf4)]['min'],this[_0x31df81(0x36f,0x352)]['lev']['max']),_0x576df9[0x4*_0x213e79+0x3]=0x0;}return _0x576df9;}['destroyParticlesTextures'](){Object['keys'](this['particlesTextures'])['forEach'](_0xf165a0=>{this['particlesTextures'][_0xf165a0]['destroy']();});}[_0x556281(-0x1ec,-0x26e)](_0x87d4e2,_0x4f8989,_0x18f021){const _0x4f4b48=new Cesium$3['Cartesian3'](_0x87d4e2[_0x2232ba(-0x110,-0xe7)]['lon'],_0x87d4e2['dimensions']['lat'],_0x87d4e2['dimensions'][_0x4405f8(0x1cb,0x18c)]),_0x3e8f2e=new Cesium$3['Cartesian3'](_0x87d4e2['lon'][_0x4405f8(0x16c,0x16d)],_0x87d4e2[_0x2232ba(-0x8e,-0xc4)][_0x4405f8(0x16c,0xda)],_0x87d4e2['lev']['min']),_0x39edb8=new Cesium$3[(_0x2232ba(-0x1f,-0xae))](_0x87d4e2['lon']['max'],_0x87d4e2['lat'][_0x4405f8(0x242,0x1d7)],_0x87d4e2['lev']['max']);function _0x4405f8(_0x4ad672,_0x278216){return _0x556281(_0x278216,_0x4ad672-0x460);}const _0x58be34=new Cesium$3['Cartesian3']((_0x39edb8['x']-_0x3e8f2e['x'])/(_0x4f4b48['x']-0x1),(_0x39edb8['y']-_0x3e8f2e['y'])/(_0x4f4b48['y']-0x1),_0x4f4b48['z']>0x1?(_0x39edb8['z']-_0x3e8f2e['z'])/(_0x4f4b48['z']-0x1):0x1),_0x396f18=new Cesium$3['Cartesian2'](_0x87d4e2['U']['min'],_0x87d4e2['U']['max']),_0x57b3e5=new Cesium$3['Cartesian2'](_0x87d4e2['V'][_0x2232ba(-0x13f,-0xcf)],_0x87d4e2['V'][_0x4405f8(0x242,0x2a5)]),_0x342332=this,_0x542582={};_0x542582['U']=function(){function _0xe97e53(_0x368423,_0xe5e86a){return _0x2232ba(_0x368423,_0xe5e86a-0x3c4);}return _0x342332[_0xe97e53(0x31f,0x3a1)]['U'];};function _0x2232ba(_0x97e2,_0x3e3c84){return _0x556281(_0x97e2,_0x3e3c84-0x225);}_0x542582['V']=function(){return _0x342332['windTextures']['V'];},_0x542582['currentParticlesPosition']=function(){function _0x542e92(_0x589e7c,_0x512fb4){return _0x2232ba(_0x512fb4,_0x589e7c-0xb);}return _0x342332['particlesTextures'][_0x542e92(-0xf2,-0x147)];},_0x542582['dimension']=function(){return _0x4f4b48;},_0x542582['minimum']=function(){return _0x3e8f2e;},_0x542582['maximum']=function(){return _0x39edb8;},_0x542582['interval']=function(){return _0x58be34;};const _0x701a46={};_0x701a46['sources']=[getWind_frag];const _0x12f264={};_0x12f264['sources']=[updateSpeed_frag];const _0x4a89dd={};_0x4a89dd[_0x4405f8(0x175,0xf5)]=[updatePosition_frag];const _0x51c209={};_0x51c209['sources']=[postProcessingPosition_frag];const _0x2a363d={};_0x2a363d['sources']=[postProcessingSpeed_frag],this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':_0x542582,'fragmentShaderSource':new Cesium$3[(_0x2232ba(0x26,0x16))](_0x701a46),'outputTexture':this[_0x2232ba(-0x36,-0xc9)]['particlesWind'],'preExecute':function(){function _0x52a706(_0x6ff6c,_0x552bd3){return _0x2232ba(_0x552bd3,_0x6ff6c- -0x77);}function _0x5a3de1(_0x4b1b56,_0x54b3fa){return _0x4405f8(_0x54b3fa-0x108,_0x4b1b56);}_0x342332[_0x5a3de1(0x267,0x2a7)]['getWind']['commandToExecute'][_0x5a3de1(0x35b,0x34c)]=_0x342332['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x342332['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){function _0x4482f5(_0x275cfd,_0x2dfc8f){return _0x4405f8(_0x2dfc8f-0x59,_0x275cfd);}function _0x518a63(_0x228f05,_0x3edce){return _0x4405f8(_0x3edce- -0x3e4,_0x228f05);}return _0x342332[_0x4482f5(0x1c6,0x1cb)][_0x518a63(-0x1d2,-0x217)];},'uSpeedRange':function(){return _0x396f18;},'vSpeedRange':function(){return _0x57b3e5;},'pixelSize':function(){function _0x29ed41(_0x1b0a5f,_0x268868){return _0x2232ba(_0x1b0a5f,_0x268868-0x3a6);}return _0x18f021[_0x29ed41(0x444,0x3b2)];},'speedFactor':function(){function _0x43075d(_0x1a42cb,_0x4068ae){return _0x4405f8(_0x4068ae-0x1ce,_0x1a42cb);}return _0x4f8989[_0x43075d(0x3e1,0x411)];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x12f264),'outputTexture':this['particlesTextures'][_0x2232ba(-0x79,-0xe9)],'preExecute':function(){function _0x452788(_0x15a212,_0x155e5c){return _0x2232ba(_0x15a212,_0x155e5c-0x2d3);}const _0x5a0a1a=_0x342332['particlesTextures']['currentParticlesSpeed'];_0x342332[_0x4f82a3(0x36f,0x3f5)][_0x4f82a3(0x3cf,0x430)]=_0x342332['particlesTextures']['postProcessingSpeed'];function _0x4f82a3(_0x564c67,_0x5d5774){return _0x2232ba(_0x564c67,_0x5d5774-0x4be);}_0x342332['particlesTextures'][_0x4f82a3(0x427,0x48a)]=_0x5a0a1a,_0x342332['primitives']['updateSpeed'][_0x452788(0x243,0x291)][_0x4f82a3(0x555,0x4c7)]=_0x342332['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':_0x4405f8(0x19d,0x1ef),'uniformMap':{'currentParticlesPosition':function(){function _0x990ae1(_0x4b5e0d,_0x4cde90){return _0x4405f8(_0x4cde90-0x312,_0x4b5e0d);}return _0x342332['particlesTextures'][_0x990ae1(0x412,0x450)];},'currentParticlesSpeed':function(){function _0x10082b(_0x4e6efc,_0x25d1a7){return _0x2232ba(_0x4e6efc,_0x25d1a7- -0x7a);}return _0x342332[_0x10082b(-0x1c2,-0x143)]['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x4a89dd),'outputTexture':this[_0x4405f8(0x172,0x1c7)]['nextParticlesPosition'],'preExecute':function(){function _0x1a32ec(_0xf80fbc,_0x126b7b){return _0x2232ba(_0x126b7b,_0xf80fbc-0x2b7);}function _0x45b848(_0x2b6fe6,_0x9728ca){return _0x2232ba(_0x2b6fe6,_0x9728ca-0x9c);}const _0x2374fa=_0x342332[_0x45b848(0x5,-0x2d)][_0x1a32ec(0x1ba,0x232)];_0x342332['particlesTextures'][_0x45b848(-0x92,-0x61)]=_0x342332['particlesTextures']['postProcessingPosition'],_0x342332[_0x45b848(-0x95,-0x2d)][_0x1a32ec(0x228,0x26e)]=_0x2374fa,_0x342332[_0x1a32ec(0x21b,0x213)]['updatePosition'][_0x1a32ec(0x275,0x280)]['outputTexture']=_0x342332['particlesTextures'][_0x45b848(-0x6,-0x15)];}}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x2232ba(-0x2b,-0x9e),'uniformMap':{'nextParticlesPosition':function(){return _0x342332['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){return _0x342332['particlesTextures']['nextParticlesSpeed'];},'lonRange':function(){function _0xf5f744(_0x2924c2,_0x3ec90c){return _0x4405f8(_0x3ec90c- -0x31c,_0x2924c2);}return _0x18f021[_0xf5f744(-0x11b,-0x15f)];},'latRange':function(){function _0x53b864(_0x910a34,_0x27212b){return _0x2232ba(_0x27212b,_0x910a34- -0x89);}return _0x18f021[_0x53b864(-0xe1,-0xf7)];},'randomCoefficient':function(){const _0x61e8fb=Math['random']();return _0x61e8fb;},'dropRate':function(){return _0x4f8989['dropRate'];},'dropRateBump':function(){return _0x4f8989['dropRateBump'];}},'fragmentShaderSource':new Cesium$3[(_0x2232ba(0xd,0x16))](_0x51c209),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){function _0x29c4e5(_0x2529a9,_0x5dff74){return _0x4405f8(_0x2529a9-0x1a9,_0x5dff74);}function _0x43b280(_0x40c221,_0x3ad0b0){return _0x2232ba(_0x40c221,_0x3ad0b0- -0x1e3);}_0x342332[_0x43b280(-0x218,-0x27f)]['postProcessingPosition'][_0x29c4e5(0x3a2,0x360)]['outputTexture']=_0x342332['particlesTextures']['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x4405f8(0x19d,0x1e8),'uniformMap':{'postProcessingPosition':function(){function _0xe07ca3(_0x562a4d,_0x3fe631){return _0x2232ba(_0x562a4d,_0x3fe631- -0x94);}return _0x342332[_0xe07ca3(-0x1e9,-0x15d)]['postProcessingPosition'];},'nextParticlesSpeed':function(){return _0x342332['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x2a363d),'outputTexture':this['particlesTextures'][_0x2232ba(-0x48,-0x34)],'preExecute':function(){function _0x5112ef(_0x4a593c,_0x545446){return _0x4405f8(_0x4a593c- -0x350,_0x545446);}function _0x29e44a(_0x16a586,_0x57be9d){return _0x2232ba(_0x57be9d,_0x16a586- -0xf2);}_0x342332['primitives'][_0x5112ef(-0x149,-0x180)]['commandToExecute']['outputTexture']=_0x342332['particlesTextures'][_0x29e44a(-0x126,-0xd4)];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x28ce57,_0x537e62,_0x2dd1e0,_0x153ee8){this[_0x38177a(0x171,0x1fb)]=_0x28ce57,_0x537e62={..._0x537e62};_0x537e62['udata']&&_0x537e62['vdata']&&(_0x537e62['dimensions']={},_0x537e62['dimensions']['lon']=_0x537e62[_0x1e99fe(-0x36,-0x8a)],_0x537e62['dimensions'][_0x1e99fe(-0xb4,-0xa6)]=_0x537e62['rows'],_0x537e62[_0x38177a(0x14b,0x171)]['lev']=_0x537e62['lev']||0x1,_0x537e62['lon']={},_0x537e62['lon']['min']=_0x537e62['xmin'],_0x537e62[_0x38177a(0x221,0x232)][_0x38177a(0x239,0x279)]=_0x537e62['xmax'],_0x537e62['lat']={},_0x537e62[_0x38177a(0x16e,0x17f)]['min']=_0x537e62['ymin'],_0x537e62['lat']['max']=_0x537e62['ymax'],_0x537e62['lev']={},_0x537e62['lev']['min']=_0x537e62['levmin']??0x1,_0x537e62[_0x38177a(0x1c2,0x138)]['max']=_0x537e62[_0x38177a(0x1c8,0x1dd)]??0x1,_0x537e62['U']={},_0x537e62['U']['array']=new Float32Array(_0x537e62['udata']),_0x537e62['U']['min']=_0x537e62['umin']??Math[_0x38177a(0x163,0xf3)](..._0x537e62['udata']),_0x537e62['U'][_0x1e99fe(-0x21,0x25)]=_0x537e62['umax']??Math['max'](..._0x537e62['udata']),_0x537e62['V']={},_0x537e62['V'][_0x38177a(0x182,0x119)]=new Float32Array(_0x537e62['vdata']),_0x537e62['V'][_0x1e99fe(-0x76,-0xb1)]=_0x537e62['vmin']??Math['min'](..._0x537e62['vdata']),_0x537e62['V'][_0x38177a(0x239,0x29e)]=_0x537e62['vmax']??Math['max'](..._0x537e62[_0x1e99fe(-0x93,-0xda)]));function _0x1e99fe(_0x45f860,_0xa63ba1){return _0x556281(_0x45f860,_0xa63ba1-0x243);}function _0x38177a(_0x4c8112,_0x481061){return _0x556281(_0x481061,_0x4c8112-0x457);}this['data']=_0x537e62,this['options']=_0x2dd1e0,this['viewerParameters']=_0x153ee8,this['particlesComputing']=new ParticlesComputing(this[_0x1e99fe(-0x11d,-0xa3)],this[_0x1e99fe(-0x9d,-0xa7)],this[_0x1e99fe(-0x7f,-0xac)],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this[_0x38177a(0x171,0x1d8)],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}[_0x5caa0a(-0x2f,-0xa9)](_0x677dad){this[_0x37935d(-0x1d7,-0x1ae)][_0x37935d(-0x2d9,-0x2e0)](),Object[_0x4576aa(0x24e,0x1d7)](this[_0x37935d(-0x1d7,-0x1d6)][_0x4576aa(0x1ab,0x1c2)])['forEach'](_0x35375a=>{function _0x20fdb5(_0x15460e,_0x3d2fe0){return _0x37935d(_0x15460e-0x3ac,_0x3d2fe0);}function _0x48eb7f(_0x236adb,_0x2c48e5){return _0x37935d(_0x2c48e5-0x4f8,_0x236adb);}this[_0x48eb7f(0x2dc,0x321)]['windTextures'][_0x35375a][_0x48eb7f(0x234,0x255)]();}),this[_0x37935d(-0x202,-0x22c)][_0x37935d(-0x2b1,-0x303)][_0x4576aa(0x1d9,0x188)][_0x37935d(-0x2a3,-0x308)](),Object['keys'](this['particlesRendering'][_0x37935d(-0x29f,-0x2de)])['forEach'](_0x39fa85=>{function _0x14a641(_0x20f5f9,_0x1828fa){return _0x4576aa(_0x1828fa,_0x20f5f9-0x216);}this['particlesRendering'][_0x14a641(0x340,0x396)][_0x39fa85]['destroy']();});function _0x37935d(_0x2ba115,_0x3b7aab){return _0x556281(_0x3b7aab,_0x2ba115-0x41);}function _0x4576aa(_0x1734df,_0x522be8){return _0x556281(_0x1734df,_0x522be8-0x40a);}this['context']=_0x677dad,this['particlesComputing']=new ParticlesComputing(this['context'],this[_0x37935d(-0x2a9,-0x226)],this['options'],this[_0x4576aa(0x1d6,0x18b)]),this[_0x37935d(-0x202,-0x187)]=new ParticlesRendering(this[_0x4576aa(0xc7,0x124)],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0x179fa4=new Cesium$2['ClearCommand']({'color':new Cesium$2[(_0x26bd61(0x487,0x411))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});function _0x391e9c(_0x2f4c2d,_0x251e54){return _0x556281(_0x251e54,_0x2f4c2d-0x39);}function _0x26bd61(_0x2867ba,_0x21e5b5){return _0x556281(_0x21e5b5,_0x2867ba-0x790);}Object['keys'](this['particlesRendering']['framebuffers'])[_0x26bd61(0x56e,0x584)](_0x4f65dc=>{_0x179fa4['framebuffer']=this['particlesRendering'][_0x4bb46d(-0x15e,-0x1aa)][_0x4f65dc];function _0x4bb46d(_0x35231f,_0x358435){return _0x391e9c(_0x358435-0xfd,_0x35231f);}function _0x273633(_0x475c49,_0x171b76){return _0x391e9c(_0x475c49-0x390,_0x171b76);}_0x179fa4[_0x4bb46d(-0x14e,-0x1ac)](this['context']);});}['refreshParticles'](_0x37bb34){this['clearFramebuffers']();function _0x36f8e1(_0x24b5ac,_0x45dbe8){return _0x556281(_0x24b5ac,_0x45dbe8-0x66f);}this[_0x339a70(0x3e,0x8)]['destroyParticlesTextures'](),this['particlesComputing'][_0x36f8e1(0x428,0x3b0)](this['context'],this['options'],this['viewerParameters']);function _0x339a70(_0x43198b,_0x187113){return _0x556281(_0x43198b,_0x187113-0x220);}if(_0x37bb34){var _0x2308f4;const _0x15b383=this['particlesRendering'][_0x339a70(-0x27,-0x85)](this['options']);this['particlesRendering'][_0x36f8e1(0x3d4,0x3ae)][_0x36f8e1(0x360,0x3aa)]['geometry']=_0x15b383;const _0x1f543d=Cesium$2['VertexArray'][_0x36f8e1(0x421,0x411)]({'context':this['context'],'geometry':_0x15b383,'attributeLocations':this[_0x36f8e1(0x3b8,0x42c)]['primitives']['segments'][_0x36f8e1(0x42e,0x3c5)],'bufferUsage':Cesium$2[_0x339a70(-0x170,-0xe5)]['STATIC_DRAW']});(_0x2308f4=this['particlesRendering']['primitives'])!==null&&_0x2308f4!==void 0x0&&(_0x2308f4=_0x2308f4[_0x36f8e1(0x354,0x3aa)])!==null&&_0x2308f4!==void 0x0&&_0x2308f4['commandToExecute']&&(this[_0x339a70(0x6c,-0x23)]['primitives']['segments']['commandToExecute']['vertexArray']=_0x1f543d);}}['setOptions'](_0x285b00){let _0x30769f=![];this['options']['maxParticles']!==_0x285b00['maxParticles']&&(_0x30769f=!![]);Object['keys'](_0x285b00)['forEach'](_0x3f0ccb=>{this['options'][_0x3f0ccb]=_0x285b00[_0x3f0ccb];});function _0x177294(_0x2207a1,_0x902ebd){return _0x5caa0a(_0x2207a1-0x77,_0x902ebd);}this[_0x177294(0x74,0x106)](_0x30769f);}[_0x5caa0a(0x85,-0x2)](_0x2fba1e){Object['keys'](_0x2fba1e)['forEach'](_0x23902f=>{function _0x50fc01(_0x2bee0b,_0x1da31b){return _0x3462(_0x1da31b- -0x3da,_0x2bee0b);}this[_0x50fc01(-0x24e,-0x2a2)][_0x23902f]=_0x2fba1e[_0x23902f];});function _0x54e169(_0x1fafae,_0x34bcb6){return _0x556281(_0x1fafae,_0x34bcb6-0x15e);}this[_0x54e169(-0x1a9,-0x1aa)](![]);}['destroy'](){clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x4fb79d=>{function _0x1552e2(_0x5d8b63,_0x24e59f){return _0x3462(_0x24e59f-0x98,_0x5d8b63);}this[_0x1552e2(0x223,0x237)]['windTextures'][_0x4fb79d]['destroy']();});function _0x344737(_0x3d3cad,_0x3489c7){return _0x5caa0a(_0x3489c7-0x382,_0x3d3cad);}this['particlesRendering']['textures']['colorTable']['destroy']();function _0x4bfb6a(_0xaf6b05,_0x4cee48){return _0x556281(_0xaf6b05,_0x4cee48-0x33b);}Object['keys'](this['particlesRendering'][_0x344737(0x3bd,0x3a7)])[_0x4bfb6a(0x18f,0x119)](_0x4f07b6=>{function _0x4abc42(_0x1361d2,_0xf73ba5){return _0x344737(_0x1361d2,_0xf73ba5-0xad);}this[_0x4abc42(0x4e5,0x4f1)]['framebuffers'][_0x4f07b6]['destroy']();});for(const _0x5bc985 in this){delete this[_0x5bc985];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x556281(-0x20a,-0x262)]['BaseLayer'],_0x349d49={};_0x349d49['particlesNumber']=0x1000,_0x349d49['fixedHeight']=0x0,_0x349d49['fadeOpacity']=0.996,_0x349d49[_0x556281(-0x28c,-0x241)]=0.003,_0x349d49['dropRateBump']=0.01,_0x349d49[_0x556281(-0x280,-0x21d)]=0.5,_0x349d49['lineWidth']=0x2,_0x349d49['colors']=[_0x5caa0a(0xe0,0x11d)];const DEF_OPTIONS=_0x349d49;class WindLayer extends BaseLayer$1{constructor(_0x507678={}){_0x507678={...DEF_OPTIONS,..._0x507678},super(_0x507678),this['_setOptionsHook'](_0x507678);}get['layer'](){return this['primitives'];}get[_0x5caa0a(0x1b,0x21)](){return this['_data'];}set['data'](_0x322691){function _0x56863b(_0x1310c8,_0x2c89fc){return _0x5caa0a(_0x2c89fc- -0x2a7,_0x1310c8);}this[_0x56863b(-0x2ff,-0x295)](_0x322691);}get['colors'](){function _0x157b3d(_0x556070,_0x165a9e){return _0x556281(_0x556070,_0x165a9e-0x6fe);}function _0x5b42de(_0x3bb7cf,_0x32cf58){return _0x556281(_0x32cf58,_0x3bb7cf-0x77c);}return this[_0x157b3d(0x45e,0x40f)][_0x157b3d(0x488,0x458)];}set['colors'](_0x1658c5){this['options'][_0xafbe09(0xf7,0x70)]=_0x1658c5;function _0x144bd3(_0x245b27,_0x840b9d){return _0x556281(_0x245b27,_0x840b9d-0x248);}function _0xafbe09(_0xde4071,_0x367b91){return _0x5caa0a(_0xde4071-0x98,_0x367b91);}if(this['particleSystem']){const _0x41beba={};_0x41beba[_0xafbe09(0xf7,0x110)]=_0x1658c5,this[_0xafbe09(0xec,0xe3)][_0xafbe09(0x10f,0x101)](_0x41beba);}this['resize']();}['_mountedHook'](){}['_addedHook'](){this['scene']=this['_map'][_0x285753(0x12c,0x173)],this[_0x285753(0x173,0x14b)]=this['_map']['camera'],this[_0x400ecd(0xb9,0x9b)]=new Cesium$1['PrimitiveCollection'](),this['_map']['scene']['primitives']['add'](this[_0x285753(0xe0,0x168)]);function _0x285753(_0x5073a7,_0x545375){return _0x556281(_0x5073a7,_0x545375-0x429);}this[_0x400ecd(0x147,0xdd)]={'lonRange':new Cesium$1[(_0x400ecd(0x136,0xdb))](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this[_0x285753(0x10e,0x14e)](),window['addEventListener']('resize',this[_0x400ecd(0x16c,0xfd)][_0x400ecd(0xf1,0xd9)](this),![]),this['mouse_down']=![],this['mouse_move']=![];function _0x400ecd(_0x283fb9,_0x59ec5a){return _0x5caa0a(_0x59ec5a-0x57,_0x283fb9);}this['_map']['on'](mars3d__namespace[_0x400ecd(0xc3,0x8e)][_0x400ecd(0x2a,0x5b)],this[_0x400ecd(0x12b,0x146)],this),this['_map']['on'](mars3d__namespace['EventType'][_0x285753(0x1b8,0x1ab)],this['_onMouseDownEvent'],this),this[_0x400ecd(0x48,0x5a)]['on'](mars3d__namespace['EventType'][_0x285753(0xfc,0x159)],this[_0x400ecd(0x12d,0xbf)],this),this[_0x400ecd(0x1d,0x5a)]['on'](mars3d__namespace[_0x285753(0x198,0x15b)]['mouseMove'],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x285753(0x181,0x136)](this['_data']);}['_removedHook'](){window[_0x189f9c(-0x1cb,-0x1ca)](_0x189f9c(-0x20b,-0x1c1),this['resize']),this['_map']['off'](mars3d__namespace[_0x6bdecb(0x124,0xe8)][_0x189f9c(-0x1bd,-0x1bc)],this['_onMap_preRenderEvent'],this),this[_0x189f9c(-0x207,-0x264)]['off'](mars3d__namespace[_0x6bdecb(0x86,0xe8)]['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace[_0x6bdecb(0x10f,0xe8)][_0x189f9c(-0x197,-0x1e0)],this['_onMouseDownEvent'],this);function _0x189f9c(_0x210416,_0x126c45){return _0x5caa0a(_0x126c45- -0x267,_0x210416);}function _0x6bdecb(_0x1ebccd,_0x2f4f62){return _0x5caa0a(_0x2f4f62-0xb1,_0x1ebccd);}this[_0x6bdecb(0x25,0xb4)]['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x189f9c(-0xfc,-0x18a)],this[_0x6bdecb(0x187,0x163)],this),this['primitives'][_0x6bdecb(0x91,0xe7)](),this['_map']['scene']['primitives'][_0x6bdecb(0x108,0xd1)](this['primitives']);}['resize'](){if(!this['show']||!this['particleSystem'])return;function _0x120f21(_0x3ec99c,_0x4b6356){return _0x5caa0a(_0x3ec99c-0x23e,_0x4b6356);}this['primitives']['show']=![];function _0x3c81cb(_0x7cbc20,_0xf866a1){return _0x5caa0a(_0x7cbc20-0x242,_0xf866a1);}this['primitives']['removeAll'](),this['_map']['once'](mars3d__namespace['EventType'][_0x3c81cb(0x2ed,0x2f2)],this[_0x120f21(0x314,0x2c9)],this);}[_0x556281(-0x258,-0x22f)](_0x40ff39){this['particleSystem']['canvasResize'](this['scene'][_0x489811(0x18,-0x6c)]);function _0x489811(_0x2a9c73,_0x10c4c8){return _0x556281(_0x2a9c73,_0x10c4c8-0x27a);}this['addPrimitives']();function _0x3ee64d(_0x40a3bb,_0x369450){return _0x5caa0a(_0x369450- -0x2f8,_0x40a3bb);}this['primitives'][_0x3ee64d(-0x2cf,-0x287)]=!![];}['_onMapWhellEvent'](_0x26ecfc){function _0x30bb8d(_0x418b49,_0x3704a6){return _0x5caa0a(_0x3704a6- -0x6c,_0x418b49);}function _0x355528(_0x113195,_0x22a945){return _0x5caa0a(_0x22a945- -0x205,_0x113195);}clearTimeout(this['refreshTimer']);if(!this[_0x30bb8d(0x66,0x5)]||!this[_0x355528(-0x145,-0x1b1)])return;this['primitives'][_0x30bb8d(0x62,0x5)]=![],this[_0x355528(-0xd4,-0x152)]=setTimeout(()=>{if(!this['show'])return;function _0x692fa2(_0x38c2e9,_0x3527f6){return _0x355528(_0x38c2e9,_0x3527f6-0x531);}this[_0x692fa2(0x46d,0x3ea)]();},0xc8);}[_0x5caa0a(0x31,0xa6)](_0x2f3d0b){this['mouse_down']=!![];}[_0x5caa0a(0xb2,0x85)](_0x4c1ec8){if(!this['show']||!this['particleSystem'])return;function _0x2fb0a1(_0x125962,_0x262930){return _0x5caa0a(_0x125962-0x2,_0x262930);}function _0x23078b(_0x5691d1,_0x170ddf){return _0x5caa0a(_0x5691d1-0x400,_0x170ddf);}this['mouse_down']&&(this[_0x23078b(0x444,0x43c)]['show']=![],this[_0x2fb0a1(0x90,0x10d)]=!![]);}[_0x5caa0a(0x68,0x8)](_0x2df485){function _0x40b7e3(_0x379d98,_0x197dc4){return _0x556281(_0x379d98,_0x197dc4-0x50d);}if(!this['show']||!this[_0x40b7e3(0x1e2,0x25c)])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['primitives']['show']=!![],this['mouse_down']=![],this['mouse_move']=![];}[_0x556281(-0x1fc,-0x247)](){if(!this[_0x3673e0(0x376,0x3a1)]||!this[_0x3673e0(0x3e4,0x3d1)])return;function _0x3673e0(_0x5808ba,_0x2c2403){return _0x5caa0a(_0x5808ba-0x373,_0x2c2403);}this['updateViewerParameters'](),this[_0x3673e0(0x3c7,0x41a)]['applyViewerParameters'](this[_0x72ba89(-0xb3,-0xc6)]);function _0x72ba89(_0x1f2d3f,_0x1a687b){return _0x556281(_0x1a687b,_0x1f2d3f-0x1cc);}this[_0x3673e0(0x3b7,0x3fd)][_0x72ba89(-0xc8,-0x3a)]=!![];}[_0x5caa0a(0x12,0x51)](_0x4c743f){function _0x20e361(_0x4dc74d,_0x191baa){return _0x556281(_0x4dc74d,_0x191baa-0x368);}this['_data']=_0x4c743f;this[_0x2ee276(-0x211,-0x276)]&&this['particleSystem'][_0x2ee276(-0x2b7,-0x2a9)]();function _0x2ee276(_0x47a875,_0x2ee076){return _0x556281(_0x47a875,_0x2ee076-0x3b);}this['particleSystem']=new ParticleSystem(this['scene'][_0x2ee276(-0x251,-0x2ab)],_0x4c743f,this['getOptions'](),this[_0x20e361(0xf4,0xe9)]),this['addPrimitives']();}['_setOptionsHook'](_0x3fb32f,_0x57c9bb){if(_0x3fb32f)for(const _0x1d7ea5 in _0x3fb32f){this[_0x1d7ea5]=_0x3fb32f[_0x1d7ea5];}function _0x6f1a4d(_0x2daf18,_0x26736d){return _0x556281(_0x26736d,_0x2daf18-0x255);}this[_0x6f1a4d(-0x5c,-0xb2)]&&this['particleSystem']['setOptions'](this['getOptions']());}['getOptions'](){const _0x2b802c=Math[_0x243312(-0x1a3,-0x228)](Math['sqrt'](this[_0x243312(-0x207,-0x28a)]));this['particlesNumber']=_0x2b802c*_0x2b802c;const _0x3dc7e0={};_0x3dc7e0['particlesTextureSize']=_0x2b802c,_0x3dc7e0['maxParticles']=this['particlesNumber'];function _0x243312(_0x4a8dc7,_0x4186c1){return _0x556281(_0x4186c1,_0x4a8dc7-0xd3);}_0x3dc7e0['particleHeight']=this[_0x7c3be8(0x34b,0x38d)],_0x3dc7e0['fadeOpacity']=this[_0x7c3be8(0x262,0x290)],_0x3dc7e0['dropRate']=this['dropRate'];function _0x7c3be8(_0x27f524,_0x3d62c3){return _0x5caa0a(_0x3d62c3-0x2a7,_0x27f524);}return _0x3dc7e0['dropRateBump']=this[_0x243312(-0x16b,-0x19e)],_0x3dc7e0['speedFactor']=this['speedFactor'],_0x3dc7e0[_0x243312(-0x1b5,-0x177)]=this[_0x243312(-0x1b5,-0x12e)],_0x3dc7e0['colors']=this['colors'],_0x3dc7e0;}[_0x5caa0a(0xe4,0x10c)](){this['primitives']['add'](this[_0x5fb0e3(-0x9b,-0x51)]['particlesComputing']['primitives'][_0x29f053(0x2e,0x35)]),this[_0x29f053(-0x63,-0x30)][_0x29f053(0x1c,-0xb)](this[_0x29f053(-0xb0,-0x20)]['particlesComputing']['primitives']['updateSpeed']),this['primitives'][_0x5fb0e3(0x39,-0x3c)](this['particleSystem'][_0x29f053(0x5b,0x79)]['primitives']['updatePosition']);function _0x5fb0e3(_0x253a49,_0x2f5ffa){return _0x5caa0a(_0x2f5ffa- -0xa5,_0x253a49);}this['primitives']['add'](this[_0x5fb0e3(-0x7b,-0x51)]['particlesComputing']['primitives']['postProcessingPosition']),this['primitives']['add'](this[_0x29f053(-0x4d,-0x20)]['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives']['add'](this['particleSystem'][_0x5fb0e3(0x2f,0x1d)][_0x29f053(0x1a,-0x30)][_0x29f053(-0x35,-0x34)]);function _0x29f053(_0x1092a7,_0x544858){return _0x5caa0a(_0x544858- -0x74,_0x1092a7);}this[_0x29f053(0x11,-0x30)][_0x5fb0e3(0x16,-0x3c)](this['particleSystem'][_0x5fb0e3(0x37,0x1d)][_0x5fb0e3(-0x2f,-0x61)][_0x29f053(-0x102,-0x8f)]),this['primitives']['add'](this[_0x29f053(-0x85,-0x20)]['particlesRendering']['primitives'][_0x5fb0e3(0x0,-0xb)]);}['updateViewerParameters'](){let _0x200b25=this['camera'][_0x3cad5b(0x3d3,0x38c)](this['scene'][_0x3cad5b(0x349,0x2db)]['ellipsoid']);if(!_0x200b25){const _0x495bd2=this[_0x40faa1(0x38c,0x337)]['getExtent']();_0x200b25=Cesium$1['Rectangle']['fromDegrees'](_0x495bd2[_0x40faa1(0x426,0x398)],_0x495bd2[_0x40faa1(0x36c,0x39f)],_0x495bd2['xmax'],_0x495bd2[_0x3cad5b(0x3d4,0x42c)]);}const _0x3071a7=Util['viewRectangleToLonLatRange'](_0x200b25);function _0x3cad5b(_0x321c78,_0x22510c){return _0x5caa0a(_0x321c78-0x358,_0x22510c);}this['viewerParameters'][_0x3cad5b(0x3ba,0x435)]['x']=_0x3071a7['lon'][_0x40faa1(0x30f,0x345)],this['viewerParameters'][_0x40faa1(0x349,0x396)]['y']=_0x3071a7[_0x3cad5b(0x427,0x450)]['max'],this['viewerParameters'][_0x3cad5b(0x3e0,0x352)]['x']=_0x3071a7['lat']['min'],this[_0x40faa1(0x333,0x3ba)]['latRange']['y']=_0x3071a7[_0x40faa1(0x393,0x350)]['max'];const _0x5a5c5c=this['camera'][_0x40faa1(0x381,0x373)](this[_0x3cad5b(0x40d,0x45a)],this['scene'][_0x3cad5b(0x3a8,0x319)],this[_0x40faa1(0x39d,0x383)]['drawingBufferHeight']);function _0x40faa1(_0x3cdbb4,_0x428b44){return _0x556281(_0x3cdbb4,_0x428b44-0x639);}_0x5a5c5c>0x0&&(this['viewerParameters'][_0x40faa1(0x3f5,0x420)]=_0x5a5c5c);}}mars3d__namespace[_0x556281(-0x356,-0x324)]['register'](_0x5caa0a(0x78,0xab),WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this['lat']=null,this['tlng']=null,this[_0x54aa38(0x3df,0x3f9)]=null;function _0x206898(_0x4ce26f,_0x2221c4){return _0x5caa0a(_0x4ce26f- -0x1ba,_0x2221c4);}this['age']=null;function _0x54aa38(_0x308c41,_0xec6761){return _0x556281(_0x308c41,_0xec6761-0x689);}this[_0x54aa38(0x365,0x37a)]=null;}[_0x5caa0a(0x21,-0x3d)](){for(const _0x3fd88c in this){delete this[_0x3fd88c];}}}class CanvasWindField{constructor(_0x3c507d){this['setOptions'](_0x3c507d);}get['speedRate'](){return this['_speedRate'];}set[_0x5caa0a(0xa5,0x99)](_0x1bdfd0){function _0x1d568e(_0x3f26ef,_0x77cc6c){return _0x556281(_0x3f26ef,_0x77cc6c-0x4de);}this['_speedRate']=(0x64-(_0x1bdfd0>0x63?0x63:_0x1bdfd0))*0x64;function _0x5e0aea(_0x189412,_0x3892aa){return _0x5caa0a(_0x3892aa-0xf1,_0x189412);}this[_0x5e0aea(0x92,0xdb)]=[(this['xmax']-this['xmin'])/this[_0x5e0aea(0x258,0x1c5)],(this['ymax']-this[_0x5e0aea(0x1a9,0x15c)])/this[_0x5e0aea(0x1ea,0x1c5)]];}get['maxAge'](){return this['_maxAge'];}set['maxAge'](_0x1bc992){this['_maxAge']=_0x1bc992;}['setOptions'](_0x5b5958){function _0x3a8357(_0xbb148b,_0x2d4209){return _0x5caa0a(_0x2d4209-0x3a6,_0xbb148b);}this['options']=_0x5b5958,this['maxAge']=_0x5b5958['maxAge']||0x78,this[_0x3ab2bf(0xa1,0xb8)]=_0x5b5958[_0x3a8357(0x3d4,0x44b)]||0x32,this[_0x3a8357(0x372,0x3ee)]=[];const _0x5f2a1c=_0x5b5958[_0x3ab2bf(-0x24,0x3e)]||0x1000;function _0x3ab2bf(_0x4c0000,_0x554634){return _0x556281(_0x4c0000,_0x554634-0x318);}for(let _0x58f9d8=0x0;_0x58f9d8<_0x5f2a1c;_0x58f9d8++){const _0x28d9a9=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x28d9a9);}}['setDate'](_0x25940c){this['rows']=_0x25940c[_0x7b41d4(-0x286,-0x1fd)],this['cols']=_0x25940c[_0x7b41d4(-0x313,-0x2a0)],this['xmin']=_0x25940c['xmin'],this['xmax']=_0x25940c[_0x7b41d4(-0x374,-0x301)],this['ymin']=_0x25940c[_0x7b41d4(-0x2ae,-0x26d)],this['ymax']=_0x25940c[_0x7b41d4(-0x2e0,-0x25c)],this[_0x7b41d4(-0x25c,-0x22a)]=[];const _0x1ff485=_0x25940c[_0x7b41d4(-0x1b9,-0x1f6)],_0x1f8bfd=_0x25940c[_0x3c6906(-0x21f,-0x26e)];let _0x316b70=![];_0x1ff485['length']===this['rows']&&_0x1ff485[0x0]['length']===this['cols']&&(_0x316b70=!![]);let _0x53d8d2=0x0,_0x24e1ff=null,_0x420f40=null;function _0x3c6906(_0x78fbc5,_0x3ac50d){return _0x5caa0a(_0x3ac50d- -0x256,_0x78fbc5);}for(let _0x5d89d7=0x0;_0x5d89d7<this['rows'];_0x5d89d7++){_0x24e1ff=[];for(let _0x334c2b=0x0;_0x334c2b<this['cols'];_0x334c2b++,_0x53d8d2++){_0x316b70?_0x420f40=this[_0x3c6906(-0x171,-0x1dd)](_0x1ff485[_0x5d89d7][_0x334c2b],_0x1f8bfd[_0x5d89d7][_0x334c2b]):_0x420f40=this['_calcUV'](_0x1ff485[_0x53d8d2],_0x1f8bfd[_0x53d8d2]),_0x24e1ff['push'](_0x420f40);}this['grid']['push'](_0x24e1ff);}function _0x7b41d4(_0x31a78f,_0x48a341){return _0x5caa0a(_0x48a341- -0x2d8,_0x31a78f);}this['options']['reverseY']&&this['grid']['reverse']();}[_0x5caa0a(0xc5,0x138)](){delete this['rows'],delete this[_0x438275(-0x292,-0x29c)],delete this[_0x105114(-0xe,0x7d)],delete this['xmax'];function _0x105114(_0x2b34bd,_0x4d009d){return _0x5caa0a(_0x2b34bd- -0x72,_0x4d009d);}function _0x438275(_0x39a149,_0x4c510b){return _0x556281(_0x4c510b,_0x39a149-0x3b);}delete this['ymin'],delete this[_0x438275(-0x24e,-0x290)],delete this[_0x438275(-0x21c,-0x1ff)],delete this['particles'];}['toGridXY'](_0x75b29a,_0x4783a6){function _0x3c3ea3(_0x2692f3,_0x1f70b5){return _0x5caa0a(_0x2692f3-0x173,_0x1f70b5);}function _0x2ce6c7(_0x482714,_0xed6cf8){return _0x556281(_0xed6cf8,_0x482714-0x53a);}const _0x23ebd1=(_0x75b29a-this['xmin'])/(this['xmax']-this['xmin'])*(this[_0x2ce6c7(0x26d,0x2be)]-0x1),_0x20a502=(this[_0x2ce6c7(0x2b1,0x327)]-_0x4783a6)/(this['ymax']-this['ymin'])*(this[_0x3c3ea3(0x24e,0x222)]-0x1);return[_0x23ebd1,_0x20a502];}['getUVByXY'](_0x235cde,_0x189515){if(_0x235cde<0x0||_0x235cde>=this['cols']||_0x189515>=this['rows'])return[0x0,0x0,0x0];const _0xaf41b4=Math['floor'](_0x235cde),_0x4872db=Math[_0xaab0a1(0x32a,0x2c8)](_0x189515);if(_0xaf41b4===_0x235cde&&_0x4872db===_0x189515)return this[_0xaab0a1(0x2f9,0x323)][_0x189515][_0x235cde];const _0x146223=_0xaf41b4+0x1;function _0x5f29a9(_0x4aa07f,_0x57ff20){return _0x5caa0a(_0x57ff20-0xec,_0x4aa07f);}const _0x455141=_0x4872db+0x1,_0x40566f=this['getUVByXY'](_0xaf41b4,_0x4872db),_0x521be3=this['getUVByXY'](_0x146223,_0x4872db);function _0xaab0a1(_0x4e4f21,_0x1257ac){return _0x556281(_0x4e4f21,_0x1257ac-0x57a);}const _0x4a90d7=this['getUVByXY'](_0xaf41b4,_0x455141),_0x2cf2f6=this[_0xaab0a1(0x264,0x2cd)](_0x146223,_0x455141);let _0x4816c4=null;try{_0x4816c4=this['_bilinearInterpolation'](_0x235cde-_0xaf41b4,_0x189515-_0x4872db,_0x40566f,_0x521be3,_0x4a90d7,_0x2cf2f6);}catch(_0x245df6){console['log'](_0x235cde,_0x189515);}return _0x4816c4;}['_bilinearInterpolation'](_0x323b69,_0x54a9d7,_0xe7f076,_0x55136e,_0x12a302,_0x4632bd){const _0x463db3=0x1-_0x323b69,_0x1cff2a=0x1-_0x54a9d7,_0x5bfa38=_0x463db3*_0x1cff2a,_0xe15e7f=_0x323b69*_0x1cff2a,_0x1cc3cf=_0x463db3*_0x54a9d7,_0x8949c0=_0x323b69*_0x54a9d7,_0x32a7ed=_0xe7f076[0x0]*_0x5bfa38+_0x55136e[0x0]*_0xe15e7f+_0x12a302[0x0]*_0x1cc3cf+_0x4632bd[0x0]*_0x8949c0,_0x4451c2=_0xe7f076[0x1]*_0x5bfa38+_0x55136e[0x1]*_0xe15e7f+_0x12a302[0x1]*_0x1cc3cf+_0x4632bd[0x1]*_0x8949c0;return this['_calcUV'](_0x32a7ed,_0x4451c2);}['_calcUV'](_0x3b1ce8,_0x1fcf76){return[+_0x3b1ce8,+_0x1fcf76,Math['sqrt'](_0x3b1ce8*_0x3b1ce8+_0x1fcf76*_0x1fcf76)];}[_0x556281(-0x2a9,-0x2ac)](_0xa37a80,_0x1b5a48){if(!this['isInExtent'](_0xa37a80,_0x1b5a48))return null;const _0x1ea82f=this[_0x59a3b2(0x35d,0x3e0)](_0xa37a80,_0x1b5a48);function _0x59a3b2(_0x8da04d,_0x16f8b9){return _0x556281(_0x16f8b9,_0x8da04d-0x672);}const _0x332a00=this['getUVByXY'](_0x1ea82f[0x0],_0x1ea82f[0x1]);return _0x332a00;}['isInExtent'](_0x3cac58,_0xf879ac){function _0x341cba(_0x2277fb,_0x353f57){return _0x556281(_0x2277fb,_0x353f57-0x263);}return _0x3cac58>=this['xmin']&&_0x3cac58<=this['xmax']&&_0xf879ac>=this['ymin']&&_0xf879ac<=this[_0x341cba(0x6a,-0x26)]?!![]:![];}[_0x556281(-0x29b,-0x311)](){const _0x158ee9=fRandomByfloat(this[_0x30a639(-0x185,-0x1e7)],this[_0x3bdf62(0x207,0x1b1)]),_0x2de29c=fRandomByfloat(this[_0x30a639(-0x17e,-0x1cd)],this[_0x30a639(-0x16d,-0x110)]),_0x1ed4cc={};function _0x3bdf62(_0x1362cc,_0x5506f0){return _0x556281(_0x1362cc,_0x5506f0-0x4df);}_0x1ed4cc['lat']=_0x2de29c,_0x1ed4cc[_0x30a639(-0x158,-0xe3)]=_0x158ee9;function _0x30a639(_0x59501a,_0x462afe){return _0x5caa0a(_0x59501a- -0x1e9,_0x462afe);}return _0x1ed4cc;}['getParticles'](){function _0x53983f(_0x61a702,_0x3fa213){return _0x5caa0a(_0x61a702-0x32e,_0x3fa213);}function _0x1cba4b(_0x201d8b,_0x9ac59){return _0x556281(_0x9ac59,_0x201d8b-0x11b);}let _0x15f4f9,_0x488709,_0x577dca;for(let _0x5f2d79=0x0,_0x2d9529=this[_0x53983f(0x376,0x3d2)]['length'];_0x5f2d79<_0x2d9529;_0x5f2d79++){let _0x237adb=this[_0x1cba4b(-0x1a2,-0x1f9)][_0x5f2d79];_0x237adb['age']<=0x0&&(_0x237adb=this[_0x1cba4b(-0x185,-0x162)](_0x237adb));if(_0x237adb['age']>0x0){const _0x3d315a=_0x237adb[_0x1cba4b(-0x1d1,-0x1fa)],_0x281275=_0x237adb['tlat'];_0x577dca=this['getUVByPoint'](_0x3d315a,_0x281275),_0x577dca?(_0x15f4f9=_0x3d315a+this[_0x1cba4b(-0x200,-0x1e2)][0x0]*_0x577dca[0x0],_0x488709=_0x281275+this[_0x53983f(0x318,0x28b)][0x1]*_0x577dca[0x1],_0x237adb['lng']=_0x3d315a,_0x237adb[_0x53983f(0x34a,0x2ce)]=_0x281275,_0x237adb['tlng']=_0x15f4f9,_0x237adb[_0x53983f(0x3a3,0x342)]=_0x488709,_0x237adb['speed']=_0x577dca[0x2],_0x237adb['age']--):_0x237adb[_0x1cba4b(-0x155,-0xc7)]=0x0;}}return this['particles'];}[_0x5caa0a(0x65,0x8)](_0x3b8a48){function _0x12f247(_0x3338f2,_0x38e749){return _0x556281(_0x38e749,_0x3338f2-0x367);}let _0xf2ea3c,_0x3a8cbd;for(let _0x5b38e7=0x0;_0x5b38e7<0x1e;_0x5b38e7++){_0xf2ea3c=this['getRandomLatLng'](),_0x3a8cbd=this[_0x12f247(0xbb,0xa8)](_0xf2ea3c['lng'],_0xf2ea3c[_0x2d9e57(0x3b,0x58)]);if(_0x3a8cbd&&_0x3a8cbd[0x2]>0x0)break;}if(!_0x3a8cbd)return _0x3b8a48;const _0x45cc72=_0xf2ea3c['lng']+this['_calc_speedRate'][0x0]*_0x3a8cbd[0x0],_0x4c9ca0=_0xf2ea3c['lat']+this['_calc_speedRate'][0x1]*_0x3a8cbd[0x1];_0x3b8a48[_0x2d9e57(0xb0,0x7a)]=_0xf2ea3c['lng'],_0x3b8a48['lat']=_0xf2ea3c['lat'],_0x3b8a48[_0x12f247(0x7b,0xed)]=_0x45cc72,_0x3b8a48[_0x2d9e57(0x94,0x124)]=_0x4c9ca0,_0x3b8a48['age']=Math[_0x12f247(0x12c,0xf4)](Math[_0x12f247(0x125,0xb5)]()*this[_0x2d9e57(0x1d,0x65)]),_0x3b8a48['speed']=_0x3a8cbd[0x2];function _0x2d9e57(_0xd67c81,_0x1f6de4){return _0x556281(_0x1f6de4,_0xd67c81-0x324);}return _0x3b8a48;}['destroy'](){for(const _0x5afa5e in this){delete this[_0x5afa5e];}}}function fRandomByfloat(_0x3cadee,_0x5cc2e1){function _0x1c136e(_0x4f0d3e,_0x10bd62){return _0x5caa0a(_0x4f0d3e- -0x82,_0x10bd62);}return _0x3cadee+Math[_0x1c136e(0x41,0x55)]()*(_0x5cc2e1-_0x3cadee);}function _0x556b(){const _0x158da4=['Cartesian3','frameTime','vertexArray','mouseUp','removeAll','EventType','cols','PI_OVER_THREE','Sampler','PointTrans','pointerEvents','pointer-events','PixelDatatype','getPixelSize','segments','_animateFrame','Compute','PixelFormat','primitives','Pass','createParticlesTextures','ClearCommand','particles','9OYhMeP','__esModule','bindEvent','pixelFormat','width','_mountedHook','scene','drawingBufferWidth','postProcessingPosition','currentParticlesSpeed','floor','particleSystem','requestAnimationFrame','756800uzWqVK','uniformMap','getUVByXY','getUVByPoint','vertexShaderSource','attributeLocations','style','canvasWidth','createRawRenderState','colors','createSegmentsGeometry','depthTest','lonRange','OPAQUE','xmin','_randomParticle','init','TWO_PI','_onMouseUpEvent','add','segmentsColor','ymin','update','particlesTextureSize','createRenderingFramebuffers','LUMINANCE','lev','show','particlesWind','SCENE3D','lineTo','tlat','levmax','setOptions','wind','_calcUV','TextureMagnificationFilter','computeViewRectangle','ymax','lineWidth','blending','TextureMinificationFilter','_createCanvas','createWindTextures','bind','colorTable','Cartesian2','applyViewerParameters','viewerParameters','mouseDown','latRange','get','currentTrailsColor','mouse_down','FLOAT','windData','mouse_move','ceil','PrimitiveType','lng','autoClear','enabled','28GejLYy','age','_addedHook','createComputingPrimitives','off','north','screen','getColor','ALWAYS','removeEventListener','commandToExecute','preExecute','toDegrees','stroke','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','layer','clearCommand','speedRate','resize','fromGeometry','_tomap','getWind','viewRectangleToLonLatRange','preRender','postProcessingSpeed','left','grid','2524UAWbTt','WindUtil','_canrefresh','_onMouseMoveEvent','refreshTimer','nextTrailsDepth','globeBoundingSphere','shaderProgram','uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a','type','_updateIng2','commandType','Draw','currentTrails','windTextures','redraw','in\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0a}\x0a','fromCssColorString','//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x,\x20360.0);\x0a\x20\x20\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20-90.0,\x2090.0);\x0a\x0a\x20\x20\x20\x20vec3\x20index3D\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20index3D.z\x20=\x20(lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z;\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205],\x20width\x20=\x203,\x20height\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x203\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x202\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWind(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20\x20\x20float\x20result\x20=\x20texture(windTexture,\x20normalizedIndex2D).r;\x0a\x20\x20\x20\x20return\x20result;\x0a}\x0a\x0aconst\x20mat4\x20kernelMatrix\x20=\x20mat4(\x0a\x20\x20\x20\x200.0,\x20-1.0,\x202.0,\x20-1.0,\x20//\x20first\x20column\x0a\x20\x20\x20\x202.0,\x200.0,\x20-5.0,\x203.0,\x20//\x20second\x20column\x0a\x20\x20\x20\x200.0,\x201.0,\x204.0,\x20-3.0,\x20//\x20third\x20column\x0a\x20\x20\x20\x200.0,\x200.0,\x20-1.0,\x201.0\x20//\x20fourth\x20column\x0a);\x0afloat\x20oneDimensionInterpolation(float\x20t,\x20float\x20p0,\x20float\x20p1,\x20float\x20p2,\x20float\x20p3)\x20{\x0a\x20\x20\x20\x20vec4\x20tVec4\x20=\x20vec4(1.0,\x20t,\x20t\x20*\x20t,\x20t\x20*\x20t\x20*\x20t);\x0a\x20\x20\x20\x20tVec4\x20=\x20tVec4\x20/\x202.0;\x0a\x20\x20\x20\x20vec4\x20pVec4\x20=\x20vec4(p0,\x20p1,\x20p2,\x20p3);\x0a\x20\x20\x20\x20return\x20dot((tVec4\x20*\x20kernelMatrix),\x20pVec4);\x0a}\x0a\x0afloat\x20calculateB(sampler2D\x20windTexture,\x20float\x20t,\x20float\x20lon,\x20float\x20lat,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20float\x20lon0\x20=\x20floor(lon)\x20-\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon1\x20=\x20floor(lon);\x0a\x20\x20\x20\x20float\x20lon2\x20=\x20floor(lon)\x20+\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon3\x20=\x20floor(lon)\x20+\x202.0\x20*\x20interval.x;\x0a\x0a\x20\x20\x20\x20float\x20p0\x20=\x20getWind(windTexture,\x20vec3(lon0,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p1\x20=\x20getWind(windTexture,\x20vec3(lon1,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p2\x20=\x20getWind(windTexture,\x20vec3(lon2,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p3\x20=\x20getWind(windTexture,\x20vec3(lon3,\x20lat,\x20lev));\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(t,\x20p0,\x20p1,\x20p2,\x20p3);\x0a}\x0a\x0afloat\x20interpolateOneTexture(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20\x20\x20float\x20lat0\x20=\x20floor(lat)\x20-\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat1\x20=\x20floor(lat);\x0a\x20\x20\x20\x20float\x20lat2\x20=\x20floor(lat)\x20+\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat3\x20=\x20floor(lat)\x20+\x202.0\x20*\x20interval.y;\x0a\x0a\x20\x20\x20\x20vec2\x20coefficient\x20=\x20lonLatLev.xy\x20-\x20floor(lonLatLev.xy);\x0a\x20\x20\x20\x20float\x20b0\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat0,\x20lev);\x0a\x20\x20\x20\x20float\x20b1\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat1,\x20lev);\x0a\x20\x20\x20\x20float\x20b2\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat2,\x20lev);\x0a\x20\x20\x20\x20float\x20b3\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat3,\x20lev);\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(coefficient.y,\x20b0,\x20b1,\x20b2,\x20b3);\x0a}\x0a\x0avec3\x20bicubic(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm\x0a\x20\x20\x20\x20float\x20u\x20=\x20interpolateOneTexture(U,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20v\x20=\x20interpolateOneTexture(V,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}\x0a','particlesRendering','random','dropRate','clear','clientWidth','dropRateBump','RGBA','_pointerEvents','round','2XzeriV','getU','fromCache','geometry','lon','currentTrailsDepth','height','keys','depthMask','_speedRate','toWindowCoordinates','_onMap_preRenderEvent','GeometryAttribute','position','windField','register','rows','visibility','mouseMove','_showHook','createCommand','rgb(206,255,255)','isPointVisible','udata','forEach','addPrimitives','NEAREST','fixedHeight','max','speedFactor','outputTexture','VertexArray','createFramebuffer','pixelSize','particlesComputing','push','_onMapWhellEvent','rawRenderState','ColorRamp','canvas','536810OdrDNm','zIndex','Cesium','ShaderSource','canvasResize','abs','1623136xwnmLR','RenderState','defines','postMessage','xmax','framebuffer','beginPath','particleHeight','3295IgGAKZ','739236rHRVik','DomUtil','frameRate','4188mNzgJz','createTexture','LayerUtil','now','currentParticlesPosition','CanvasWindField','trails','randomBetween','onmessage','vdata','fadeOpacity','_calc_speedRate','destroyParticlesTextures','default','unbindEvent','getDirection','moveTo','toGridXY','globe','east','uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec3\x20percent\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20\x20\x20float\x20normalization\x20=\x20length(percent);\x0a\x0a\x20\x20\x20\x20return\x20normalization;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20//\x20vec3\x20currentSpeed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20out_FragColor\x20=\x20nextSpeed;\x0a}\x0a','getRandomLatLng','clampToLatitudeRange','speed','nextParticlesSpeed','randomizeParticles','dimensions','_updateIng','77kcCcdx','Color','refreshParticles','maxAge','DrawCommand','BufferUsage','worker','color','_map','wheel','fragmentShaderSource','29189784zwVpUK','_colorRamp','nextTrailsColor','Math','strokeStyle','canvasContext','DepthFunction','sin','ShaderProgram','reverseY','getV','min','setData','textures','in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a','nextTrails','options','particlesTextures','commandList','tlng','sources','data','lat','18vknZCm','destroyObject','context','remove','destroy','drawingBufferHeight','execute','length','framebuffers','segmentsDepth','camera','defined','west','updateViewerParameters','particlesNumber','maxParticles','cancelAnimationFrame','DISABLE_GL_POSITION_LOG_DEPTH','nextParticlesPosition','array','_onMouseDownEvent'];_0x556b=function(){return _0x158da4;};return _0x556b();}const Cesium=mars3d__namespace[_0x5caa0a(0xf5,0x93)],BaseLayer=mars3d__namespace['layer']['BaseLayer'];function _0x556281(_0x1a8c27,_0x4e36f2){return _0x3462(_0x4e36f2- -0x3b7,_0x1a8c27);}class CanvasWindLayer extends BaseLayer{constructor(_0x23cd13={}){super(_0x23cd13);function _0x58f23f(_0x239afc,_0x3562ed){return _0x5caa0a(_0x3562ed-0x175,_0x239afc);}this['_setOptionsHook'](_0x23cd13);function _0x40c0c9(_0x1662dd,_0x5dbb57){return _0x5caa0a(_0x5dbb57-0x192,_0x1662dd);}this[_0x40c0c9(0x26b,0x284)]=null,_0x23cd13['colors']&&_0x23cd13['steps']&&(this['_colorRamp']=new mars3d__namespace[(_0x58f23f(0x2c8,0x266))](_0x23cd13));}['_setOptionsHook'](_0x4fce6d,_0x29278e){this[_0x28c09a(0x248,0x2c3)]=0x3e8/(_0x4fce6d[_0x57a035(-0x292,-0x29c)]||0xa);function _0x28c09a(_0x5903f8,_0x32a36d){return _0x5caa0a(_0x5903f8-0x215,_0x32a36d);}this[_0x28c09a(0x2de,0x2ba)]=this[_0x57a035(-0x25a,-0x1d7)]['pointerEvents']??![];function _0x57a035(_0x4c173d,_0x5cefe5){return _0x556281(_0x5cefe5,_0x4c173d-0x95);}this['color']=_0x4fce6d['color']||'#ffffff',this[_0x28c09a(0x292,0x2c9)]=_0x4fce6d[_0x28c09a(0x292,0x25c)]||0x1,this[_0x57a035(-0x18a,-0x1c7)]=_0x4fce6d[_0x28c09a(0x2fb,0x383)]??0x0,this[_0x57a035(-0x261,-0x2e9)]=_0x4fce6d[_0x28c09a(0x224,0x28e)]??![],this['windField']&&this[_0x57a035(-0x197,-0x220)]['setOptions'](_0x4fce6d);}get['layer'](){return this['canvas'];}get['canvasWidth'](){function _0x3499d4(_0x307530,_0x422cad){return _0x556281(_0x422cad,_0x307530-0x40c);}function _0x2c0af6(_0xc0ed45,_0x36b2b9){return _0x5caa0a(_0x36b2b9-0x37c,_0xc0ed45);}return this['_map'][_0x2c0af6(0x35f,0x3cb)][_0x3499d4(0x1f9,0x1b1)]['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){function _0x3d821b(_0xc9dbd8,_0x12eb8c){return _0x556281(_0x12eb8c,_0xc9dbd8-0x2b1);}return this[_0x3d821b(0x75,0xa1)];}set[_0x5caa0a(0x3c,0x44)](_0x1cae4b){this[_0x71b403(0x4f0,0x56c)]=_0x1cae4b;function _0x3e4f76(_0x56216b,_0x53f31b){return _0x556281(_0x53f31b,_0x56216b-0x5f4);}function _0x71b403(_0x26cc03,_0x46d97c){return _0x556281(_0x46d97c,_0x26cc03-0x72c);}if(!this[_0x3e4f76(0x3e1,0x428)])return;_0x1cae4b?this[_0x3e4f76(0x3e1,0x3b6)]['style']['pointer-events']='all':this[_0x3e4f76(0x3e1,0x472)][_0x71b403(0x483,0x45b)][_0x71b403(0x464,0x3ec)]='none';}get['particlesNumber'](){return this['options']['particlesNumber'];}set[_0x5caa0a(0x2b,0x37)](_0x3147e6){function _0x455b6b(_0x5c20d2,_0x31116b){return _0x5caa0a(_0x31116b-0x3b0,_0x5c20d2);}this[_0x248f77(0x18d,0x1da)][_0x248f77(0x1a2,0x116)]=_0x3147e6;function _0x248f77(_0xa4e117,_0x257529){return _0x5caa0a(_0xa4e117-0x177,_0x257529);}clearTimeout(this[_0x455b6b(0x4e4,0x461)]),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){function _0x285a17(_0x510d6d,_0x5ae7f5){return _0x5caa0a(_0x5ae7f5-0x442,_0x510d6d);}return this['options'][_0x285a17(0x493,0x4e7)];}set[_0x556281(-0x1f9,-0x260)](_0x5918b2){function _0x37d17c(_0x84a19,_0x2f5853){return _0x556281(_0x84a19,_0x2f5853-0x6f7);}this['options'][_0x37d17c(0x512,0x497)]=_0x5918b2,this['windField']&&(this['windField']['speedRate']=_0x5918b2);}get['maxAge'](){function _0x591ea5(_0x26310d,_0x2079c3){return _0x556281(_0x2079c3,_0x26310d-0x74a);}return this['options'][_0x591ea5(0x443,0x474)];}set[_0x5caa0a(-0x2,-0x13)](_0x582e05){this['options']['maxAge']=_0x582e05,this['windField']&&(this['windField']['maxAge']=_0x582e05);}get['data'](){return this['windData'];}set['data'](_0x2090f4){function _0x2fea62(_0x181d1a,_0x39d69b){return _0x556281(_0x181d1a,_0x39d69b-0x2ed);}this[_0x2fea62(-0x83,-0x6)](_0x2090f4);}[_0x556281(-0x212,-0x227)](_0xfedffa){function _0x2adae9(_0x244821,_0xbfd10f){return _0x5caa0a(_0x244821- -0x2bb,_0xbfd10f);}function _0x8ce7e3(_0x24040c,_0x48f030){return _0x5caa0a(_0x24040c- -0x242,_0x48f030);}_0xfedffa?this[_0x8ce7e3(-0x1ac,-0x21f)]():(this[_0x8ce7e3(-0x1b5,-0x1f8)]&&(this[_0x2adae9(-0x2a5,-0x2d2)]['data']=this['windData']),this['_removedHook']());}[_0x556281(-0x2c1,-0x2b7)](){function _0x219440(_0x3b7ee1,_0x3f06b9){return _0x5caa0a(_0x3f06b9- -0x1f5,_0x3b7ee1);}function _0x64a935(_0x397f97,_0x1081fa){return _0x556281(_0x397f97,_0x1081fa-0x17f);}this[_0x64a935(-0x16a,-0x170)][_0x64a935(-0x114,-0x185)]?this['initWorker']():this[_0x219440(-0x19c,-0x11c)]=new CanvasWindField(this[_0x219440(-0x1fd,-0x1df)]);}['_addedHook'](){function _0x375a80(_0x3ab313,_0x4a6cc7){return _0x556281(_0x4a6cc7,_0x3ab313-0x799);}this['canvas']=this[_0x375a80(0x514,0x4be)]();function _0x27ed4d(_0x4e078c,_0x20f5e3){return _0x556281(_0x20f5e3,_0x4e078c-0x1fa);}const _0x27bcfa={};_0x27bcfa['willReadFrequently']=!![],this[_0x27ed4d(-0x100,-0x180)]=this['canvas']['getContext']('2d',_0x27bcfa),this[_0x375a80(0x4df,0x517)](),this['options']['data']&&this['setData'](this[_0x375a80(0x4aa,0x52a)]['data']);}['_removedHook'](){this[_0x6adc59(0x4ee,0x51d)]();function _0x6adc59(_0x2b4f56,_0xc1922d){return _0x556281(_0xc1922d,_0x2b4f56-0x72e);}this[_0x16b6c6(-0x297,-0x290)]();function _0x16b6c6(_0x299f37,_0x25482b){return _0x5caa0a(_0x299f37- -0x284,_0x25482b);}this['canvas']&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}[_0x556281(-0x247,-0x285)](){const _0x4bbb87=mars3d__namespace[_0x533fbd(0x234,0x245)]['create']('canvas','mars3d-canvasWind',this[_0x8e6e12(-0xde,-0x9d)]['container']);_0x4bbb87[_0x8e6e12(-0x27,-0x44)]['position']='absolute',_0x4bbb87['style']['top']='0px';function _0x533fbd(_0x46e0f6,_0x3734e1){return _0x5caa0a(_0x46e0f6-0x257,_0x3734e1);}_0x4bbb87['style'][_0x533fbd(0x304,0x304)]='0px',_0x4bbb87[_0x533fbd(0x2b3,0x2c8)][_0x8e6e12(0x3f,-0x53)]=this[_0x8e6e12(-0x98,-0x9d)]['scene'][_0x8e6e12(0x7,0x52)]['clientWidth']+'px',_0x4bbb87[_0x8e6e12(-0xd,-0x44)]['height']=this[_0x8e6e12(-0x28,-0x9d)]['scene'][_0x8e6e12(-0x2b,0x52)]['clientHeight']+'px',_0x4bbb87['style']['pointerEvents']=this[_0x8e6e12(0x68,0x29)]?'auto':'none';function _0x8e6e12(_0x5b0636,_0xee7a47){return _0x556281(_0x5b0636,_0xee7a47-0x265);}return _0x4bbb87['style']['zIndex']=this['options'][_0x8e6e12(0xaa,0x54)]??0x9,_0x4bbb87['width']=this[_0x533fbd(0x25a,0x2c3)]['scene'][_0x533fbd(0x349,0x389)][_0x8e6e12(0x20,0x26)],_0x4bbb87['height']=this['_map'][_0x8e6e12(-0x63,-0x51)][_0x533fbd(0x349,0x35d)]['clientHeight'],_0x4bbb87;}[_0x5caa0a(0xa6,0x93)](){function _0x50e997(_0x48d3ac,_0x36faf1){return _0x556281(_0x48d3ac,_0x36faf1-0x200);}function _0x27e990(_0x1cb91d,_0x5ec433){return _0x556281(_0x5ec433,_0x1cb91d-0x583);}this['canvas']&&(this[_0x27e990(0x370,0x3b8)][_0x50e997(-0x120,-0xa9)]['width']=this[_0x27e990(0x281,0x292)]['scene']['canvas']['clientWidth']+'px',this['canvas']['style']['height']=this['_map']['scene']['canvas']['clientHeight']+'px',this['canvas']['width']=this['_map']['scene']['canvas'][_0x27e990(0x344,0x35d)],this[_0x27e990(0x370,0x309)][_0x50e997(-0x46,-0x34)]=this[_0x27e990(0x281,0x266)][_0x27e990(0x2cd,0x34b)]['canvas']['clientHeight']);}['bindEvent'](){const _0x37d84c=this;function _0x291726(_0x4870f3,_0x59139e){return _0x556281(_0x59139e,_0x4870f3-0x39d);}let _0xadc7eb=Date[_0x291726(0x7a,0x9d)]();(function _0x41ab0b(){function _0x18b8e4(_0x5321bd,_0x83a238){return _0x291726(_0x5321bd- -0x278,_0x83a238);}if(_0x37d84c['isDestroy'])return;_0x37d84c['_animateFrame']=window[_0x4284d6(-0x12f,-0x18a)](_0x41ab0b);function _0x4284d6(_0xba0dca,_0x39280c){return _0x291726(_0x39280c- -0x277,_0xba0dca);}if(_0x37d84c['show']&&_0x37d84c[_0x18b8e4(-0x107,-0x8a)]){const _0x3656d3=Date['now'](),_0x1f1178=_0x3656d3-_0xadc7eb;_0x1f1178>_0x37d84c[_0x18b8e4(-0x1ad,-0x21a)]&&(_0xadc7eb=_0x3656d3-_0x1f1178%_0x37d84c[_0x18b8e4(-0x1ad,-0x11b)],_0x37d84c['update']());}}(),window['addEventListener']('resize',this['resize'][_0x291726(0x11a,0xaf)](this),![]));function _0x4b0093(_0x5bf147,_0x2c6a50){return _0x5caa0a(_0x5bf147-0x454,_0x2c6a50);}this['mouse_down']=![],this[_0x4b0093(0x4e2,0x516)]=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace[_0x4b0093(0x48b,0x43d)][_0x4b0093(0x4db,0x503)],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x291726(0xcd,0x5d)],this['_onMouseUpEvent'],this));}['unbindEvent'](){window[_0x4f64ac(-0xe2,-0xc8)](this['_animateFrame']),delete this[_0x4f64ac(-0x3a,-0xb4)];function _0x4f64ac(_0x3cdc83,_0x570bbb){return _0x556281(_0x3cdc83,_0x570bbb-0x210);}function _0x987d99(_0x5708be,_0x2b968d){return _0x5caa0a(_0x5708be-0x23b,_0x2b968d);}window[_0x4f64ac(-0xbc,-0x58)](_0x987d99(0x2e1,0x26b),this['resize']),this[_0x987d99(0x251,0x2a5)]['mouseHidden']&&(this['_map']['off'](mars3d__namespace['EventType'][_0x987d99(0x23f,0x2a8)],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace[_0x4f64ac(-0x135,-0xbe)][_0x4f64ac(-0x87,-0x6e)],this['_onMouseDownEvent'],this),this[_0x4f64ac(-0x62,-0xf2)]['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this[_0x4f64ac(-0xad,-0xf2)]['off'](mars3d__namespace[_0x987d99(0x272,0x268)]['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x1aec3d){function _0x279a9e(_0x1a408c,_0x4fd6eb){return _0x556281(_0x4fd6eb,_0x1a408c-0x6fd);}clearTimeout(this['refreshTimer']);if(!this[_0x279a9e(0x469,0x417)]||!this['canvas'])return;this['canvas']['style']['visibility']='hidden',this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;function _0x183e10(_0x12195c,_0x2c5ac3){return _0x279a9e(_0x2c5ac3- -0x64b,_0x12195c);}this['redraw'](),this['canvas'][_0x183e10(-0x1f0,-0x1f7)]['visibility']='visible';},0xc8);}['_onMouseDownEvent'](_0x52a186){this['mouse_down']=!![];function _0x3ef808(_0x4addc9,_0x4f1b06){return _0x556281(_0x4addc9,_0x4f1b06-0x491);}this['_map'][_0x22d105(-0x23,-0xac)](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);function _0x22d105(_0x5b301c,_0x505989){return _0x556281(_0x5b301c,_0x505989-0x1c1);}this[_0x3ef808(0x183,0x18f)]['on'](mars3d__namespace[_0x3ef808(0x22e,0x1c3)][_0x3ef808(0x2d6,0x269)],this['_onMouseMoveEvent'],this);}[_0x556281(-0x290,-0x253)](_0x3abc03){function _0x32efb4(_0x2c4510,_0x169d8b){return _0x5caa0a(_0x169d8b-0x7f,_0x2c4510);}if(!this['show']||!this[_0x32efb4(0x158,0x171)])return;function _0x10a962(_0x815208,_0x222472){return _0x556281(_0x222472,_0x815208-0xd2);}this['mouse_down']&&(this['canvas']['style'][_0x32efb4(0x189,0x15b)]='hidden',this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x179c5a){if(!this[_0x3bb7df(-0x6e,0x21)]||!this['canvas'])return;this[_0x21cb4f(0x82,-0xf)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);this[_0x3bb7df(-0x54,-0xe7)]&&this['mouse_move']&&this['redraw']();function _0x21cb4f(_0x2c0086,_0x5b56b7){return _0x5caa0a(_0x2c0086-0x7f,_0x5b56b7);}this[_0x21cb4f(0x171,0x179)]['style']['visibility']='visible';function _0x3bb7df(_0x51a54f,_0x297ef6){return _0x556281(_0x297ef6,_0x51a54f-0x226);}this['mouse_down']=![],this[_0x3bb7df(-0x51,-0xb3)]=![];}['setData'](_0x572e02){this[_0x395ca0(0x2,-0x64)](),this[_0x395ca0(-0x36,0x1e)]=_0x572e02;function _0x395ca0(_0x42621f,_0x48773b){return _0x556281(_0x48773b,_0x42621f-0x242);}function _0x2b0b75(_0x155b82,_0xa65857){return _0x5caa0a(_0x155b82- -0x6,_0xa65857);}this['windField']['setDate'](_0x572e02),this['redraw']();}[_0x5caa0a(0xbe,0x91)](){if(!this[_0x515c50(0xc,-0x83)])return;this['windField'][_0x515c50(-0x33,-0x7d)](this['options']);function _0x515c50(_0x3f621d,_0x42d1e9){return _0x556281(_0x3f621d,_0x42d1e9-0x211);}function _0x230048(_0x231410,_0x4ebb0e){return _0x556281(_0x4ebb0e,_0x231410-0x423);}this[_0x515c50(-0xfa,-0x88)]();}[_0x556281(-0x2f7,-0x299)](){function _0x44feaf(_0x40f4c6,_0x227963){return _0x556281(_0x227963,_0x40f4c6-0x95);}if(this['_updateIng'])return;this['_updateIng']=!![];if(this['worker'])this['windField']['update']();else{const _0x2d867e=this[_0x44feaf(-0x197,-0x110)]['getParticles']();this['_drawLines'](_0x2d867e);}function _0x30da24(_0x171cd1,_0x38d40f){return _0x556281(_0x171cd1,_0x38d40f-0x5fd);}this[_0x30da24(0x354,0x2f2)]=![];}['_drawLines'](_0x3e3568){this['canvasContext']['globalCompositeOperation']='destination-in',this[_0x31143b(-0x31e,-0x294)]['fillRect'](0x0,0x0,this[_0x31143b(-0x26e,-0x242)],this['canvasHeight']),this[_0x31143b(-0x308,-0x294)]['globalCompositeOperation']='lighter',this['canvasContext']['globalAlpha']=0.9;const _0x3b832b=this[_0x52d875(0x37a,0x3f2)]['scene']['mode']!==Cesium['SceneMode']['SCENE3D'];function _0x31143b(_0x5eb163,_0x9bef57){return _0x5caa0a(_0x9bef57- -0x29f,_0x5eb163);}function _0x52d875(_0x500489,_0x1150b3){return _0x5caa0a(_0x1150b3-0x3ef,_0x500489);}const _0x4bfcb6=this['canvasWidth']*0.25;if(this[_0x52d875(0x433,0x3f6)])for(let _0x737c58=0x0,_0x2930c1=_0x3e3568['length'];_0x737c58<_0x2930c1;_0x737c58++){const _0x56392f=_0x3e3568[_0x737c58],_0x35116a=this['_tomap'](_0x56392f[_0x52d875(0x4a9,0x480)],_0x56392f['lat'],_0x56392f),_0x4a5da7=this[_0x31143b(-0x1c0,-0x1f7)](_0x56392f['tlng'],_0x56392f['tlat'],_0x56392f);if(!_0x35116a||!_0x4a5da7)continue;if(_0x3b832b&&Math[_0x52d875(0x3e6,0x3c1)](_0x35116a[0x0]-_0x4a5da7[0x0])>=_0x4bfcb6)continue;this['canvasContext'][_0x31143b(-0x29b,-0x2c6)](),this[_0x52d875(0x3b8,0x3fa)]['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this['_colorRamp'][_0x31143b(-0x1f2,-0x204)](_0x56392f[_0x31143b(-0x331,-0x2a9)]),this['canvasContext']['moveTo'](_0x35116a[0x0],_0x35116a[0x1]),this['canvasContext'][_0x52d875(0x436,0x463)](_0x4a5da7[0x0],_0x4a5da7[0x1]),this[_0x31143b(-0x26b,-0x294)]['stroke']();}else{this['canvasContext'][_0x31143b(-0x2f9,-0x2c6)](),this[_0x52d875(0x3ac,0x3fa)]['lineWidth']=this['lineWidth'],this[_0x31143b(-0x260,-0x294)][_0x52d875(0x481,0x3f9)]=this[_0x52d875(0x3b3,0x3f1)];for(let _0x4822bd=0x0,_0x167f64=_0x3e3568[_0x52d875(0x387,0x413)];_0x4822bd<_0x167f64;_0x4822bd++){const _0x4bf37b=_0x3e3568[_0x4822bd],_0x91f57=this[_0x52d875(0x417,0x497)](_0x4bf37b['lng'],_0x4bf37b[_0x31143b(-0x2dd,-0x283)],_0x4bf37b),_0x1274f1=this['_tomap'](_0x4bf37b['tlng'],_0x4bf37b[_0x31143b(-0x269,-0x22a)],_0x4bf37b);if(!_0x91f57||!_0x1274f1)continue;if(_0x3b832b&&Math[_0x31143b(-0x290,-0x2cd)](_0x91f57[0x0]-_0x1274f1[0x0])>=_0x4bfcb6)continue;this[_0x31143b(-0x2fe,-0x294)][_0x52d875(0x350,0x3de)](_0x91f57[0x0],_0x91f57[0x1]),this['canvasContext'][_0x52d875(0x3e3,0x463)](_0x1274f1[0x0],_0x1274f1[0x1]);}this['canvasContext'][_0x31143b(-0x24b,-0x1fe)]();}}['_tomap'](_0x61a9b,_0x4df717,_0x38ec30){function _0x49e601(_0x36c214,_0x269d4e){return _0x556281(_0x36c214,_0x269d4e-0x2e1);}const _0x2ab3ca=Cesium[_0x2a82cc(0x34c,0x2d5)]['fromDegrees'](_0x61a9b,_0x4df717,this['fixedHeight']),_0x30212c=this['_map']['scene'];function _0x2a82cc(_0x493abe,_0x125eb8){return _0x556281(_0x125eb8,_0x493abe-0x61f);}if(_0x30212c['mode']===Cesium['SceneMode'][_0x2a82cc(0x38d,0x41d)]){const _0x19110c=new Cesium['EllipsoidalOccluder'](_0x30212c['globe']['ellipsoid'],_0x30212c[_0x2a82cc(0x341,0x2b3)]['positionWC']),_0x56b4f5=_0x19110c[_0x49e601(0x33,0xbd)](_0x2ab3ca);if(!_0x56b4f5)return _0x38ec30['age']=0x0,null;}const _0x2b8574=mars3d__namespace[_0x2a82cc(0x355,0x3a2)][_0x2a82cc(0x3ef,0x368)](this[_0x49e601(0x1b,-0x21)][_0x49e601(0xad,0x2b)],_0x2ab3ca);return _0x2b8574?[_0x2b8574['x'],_0x2b8574['y']]:null;}[_0x556281(-0x231,-0x240)](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){this[_0x2c4b5c(0x167,0x18e)]=new Worker(this['options'][_0x2c4b5c(0x15f,0x18e)]),this[_0x1c671f(0x28f,0x309)][_0x2c4b5c(0x155,0x174)]=_0x1fbb35=>{function _0x211959(_0x4e2268,_0x1d3698){return _0x2c4b5c(_0x1d3698,_0x4e2268- -0x35b);}this['_drawLines'](_0x1fbb35[_0x211959(-0x1b3,-0x1cc)]['particles']),this['_updateIng2']=![];},this[_0x1c671f(0x367,0x37a)]={'init':_0x3557d5=>{const _0x490cc5={};_0x490cc5['type']='init';function _0x26d576(_0x43a1f8,_0x5828ba){return _0x2c4b5c(_0x43a1f8,_0x5828ba- -0x463);}_0x490cc5[_0x26d576(-0x288,-0x2c0)]=_0x3557d5;function _0x42c818(_0x1ebaa0,_0x48ba19){return _0x1c671f(_0x1ebaa0- -0x4f9,_0x48ba19);}this['worker'][_0x26d576(-0x391,-0x300)](_0x490cc5);},'setOptions':_0x6086ba=>{function _0x4875b9(_0x25fc2d,_0x5ea4b6){return _0x2c4b5c(_0x5ea4b6,_0x25fc2d- -0x372);}const _0x49a361={};function _0xf83c51(_0x24a767,_0xab691e){return _0x2c4b5c(_0xab691e,_0x24a767-0x2b);}_0x49a361['type']='setOptions',_0x49a361['options']=_0x6086ba,this[_0x4875b9(-0x1e4,-0x209)][_0xf83c51(0x18e,0x1d9)](_0x49a361);},'setDate':_0x390a87=>{const _0x12a816={};function _0x552dda(_0x2417b7,_0x3cb2b4){return _0x2c4b5c(_0x2417b7,_0x3cb2b4- -0x2c5);}function _0x445901(_0x3cfbd7,_0x49c2b6){return _0x2c4b5c(_0x3cfbd7,_0x49c2b6- -0xa6);}_0x12a816[_0x445901(0x13c,0x19f)]='setDate',_0x12a816['data']=_0x390a87,this['worker'][_0x552dda(-0x1a5,-0x162)](_0x12a816);},'update':()=>{if(this[_0x29f918(0x55,0x51)])return;function _0x227c1f(_0x5f28af,_0x2d680a){return _0x1c671f(_0x5f28af- -0x87,_0x2d680a);}function _0x29f918(_0x34fd86,_0xba6074){return _0x2c4b5c(_0xba6074,_0x34fd86- -0x1f1);}this[_0x227c1f(0x2c0,0x34e)]=!![];const _0x56c0be={};_0x56c0be['type']='update',this[_0x227c1f(0x208,0x296)][_0x29f918(-0x8e,-0x13)](_0x56c0be);},'clear':()=>{function _0x4c311b(_0x26e9e8,_0x1b04d2){return _0x2c4b5c(_0x1b04d2,_0x26e9e8- -0x27e);}const _0x33c397={};function _0x5a0c42(_0x331323,_0x3fb503){return _0x2c4b5c(_0x3fb503,_0x331323-0x23e);}_0x33c397[_0x4c311b(-0x39,0x4)]='clear',this['worker'][_0x5a0c42(0x3a1,0x39e)](_0x33c397);}};function _0x2c4b5c(_0x120817,_0x806147){return _0x556281(_0x120817,_0x806147-0x492);}function _0x1c671f(_0x1ff910,_0x29f7a8){return _0x5caa0a(_0x1ff910-0x28e,_0x29f7a8);}this[_0x1c671f(0x367,0x393)][_0x2c4b5c(0x26f,0x1f3)](this[_0x1c671f(0x2a4,0x333)]);}}mars3d__namespace['LayerUtil'][_0x5caa0a(0xda,0xf0)]('canvasWind',CanvasWindLayer),mars3d__namespace[_0x556281(-0x281,-0x262)]['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x5caa0a(0xb0,0xfe)]=WindUtil;function _0x5caa0a(_0x5ba60c,_0x54998c){return _0x3462(_0x5ba60c- -0xb2,_0x54998c);}exports[_0x556281(-0x3a4,-0x321)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x5caa0a(0xb0,0x25)]=WindUtil;const _0x29b2da={};_0x29b2da['value']=!![],Object['defineProperty'](exports,_0x556281(-0x285,-0x2bb),_0x29b2da);
|
|
14
|
+
'use strict';(function(_0x5f37d5,_0x122586){const _0x7d836f=_0x5f37d5();function _0x239005(_0x5a6699,_0x134961){return _0x3060(_0x5a6699-0x1c6,_0x134961);}function _0x108478(_0x4f1b8a,_0x5a6038){return _0x3060(_0x4f1b8a-0xc8,_0x5a6038);}while(!![]){try{const _0x2cfda5=-parseInt(_0x108478(0x28c,0x305))/0x1*(parseInt(_0x108478(0x1b7,0x140))/0x2)+parseInt(_0x108478(0x23d,0x1c8))/0x3*(-parseInt(_0x239005(0x2fd,0x2ce))/0x4)+-parseInt(_0x108478(0x2a5,0x31d))/0x5+parseInt(_0x239005(0x39f,0x32c))/0x6+-parseInt(_0x239005(0x396,0x3f1))/0x7+-parseInt(_0x239005(0x322,0x2d6))/0x8*(parseInt(_0x239005(0x2f2,0x317))/0x9)+parseInt(_0x108478(0x19b,0x1b1))/0xa;if(_0x2cfda5===_0x122586)break;else _0x7d836f['push'](_0x7d836f['shift']());}catch(_0x17aeff){_0x7d836f['push'](_0x7d836f['shift']());}}}(_0x2720,0x1c258));function _interopNamespace(_0x55aebd){if(_0x55aebd&&_0x55aebd[_0x4f8906(-0x1b7,-0x1a9)])return _0x55aebd;var _0x3645c2=Object[_0x5144a6(-0x21f,-0x2a2)](null);_0x55aebd&&Object['keys'](_0x55aebd)['forEach'](function(_0x28deba){function _0x2a8b73(_0xa3bd97,_0x2f4ec5){return _0x4f8906(_0x2f4ec5,_0xa3bd97-0x3b8);}function _0x1d1772(_0x355766,_0x396a4e){return _0x5144a6(_0x396a4e-0xb5,_0x355766);}if(_0x28deba!==_0x1d1772(-0x173,-0x141)){var _0x4b087b=Object['getOwnPropertyDescriptor'](_0x55aebd,_0x28deba);Object[_0x1d1772(-0x117,-0x11e)](_0x3645c2,_0x28deba,_0x4b087b['get']?_0x4b087b:{'enumerable':!![],'get':function(){return _0x55aebd[_0x28deba];}});}});_0x3645c2['default']=_0x55aebd;function _0x4f8906(_0x9227e4,_0x176195){return _0x3060(_0x176195- -0x29e,_0x9227e4);}function _0x5144a6(_0x2b1a4e,_0x535f06){return _0x3060(_0x2b1a4e- -0x361,_0x535f06);}return _0x3645c2;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function _0xfdf2d7(_0x2b5e61,_0x451c52){return _0x3060(_0x2b5e61- -0x119,_0x451c52);}function getU(_0x328efe,_0x347d67){const _0x3fb691=_0x328efe*Math['cos'](Cesium$7['Math']['toRadians'](_0x347d67));return _0x3fb691;}function getV(_0x190abd,_0x1dcafb){const _0x4a9e8a=_0x190abd*Math[_0x316b09(0x28f,0x30a)](Cesium$7[_0x316b09(0x2a5,0x221)][_0x20fcb2(0x372,0x2de)](_0x1dcafb));function _0x20fcb2(_0x13c703,_0x49ef29){return _0x3060(_0x49ef29-0x1fc,_0x13c703);}function _0x316b09(_0x52c006,_0x315f66){return _0x3060(_0x52c006-0x1a9,_0x315f66);}return _0x4a9e8a;}function _0x3060(_0x111b4d,_0x4d6695){const _0x2720ea=_0x2720();return _0x3060=function(_0x3060ca,_0x169d74){_0x3060ca=_0x3060ca-0xbb;let _0x2756a3=_0x2720ea[_0x3060ca];return _0x2756a3;},_0x3060(_0x111b4d,_0x4d6695);}function getSpeed(_0x5781e1,_0x438a54){const _0x3a2154=Math['sqrt'](Math[_0x4eff1a(0x43a,0x492)](_0x5781e1,0x2)+Math['pow'](_0x438a54,0x2));function _0x4eff1a(_0x576d4e,_0x2feae7){return _0x3060(_0x576d4e-0x2d5,_0x2feae7);}return _0x3a2154;}function getDirection(_0x5b0adf,_0x219131){let _0x33f0c9=Cesium$7['Math'][_0x40b60b(0x6a,0xa5)](Math[_0x40b60b(0x19d,0x146)](_0x219131,_0x5b0adf));function _0xf630a1(_0x5e9d46,_0x5401ab){return _0x3060(_0x5401ab-0x95,_0x5e9d46);}_0x33f0c9+=_0x33f0c9<0x0?0x168:0x0;function _0x40b60b(_0x193a00,_0x3492b4){return _0x3060(_0x3492b4- -0x43,_0x193a00);}return _0x33f0c9;}function _0x2720(){const _0x4e900c=['#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20trailsColor;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','screen','BufferUsage','now','PrimitiveCollection','clearCommand','ClearCommand','dimensions','style','vdata','mouseUp','reverseY','tlng','height','unbindEvent','visible','_drawLines','west','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','Cesium','green','outputTexture','mouse_down','Geometry','PrimitiveType','UNSIGNED_BYTE','cols','viewport','min','attributeLocations','defined','6558590Cmrvrh','age','camera','lineWidth','lng','destroy','particlesTextureSize','forEach','udata','getSpeed','rows','drawingBufferHeight','log','primitives','left','toRadians','destroyParticlesTextures','type','owner','sin','GeometryAttribute','toDegrees','dropRateBump','nextTrails','DISABLE_GL_POSITION_LOG_DEPTH','clear','PixelDatatype','windData','387322BSmcOC','auto','array','framebuffers','particlesComputing','setData','__esModule','add','fromCssColorString','NEAREST','depthTest','_updateIng','removeChild','Math','WindLayer','enabled','latRange','preRender','sqrt','keys','RenderState','width','frameRate','randomizeParticles','push','applyViewerParameters','pointer-events','dimension','_animateFrame','maximum','stroke','pixelSize','getDirection','umin','PixelFormat','_map','TWO_PI','VertexArray','dropRate','randomBetween','_bilinearInterpolation','random','preExecute','windTextures','createParticlesTextures','_updateIng2','data','depthTexture','options','globeBoundingSphere','STATIC_DRAW','THREE_PI_OVER_TWO','speedRate','resize','south','levmax','xmax','getColorTexture','color','context','Cartesian3','9szxVQB','colorTable','getParticles','length','redraw','EventType','positionWC','Color','ymax','shaderProgram','isInExtent','4CoWYer','PI_OVER_TWO','register','setDate','commandToExecute','createTexture','_pointerEvents','arrayBufferView','particlesTextures','OPAQUE','fromGeometry','create','framebuffer','ZERO','hidden','particlesRendering','postMessage','zIndex','trails','canvasContext','isDestroy','drawingBufferWidth','TRIANGLES','calculateSpeed','commandList','createFramebuffer','refreshTimer','value','canvasHeight','_speedRate','_calcUV','windField','currentTrails','_canrefresh','lat','viewRectangleToLonLatRange','getPixelSize','629840SeoBXW','pixelFormat','lev','Sampler','none','createRenderingFramebuffers','reverse','red','UNSIGNED_INT','pow','vertexShaderSource','FLOAT','off','SceneMode','updateViewerParameters','default','previousParticlesPosition','canvasResize','particles','textures','mouseMove','initWorker','update','ShaderSource','speed','243297PHWWpp','Appearance','createRenderingTextures','PointTrans','SCENE3D','fixedHeight','toWindowCoordinates','bindEvent','getFullscreenQuad','colors','canrefresh','requestAnimationFrame','_onMouseDownEvent','frameTime','getV','_onMouseUpEvent','nextParticlesPosition','particlesSpeed','dynamic','rawRenderState','atan2','Draw','_data','_randomParticle','setOptions','defineProperty','postProcessingPosition','Compute','particlesNumber','segments','_calc_speedRate','max','lineTo','segmentsColor','abs','particleHeight','mouse_move','_showHook','destination-in','lon','grid','wSpeedRange','currentParticlesPosition','CanvasWindLayer','clientWidth','computeViewRectangle','_onMapWhellEvent','maxAge','commandType','lonRange','floor','EllipsoidalOccluder','removeAll','blending','RED','layer','getU','_addedHook','viewerParameters','xmin','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x20Unit\x20converted\x20to\x20degrees\x20of\x20longitude\x20and\x20latitude\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20speed;\x0a\x20\x20if(length(speed.rgb)\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','_mountedHook','createCommand','scene','getUVByXY','globe','persists','tlat','canvasWind','TextureMinificationFilter','_tomap','canvasWidth','ymin','pointerEvents','GeometryAttributes','Pass','position','vertexArray','createRawRenderState','1GqngvE','_removedHook','visibility','uniformMap','show','rgb(206,255,255)','geometry','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20lines\x20drawing\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0auniform\x20vec2\x20hRange;\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0aout\x20float\x20heightNormalization;\x0aout\x20float\x20speedNormalization;\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\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(lonLatLev.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.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+\x20lonLatLev.z;\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(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0f,\x20360.0f)\x20-\x20180.0f;\x0a\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign)\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\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0f;\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\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\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(speed.z\x20-\x20wSpeedRange.x)\x20/\x20(wSpeedRange.y\x20-\x20wSpeedRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20vec3\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rgb;\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\x20\x20\x20\x20//\x20render\x20lines\x20with\x20triangles\x20and\x20miter\x20joint\x0a\x20\x20\x20\x20//\x20read\x20https://blog.scottlogic.com/2019/11/18/drawing-lines-with-webgl.html\x20for\x20detail\x0a\x20\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20projectedCoordinates.next,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.next\x20+\x20offset;\x0a\x20\x20}\x0a\x0a\x20\x20heightNormalization\x20=\x20(currentPosition.z\x20-\x20hRange.x)\x20/\x20(hRange.y\x20-\x20hRange.x);\x0a\x0a\x20\x20speedNormalization\x20=\x20texture(particlesSpeed,\x20particleIndex).a;\x0a}\x0a','addPrimitives','mars3d-canvasWind','globalCompositeOperation','_onMouseMoveEvent','127561hOLGqu','mod','fragmentShaderSource','mode','createComputingPrimitives','sources','maxParticles','strokeStyle','once','133734qgTQEd','particleSystem','refreshParticles','Cartesian2','955735ltMguT','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x0a\x0auniform\x20sampler2D\x20H;\x20//\x20particles\x20height\x20textures\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0auniform\x20vec2\x20viewerLonRange;\x0auniform\x20vec2\x20viewerLatRange;\x0a\x0aconst\x20float\x20randomCoefficient\x20=\x200.1f;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0aconst\x20float\x20dropRate\x20=\x200.1f;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0aconst\x20float\x20dropRateBump\x20=\x200.1f;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0avec4\x20getTextureValue(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20vec4\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D);\x0a\x20\x20return\x20result;\x0a}\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\x0abool\x20particleNoSpeed(vec3\x20particle)\x20{\x0a\x20\x20vec4\x20speed\x20=\x20getTextureValue(particlesSpeed,\x20particle);\x0a\x20\x20return\x20speed.r\x20==\x200.0f\x20&&\x20speed.g\x20==\x200.0f;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0f);\x0a\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20float\x20height\x20=\x20getTextureValue(H,\x20vec3(randomLon,\x20randomLat,\x20lev)).r;\x0a\x0a\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20height);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20viewerLatRange.x\x20||\x20particle.y\x20>\x20viewerLatRange.y\x20||\x20particle.x\x20<\x20viewerLonRange.x\x20||\x20particle.x\x20>\x20viewerLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\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.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\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,\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);\x0a\x20\x20}\x0a}\x0a','0px','canvas','worker'];_0x2720=function(){return _0x4e900c;};return _0x2720();}const _0x50abbe={};_0x50abbe['__proto__']=null,_0x50abbe[_0xfdf2d7(0x94,0x87)]=getU,_0x50abbe[_0xfdf2d7(0x6a,0x7b)]=getV,_0x50abbe[_0x33bcfd(-0x220,-0x2b1)]=getSpeed,_0x50abbe[_0x33bcfd(-0x1ed,-0x157)]=getDirection;var WindUtil=_0x50abbe;const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x36ded4){this[_0x1d1a5f(0x7c,0x56)]=_0x36ded4[_0x1d1a5f(0x7c,0xaa)],this[_0x3899da(0x42d,0x3f4)]=_0x36ded4['geometry'],this[_0x1d1a5f(-0x58,-0x4)]=_0x36ded4['attributeLocations'],this['primitiveType']=_0x36ded4['primitiveType'],this['uniformMap']=_0x36ded4[_0x1d1a5f(0x9e,0x94)],this[_0x1d1a5f(0x3d,0xc4)]=_0x36ded4[_0x3899da(0x3c9,0x3e4)],this['fragmentShaderSource']=_0x36ded4[_0x3899da(0x435,0x3c9)],this[_0x3899da(0x3eb,0x46b)]=_0x36ded4[_0x3899da(0x3eb,0x3e4)];function _0x1d1a5f(_0x300c37,_0x4e74b1){return _0xfdf2d7(_0x300c37- -0x10,_0x4e74b1);}this['framebuffer']=_0x36ded4['framebuffer'],this[_0x3899da(0x32c,0x2d4)]=_0x36ded4['outputTexture'],this['autoClear']=_0x36ded4['autoClear']??![],this[_0x1d1a5f(-0x10,-0x41)]=_0x36ded4[_0x3899da(0x37c,0x3df)];function _0x3899da(_0x586e48,_0x2d1447){return _0x33bcfd(_0x586e48-0x55f,_0x2d1447);}this[_0x1d1a5f(0x9f,0x10b)]=!![],this[_0x1d1a5f(0x12,-0x45)]=undefined,this['clearCommand']=undefined,this['autoClear']&&(this[_0x3899da(0x44a,0x3f4)]=new Cesium$6[(_0x1d1a5f(0xbf,0x14d))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x3899da(0x3a6,0x3f7)],'pass':Cesium$6['Pass'][_0x1d1a5f(0x17,-0x27)]}));}[_0xfdf2d7(0x9a,0x5e)](_0x3214a5){function _0xe63601(_0x34c8e3,_0x6dd079){return _0x33bcfd(_0x6dd079-0x4d0,_0x34c8e3);}function _0x38ac6c(_0x2127ef,_0x4f052f){return _0xfdf2d7(_0x4f052f- -0xe1,_0x2127ef);}switch(this['commandType']){case _0xe63601(0x2d2,0x35e):{const _0x82a582=Cesium$6[_0x38ac6c(-0x14e,-0xe6)]['fromGeometry']({'context':_0x3214a5,'geometry':this[_0x38ac6c(-0x88,-0x30)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage'][_0xe63601(0x31b,0x2f5)]}),_0xc69fd4={};_0xc69fd4['context']=_0x3214a5,_0xc69fd4['attributeLocations']=this['attributeLocations'],_0xc69fd4[_0x38ac6c(-0x8c,-0x94)]=this[_0xe63601(0x3a1,0x33a)],_0xc69fd4['fragmentShaderSource']=this[_0x38ac6c(-0x59,-0x28)];const _0x4587cb=Cesium$6['ShaderProgram']['fromCache'](_0xc69fd4),_0x188461=Cesium$6[_0xe63601(0x2ac,0x2d7)]['fromCache'](this[_0xe63601(0x337,0x35c)]);return new Cesium$6['DrawCommand']({'owner':this,'vertexArray':_0x82a582,'primitiveType':this['primitiveType'],'uniformMap':this['uniformMap'],'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'shaderProgram':_0x4587cb,'framebuffer':this['framebuffer'],'renderState':_0x188461,'pass':Cesium$6['Pass']['OPAQUE']});}case _0x38ac6c(-0x19,-0x6a):{const _0x181f2a={};return _0x181f2a[_0xe63601(0x304,0x2b9)]=this,_0x181f2a[_0xe63601(0x426,0x3a6)]=this['fragmentShaderSource'],_0x181f2a[_0xe63601(0x3b2,0x39b)]=this['uniformMap'],_0x181f2a[_0xe63601(0x24e,0x29d)]=this['outputTexture'],_0x181f2a[_0x38ac6c(-0xc2,-0x43)]=!![],new Cesium$6['ComputeCommand'](_0x181f2a);}}}['setGeometry'](_0x1a9011,_0x3a9742){function _0x319fdb(_0x53f309,_0xbfabca){return _0x33bcfd(_0xbfabca-0x6d0,_0x53f309);}function _0x4235ac(_0xa1d8bd,_0x3e5654){return _0x33bcfd(_0x3e5654-0x81,_0xa1d8bd);}this[_0x319fdb(0x593,0x59e)]=_0x3a9742;const _0x5e9b62=Cesium$6['VertexArray']['fromGeometry']({'context':_0x1a9011,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage'][_0x4235ac(-0x1ef,-0x15a)]});this[_0x4235ac(-0x176,-0x140)][_0x4235ac(-0xc2,-0xb9)]=_0x5e9b62;}['update'](_0x1c12a0){if(!this['show'])return;if(_0x1c12a0['mode']!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6[_0x225385(-0xb2,-0x5d)](this['commandToExecute'])&&(this[_0x20410d(0x41f,0x437)]=this['createCommand'](_0x1c12a0['context']));Cesium$6['defined'](this['preExecute'])&&this['preExecute']();function _0x20410d(_0x20c770,_0x5d7551){return _0x33bcfd(_0x5d7551-0x5f8,_0x20c770);}Cesium$6['defined'](this['clearCommand'])&&_0x1c12a0[_0x225385(-0x4,0x20)]['push'](this['clearCommand']);function _0x225385(_0x24f522,_0x4f738c){return _0xfdf2d7(_0x4f738c- -0x16,_0x24f522);}_0x1c12a0['commandList'][_0x225385(-0x76,-0x28)](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){function _0x1b0c3c(_0x1d5dec,_0xf2376a){return _0xfdf2d7(_0xf2376a-0x1b3,_0x1d5dec);}if(this[_0x1b0c3c(0x294,0x281)]){var _0x174fde,_0x51bb09;(_0x174fde=this['clearCommand'])!==null&&_0x174fde!==void 0x0&&_0x174fde['vertexArray']&&this['clearCommand']['vertexArray']['destroy'](),(_0x51bb09=this['clearCommand'])!==null&&_0x51bb09!==void 0x0&&_0x51bb09['shaderProgram']&&this['clearCommand']['shaderProgram']['destroy'](),delete this['clearCommand'];}function _0x55cba3(_0x50d92c,_0x334013){return _0x33bcfd(_0x334013-0xc9,_0x50d92c);}return this[_0x1b0c3c(0x1ad,0x1d5)]&&(this['commandToExecute'][_0x1b0c3c(0x27f,0x25c)]&&this[_0x1b0c3c(0x207,0x1d5)]['vertexArray'][_0x55cba3(-0x1aa,-0x15b)](),this[_0x55cba3(-0xb7,-0xf8)][_0x55cba3(-0xef,-0xfe)]&&this['commandToExecute']['shaderProgram'][_0x1b0c3c(0x1a3,0x172)](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace[_0xfdf2d7(-0x52,-0x3e)],Util=(function(){const _0x3b037e=function(){const _0x3fa934=new Cesium$5[(_0x3afa74(0x3b5,0x362))]({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5[(_0x93fdeb(-0x1d,0x37))]({'componentDatatype':Cesium$5['ComponentDatatype'][_0x3afa74(0x451,0x3bd)],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5[(_0x3afa74(0x3d1,0x452))]({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});function _0x93fdeb(_0x33ca8a,_0x2695d8){return _0x3060(_0x2695d8- -0xb0,_0x33ca8a);}function _0x3afa74(_0xd22880,_0x3d1d74){return _0x3060(_0xd22880-0x2ea,_0x3d1d74);}return _0x3fa934;},_0x5e92f4=function(_0x49ef6d,_0x1a4752){if(Cesium$5['defined'](_0x1a4752)){const _0x473192={};_0x473192[_0x4d9639(-0x2a3,-0x2ab)]=_0x1a4752,_0x49ef6d['source']=_0x473192;}function _0x4d9639(_0x3cb907,_0x45a619){return _0x3060(_0x3cb907- -0x3e1,_0x45a619);}const _0x36fb9a=new Cesium$5['Texture'](_0x49ef6d);return _0x36fb9a;},_0x2e98b7=function(_0x24f79f,_0x3c775b,_0x3a3e54){const _0x39a347={};function _0x3c74ca(_0xd9bc02,_0x32bf51){return _0x3060(_0xd9bc02-0x3b3,_0x32bf51);}_0x39a347[_0x3c74ca(0x4dd,0x542)]=_0x24f79f,_0x39a347['colorTextures']=[_0x3c775b],_0x39a347['depthTexture']=_0x3a3e54;const _0x196987=new Cesium$5['Framebuffer'](_0x39a347);return _0x196987;},_0x5b0465=function(_0x2a121e){function _0x31e387(_0xc237c8,_0xb362fd){return _0x3060(_0xb362fd-0x165,_0xc237c8);}function _0x1f9364(_0x45a998,_0x7c7dce){return _0x3060(_0x45a998-0x1ad,_0x7c7dce);}const _0x20fede=!![],_0x5163d6=![],_0x3d0985={};_0x3d0985['viewport']=_0x2a121e['viewport'],_0x3d0985['depthTest']=_0x2a121e[_0x1f9364(0x2a6,0x277)],_0x3d0985['depthMask']=_0x2a121e['depthMask'],_0x3d0985['blending']=_0x2a121e[_0x31e387(0x338,0x30f)];const _0x489b3f=_0x3d0985,_0x43a795=Cesium$5[_0x31e387(0x323,0x2db)]['getDefaultRenderState'](_0x20fede,_0x5163d6,_0x489b3f);return _0x43a795;},_0x38fb82=function(_0x5562d4){const _0x554aff={};function _0x13d9c5(_0x49b2af,_0x2f649e){return _0x3060(_0x49b2af-0x126,_0x2f649e);}const _0x153c69=Cesium$5['Math'][_0x28d107(-0xb3,-0x59)](_0x5562d4[_0x13d9c5(0x1eb,0x232)],Cesium$5[_0x28d107(-0x18f,-0x12e)][_0x28d107(-0x177,-0x117)]),_0x5d95cb=Cesium$5['Math'][_0x28d107(0x1c,-0x59)](_0x5562d4['east'],Cesium$5['Math']['TWO_PI']),_0x52a3c0=_0x5562d4['width'];let _0x28c4a4,_0x27fc2e;_0x52a3c0>Cesium$5['Math'][_0x13d9c5(0x248,0x1eb)]?(_0x28c4a4=0x0,_0x27fc2e=Cesium$5[_0x13d9c5(0x222,0x1b9)][_0x13d9c5(0x239,0x218)]):_0x5d95cb-_0x153c69<_0x52a3c0?(_0x28c4a4=_0x153c69,_0x27fc2e=_0x153c69+_0x52a3c0):(_0x28c4a4=_0x153c69,_0x27fc2e=_0x5d95cb);function _0x28d107(_0x5db8e3,_0x522498){return _0x3060(_0x522498- -0x22a,_0x5db8e3);}_0x554aff['lon']={'min':Cesium$5[_0x28d107(-0x186,-0x12e)]['toDegrees'](_0x28c4a4),'max':Cesium$5[_0x28d107(-0xb4,-0x12e)]['toDegrees'](_0x27fc2e)};const _0x53f206=_0x5562d4[_0x28d107(-0x194,-0x105)],_0x80515d=_0x5562d4['north'],_0x42bad1=_0x5562d4[_0x28d107(-0x1d9,-0x169)],_0xafef2b=_0x42bad1>Cesium$5['Math']['PI']/0xc?_0x42bad1/0x2:0x0;let _0x22ca64=Cesium$5['Math']['clampToLatitudeRange'](_0x53f206-_0xafef2b),_0x898cca=Cesium$5['Math']['clampToLatitudeRange'](_0x80515d+_0xafef2b);return _0x22ca64<-Cesium$5[_0x28d107(-0x198,-0x12e)]['PI_OVER_THREE']&&(_0x22ca64=-Cesium$5['Math']['PI_OVER_TWO']),_0x898cca>Cesium$5['Math']['PI_OVER_THREE']&&(_0x898cca=Cesium$5[_0x13d9c5(0x222,0x27f)][_0x13d9c5(0x25e,0x258)]),_0x554aff['lat']={'min':Cesium$5['Math']['toDegrees'](_0x22ca64),'max':Cesium$5['Math'][_0x28d107(-0x162,-0x142)](_0x898cca)},_0x554aff;},_0x3a705a={};return _0x3a705a['getFullscreenQuad']=_0x3b037e,_0x3a705a['createTexture']=_0x5e92f4,_0x3a705a['createFramebuffer']=_0x2e98b7,_0x3a705a['createRawRenderState']=_0x5b0465,_0x3a705a['viewRectangleToLonLatRange']=_0x38fb82,_0x3a705a;}());var fullscreenVert='#version\x20300\x20es\x0a\x0ain\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20gl_Position\x20=\x20vec4(position,\x201.0f);\x0a}\x0a',screenDrawFrag=_0xfdf2d7(0xc9,0xb7),segmentDrawFrag='#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20bool\x20colour;\x0a\x0ain\x20float\x20heightNormalization;\x0ain\x20float\x20speedNormalization;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speedNormalization\x20>\x20zero)\x20{\x0a\x20\x20\x20\x20if(colour)\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(heightNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',segmentDrawVert=_0xfdf2d7(0xb2,0x21),trailDrawFrag='#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0aout\x20vec4\x20fragColor;\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0f\x20*\x20trailsColor)\x20/\x20255.0f;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20if(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20pointsColor;\x0a\x20\x20}\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20trailsColor;\x0a\x20\x20}\x0a\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a';const Cesium$4=mars3d__namespace[_0xfdf2d7(-0x52,-0x9e)];class ParticlesRendering{constructor(_0x210649,_0x522d1e,_0x3e312a,_0x132f6b,_0x56f96b){this['colour']=_0x3e312a['colors']===_0x486461(-0x1a5,-0x227);function _0x364802(_0x56aadb,_0x45130c){return _0xfdf2d7(_0x45130c-0xaf,_0x56aadb);}this[_0x364802(0x198,0x10d)](_0x210649,_0x522d1e,_0x3e312a['colors']);function _0x486461(_0x222673,_0x46448a){return _0x33bcfd(_0x222673-0x96,_0x46448a);}this[_0x364802(0x165,0xf7)](_0x210649),this['createRenderingPrimitives'](_0x210649,_0x522d1e,_0x3e312a,_0x132f6b,_0x56f96b);}[_0x33bcfd(-0x185,-0x180)](_0x772146,_0x4f1d62,_0x12568e){const _0x5a3791={};_0x5a3791[_0x345147(0x27c,0x1eb)]=_0x772146,_0x5a3791['width']=_0x772146[_0x38f6d2(0x3ca,0x3df)],_0x5a3791['height']=_0x772146['drawingBufferHeight'],_0x5a3791[_0x38f6d2(0x3db,0x413)]=Cesium$4['PixelFormat']['RGBA'],_0x5a3791['pixelDatatype']=Cesium$4['PixelDatatype'][_0x345147(0x21f,0x234)];const _0x47c6cd=_0x5a3791,_0x3fb05e={};_0x3fb05e[_0x38f6d2(0x3a8,0x406)]=_0x772146,_0x3fb05e[_0x38f6d2(0x382,0x364)]=_0x772146[_0x345147(0x29e,0x2e3)],_0x3fb05e['height']=_0x772146[_0x345147(0x230,0x201)];function _0x38f6d2(_0x349feb,_0x4a742a){return _0x33bcfd(_0x349feb-0x57a,_0x4a742a);}_0x3fb05e['pixelFormat']=Cesium$4['PixelFormat']['DEPTH_COMPONENT'],_0x3fb05e['pixelDatatype']=Cesium$4[_0x345147(0x23f,0x224)][_0x38f6d2(0x3e2,0x39f)];function _0x345147(_0x245abb,_0x3c4510){return _0xfdf2d7(_0x245abb-0x26b,_0x3c4510);}const _0x3cf5bd=_0x3fb05e,_0x992b4d=_0x12568e['length'],_0x3fbe48=new Float32Array(_0x992b4d*0x3);for(let _0x399b51=0x0;_0x399b51<_0x992b4d;_0x399b51++){const _0x26cf2e=Cesium$4[_0x38f6d2(0x3b1,0x337)][_0x38f6d2(0x375,0x3d7)](_0x12568e[_0x399b51]);_0x3fbe48[0x3*_0x399b51]=_0x26cf2e[_0x38f6d2(0x3e1,0x421)],_0x3fbe48[0x3*_0x399b51+0x1]=_0x26cf2e[_0x345147(0x21a,0x207)],_0x3fbe48[0x3*_0x399b51+0x2]=_0x26cf2e['blue'];}const _0x35c8ba={'context':_0x772146,'width':_0x992b4d,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4[_0x38f6d2(0x36b,0x33a)]['FLOAT'],'sampler':new Cesium$4[(_0x345147(0x2b1,0x27f))]({'minificationFilter':Cesium$4[_0x345147(0x30c,0x33b)]['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this[_0x38f6d2(0x3ed,0x440)]={'segmentsColor':Util['createTexture'](_0x47c6cd),'segmentsDepth':Util[_0x345147(0x28e,0x212)](_0x3cf5bd),'currentTrailsColor':Util[_0x38f6d2(0x3ba,0x430)](_0x47c6cd),'currentTrailsDepth':Util[_0x345147(0x28e,0x217)](_0x3cf5bd),'nextTrailsColor':Util[_0x345147(0x28e,0x2ee)](_0x47c6cd),'nextTrailsDepth':Util[_0x345147(0x28e,0x212)](_0x3cf5bd),'colorTable':Util['createTexture'](_0x35c8ba,_0x3fbe48)};}['createRenderingFramebuffers'](_0x56ce53){function _0x9b9064(_0x2e9860,_0x1eaa4f){return _0x33bcfd(_0x2e9860-0x33f,_0x1eaa4f);}function _0x55a5b4(_0x3027dc,_0x3be43b){return _0x33bcfd(_0x3be43b- -0xb7,_0x3027dc);}this['framebuffers']={'segments':Util['createFramebuffer'](_0x56ce53,this['textures'][_0x55a5b4(-0x280,-0x21d)],this[_0x9b9064(0x1b2,0x223)]['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x56ce53,this['textures']['currentTrailsColor'],this['textures']['currentTrailsDepth']),'nextTrails':Util[_0x9b9064(0x193,0x1b4)](_0x56ce53,this['textures']['nextTrailsColor'],this[_0x55a5b4(-0x1f9,-0x244)]['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x574ea4){function _0x5e9670(_0x17c8ff,_0x45d930){return _0xfdf2d7(_0x45d930- -0x2b3,_0x17c8ff);}const _0x71bd2=0x4;let _0x5df6cf=[];for(let _0xd283f4=0x0;_0xd283f4<_0x574ea4['particlesTextureSize'];_0xd283f4++){for(let _0x61e076=0x0;_0x61e076<_0x574ea4['particlesTextureSize'];_0x61e076++){for(let _0x32e3ad=0x0;_0x32e3ad<_0x71bd2;_0x32e3ad++){_0x5df6cf['push'](_0xd283f4/_0x574ea4[_0x5e9670(-0x2f5,-0x2f3)]),_0x5df6cf[_0x5cb20a(0xa5,0x3f)](_0x61e076/_0x574ea4['particlesTextureSize']);}}}function _0x5cb20a(_0xdac747,_0x480d6f){return _0xfdf2d7(_0x480d6f-0x51,_0xdac747);}_0x5df6cf=new Float32Array(_0x5df6cf);let _0x3ebeb0=[];for(let _0x1d618c=0x0;_0x1d618c<_0x574ea4['maxParticles'];_0x1d618c++){_0x3ebeb0[_0x5e9670(-0x30b,-0x2c5)](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x3ebeb0=new Float32Array(_0x3ebeb0);let _0x1b2a3c=[];for(let _0x1047db=0x0,_0x55bad9=0x0;_0x1047db<_0x574ea4['maxParticles'];_0x1047db++){_0x1b2a3c[_0x5e9670(-0x295,-0x2c5)](_0x55bad9+0x0,_0x55bad9+0x1,_0x55bad9+0x2,_0x55bad9+0x2,_0x55bad9+0x1,_0x55bad9+0x3),_0x55bad9+=_0x71bd2;}_0x1b2a3c=new Uint32Array(_0x1b2a3c);const _0x48b594=new Cesium$4[(_0x5e9670(-0x348,-0x301))]({'attributes':new Cesium$4[(_0x5cb20a(0x60,0xf7))]({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype'][_0x5e9670(-0x21a,-0x265)],'componentsPerAttribute':0x2,'values':_0x5df6cf}),'normal':new Cesium$4[(_0x5e9670(-0x2e2,-0x2e5))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x3ebeb0})}),'indices':_0x1b2a3c});return _0x48b594;}['createRenderingPrimitives'](_0x560d26,_0x2b950c,_0xc3c7de,_0x3bd09b,_0x125f42){const _0x22d48d=this,_0x5c22e5={};_0x5c22e5['st']=0x0,_0x5c22e5['normal']=0x1;const _0x26f365={};_0x26f365[_0x2b6b9f(-0xc5,-0x10f)]=[segmentDrawVert];function _0x51ef2b(_0x255564,_0x9c762){return _0xfdf2d7(_0x255564- -0x196,_0x9c762);}const _0x368645={};_0x368645[_0x51ef2b(-0xda,-0x97)]=[segmentDrawFrag];const _0x3e4b92={};_0x3e4b92['enabled']=!![];const _0x4cf8dc={};_0x4cf8dc[_0x51ef2b(-0x1e0,-0x242)]=undefined,_0x4cf8dc[_0x51ef2b(-0x1b6,-0x1c5)]=_0x3e4b92,_0x4cf8dc['depthMask']=!![];const _0x4eace2={};function _0x2b6b9f(_0x530c1f,_0x4dfca5){return _0x33bcfd(_0x4dfca5-0x18,_0x530c1f);}_0x4eace2[_0x51ef2b(-0xee,-0x157)]=0x0,_0x4eace2['st']=0x1;const _0x4bff2a={};_0x4bff2a['defines']=[_0x51ef2b(-0x1c4,-0x1c2)],_0x4bff2a['sources']=[fullscreenVert];const _0x3779c0={};_0x3779c0['defines']=[_0x51ef2b(-0x1e9,-0x23f)],_0x3779c0['sources']=[trailDrawFrag];const _0x3c9730={};_0x3c9730[_0x51ef2b(-0xee,-0x124)]=0x0,_0x3c9730['st']=0x1;const _0x394121={};_0x394121['defines']=['DISABLE_GL_POSITION_LOG_DEPTH'],_0x394121['sources']=[fullscreenVert];const _0x1c38ef={};_0x1c38ef['defines']=[_0x51ef2b(-0x1e9,-0x258)],_0x1c38ef['sources']=[screenDrawFrag];const _0x40644e={};_0x40644e['enabled']=![];const _0x1a36e4={};_0x1a36e4[_0x51ef2b(-0x1b1,-0x161)]=!![],this[_0x2b6b9f(-0x20e,-0x204)]={'segments':new CustomPrimitive({'commandType':_0x2b6b9f(-0x16b,-0x15a),'attributeLocations':_0x5c22e5,'geometry':this['createSegmentsGeometry'](_0xc3c7de),'primitiveType':Cesium$4[_0x51ef2b(-0x1e3,-0x252)][_0x2b6b9f(-0x1b1,-0x197)],'uniformMap':{'previousParticlesPosition':function(){return _0x125f42['particlesTextures']['previousParticlesPosition'];},'currentParticlesPosition':function(){function _0x407afa(_0x38da37,_0xa40867){return _0x51ef2b(_0xa40867-0x293,_0x38da37);}return _0x125f42[_0x407afa(0x99,0x123)]['currentParticlesPosition'];},'postProcessingPosition':function(){function _0x5732a2(_0x419e85,_0x29c4fb){return _0x2b6b9f(_0x29c4fb,_0x419e85-0x1f4);}return _0x125f42['particlesTextures'][_0x5732a2(0x9f,0xe4)];},'particlesSpeed':function(){return _0x125f42['particlesTextures']['particlesSpeed'];},'colorTable':function(){function _0x38a9b8(_0x58a9,_0x4fb7f2){return _0x51ef2b(_0x4fb7f2-0x419,_0x58a9);}return _0x22d48d[_0x38a9b8(0x349,0x2d9)]['colorTable'];},'aspect':function(){function _0x54bfaa(_0x4319a7,_0xc17ab3){return _0x2b6b9f(_0xc17ab3,_0x4319a7-0x61e);}return _0x560d26[_0x54bfaa(0x486,0x423)]/_0x560d26['drawingBufferHeight'];},'H':function(){function _0x3ccf83(_0xca7c4b,_0x97917c){return _0x2b6b9f(_0x97917c,_0xca7c4b-0x29b);}return _0x2b950c['H'][_0x3ccf83(0xa8,0x9e)];},'hRange':function(){function _0x5af216(_0x10cb0b,_0x1d9fd4){return _0x2b6b9f(_0x1d9fd4,_0x10cb0b-0x474);}function _0x359478(_0x56bd60,_0x38784f){return _0x2b6b9f(_0x56bd60,_0x38784f-0xec);}return new Cesium$4['Cartesian2'](_0x2b950c['H'][_0x5af216(0x260,0x28f)],_0x2b950c['H'][_0x359478(-0x93,-0x64)]);},'uSpeedRange':function(){function _0x1d8db8(_0x3a7ff5,_0x5791d9){return _0x2b6b9f(_0x5791d9,_0x3a7ff5-0x2dc);}return new Cesium$4['Cartesian2'](_0x2b950c['U']['min'],_0x2b950c['U'][_0x1d8db8(0x18c,0x11c)]);},'vSpeedRange':function(){return new Cesium$4['Cartesian2'](_0x2b950c['V']['min'],_0x2b950c['V']['max']);},'wSpeedRange':function(){function _0x3f4c6c(_0x34ee10,_0x37a4e4){return _0x51ef2b(_0x37a4e4-0x125,_0x34ee10);}return new Cesium$4[(_0x3f4c6c(0xce,0x52))](_0x2b950c['W']['min'],_0x2b950c['W']['max']);},'pixelSize':function(){return _0x3bd09b['pixelSize'];},'lineWidth':function(){return _0xc3c7de['lineWidth'];},'particleHeight':function(){function _0x1e9b10(_0x29ed7c,_0x597b7d){return _0x2b6b9f(_0x597b7d,_0x29ed7c-0x5f4);}return _0xc3c7de[_0x1e9b10(0x4a8,0x42c)];},'colour':function(){return _0x22d48d['colour'];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x26f365),'fragmentShaderSource':new Cesium$4['ShaderSource'](_0x368645),'rawRenderState':Util['createRawRenderState'](_0x4cf8dc),'framebuffer':this[_0x51ef2b(-0x1bd,-0x15e)][_0x2b6b9f(-0x11c,-0x152)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':_0x2b6b9f(-0x113,-0x15a),'attributeLocations':_0x4eace2,'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x2b6b9f(-0x1ca,-0x218)][_0x2b6b9f(-0x114,-0x197)],'uniformMap':{'segmentsColorTexture':function(){return _0x22d48d['textures']['segmentsColor'];},'segmentsDepthTexture':function(){function _0xaeec3b(_0x521d2d,_0x4f8815){return _0x2b6b9f(_0x4f8815,_0x521d2d-0x6a4);}return _0x22d48d[_0xaeec3b(0x52f,0x50e)]['segmentsDepth'];},'currentTrailsColor':function(){function _0x40cb97(_0x201714,_0x34ad36){return _0x2b6b9f(_0x34ad36,_0x201714-0x4dc);}function _0x23630a(_0xa67fb0,_0x22eaf5){return _0x2b6b9f(_0x22eaf5,_0xa67fb0-0x62);}return _0x22d48d[_0x23630a(-0x190,-0x165)][_0x23630a(-0x12b,-0xa8)][_0x23630a(-0x15a,-0xe7)](0x0);},'trailsDepthTexture':function(){function _0x364645(_0x2bc63b,_0x189679){return _0x2b6b9f(_0x189679,_0x2bc63b-0x4e7);}function _0x40939f(_0x68d32d,_0x16e0f4){return _0x51ef2b(_0x68d32d-0x550,_0x16e0f4);}return _0x22d48d[_0x364645(0x2f5,0x366)]['currentTrails'][_0x40939f(0x3bf,0x404)];},'fadeOpacity':function(){return _0xc3c7de['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x4bff2a),'fragmentShaderSource':new Cesium$4[(_0x2b6b9f(-0xfc,-0x171))](_0x3779c0),'rawRenderState':Util[_0x51ef2b(-0xec,-0x62)]({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this[_0x51ef2b(-0x1bd,-0x1e4)]['nextTrails'],'autoClear':!![],'preExecute':function(){function _0x3dcf0(_0xf42fbb,_0x62ada3){return _0x2b6b9f(_0xf42fbb,_0x62ada3-0x18e);}if(_0xc3c7de['dynamic']){const _0x3fad89=_0x22d48d['framebuffers']['currentTrails'];_0x22d48d['framebuffers'][_0x3dcf0(0x63,0x1)]=_0x22d48d[_0x3dcf0(-0x7e,-0x64)][_0x3387f3(-0x172,-0x16e)],_0x22d48d[_0x3dcf0(-0xd7,-0x64)][_0x3387f3(-0x1d3,-0x16e)]=_0x3fad89;}function _0x3387f3(_0x33863e,_0x5299e6){return _0x2b6b9f(_0x33863e,_0x5299e6-0x8c);}_0x22d48d[_0x3dcf0(-0x3b,-0x76)]['trails']['commandToExecute']['framebuffer']=_0x22d48d['framebuffers']['nextTrails'],_0x22d48d[_0x3dcf0(-0x47,-0x76)][_0x3387f3(-0x169,-0x10f)]['clearCommand']['framebuffer']=_0x22d48d['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x3c9730,'geometry':Util[_0x2b6b9f(-0xe9,-0x167)](),'primitiveType':Cesium$4[_0x51ef2b(-0x1e3,-0x195)][_0x2b6b9f(-0x1de,-0x197)],'uniformMap':{'trailsColorTexture':function(){function _0x4089ae(_0x46f126,_0x138971){return _0x51ef2b(_0x138971-0x3e,_0x46f126);}function _0x560f56(_0x159067,_0x2f5935){return _0x2b6b9f(_0x2f5935,_0x159067-0x2c8);}return _0x22d48d[_0x560f56(0xd6,0xc9)][_0x4089ae(-0x188,-0x187)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0x24a175(_0x4b223e,_0x3c6e48){return _0x51ef2b(_0x4b223e-0x42f,_0x3c6e48);}return _0x22d48d['framebuffers'][_0x24a175(0x26a,0x299)]['depthTexture'];}},'vertexShaderSource':new Cesium$4[(_0x2b6b9f(-0x166,-0x171))](_0x394121),'fragmentShaderSource':new Cesium$4[(_0x51ef2b(-0x13c,-0xed))](_0x1c38ef),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':_0x40644e,'depthMask':!![],'blending':_0x1a36e4}),'framebuffer':undefined})};}}var CalculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20W;\x20//\x20upward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0auniform\x20float\x20speedScaleFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20//\x20map\x20the\x20z-axis\x20value\x20to\x20the\x20nearest\x20bit\x20plane\x20to\x20ensure\x20that\x20the\x20result\x20is\x20an\x20integer\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205,\x207,\x208,\x209],\x20width\x20=\x202,\x20height\x20=\x202,\x20level\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x206\x207\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x202\x203\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0afloat\x20interpolateTexture(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x201.0f\x20*\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x201.0f\x20*\x20interval.y;\x0a\x0a\x20\x20float\x20lon0_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon1_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon0_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat1,\x20lev));\x0a\x20\x20float\x20lon1_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat1,\x20lev));\x0a\x0a\x20\x20float\x20lon_lat0\x20=\x20mix(lon0_lat0,\x20lon1_lat0,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat1\x20=\x20mix(lon0_lat1,\x20lon1_lat1,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat\x20=\x20mix(lon_lat0,\x20lon_lat1,\x20lat\x20-\x20lat0);\x0a\x20\x20return\x20lon_lat;\x0a}\x0a\x0avec3\x20linearInterpolation(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bilinear_interpolation\x0a\x20\x20float\x20u\x20=\x20interpolateTexture(U,\x20lonLatLev);\x0a\x20\x20float\x20v\x20=\x20interpolateTexture(V,\x20lonLatLev);\x0a\x20\x20float\x20w\x20=\x20interpolateTexture(W,\x20lonLatLev);\x0a\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.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\x0avec3\x20convertSpeedUnitToLonLat(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20float\x20w\x20=\x20speed.z;\x0a\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20return\x20windVectorInLonLatLev;\x0a}\x0a\x0avec3\x20calculateSpeedByRungeKutta2(vec3\x20lonLatLev)\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\x20vec3\x20y_n\x20=\x20lonLatLev;\x0a\x20\x20vec3\x20f_n\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec3\x20speed\x20=\x20h\x20*\x20linearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20getRange(vec2\x20range)\x20{\x0a\x20\x20float\x20x1\x20=\x200.0f\x20-\x20range.x;\x0a\x20\x20float\x20x2\x20=\x20range.y\x20-\x200.0f;\x0a\x20\x20if(x1\x20<\x200.0f\x20||\x20x2\x20<\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(abs(x1),\x20abs(x2));\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x20abs(max(x1,\x20x2)));\x0a\x20\x20}\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20vec2\x20uRange\x20=\x20getRange(uSpeedRange);\x0a\x20\x20vec2\x20vRange\x20=\x20getRange(vSpeedRange);\x0a\x20\x20vec2\x20wRange\x20=\x20getRange(wSpeedRange);\x0a\x20\x20if(length(speed.xyz)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x200.0f;\x0a\x20\x20}\x0a\x0a\x20\x20percent.x\x20=\x20(abs(speed.x)\x20-\x20uRange.x)\x20/\x20(uRange.y\x20-\x20uRange.x);\x0a\x20\x20percent.y\x20=\x20(abs(speed.y)\x20-\x20vRange.x)\x20/\x20(vRange.y\x20-\x20vRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(abs(speed.z)\x20-\x20wRange.x)\x20/\x20(wRange.y\x20-\x20wRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speedOrigin\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLatLev);\x0a\x20\x20vec3\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLatLev,\x20speed);\x0a\x0a\x20\x20vec4\x20particleSpeed\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speed\x20/\x20speedScaleFactor));\x0a\x20\x20\x20\x20//\x20gl_FragColor\x20=\x20particleSpeed;\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',PostProcessingPositionShader=_0x33bcfd(-0x11e,-0x166),UpdatePositionShader=_0xfdf2d7(0x98,0x2f);const Cesium$3=mars3d__namespace[_0xfdf2d7(-0x52,-0x47)];class ParticlesComputing{constructor(_0x40ee70,_0xacd8bb,_0x5a1613,_0x5df7c4){this['data']=_0xacd8bb;function _0x513733(_0x4ff8f9,_0x500a13){return _0xfdf2d7(_0x500a13- -0x114,_0x4ff8f9);}this['createWindTextures'](_0x40ee70,_0xacd8bb),this[_0x513733(-0x16a,-0x112)](_0x40ee70,_0x5a1613,_0x5df7c4),this['createComputingPrimitives'](_0xacd8bb,_0x5a1613,_0x5df7c4);}['createWindTextures'](_0x16ca44,_0x41d50b){function _0x2c9623(_0x4407c9,_0x397a92){return _0x33bcfd(_0x4407c9-0x534,_0x397a92);}var _0x3e7c9d;function _0x2154cc(_0x9e8063,_0x5c8d51){return _0x33bcfd(_0x9e8063-0x64,_0x5c8d51);}const _0x18cf3a={'context':_0x16ca44,'width':_0x41d50b['dimensions']['lon'],'height':_0x41d50b['dimensions']['lat']*(_0x41d50b[_0x2c9623(0x2f3,0x37c)]['lev']||0x1),'pixelFormat':Cesium$3[_0x2c9623(0x349,0x3ca)][_0x2154cc(-0xed,-0x104)],'pixelDatatype':Cesium$3[_0x2154cc(-0x1ab,-0x1cc)]['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x2154cc(-0x1a0,-0x1b3)]})};this['windTextures']={'U':Util['createTexture'](_0x18cf3a,_0x41d50b['U']['array']),'V':Util['createTexture'](_0x18cf3a,_0x41d50b['V']['array']),'W':Util[_0x2154cc(-0x15c,-0x131)](_0x18cf3a,((_0x3e7c9d=_0x41d50b['W'])===null||_0x3e7c9d===void 0x0?void 0x0:_0x3e7c9d['array'])??_0x41d50b['U']['array']),'H':Util['createTexture'](_0x18cf3a,_0x41d50b['H']['array'])};}['createParticlesTextures'](_0x377e71,_0x5467a3,_0x36b03f){const _0xc60806={'context':_0x377e71,'width':_0x5467a3['particlesTextureSize'],'height':_0x5467a3[_0x5b7ad7(0x325,0x39d)],'pixelFormat':Cesium$3[_0x5b7ad7(0x35d,0x3ef)]['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x56754e(-0x23b,-0x261))]({'minificationFilter':Cesium$3[_0x5b7ad7(0x406,0x387)][_0x5b7ad7(0x344,0x2b0)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};function _0x56754e(_0xc76d78,_0x4f38dd){return _0x33bcfd(_0xc76d78- -0x9e,_0x4f38dd);}const _0x83e0bd=this[_0x5b7ad7(0x352,0x3a3)](_0x5467a3['maxParticles'],_0x36b03f);function _0x5b7ad7(_0x5ef270,_0x550399){return _0xfdf2d7(_0x5ef270-0x365,_0x550399);}const _0x493d78=new Float32Array(0x4*_0x5467a3['maxParticles'])['fill'](0x0);this['particlesTextures']={'previousParticlesPosition':Util[_0x5b7ad7(0x388,0x33d)](_0xc60806,_0x83e0bd),'currentParticlesPosition':Util[_0x56754e(-0x25e,-0x1d1)](_0xc60806,_0x83e0bd),'nextParticlesPosition':Util[_0x5b7ad7(0x388,0x36a)](_0xc60806,_0x83e0bd),'postProcessingPosition':Util['createTexture'](_0xc60806,_0x83e0bd),'particlesSpeed':Util['createTexture'](_0xc60806,_0x493d78)};}['randomizeParticles'](_0x1673b4,_0x476685){function _0x33e1d4(_0x2faaf5,_0x5f3813){return _0xfdf2d7(_0x5f3813-0x49a,_0x2faaf5);}const _0x1260a6=new Float32Array(0x4*_0x1673b4);for(let _0x50e251=0x0;_0x50e251<_0x1673b4;_0x50e251++){_0x1260a6[0x4*_0x50e251]=Cesium$3['Math']['randomBetween'](_0x476685[_0x33e1d4(0x4e4,0x527)]['x'],_0x476685[_0x413538(0x45a,0x3f8)]['y']),_0x1260a6[0x4*_0x50e251+0x1]=Cesium$3['Math'][_0x413538(0x3ca,0x34f)](_0x476685[_0x413538(0x3b3,0x438)]['x'],_0x476685[_0x33e1d4(0x49b,0x480)]['y']),_0x1260a6[0x4*_0x50e251+0x2]=Cesium$3['Math']['randomBetween'](this[_0x413538(0x3d1,0x40e)]['lev']['min'],this[_0x33e1d4(0x4be,0x49e)]['lev']['max']),_0x1260a6[0x4*_0x50e251+0x3]=0x0;}function _0x413538(_0xc5fea4,_0x2d8991){return _0x33bcfd(_0xc5fea4-0x5b0,_0x2d8991);}return _0x1260a6;}['getValidRange'](_0xa31ab){const _0x4c6e1e=[_0xa31ab['dimensions'][_0xf2b391(-0x157,-0xf1)],_0xa31ab['dimensions']['lat'],_0xa31ab[_0xf2b391(-0x238,-0x1a8)]['lev']],_0x16dadc=[_0xa31ab[_0xe80046(0x2ea,0x2cc)][_0xf2b391(-0x223,-0x191)],_0xa31ab['lat'][_0xf2b391(-0x223,-0x269)],_0xa31ab[_0xf2b391(-0x195,-0x1af)]['min']],_0xbffbf9=[_0xa31ab['lon'][_0xf2b391(-0x15f,-0x1dd)],_0xa31ab[_0xf2b391(-0x19a,-0x1f5)]['max'],_0xa31ab[_0xf2b391(-0x195,-0x122)][_0xe80046(0x2e2,0x2c5)]],_0x589201=[(_0xbffbf9[0x0]-_0x16dadc[0x0])/(_0x4c6e1e[0x0]-0x1),(_0xbffbf9[0x1]-_0x16dadc[0x1])/(_0x4c6e1e[0x1]-0x1),_0x4c6e1e[0x2]>0x1?(_0xbffbf9[0x2]-_0x16dadc[0x2])/(_0x4c6e1e[0x2]-0x1):0x1],_0x570422=Math[_0xe80046(0x2f5,0x358)](Math[_0xe80046(0x266,0x1d1)]()*_0xa31ab['U'][_0xf2b391(-0x202,-0x1aa)]['length']),_0x46529d=_0x570422%(_0x4c6e1e[0x0]*_0x4c6e1e[0x1]),_0x25ad96=Math[_0xf2b391(-0x14c,-0x1cf)](_0x46529d/_0x4c6e1e[0x0]);function _0xf2b391(_0x4dff0b,_0x126889){return _0x33bcfd(_0x4dff0b-0x9,_0x126889);}function _0xe80046(_0x1bb1cf,_0x2b02f1){return _0x33bcfd(_0x1bb1cf-0x44a,_0x2b02f1);}const _0xc6f52c=_0x46529d%_0x4c6e1e[0x0],_0x2f161a=Cesium$3['Math']['randomBetween'](_0x16dadc[0x0]+_0xc6f52c*_0x589201[0x0],_0x16dadc[0x0]+(_0xc6f52c+0x1)*_0x589201[0x0]),_0x25b89d=Cesium$3['Math']['randomBetween'](_0x16dadc[0x1]+(_0x25ad96-0x1)*_0x589201[0x1],_0x16dadc[0x1]+_0x25ad96*_0x589201[0x1]),_0x4ad49b=_0xa31ab['H'][_0xe80046(0x23f,0x1f3)][_0x570422]||0x0;return[_0x2f161a,_0x25b89d,_0x4ad49b];}[_0xfdf2d7(-0x36,-0x1e)](){function _0x3d19d1(_0x35e4e3,_0x5acea6){return _0x33bcfd(_0x35e4e3-0x514,_0x5acea6);}Object['keys'](this['particlesTextures'])[_0x3d19d1(0x2f2,0x2ad)](_0x3722f7=>{function _0x4e3e5f(_0x1e5bd9,_0x387aaa){return _0x3d19d1(_0x1e5bd9-0x3b,_0x387aaa);}function _0x3b4705(_0x133dba,_0x530602){return _0x3d19d1(_0x530602- -0x55c,_0x133dba);}this[_0x3b4705(-0x20c,-0x205)][_0x3722f7][_0x3b4705(-0x2c0,-0x26c)]();});}[_0xfdf2d7(0xbb,0xee)](_0x3b1e3a,_0x2fb8ea,_0x339653){const _0x529db5=new Cesium$3['Cartesian3'](_0x3b1e3a['dimensions']['lon'],_0x3b1e3a[_0x4c4f77(-0x5b,-0x9d)][_0x4c4f77(0x43,0x56)],_0x3b1e3a[_0x4c4f77(-0x5b,-0x41)]['lev']),_0x3345b1=new Cesium$3[(_0x1e7cdf(-0xef,-0x60))](_0x3b1e3a[_0x4c4f77(0x86,0xcb)][_0x4c4f77(-0x46,-0x2d)],_0x3b1e3a['lat']['min'],_0x3b1e3a[_0x4c4f77(0x48,0xa7)]['min']),_0x37336a=new Cesium$3[(_0x1e7cdf(-0xef,-0xa0))](_0x3b1e3a['lon']['max'],_0x3b1e3a[_0x4c4f77(0x43,-0x29)][_0x1e7cdf(-0x86,-0x69)],_0x3b1e3a['lev'][_0x1e7cdf(-0x86,-0x35)]),_0x75ef4d=new Cesium$3['Cartesian3']((_0x37336a['x']-_0x3345b1['x'])/(_0x529db5['x']-0x1),(_0x37336a['y']-_0x3345b1['y'])/(_0x529db5['y']-0x1),_0x529db5['z']>0x1?(_0x37336a['z']-_0x3345b1['z'])/(_0x529db5['z']-0x1):0x1),_0x1ec177=new Cesium$3[(_0x1e7cdf(-0x3e,-0xa8))](_0x3b1e3a[_0x1e7cdf(-0x7e,-0xb7)][_0x1e7cdf(-0x14a,-0xc1)],_0x3b1e3a[_0x1e7cdf(-0x7e,-0x35)]['max']),_0x80a730=new Cesium$3[(_0x1e7cdf(-0x3e,-0x23))](_0x3b1e3a[_0x4c4f77(0x43,-0x2a)][_0x4c4f77(-0x46,0x3b)],_0x3b1e3a['lat']['max']),_0x1584aa=new Cesium$3['Cartesian2'](_0x3b1e3a['U'][_0x1e7cdf(-0x14a,-0x13e)],_0x3b1e3a['U'][_0x1e7cdf(-0x86,-0x92)]),_0x4b9bcf=new Cesium$3['Cartesian2'](_0x3b1e3a['V']['min'],_0x3b1e3a['V']['max']),_0x15a557=new Cesium$3['Cartesian2'](_0x3b1e3a['W']['min'],_0x3b1e3a['W'][_0x1e7cdf(-0x86,-0xa7)]),_0x408c72=this,_0xecec06={};_0xecec06['U']=function(){return _0x408c72['windTextures']['U'];},_0xecec06['V']=function(){function _0x2925ea(_0x27115a,_0x3f40b8){return _0x1e7cdf(_0x3f40b8- -0x49,_0x27115a);}return _0x408c72[_0x2925ea(-0x115,-0x149)]['V'];},_0xecec06['W']=function(){function _0x13abd0(_0x45b8dd,_0x33b07c){return _0x4c4f77(_0x33b07c- -0x52,_0x45b8dd);}return _0x408c72[_0x13abd0(-0x2d,-0x4e)]['W'];},_0xecec06['currentParticlesPosition']=function(){return _0x408c72['particlesTextures']['currentParticlesPosition'];},_0xecec06[_0x4c4f77(-0xc,0x57)]=function(){return _0x529db5;},_0xecec06['minimum']=function(){return _0x3345b1;};function _0x1e7cdf(_0xe4febd,_0x162650){return _0x33bcfd(_0xe4febd-0xe2,_0x162650);}_0xecec06[_0x1e7cdf(-0x10e,-0xa4)]=function(){return _0x37336a;},_0xecec06['interval']=function(){return _0x75ef4d;},_0xecec06['uSpeedRange']=function(){return _0x1584aa;},_0xecec06['vSpeedRange']=function(){return _0x4b9bcf;},_0xecec06[_0x4c4f77(0x88,0xf)]=function(){return _0x15a557;},_0xecec06['speedScaleFactor']=function(){function _0x2678df(_0x4c7df6,_0x25e95f){return _0x1e7cdf(_0x25e95f-0x20d,_0x4c7df6);}return _0x339653[_0x2678df(0x15a,0x101)]*_0x2fb8ea['speedFactor'];};function _0x4c4f77(_0x4cb3d0,_0x400f67){return _0x33bcfd(_0x4cb3d0-0x1e6,_0x400f67);}const _0x1d2c60={};_0x1d2c60['sources']=[CalculateSpeedShader];const _0xcd80a5={};_0xcd80a5[_0x1e7cdf(-0x45,0x25)]=[UpdatePositionShader];const _0x1f6edd={};_0x1f6edd[_0x1e7cdf(-0x45,-0x87)]=[PostProcessingPositionShader],this[_0x1e7cdf(-0x13a,-0x154)]={'calculateSpeed':new CustomPrimitive({'commandType':_0x4c4f77(0x7a,0x87),'uniformMap':_0xecec06,'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x1d2c60),'outputTexture':this[_0x4c4f77(0x29,0xbd)][_0x4c4f77(0x70,-0x8)],'preExecute':function(){function _0x4176ad(_0x3bc289,_0x11f1b3){return _0x4c4f77(_0x11f1b3-0x4cd,_0x3bc289);}function _0x5708fc(_0xf30a6f,_0x1d9932){return _0x4c4f77(_0x1d9932-0x29,_0xf30a6f);}if(_0x2fb8ea!==undefined&&_0x2fb8ea['dynamic']){const _0x300e0a=_0x408c72['particlesTextures']['previousParticlesPosition'];_0x408c72['particlesTextures'][_0x4176ad(0x4b3,0x523)]=_0x408c72['particlesTextures']['currentParticlesPosition'],_0x408c72['particlesTextures'][_0x5708fc(0x107,0xb2)]=_0x408c72['particlesTextures']['postProcessingPosition'],_0x408c72[_0x5708fc(-0x1c,0x52)]['postProcessingPosition']=_0x300e0a;}_0x408c72[_0x4176ad(0x437,0x497)]['calculateSpeed'][_0x4176ad(0x500,0x4f2)][_0x5708fc(0x2f,-0x24)]=_0x408c72['particlesTextures']['particlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':_0x4c4f77(0x7a,0xa6),'uniformMap':{'currentParticlesPosition':function(){function _0x7594ef(_0x1eb5eb,_0x465974){return _0x4c4f77(_0x465974- -0x23e,_0x1eb5eb);}return _0x408c72['particlesTextures'][_0x7594ef(-0x22e,-0x1b5)];},'particlesSpeed':function(){return _0x408c72['particlesTextures']['particlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x4c4f77(0x5d,0x6d))](_0xcd80a5),'outputTexture':this[_0x1e7cdf(-0xdb,-0xb1)][_0x1e7cdf(-0x95,-0x44)],'preExecute':function(){function _0x22f9e1(_0xf485fd,_0x48465a){return _0x4c4f77(_0xf485fd-0x3a3,_0x48465a);}function _0x2e2a21(_0x1c2b17,_0x35b18e){return _0x1e7cdf(_0x1c2b17-0x357,_0x35b18e);}_0x408c72['primitives']['updatePosition'][_0x22f9e1(0x3c8,0x3f4)]['outputTexture']=_0x408c72[_0x2e2a21(0x27c,0x251)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){function _0x43815b(_0x25d64e,_0x576c93){return _0x4c4f77(_0x576c93-0x5f,_0x25d64e);}return _0x408c72['particlesTextures'][_0x43815b(0xe5,0xce)];},'particlesSpeed':function(){function _0x506012(_0x2a2651,_0x390960){return _0x1e7cdf(_0x2a2651-0x4d7,_0x390960);}return _0x408c72[_0x506012(0x3fc,0x3c7)]['particlesSpeed'];},'viewerLonRange':function(){return _0x339653['lonRange'];},'viewerLatRange':function(){function _0x576182(_0x568c2f,_0x119204){return _0x4c4f77(_0x119204-0x2f,_0x568c2f);}return _0x339653[_0x576182(-0x30,0x18)];},'lonRange':function(){return _0x1ec177;},'latRange':function(){return _0x80a730;},'dimension':function(){return _0x529db5;},'minimum':function(){return _0x3345b1;},'maximum':function(){return _0x37336a;},'interval':function(){return _0x75ef4d;},'H':function(){return _0x408c72['windTextures']['H'];},'randomCoefficient':function(){function _0x126c3d(_0x2f24f6,_0x18a40c){return _0x1e7cdf(_0x18a40c- -0x16e,_0x2f24f6);}const _0x529f53=Math[_0x126c3d(-0x241,-0x270)]();return _0x529f53;},'dropRate':function(){return _0x2fb8ea['dropRate'];},'dropRateBump':function(){return _0x2fb8ea['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x1f6edd),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){function _0x100cae(_0x240010,_0x46274a){return _0x1e7cdf(_0x46274a-0x2d1,_0x240010);}function _0x1c01c1(_0x41bc8a,_0x4171bc){return _0x1e7cdf(_0x4171bc-0x4dd,_0x41bc8a);}_0x408c72['primitives']['postProcessingPosition'][_0x100cae(0x24f,0x1f2)]['outputTexture']=_0x408c72[_0x100cae(0x1a4,0x1f6)]['postProcessingPosition'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x42f116,_0x566010,_0x174f9d,_0x561014){this['context']=_0x42f116;function _0xda0aba(_0x541518,_0x42e826){return _0xfdf2d7(_0x541518- -0x25a,_0x42e826);}_0x566010={..._0x566010};_0x566010[_0x56904f(0x248,0x2da)]&&_0x566010['vdata']&&(_0x566010['dimensions']={},_0x566010['dimensions']['lon']=_0x566010['cols'],_0x566010['dimensions'][_0x56904f(0x2c9,0x358)]=_0x566010[_0x56904f(0x330,0x2dc)],_0x566010['dimensions']['lev']=_0x566010['lev']||0x1,_0x566010['lon']={},_0x566010[_0xda0aba(-0x1d7,-0x1ab)]['min']=_0x566010['xmin'],_0x566010['lon']['max']=_0x566010['xmax'],_0x566010[_0x56904f(0x334,0x358)]={},_0x566010['lat']['min']=_0x566010['ymin'],_0x566010['lat'][_0x56904f(0x37c,0x393)]=_0x566010[_0x56904f(0x2e7,0x333)],_0x566010['lev']={},_0x566010['lev'][_0x56904f(0x2b9,0x2cf)]=_0x566010['levmin']??0x1,_0x566010['lev'][_0x56904f(0x3bc,0x393)]=_0x566010[_0x56904f(0x2bf,0x325)]??0x1,_0x566010['U']={},_0x566010['U'][_0xda0aba(-0x282,-0x267)]=new Float32Array(_0x566010['udata']),_0x566010['U']['min']=_0x566010[_0x56904f(0x2dd,0x30f)]??Math['min'](..._0x566010['udata']),_0x566010['U']['max']=_0x566010['umax']??Math['max'](..._0x566010[_0xda0aba(-0x298,-0x2e0)]),_0x566010['V']={},_0x566010['V']['array']=new Float32Array(_0x566010[_0xda0aba(-0x2b6,-0x34c)]),_0x566010['V']['min']=_0x566010['vmin']??Math['min'](..._0x566010[_0xda0aba(-0x2b6,-0x340)]),_0x566010['V']['max']=_0x566010['vmax']??Math[_0xda0aba(-0x1df,-0x22a)](..._0x566010['vdata']));!_0x566010['W']&&(_0x566010['W']={'array':new Float32Array(_0x566010['U'][_0xda0aba(-0x282,-0x2ed)][_0xda0aba(-0x244,-0x1e2)]),'min':0x0,'max':0x0});if(!_0x566010['H']){var _0x14335f;_0x566010['H']={'array':new Float32Array(_0x566010['U']['array'][_0x56904f(0x34a,0x32e)]),'min':0x0,'max':0x0};if((_0x14335f=_0x566010['lev'])!==null&&_0x14335f!==void 0x0&&_0x14335f['array']){const {lon:_0x32c60e,lat:_0x483a19,lev:_0x21683a}=_0x566010['dimensions'];for(let _0x29bd2b=0x0;_0x29bd2b<_0x21683a;_0x29bd2b++){for(let _0x496679=0x0;_0x496679<_0x483a19;_0x496679++){for(let _0x2c17ac=0x0;_0x2c17ac<_0x32c60e;_0x2c17ac++){const _0xfc93c8=_0x29bd2b*(_0x32c60e*_0x483a19)+_0x496679*_0x32c60e+_0x2c17ac;_0x566010['H']['array'][_0xfc93c8]=_0x566010[_0x56904f(0x2d6,0x35d)]['array'][_0x29bd2b];}}}_0x566010['H']['min']=Math['min'](..._0x566010['lev'][_0xda0aba(-0x282,-0x297)]),_0x566010['H']['max']=Math['max'](..._0x566010[_0x56904f(0x3cd,0x35d)][_0x56904f(0x36e,0x2f0)]);}}function _0x56904f(_0x1e1eff,_0x5626b9){return _0x33bcfd(_0x5626b9-0x4fb,_0x1e1eff);}this[_0xda0aba(-0x256,-0x1c8)]=_0x566010,this[_0xda0aba(-0x254,-0x201)]=_0x174f9d,this['viewerParameters']=_0x561014,this['particlesComputing']=new ParticlesComputing(this['context'],this[_0x56904f(0x378,0x31c)],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0x56904f(0x3a8,0x31c)],this['options'],this[_0x56904f(0x367,0x3ae)],this[_0xda0aba(-0x280,-0x208)]);}['canvasResize'](_0x423736){this['particlesComputing']['destroyParticlesTextures']();function _0x279c2a(_0x116a60,_0x39e542){return _0x33bcfd(_0x116a60-0x193,_0x39e542);}Object[_0x23abde(0x36e,0x3e5)](this['particlesComputing'][_0x23abde(0x386,0x34e)])[_0x23abde(0x346,0x387)](_0x29a2a1=>{this['particlesComputing']['windTextures'][_0x29a2a1]['destroy']();}),this['particlesRendering']['textures'][_0x279c2a(-0x3c,0x1)][_0x279c2a(-0x91,-0x1)]();function _0x23abde(_0x30a9b0,_0x56436f){return _0xfdf2d7(_0x30a9b0-0x385,_0x56436f);}Object[_0x23abde(0x36e,0x390)](this[_0x279c2a(-0x23,0x47)]['framebuffers'])['forEach'](_0x5bca2b=>{function _0x272eaa(_0x48871f,_0x17cedc){return _0x23abde(_0x17cedc-0xb9,_0x48871f);}function _0x38f257(_0x110feb,_0x35bc8a){return _0x23abde(_0x110feb- -0x5cf,_0x35bc8a);}this[_0x272eaa(0x500,0x46b)][_0x272eaa(0x3a9,0x417)][_0x5bca2b][_0x38f257(-0x28b,-0x2d7)]();}),this[_0x279c2a(-0x3f,0x51)]=_0x423736,this['particlesComputing']=new ParticlesComputing(this[_0x23abde(0x396,0x3bf)],this[_0x23abde(0x389,0x376)],this['options'],this['viewerParameters']),this[_0x279c2a(-0x23,0x57)]=new ParticlesRendering(this['context'],this['data'],this[_0x23abde(0x38b,0x313)],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0x48df77=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x21ceb6(0x427,0x399)]['OPAQUE']});function _0x348691(_0x508d5b,_0x418ee4){return _0xfdf2d7(_0x418ee4- -0x90,_0x508d5b);}function _0x21ceb6(_0x10be19,_0x183559){return _0x33bcfd(_0x183559-0x4d5,_0x10be19);}Object['keys'](this[_0x21ceb6(0x2a5,0x31f)]['framebuffers'])[_0x21ceb6(0x298,0x2b3)](_0xdcb8ca=>{function _0x51ac3e(_0x5d0c53,_0x307338){return _0x21ceb6(_0x307338,_0x5d0c53- -0x36c);}_0x48df77['framebuffer']=this['particlesRendering'][_0x51ac3e(-0xa1,-0x135)][_0xdcb8ca],_0x48df77['execute'](this['context']);});}[_0xfdf2d7(0xc2,0xe0)](_0x58d1b6,_0x1e9336=!![]){_0x1e9336&&(this['clearFramebuffers'](),this['particlesComputing']['destroyParticlesTextures'](),this[_0x44a50a(-0x32,-0x50)]['createParticlesTextures'](this[_0x44a50a(0x5,-0x57)],this['options'],this[_0x3a7a88(-0x1bb,-0x22d)]));function _0x3a7a88(_0x45fc4c,_0x4fcaa9){return _0x33bcfd(_0x4fcaa9- -0xe0,_0x45fc4c);}function _0x44a50a(_0x1afabb,_0x205ce6){return _0x33bcfd(_0x1afabb-0x1d7,_0x205ce6);}if(_0x58d1b6){var _0x217a13;const _0x4af9a7=this[_0x44a50a(0x21,-0x1a)]['createSegmentsGeometry'](this['options']);this['particlesRendering'][_0x44a50a(-0x45,-0x90)]['segments'][_0x3a7a88(-0x18b,-0x212)]=_0x4af9a7;const _0x58549b=Cesium$2[_0x3a7a88(-0x340,-0x2c8)][_0x44a50a(0x1c,-0x32)]({'context':this['context'],'geometry':_0x4af9a7,'attributeLocations':this['particlesRendering'][_0x44a50a(-0x45,-0x1b)][_0x3a7a88(-0x286,-0x24a)][_0x44a50a(-0x54,-0x96)],'bufferUsage':Cesium$2[_0x3a7a88(-0x198,-0x1f8)][_0x3a7a88(-0x2aa,-0x2bb)]});(_0x217a13=this['particlesRendering'][_0x44a50a(-0x45,0x27)])!==null&&_0x217a13!==void 0x0&&(_0x217a13=_0x217a13[_0x44a50a(0x6d,0xfc)])!==null&&_0x217a13!==void 0x0&&_0x217a13['commandToExecute']&&(this['particlesRendering']['primitives']['segments']['commandToExecute']['vertexArray']=_0x58549b);}}[_0x33bcfd(-0x16f,-0x168)](_0x247eac){let _0x5554f2=![];function _0x10b571(_0x5246c6,_0x2c1205){return _0x33bcfd(_0x2c1205-0x4c9,_0x5246c6);}function _0x4d6bdf(_0x1edbe7,_0x151c97){return _0x33bcfd(_0x1edbe7-0x32b,_0x151c97);}this['options'][_0x4d6bdf(0x205,0x16f)]!==_0x247eac['maxParticles']&&(_0x5554f2=!![]),Object[_0x4d6bdf(0x131,0x122)](_0x247eac)[_0x4d6bdf(0x109,0x124)](_0xe373ea=>{this['options'][_0xe373ea]=_0x247eac[_0xe373ea];}),this['refreshParticles'](_0x5554f2,_0x247eac['dynamic']);}['applyViewerParameters'](_0x585b00){function _0x4d8c38(_0x3d5c7d,_0x3fd50e){return _0x33bcfd(_0x3d5c7d- -0x6b,_0x3fd50e);}Object['keys'](_0x585b00)[_0x4d8c38(-0x28d,-0x2b0)](_0x3c1d59=>{function _0x55f1df(_0x14f2a1,_0x559a2f){return _0x4d8c38(_0x559a2f- -0x4,_0x14f2a1);}this[_0x55f1df(-0x165,-0x1bc)][_0x3c1d59]=_0x585b00[_0x3c1d59];});function _0x3efb99(_0x21a731,_0x1cd869){return _0x33bcfd(_0x1cd869-0x242,_0x21a731);}this[_0x4d8c38(-0x18c,-0x184)](![]),!this[_0x4d8c38(-0x248,-0x277)]['dynamic']&&(this[_0x3efb99(0xe,0x65)]['dynamic']=!![],this[_0x4d8c38(-0x1da,-0x1fa)](this['options']),setTimeout(()=>{this['options']['dynamic']=![],this['setOptions'](this['options']);},0x1f4));}[_0xfdf2d7(-0x41,-0x9f)](){function _0x23758b(_0x301160,_0x358424){return _0xfdf2d7(_0x358424-0x311,_0x301160);}clearTimeout(this[_0x3926df(0x29e,0x2ac)]),this[_0x3926df(0x233,0x220)][_0x23758b(0x2fc,0x2db)](),Object['keys'](this[_0x23758b(0x2a0,0x2eb)]['windTextures'])['forEach'](_0x463856=>{function _0x257e87(_0x4cd455,_0x36ccca){return _0x23758b(_0x36ccca,_0x4cd455- -0x511);}this['particlesComputing']['windTextures'][_0x463856][_0x257e87(-0x241,-0x241)]();}),this[_0x23758b(0x372,0x33e)]['textures'][_0x3926df(0x1dd,0x25a)][_0x3926df(0x211,0x205)](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0xbb6979=>{function _0x4b170a(_0xa3f3cb,_0x59ee27){return _0x3926df(_0x59ee27,_0xa3f3cb- -0x64);}function _0x5e8e5a(_0x35ec8c,_0x2473cf){return _0x3926df(_0x35ec8c,_0x2473cf- -0x1a2);}this['particlesRendering'][_0x5e8e5a(0x29,0x7d)][_0xbb6979][_0x5e8e5a(0xf1,0x63)]();});function _0x3926df(_0x5f1ecb,_0x569945){return _0xfdf2d7(_0x569945-0x246,_0x5f1ecb);}for(const _0x1fd96f in this){delete this[_0x1fd96f];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],_0x224140={};_0x224140['particlesNumber']=0x1000,_0x224140[_0xfdf2d7(0x61,-0x15)]=0x0,_0x224140['fadeOpacity']=0.996,_0x224140[_0x33bcfd(-0x1e7,-0x1c4)]=0.003,_0x224140[_0xfdf2d7(-0x30,-0x19)]=0.01;function _0x33bcfd(_0x1a6e21,_0x14aaf8){return _0x3060(_0x1a6e21- -0x2fc,_0x14aaf8);}_0x224140['speedFactor']=0.5,_0x224140['lineWidth']=0x2,_0x224140[_0xfdf2d7(0x65,0x93)]=[_0x33bcfd(-0x133,-0x180)],_0x224140[_0x33bcfd(-0x175,-0x12e)]=!![];const DEF_OPTIONS=_0x224140;class WindLayer extends BaseLayer$1{constructor(_0x592798={}){_0x592798={...DEF_OPTIONS,..._0x592798},super(_0x592798),this['_setOptionsHook'](_0x592798);}get['layer'](){return this['primitives'];}get['data'](){return this['_data'];}set['data'](_0x59af1a){function _0x107096(_0x5a3c0b,_0xda74e0){return _0xfdf2d7(_0x5a3c0b-0x3e8,_0xda74e0);}this[_0x107096(0x3c3,0x3c2)](_0x59af1a);}get[_0xfdf2d7(0x65,0x0)](){function _0x5a3f24(_0x5be60d,_0x419d8d){return _0xfdf2d7(_0x5be60d-0x41d,_0x419d8d);}return this[_0x5a3f24(0x423,0x3f0)]['colors'];}set['colors'](_0x4a81d3){function _0x52f729(_0x4cc70f,_0x113344){return _0x33bcfd(_0x4cc70f-0x69d,_0x113344);}this['options']['colors']=_0x4a81d3;if(this['particleSystem']){const _0x2e318c={};_0x2e318c['colors']=_0x4a81d3,this[_0x52f729(0x57b,0x5fb)]['setOptions'](_0x2e318c);}this['resize']();}['_mountedHook'](){}[_0x33bcfd(-0x14e,-0x112)](){this[_0x2a3a45(0x6c,0x9d)]=this[_0x2a3a45(-0x36,0x5d)][_0x2a3a45(0x6c,0xb9)],this['camera']=this[_0x5102d1(-0x45,-0xa9)][_0x2a3a45(-0x73,0x1)],this['primitives']=new Cesium$1[(_0x5102d1(0x8f,0x1f))](),this['_map'][_0x5102d1(0x5d,-0x19)][_0x2a3a45(-0x68,-0x14)]['add'](this[_0x2a3a45(-0x68,-0xf9)]),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0,'lonDisplayRange':new Cesium$1[(_0x2a3a45(0x94,0x95))](),'latDisplayRange':new Cesium$1['Cartesian2']()},this['globeBoundingSphere']=new Cesium$1['BoundingSphere'](Cesium$1[_0x5102d1(-0x2c,-0x34)][_0x5102d1(-0x13,0x11)],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this['resize']['bind'](this),![]),this[_0x5102d1(-0x8d,-0xdf)]=![];function _0x2a3a45(_0x4535f1,_0x174a7d){return _0x33bcfd(_0x4535f1-0x1b4,_0x174a7d);}function _0x5102d1(_0x4e8b87,_0x505a44){return _0xfdf2d7(_0x4e8b87- -0x3e,_0x505a44);}this[_0x2a3a45(0x51,-0xb)]=![],this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace[_0x2a3a45(-0x17,-0x9c)]['mouseDown'],this['_onMouseDownEvent'],this),this[_0x2a3a45(-0x36,-0x47)]['on'](mars3d__namespace[_0x5102d1(-0x26,-0x2)][_0x5102d1(-0x99,-0x104)],this[_0x5102d1(0x2d,0x1)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x5102d1(0x78,0x106)],this),this['_data']&&this['setData'](this['_data']);}[_0xfdf2d7(0xac,0xe6)](){function _0x2b54b3(_0x567f1d,_0x4ffe9e){return _0xfdf2d7(_0x4ffe9e- -0x1ff,_0x567f1d);}window['removeEventListener'](_0x2b54b3(-0x20f,-0x1f4),this['resize']);function _0xd54e68(_0x4fca33,_0x3b38fb){return _0x33bcfd(_0x3b38fb-0x55c,_0x4fca33);}this['_map']['off'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this[_0xd54e68(0x3b8,0x372)][_0xd54e68(0x3a6,0x3c8)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0xd54e68(0x3bf,0x372)][_0xd54e68(0x354,0x3c8)](mars3d__namespace[_0xd54e68(0x34d,0x391)]['mouseDown'],this[_0xd54e68(0x3b1,0x3e1)],this),this['_map']['off'](mars3d__namespace['EventType'][_0x2b54b3(-0x1d2,-0x25a)],this['_onMouseUpEvent'],this),this[_0x2b54b3(-0x201,-0x206)][_0x2b54b3(-0x234,-0x1b0)](mars3d__namespace['EventType'][_0x2b54b3(-0x168,-0x1a8)],this['_onMouseMoveEvent'],this),this['primitives'][_0xd54e68(0x3a2,0x409)](),this['_map'][_0x2b54b3(-0x15b,-0x164)]['primitives']['remove'](this['primitives']);}[_0xfdf2d7(0xb,0x2b)](){if(!this['show']||!this['particleSystem'])return;function _0x147106(_0x39e3ae,_0x4beeee){return _0x33bcfd(_0x39e3ae-0x3f7,_0x4beeee);}this[_0x147106(0x1db,0x23a)][_0x147106(0x2c3,0x2fa)]=![];function _0xe3bd24(_0x32089a,_0x7bf029){return _0x33bcfd(_0x7bf029-0x111,_0x32089a);}this['primitives'][_0x147106(0x2a4,0x2b1)](),this['_map'][_0xe3bd24(-0x31,-0x13)](mars3d__namespace[_0xe3bd24(-0xe2,-0xba)][_0xe3bd24(-0x147,-0xeb)],this['_onMap_preRenderEvent'],this);}['_onMap_preRenderEvent'](_0x278926){this['particleSystem'][_0x136082(0x13c,0xaf)](this[_0x136082(0x11c,0xf6)][_0x119e3c(-0x4f,-0xae)]);function _0x119e3c(_0x308247,_0x31ea02){return _0x33bcfd(_0x308247-0x183,_0x31ea02);}function _0x136082(_0x27aaa9,_0x328a67){return _0xfdf2d7(_0x328a67-0x5b,_0x27aaa9);}this['addPrimitives'](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x4e2647){clearTimeout(this['refreshTimer']);if(!this['show']||!this[_0x15293e(-0x150,-0x1c6)])return;this['primitives']['show']=![];function _0x15293e(_0x45518d,_0x1b2a06){return _0x33bcfd(_0x45518d- -0x2e,_0x1b2a06);}this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}[_0xfdf2d7(0x68,0x30)](_0x579898){function _0x5a1e19(_0x5b4abd,_0x9fbfee){return _0x33bcfd(_0x9fbfee-0x320,_0x5b4abd);}this[_0x5a1e19(0x5b,0xee)]=!![];}['_onMouseMoveEvent'](_0xbe174f){function _0x2fb75(_0x293389,_0xf3d2d0){return _0xfdf2d7(_0xf3d2d0-0x386,_0x293389);}function _0x269e54(_0x34aa2a,_0x5d857b){return _0xfdf2d7(_0x5d857b-0x1c6,_0x34aa2a);}if(!this[_0x269e54(0x2a7,0x275)]||!this[_0x269e54(0x2de,0x287)])return;this[_0x2fb75(0x3b3,0x337)]&&(this[_0x269e54(0x146,0x18d)]['show']=![],this[_0x269e54(0x1d1,0x246)]=!![]);}[_0xfdf2d7(0x6b,-0x10)](_0x51d4a8){function _0x1bf677(_0x1d085b,_0x3f5f85){return _0x33bcfd(_0x3f5f85-0x209,_0x1d085b);}if(!this['show']||!this[_0x1bf677(0xae,0xe7)])return;this['mouse_down']&&this['mouse_move']&&this['redraw']();this[_0x1424a2(-0x4d,-0xc5)]['show']=!![];function _0x1424a2(_0x551f24,_0x3b108c){return _0x33bcfd(_0x3b108c-0x157,_0x551f24);}this['mouse_down']=![],this['mouse_move']=![];}['redraw'](){if(!this['_map']||!this['show'])return;function _0x1ea733(_0x922cde,_0x5e1033){return _0x33bcfd(_0x922cde-0x6be,_0x5e1033);}this['updateViewerParameters']();function _0x1a19cd(_0x2fbff8,_0x31d82a){return _0xfdf2d7(_0x31d82a- -0x8,_0x2fbff8);}this['particleSystem'][_0x1a19cd(0x76,-0x19)](this['viewerParameters']),this[_0x1a19cd(0x31,-0x41)]['show']=!![];}['setData'](_0x1fb6f3){this['_data']=_0x1fb6f3;this[_0x3dfffb(0x23b,0x20b)]&&this[_0x3dfffb(0x194,0x20b)]['destroy']();function _0x3dfffb(_0x202dd5,_0x4caa9b){return _0xfdf2d7(_0x4caa9b-0x14a,_0x202dd5);}this['particleSystem']=new ParticleSystem(this['scene'][_0x3dfffb(0x1f2,0x15b)],_0x1fb6f3,this['getOptions'](),this[_0x46724a(-0x1bc,-0x231)]);function _0x46724a(_0x22ce39,_0x5d673f){return _0xfdf2d7(_0x5d673f- -0x2c7,_0x22ce39);}this[_0x3dfffb(0x173,0x1fd)]();}['_setOptionsHook'](_0x2b9679,_0x4f3efd){function _0x348b31(_0x4b10c0,_0x156429){return _0xfdf2d7(_0x4b10c0-0x3e1,_0x156429);}if(_0x2b9679)for(const _0x495954 in _0x2b9679){this[_0x495954]=_0x2b9679[_0x495954];}this[_0x348b31(0x4a2,0x45e)]&&this['particleSystem']['setOptions'](this['getOptions']());}['getOptions'](){const _0x2500cd=Math['ceil'](Math['sqrt'](this[_0x196b1e(0x2b2,0x273)]));this['particlesNumber']=_0x2500cd*_0x2500cd;const _0x4e60f1={};_0x4e60f1[_0x39788e(0x148,0x161)]=_0x2500cd;function _0x39788e(_0x14e7d8,_0x215214){return _0x33bcfd(_0x14e7d8-0x36b,_0x215214);}_0x4e60f1['maxParticles']=this['particlesNumber'],_0x4e60f1['colors']=this[_0x39788e(0x1ed,0x1b9)],_0x4e60f1[_0x196b1e(0x2c9,0x27a)]=this['fixedHeight'],_0x4e60f1['fadeOpacity']=this['fadeOpacity'],_0x4e60f1[_0x39788e(0x184,0x136)]=this[_0x39788e(0x184,0x1ff)],_0x4e60f1[_0x39788e(0x158,0x129)]=this['dropRateBump'],_0x4e60f1['speedFactor']=this['speedFactor'];function _0x196b1e(_0x1108ca,_0xcde327){return _0x33bcfd(_0xcde327-0x3de,_0x1108ca);}return _0x4e60f1['lineWidth']=this[_0x196b1e(0x190,0x1b8)],_0x4e60f1[_0x196b1e(0x213,0x269)]=this['dynamic'],_0x4e60f1;}[_0x33bcfd(-0x130,-0x104)](){this['primitives']['add'](this[_0x360ec9(0x211,0x2a0)]['particlesComputing']['primitives'][_0x5458f1(0x2e5,0x340)]),this[_0x5458f1(0x277,0x2d9)]['add'](this['particleSystem']['particlesComputing'][_0x5458f1(0x277,0x2a3)]['updatePosition']);function _0x5458f1(_0x26ba86,_0x40170e){return _0x33bcfd(_0x26ba86-0x493,_0x40170e);}this['primitives'][_0x360ec9(0x12d,0x133)](this['particleSystem'][_0x5458f1(0x28a,0x287)][_0x5458f1(0x277,0x30a)][_0x360ec9(0x1c6,0x1fc)]),this['primitives']['add'](this['particleSystem'][_0x5458f1(0x2dd,0x2a9)]['primitives']['segments']),this[_0x5458f1(0x277,0x1f7)]['add'](this['particleSystem']['particlesRendering']['primitives']['trails']);function _0x360ec9(_0x2c47e9,_0x4038ca){return _0x33bcfd(_0x2c47e9-0x333,_0x4038ca);}this[_0x5458f1(0x277,0x30b)]['add'](this[_0x5458f1(0x371,0x2ec)][_0x360ec9(0x17d,0x148)]['primitives'][_0x360ec9(0x21a,0x183)]);}[_0x33bcfd(-0x192,-0x20a)](){let _0x1f4acd=this[_0x695ab2(-0x207,-0x1ac)][_0x5f1560(0x537,0x5b8)](this['scene'][_0x695ab2(-0x126,-0x1b3)]['ellipsoid']);if(!_0x1f4acd){const _0x5421c5=this['_map']['getExtent']();_0x1f4acd=Cesium$1['Rectangle']['fromDegrees'](_0x5421c5['xmin'],_0x5421c5['ymin'],_0x5421c5['xmax'],_0x5421c5['ymax']);}const _0x102582=Util[_0x695ab2(-0x182,-0xfc)](_0x1f4acd);this['_data']?(this['viewerParameters'][_0x5f1560(0x53b,0x5c3)]['x']=Math['max'](_0x102582['lon']['min'],this[_0x695ab2(-0x151,-0x1ac)]['xmin']),this['viewerParameters']['lonRange']['y']=Math['min'](_0x102582['lon']['max'],this['_data'][_0x695ab2(-0x1b5,-0x222)]),this['viewerParameters'][_0x5f1560(0x494,0x47e)]['x']=Math['max'](_0x102582['lat']['min'],this['_data'][_0x695ab2(-0x11f,-0x101)]),this[_0x5f1560(0x544,0x52c)]['latRange']['y']=Math['min'](_0x102582[_0x5f1560(0x4ee,0x497)]['max'],this['_data'][_0x695ab2(-0x1a8,-0x1b1)])):(this['viewerParameters']['lonRange']['x']=_0x102582['lon'][_0x5f1560(0x465,0x4b2)],this['viewerParameters']['lonRange']['y']=_0x102582[_0x5f1560(0x531,0x592)][_0x695ab2(-0x148,-0x1b9)],this['viewerParameters']['latRange']['x']=_0x102582['lat'][_0x695ab2(-0x20c,-0x283)],this['viewerParameters'][_0x5f1560(0x494,0x418)]['y']=_0x102582[_0x5f1560(0x4ee,0x45a)][_0x5f1560(0x529,0x551)]);function _0x5f1560(_0x58ccbe,_0x56cb2f){return _0xfdf2d7(_0x58ccbe-0x4ae,_0x56cb2f);}const _0x55e1a6=this['camera'][_0x5f1560(0x4f0,0x507)](this[_0x5f1560(0x4b5,0x4b0)],this[_0x695ab2(-0x128,-0x10a)]['drawingBufferWidth'],this[_0x695ab2(-0x128,-0x143)]['drawingBufferHeight']);function _0x695ab2(_0x58462e,_0x1c40b7){return _0x33bcfd(_0x58462e-0x20,_0x1c40b7);}_0x55e1a6>0x0&&(this['viewerParameters']['pixelSize']=_0x55e1a6);}}mars3d__namespace['LayerUtil'][_0x33bcfd(-0x1c3,-0x1c5)]('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this[_0x149287(0x386,0x384)]=null,this['tlng']=null,this['tlat']=null;function _0x1f4d10(_0x287226,_0x123abe){return _0xfdf2d7(_0x123abe- -0x96,_0x287226);}function _0x149287(_0x3730f2,_0x4959e9){return _0x33bcfd(_0x3730f2-0x529,_0x4959e9);}this['age']=null,this[_0x149287(0x3a1,0x428)]=null;}['destroy'](){for(const _0x2d7106 in this){delete this[_0x2d7106];}}}class CanvasWindField{constructor(_0x5914b2){this['setOptions'](_0x5914b2);}get['speedRate'](){return this['_speedRate'];}set[_0xfdf2d7(0xa,0x63)](_0x353d4a){function _0x4c9375(_0xe4e993,_0x560580){return _0xfdf2d7(_0x560580-0x34b,_0xe4e993);}this['_speedRate']=(0x64-(_0x353d4a>0x63?0x63:_0x353d4a))*0x64;function _0x1792fb(_0x3a1370,_0x464e99){return _0xfdf2d7(_0x464e99-0x3e6,_0x3a1370);}this[_0x4c9375(0x410,0x3c5)]=[(this['xmax']-this['xmin'])/this[_0x1792fb(0x495,0x421)],(this['ymax']-this['ymin'])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set[_0xfdf2d7(0x8b,0x110)](_0x555ac4){this['_maxAge']=_0x555ac4;}['setOptions'](_0x20fd7f){function _0x560726(_0x19d74b,_0x643c9d){return _0xfdf2d7(_0x19d74b-0x2ce,_0x643c9d);}this['options']=_0x20fd7f,this['maxAge']=_0x20fd7f['maxAge']||0x78;function _0xc09314(_0x4ec6a0,_0x9f0470){return _0xfdf2d7(_0x4ec6a0- -0xc2,_0x9f0470);}this[_0x560726(0x2d8,0x261)]=_0x20fd7f['speedRate']||0x32,this[_0xc09314(-0x6d,0x25)]=[];const _0x530e3f=_0x20fd7f[_0x560726(0x346,0x37d)]||0x1000;for(let _0x394e1e=0x0;_0x394e1e<_0x530e3f;_0x394e1e++){const _0x5e1c8d=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x5e1c8d);}}['setDate'](_0x1d684c){this[_0x427707(-0x217,-0x262)]=_0x1d684c[_0x427707(-0x217,-0x277)],this['cols']=_0x1d684c['cols'],this['xmin']=_0x1d684c['xmin'],this[_0x427707(-0x1cd,-0x231)]=_0x1d684c[_0x427707(-0x1cd,-0x1df)],this['ymin']=_0x1d684c['ymin'];function _0x427707(_0x4e8e49,_0x2f0188){return _0x33bcfd(_0x4e8e49-0x8,_0x2f0188);}this[_0x427707(-0x1c0,-0x22c)]=_0x1d684c[_0xa0d15b(-0x49,0x4b)],this['grid']=[];const _0xd0cdfa=_0x1d684c[_0x427707(-0x219,-0x19c)];function _0xa0d15b(_0x312090,_0x371c3b){return _0x33bcfd(_0x371c3b-0x213,_0x312090);}const _0x272ec2=_0x1d684c['vdata'];let _0x458950=![];_0xd0cdfa['length']===this['rows']&&_0xd0cdfa[0x0]['length']===this['cols']&&(_0x458950=!![]);let _0x136e9a=0x0,_0x542525=null,_0x383f77=null;for(let _0x4ed134=0x0;_0x4ed134<this[_0x427707(-0x217,-0x27e)];_0x4ed134++){_0x542525=[];for(let _0x431a42=0x0;_0x431a42<this['cols'];_0x431a42++,_0x136e9a++){_0x458950?_0x383f77=this[_0xa0d15b(0x68,0x6c)](_0xd0cdfa[_0x4ed134][_0x431a42],_0x272ec2[_0x4ed134][_0x431a42]):_0x383f77=this['_calcUV'](_0xd0cdfa[_0x136e9a],_0x272ec2[_0x136e9a]),_0x542525[_0xa0d15b(0x55,0x1e)](_0x383f77);}this[_0xa0d15b(0x5b,0xb4)]['push'](_0x542525);}this['options']['reverseY']&&this[_0xa0d15b(0x9e,0xb4)][_0x427707(-0x192,-0x115)]();}[_0xfdf2d7(-0x2d,0x16)](){function _0x33a8fd(_0x58f15f,_0x3a4626){return _0xfdf2d7(_0x58f15f- -0x1af,_0x3a4626);}delete this[_0x2ca3b2(-0x12,0x18)],delete this[_0x33a8fd(-0x1fa,-0x1a7)],delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this['ymax'];function _0x2ca3b2(_0x5fa1d3,_0x594b0f){return _0xfdf2d7(_0x5fa1d3-0x2a,_0x594b0f);}delete this['grid'],delete this[_0x33a8fd(-0x15a,-0x16a)];}['toGridXY'](_0x505718,_0x4c7787){function _0x42c4a8(_0x209469,_0x87a8d4){return _0xfdf2d7(_0x209469-0x307,_0x87a8d4);}function _0x35730f(_0x28e40b,_0x56ac98){return _0xfdf2d7(_0x28e40b-0x2bf,_0x56ac98);}const _0x506d81=(_0x505718-this[_0x42c4a8(0x39e,0x3c6)])/(this['xmax']-this['xmin'])*(this[_0x35730f(0x274,0x2a8)]-0x1),_0x1c65b4=(this[_0x35730f(0x2da,0x300)]-_0x4c7787)/(this[_0x35730f(0x2da,0x2de)]-this['ymin'])*(this['rows']-0x1);return[_0x506d81,_0x1c65b4];}[_0x33bcfd(-0x147,-0xd6)](_0x55c512,_0xf1214f){function _0xa387d4(_0x43b1dd,_0x363247){return _0xfdf2d7(_0x43b1dd-0x431,_0x363247);}if(_0x55c512<0x0||_0x55c512>=this[_0x2f0e4e(-0x223,-0x1c8)]||_0xf1214f>=this[_0xa387d4(0x3f5,0x3c4)])return[0x0,0x0,0x0];const _0x5d701a=Math['floor'](_0x55c512),_0x3cd17c=Math[_0x2f0e4e(-0x14a,-0xb7)](_0xf1214f);if(_0x5d701a===_0x55c512&&_0x3cd17c===_0xf1214f)return this['grid'][_0xf1214f][_0x55c512];const _0x3a9917=_0x5d701a+0x1;function _0x2f0e4e(_0x566d8b,_0x16bc73){return _0x33bcfd(_0x566d8b-0xb,_0x16bc73);}const _0x373f2b=_0x3cd17c+0x1,_0x3533b1=this['getUVByXY'](_0x5d701a,_0x3cd17c),_0x21d204=this[_0xa387d4(0x4cd,0x4d4)](_0x3a9917,_0x3cd17c),_0xe4e652=this['getUVByXY'](_0x5d701a,_0x373f2b),_0x7fe63d=this['getUVByXY'](_0x3a9917,_0x373f2b);let _0x4b130e=null;try{_0x4b130e=this['_bilinearInterpolation'](_0x55c512-_0x5d701a,_0xf1214f-_0x3cd17c,_0x3533b1,_0x21d204,_0xe4e652,_0x7fe63d);}catch(_0x3dbb24){console[_0x2f0e4e(-0x212,-0x1bb)](_0x55c512,_0xf1214f);}return _0x4b130e;}[_0xfdf2d7(-0x2,-0x49)](_0x54066f,_0x5b8241,_0x16418f,_0xde6682,_0x13b707,_0x1ed122){const _0x30b493=0x1-_0x54066f,_0x549513=0x1-_0x5b8241,_0x2bec37=_0x30b493*_0x549513,_0x242cbe=_0x54066f*_0x549513,_0x10b772=_0x30b493*_0x5b8241,_0x2411e1=_0x54066f*_0x5b8241,_0x57c78b=_0x16418f[0x0]*_0x2bec37+_0xde6682[0x0]*_0x242cbe+_0x13b707[0x0]*_0x10b772+_0x1ed122[0x0]*_0x2411e1,_0x277a39=_0x16418f[0x1]*_0x2bec37+_0xde6682[0x1]*_0x242cbe+_0x13b707[0x1]*_0x10b772+_0x1ed122[0x1]*_0x2411e1;return this['_calcUV'](_0x57c78b,_0x277a39);}['_calcUV'](_0x24abbe,_0x20dd1d){function _0x2b0c39(_0x3d3aeb,_0x32ea4b){return _0xfdf2d7(_0x3d3aeb-0x36e,_0x32ea4b);}return[+_0x24abbe,+_0x20dd1d,Math[_0x2b0c39(0x356,0x323)](_0x24abbe*_0x24abbe+_0x20dd1d*_0x20dd1d)];}['getUVByPoint'](_0x455360,_0x56eaf1){function _0x85327a(_0x5cf64b,_0x5d130a){return _0x33bcfd(_0x5cf64b- -0xcd,_0x5d130a);}if(!this['isInExtent'](_0x455360,_0x56eaf1))return null;const _0x4d7d28=this['toGridXY'](_0x455360,_0x56eaf1),_0x261106=this[_0x85327a(-0x214,-0x235)](_0x4d7d28[0x0],_0x4d7d28[0x1]);return _0x261106;}[_0xfdf2d7(0x1d,0x9d)](_0x285eb1,_0x459213){return _0x285eb1>=this['xmin']&&_0x285eb1<=this['xmax']&&_0x459213>=this['ymin']&&_0x459213<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x8519fa=fRandomByfloat(this[_0x1c4514(0x3c1,0x37c)],this[_0x1c4514(0x338,0x336)]);function _0x1c4514(_0x40eb3a,_0x1d7806){return _0x33bcfd(_0x40eb3a-0x50d,_0x1d7806);}const _0x3f6aa5=fRandomByfloat(this['ymin'],this['ymax']),_0x41983b={};function _0x18b319(_0x5def04,_0x920a06){return _0x33bcfd(_0x920a06-0x397,_0x5def04);}return _0x41983b['lat']=_0x3f6aa5,_0x41983b[_0x1c4514(0x2e8,0x2e1)]=_0x8519fa,_0x41983b;}['getParticles'](){function _0x5cbf17(_0xd632,_0x529812){return _0x33bcfd(_0xd632-0x4f3,_0x529812);}function _0x3cfabd(_0x3479b9,_0xa3eebf){return _0x33bcfd(_0xa3eebf-0x256,_0x3479b9);}let _0x5dd492,_0x4b9092,_0x73ef23;for(let _0x2597cf=0x0,_0x18277d=this[_0x5cbf17(0x365,0x333)][_0x3cfabd(0xe0,0x89)];_0x2597cf<_0x18277d;_0x2597cf++){let _0x4b34f9=this['particles'][_0x2597cf];_0x4b34f9['age']<=0x0&&(_0x4b34f9=this['_randomParticle'](_0x4b34f9));if(_0x4b34f9[_0x3cfabd(-0x4d,0x2e)]>0x0){const _0x8daf1a=_0x4b34f9['tlng'],_0x5ae2b9=_0x4b34f9[_0x5cbf17(0x3af,0x373)];_0x73ef23=this['getUVByPoint'](_0x8daf1a,_0x5ae2b9),_0x73ef23?(_0x5dd492=_0x8daf1a+this[_0x3cfabd(0x113,0xed)][0x0]*_0x73ef23[0x0],_0x4b9092=_0x5ae2b9+this['_calc_speedRate'][0x1]*_0x73ef23[0x1],_0x4b34f9[_0x3cfabd(-0x4,0x31)]=_0x8daf1a,_0x4b34f9['lat']=_0x5ae2b9,_0x4b34f9['tlng']=_0x5dd492,_0x4b34f9['tlat']=_0x4b9092,_0x4b34f9[_0x3cfabd(0x103,0xce)]=_0x73ef23[0x2],_0x4b34f9['age']--):_0x4b34f9['age']=0x0;}}return this[_0x5cbf17(0x365,0x309)];}[_0xfdf2d7(0x73,0x58)](_0x87b4e7){let _0x52fef9,_0x1d1aaa;function _0x4a38ce(_0x408aaf,_0x4b46d2){return _0x33bcfd(_0x408aaf-0x32c,_0x4b46d2);}for(let _0x15387e=0x0;_0x15387e<0x1e;_0x15387e++){_0x52fef9=this['getRandomLatLng'](),_0x1d1aaa=this['getUVByPoint'](_0x52fef9['lng'],_0x52fef9['lat']);if(_0x1d1aaa&&_0x1d1aaa[0x2]>0x0)break;}if(!_0x1d1aaa)return _0x87b4e7;const _0x382851=_0x52fef9[_0x4a38ce(0x107,0xff)]+this['_calc_speedRate'][0x0]*_0x1d1aaa[0x0];function _0x5f3adc(_0x22d63a,_0x242292){return _0xfdf2d7(_0x242292-0x146,_0x22d63a);}const _0x42d53f=_0x52fef9['lat']+this['_calc_speedRate'][0x1]*_0x1d1aaa[0x1];return _0x87b4e7[_0x5f3adc(0x12a,0x104)]=_0x52fef9[_0x4a38ce(0x107,0x15e)],_0x87b4e7['lat']=_0x52fef9['lat'],_0x87b4e7[_0x4a38ce(0xf0,0x173)]=_0x382851,_0x87b4e7['tlat']=_0x42d53f,_0x87b4e7['age']=Math['round'](Math['random']()*this[_0x5f3adc(0x21f,0x1d1)]),_0x87b4e7[_0x4a38ce(0x1a4,0x220)]=_0x1d1aaa[0x2],_0x87b4e7;}['destroy'](){for(const _0x14074b in this){delete this[_0x14074b];}}}function fRandomByfloat(_0x431e8d,_0x372238){function _0x4edbb7(_0x19db5c,_0x49269e){return _0x33bcfd(_0x19db5c-0x41e,_0x49269e);}return _0x431e8d+Math[_0x4edbb7(0x23a,0x255)]()*(_0x372238-_0x431e8d);}const Cesium=mars3d__namespace[_0x33bcfd(-0x235,-0x24a)],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x5e0443={}){function _0x5ab34f(_0x112436,_0x4ec60b){return _0xfdf2d7(_0x4ec60b-0x1cd,_0x112436);}super(_0x5e0443),this['_setOptionsHook'](_0x5e0443),this[_0x5ab34f(0x2af,0x294)]=null;function _0x37cdde(_0x4edf44,_0x1029f5){return _0x33bcfd(_0x4edf44- -0x65,_0x1029f5);}_0x5e0443[_0x5ab34f(0x23d,0x232)]&&_0x5e0443['steps']&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x5e0443));}['_setOptionsHook'](_0x2bab17,_0x4cca51){function _0x1c64a2(_0x3df3a9,_0x1afc91){return _0x33bcfd(_0x1afc91-0x213,_0x3df3a9);}this['frameTime']=0x3e8/(_0x2bab17[_0x1c64a2(0x49,0x1c)]||0xa),this[_0x312b7e(0x106,0x108)]=this['options'][_0x1c64a2(0xea,0xd5)]??![],this['color']=_0x2bab17[_0x1c64a2(0xa8,0x40)]||'#ffffff',this[_0x312b7e(0x9f,0xba)]=_0x2bab17[_0x1c64a2(-0x97,-0x13)]||0x1,this['fixedHeight']=_0x2bab17[_0x312b7e(0x143,0xe4)]??0x0,this[_0x1c64a2(-0xc,-0x2a)]=_0x2bab17[_0x312b7e(0x88,0xd0)]??![];function _0x312b7e(_0x28f14c,_0x44f743){return _0xfdf2d7(_0x28f14c-0xe2,_0x44f743);}this['windField']&&this['windField']['setOptions'](_0x2bab17);}get['layer'](){return this['canvas'];}get[_0xfdf2d7(0xa3,0x134)](){function _0x55c354(_0x420c6d,_0x1e42f0){return _0x33bcfd(_0x1e42f0-0x19a,_0x420c6d);}return this['_map']['scene'][_0x55c354(0xc6,0x7e)]['clientWidth'];}get[_0xfdf2d7(0x3a,0xce)](){function _0x12e9cb(_0x278ea5,_0x354771){return _0x33bcfd(_0x278ea5-0x641,_0x354771);}return this[_0x12e9cb(0x457,0x3ff)]['scene']['canvas']['clientHeight'];}get[_0xfdf2d7(0xa5,0xb5)](){return this['_pointerEvents'];}set['pointerEvents'](_0x15c614){this[_0x5eacc8(-0x261,-0x21e)]=_0x15c614;if(!this['canvas'])return;function _0x2b866b(_0x204a0b,_0x5708ca){return _0x33bcfd(_0x5708ca-0x2cd,_0x204a0b);}function _0x5eacc8(_0x455e3f,_0x1dea1a){return _0x33bcfd(_0x455e3f- -0xa2,_0x1dea1a);}_0x15c614?this['canvas'][_0x5eacc8(-0x2e2,-0x321)]['pointer-events']='all':this[_0x2b866b(0x155,0x1b1)]['style'][_0x2b866b(0x11a,0xda)]=_0x2b866b(0x1c1,0x131);}get[_0xfdf2d7(0x78,0xd4)](){function _0x581564(_0x1a2cfa,_0x41f067){return _0x33bcfd(_0x1a2cfa-0x17f,_0x41f067);}return this['options'][_0x581564(0x14,0x58)];}set[_0x33bcfd(-0x16b,-0x1ea)](_0xb5fa63){this[_0x474a1b(0x3c,0x22)][_0x474a1b(0xe5,0x94)]=_0xb5fa63,clearTimeout(this['_canrefresh']);function _0x31bfb1(_0x9f7ac3,_0x25ae45){return _0x33bcfd(_0x25ae45-0x1a,_0x9f7ac3);}function _0x474a1b(_0x4215cc,_0x163c3c){return _0x33bcfd(_0x163c3c-0x1ff,_0x4215cc);}this[_0x474a1b(-0xe,0x5b)]=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x33bcfd(-0x1d9,-0x1ad)](){function _0x134f80(_0x3329b1,_0x3bea59){return _0x33bcfd(_0x3329b1-0x175,_0x3bea59);}return this['options'][_0x134f80(-0x64,-0xf2)];}set[_0x33bcfd(-0x1d9,-0x15a)](_0x4224d4){this['options']['speedRate']=_0x4224d4;function _0xc4d0b7(_0x1c84de,_0x4408a0){return _0x33bcfd(_0x1c84de-0x5d9,_0x4408a0);}function _0x4bccdb(_0x4dbd6f,_0x57f461){return _0xfdf2d7(_0x4dbd6f-0xd9,_0x57f461);}this[_0x4bccdb(0x116,0xff)]&&(this[_0xc4d0b7(0x433,0x41f)][_0xc4d0b7(0x400,0x40f)]=_0x4224d4);}get['maxAge'](){function _0x51b29e(_0xaebe0d,_0x26580f){return _0x33bcfd(_0x26580f-0x3bf,_0xaebe0d);}return this['options'][_0x51b29e(0x229,0x267)];}set['maxAge'](_0x280295){function _0x30f8ab(_0x6ad496,_0x117392){return _0x33bcfd(_0x117392-0x5f6,_0x6ad496);}this['options'][_0x38b06c(-0xa,-0x33)]=_0x280295;function _0x38b06c(_0x3ab61e,_0x572964){return _0x33bcfd(_0x3ab61e-0x14e,_0x572964);}this['windField']&&(this[_0x38b06c(-0x58,-0x22)]['maxAge']=_0x280295);}get['data'](){return this['windData'];}set[_0xfdf2d7(0x4,0x20)](_0x15c63c){this['setData'](_0x15c63c);}[_0xfdf2d7(0x81,0x10f)](_0x40ce73){function _0x1987dc(_0x1ca4c4,_0x108ef9){return _0xfdf2d7(_0x1ca4c4-0x1e,_0x108ef9);}function _0x4581b6(_0x25f430,_0x58a98b){return _0xfdf2d7(_0x25f430- -0x2c4,_0x58a98b);}_0x40ce73?this[_0x1987dc(0xb3,0x36)]():(this['windData']&&(this['options'][_0x1987dc(0x22,0x11)]=this['windData']),this['_removedHook']());}[_0xfdf2d7(0x99,0x80)](){function _0x4c46dc(_0x2b1cad,_0x451636){return _0xfdf2d7(_0x2b1cad- -0x1cb,_0x451636);}this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this[_0x4c46dc(-0x1c5,-0x12f)]);}[_0x33bcfd(-0x14e,-0x125)](){this[_0x30aab9(-0x1b0,-0x1ad)]=this['_createCanvas']();function _0x5715ca(_0x1a993f,_0x54cf57){return _0x33bcfd(_0x1a993f-0x68d,_0x54cf57);}const _0xfca22d={};function _0x30aab9(_0x370235,_0x25167b){return _0x33bcfd(_0x370235- -0x94,_0x25167b);}_0xfca22d['willReadFrequently']=!![],this['canvasContext']=this['canvas']['getContext']('2d',_0xfca22d),this[_0x30aab9(-0x214,-0x246)](),this['options']['data']&&this[_0x5715ca(0x485,0x4dc)](this[_0x5715ca(0x4b0,0x542)]['data']);}[_0x33bcfd(-0x137,-0x15b)](){function _0x1b3db9(_0x56bb96,_0x2b7371){return _0xfdf2d7(_0x2b7371-0x4c7,_0x56bb96);}this['clear'](),this[_0x31cf59(0x1b1,0x1e9)]();function _0x31cf59(_0x1d294c,_0x39254b){return _0xfdf2d7(_0x1d294c-0x208,_0x39254b);}this['canvas']&&(this['_map']['container'][_0x31cf59(0x1ea,0x23a)](this[_0x31cf59(0x2cf,0x2aa)]),delete this[_0x31cf59(0x2cf,0x30c)]);}['_createCanvas'](){const _0x4621e8=mars3d__namespace['DomUtil'][_0x58baf6(-0x147,-0x196)]('canvas',_0x58baf6(-0xbc,-0x8c),this[_0x71ebd7(0x4bb,0x4f2)]['container']);_0x4621e8[_0x58baf6(-0x1cd,-0x209)]['position']='absolute',_0x4621e8[_0x71ebd7(0x465,0x42e)]['top']=_0x58baf6(-0xaa,-0xc9),_0x4621e8[_0x71ebd7(0x465,0x49f)][_0x58baf6(-0x1a8,-0x141)]='0px',_0x4621e8[_0x71ebd7(0x465,0x400)][_0x58baf6(-0x185,-0x1b8)]=this[_0x71ebd7(0x4bb,0x463)]['scene']['canvas']['clientWidth']+'px',_0x4621e8['style']['height']=this['_map']['scene']['canvas']['clientHeight']+'px',_0x4621e8['style']['pointerEvents']=this[_0x71ebd7(0x4e6,0x4c4)]?_0x71ebd7(0x499,0x407):'none';function _0x71ebd7(_0x5f50a0,_0x51d6fd){return _0xfdf2d7(_0x5f50a0-0x4c2,_0x51d6fd);}function _0x58baf6(_0x342f5c,_0x189465){return _0x33bcfd(_0x342f5c-0x73,_0x189465);}return _0x4621e8['style']['zIndex']=this['options'][_0x71ebd7(0x4f1,0x54c)]??0x9,_0x4621e8['width']=this['_map'][_0x58baf6(-0xd5,-0xf0)][_0x58baf6(-0xa9,-0xfd)][_0x58baf6(-0xe8,-0xfe)],_0x4621e8['height']=this[_0x58baf6(-0x177,-0x10a)]['scene']['canvas']['clientHeight'],_0x4621e8;}['resize'](){function _0x26df9a(_0x549afc,_0x59e641){return _0xfdf2d7(_0x549afc-0x205,_0x59e641);}function _0x2fb7a4(_0x3d6a56,_0x19b916){return _0xfdf2d7(_0x3d6a56-0xa9,_0x19b916);}this['canvas']&&(this['canvas'][_0x2fb7a4(0x4c,0xae)][_0x26df9a(0x1f0,0x177)]=this[_0x2fb7a4(0xa2,0x97)]['scene']['canvas']['clientWidth']+'px',this[_0x26df9a(0x2cc,0x2ba)][_0x26df9a(0x1a8,0x14d)][_0x2fb7a4(0x51,0xcc)]=this['_map'][_0x2fb7a4(0x144,0x1cb)]['canvas']['clientHeight']+'px',this['canvas'][_0x2fb7a4(0x94,0x86)]=this['_map']['scene'][_0x26df9a(0x2cc,0x317)]['clientWidth'],this['canvas']['height']=this['_map'][_0x2fb7a4(0x144,0x139)]['canvas']['clientHeight']);}['bindEvent'](){const _0x2c650f=this;function _0x37cf0c(_0x44466a,_0x29e7b0){return _0x33bcfd(_0x29e7b0-0x13,_0x44466a);}let _0x4c0ce3=Date[_0x11993e(-0x1ef,-0x168)]();(function _0x5d86b8(){if(_0x2c650f[_0x297513(0x517,0x4df)])return;function _0x297513(_0x36db26,_0xa1e11d){return _0x11993e(_0xa1e11d,_0x36db26-0x719);}_0x2c650f['_animateFrame']=window[_0x5812e9(0x2a6,0x25c)](_0x5d86b8);function _0x5812e9(_0x15eaa2,_0x41d02c){return _0x11993e(_0x15eaa2,_0x41d02c-0x429);}if(_0x2c650f['show']&&_0x2c650f['windField']){const _0x309ede=Date[_0x297513(0x5b1,0x5f4)](),_0x1653de=_0x309ede-_0x4c0ce3;_0x1653de>_0x2c650f['frameTime']&&(_0x4c0ce3=_0x309ede-_0x1653de%_0x2c650f[_0x5812e9(0x20c,0x25e)],_0x2c650f[_0x5812e9(0x1d6,0x24e)]());}}(),window['addEventListener']('resize',this[_0x37cf0c(-0x1ed,-0x1c5)]['bind'](this),![]),this['mouse_down']=![]);function _0x11993e(_0x4c0787,_0x4c1e42){return _0x33bcfd(_0x4c1e42- -0x51,_0x4c0787);}this['mouse_move']=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x37cf0c(-0x19a,-0x1d7)]['on'](mars3d__namespace[_0x11993e(-0x1b6,-0x21c)]['mouseDown'],this[_0x11993e(-0x1bc,-0x1cc)],this),this['_map']['on'](mars3d__namespace[_0x37cf0c(-0x13a,-0x1b8)]['mouseUp'],this[_0x11993e(-0x1e1,-0x1c9)],this));}['unbindEvent'](){window['cancelAnimationFrame'](this[_0x19cfb3(0x25b,0x2dd)]);function _0x1b9247(_0x57d4e0,_0x792880){return _0xfdf2d7(_0x792880- -0x230,_0x57d4e0);}delete this['_animateFrame'];function _0x19cfb3(_0x2038f3,_0x126b3f){return _0x33bcfd(_0x2038f3-0x44c,_0x126b3f);}window['removeEventListener']('resize',this['resize']),this['options']['mouseHidden']&&(this['_map'][_0x1b9247(-0x1a7,-0x1e1)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x1b9247(-0x258,-0x237)][_0x1b9247(-0x213,-0x1e1)](mars3d__namespace['EventType']['mouseDown'],this[_0x1b9247(-0x240,-0x1c8)],this),this[_0x1b9247(-0x29f,-0x237)][_0x19cfb3(0x2b8,0x305)](mars3d__namespace[_0x19cfb3(0x281,0x2dd)]['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace[_0x19cfb3(0x281,0x291)][_0x1b9247(-0x161,-0x1d9)],this[_0x1b9247(-0x15d,-0x17a)],this));}[_0xfdf2d7(0x8a,0x84)](_0x1ed775){function _0x2f6ab0(_0x373b6c,_0x457c88){return _0xfdf2d7(_0x373b6c-0x28,_0x457c88);}clearTimeout(this[_0x3e60f1(0x4f0,0x49e)]);function _0x3e60f1(_0x5d0774,_0x498966){return _0x33bcfd(_0x5d0774-0x69b,_0x498966);}if(!this['show']||!this['canvas'])return;this[_0x3e60f1(0x57f,0x529)][_0x2f6ab0(-0x35,-0xcc)][_0x2f6ab0(0xd5,0x14d)]='hidden',this['refreshTimer']=setTimeout(()=>{if(!this[_0x9010bf(-0xc8,-0x119)])return;this['redraw']();function _0x449de7(_0x6be5cb,_0x3625b2){return _0x2f6ab0(_0x6be5cb- -0x11f,_0x3625b2);}function _0x9010bf(_0x35be3f,_0x640d3a){return _0x3e60f1(_0x640d3a- -0x680,_0x35be3f);}this[_0x449de7(-0x30,-0x2)]['style'][_0x449de7(-0x4a,-0x94)]=_0x9010bf(-0x284,-0x21e);},0xc8);}['_onMouseDownEvent'](_0xd592e3){this['mouse_down']=!![];function _0x52ee93(_0x3586e0,_0x116c6c){return _0x33bcfd(_0x116c6c- -0xe0,_0x3586e0);}this[_0x18bbfa(0x428,0x3a5)]['off'](mars3d__namespace[_0x52ee93(-0x25a,-0x2ab)][_0x52ee93(-0x22c,-0x26c)],this['_onMouseMoveEvent'],this);function _0x18bbfa(_0x22449c,_0x22efb7){return _0xfdf2d7(_0x22efb7-0x3ac,_0x22449c);}this['_map']['on'](mars3d__namespace[_0x52ee93(-0x30f,-0x2ab)]['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x2de300){function _0xfac9b(_0x5135e4,_0x1a4857){return _0x33bcfd(_0x5135e4-0xaf,_0x1a4857);}if(!this['show']||!this['canvas'])return;function _0x16d2ec(_0xa8e238,_0x1f5a22){return _0x33bcfd(_0xa8e238-0x435,_0x1f5a22);}this['mouse_down']&&(this[_0xfac9b(-0x6d,-0x6b)][_0x16d2ec(0x1f5,0x267)]['visibility']=_0x16d2ec(0x27e,0x310),this[_0x16d2ec(0x2d2,0x287)]=!![]);}[_0xfdf2d7(0x6b,0x50)](_0x110adc){if(!this['show']||!this[_0x2ae39c(0x25a,0x2da)])return;this['_map'][_0x1dffd6(0x3c3,0x3ef)](mars3d__namespace['EventType']['mouseMove'],this[_0x1dffd6(0x42a,0x3ee)],this);this['mouse_down']&&this['mouse_move']&&this[_0x1dffd6(0x38b,0x3ac)]();function _0x1dffd6(_0x447ee3,_0x4028ab){return _0xfdf2d7(_0x447ee3-0x374,_0x4028ab);}this['canvas']['style']['visibility']='visible',this[_0x2ae39c(0x1d6,0x1c4)]=![];function _0x2ae39c(_0x56c18a,_0x3e235a){return _0x33bcfd(_0x3e235a-0x3f6,_0x56c18a);}this['mouse_move']=![];}['setData'](_0x2050e0){function _0xd694af(_0x2969c5,_0x1d7b6b){return _0xfdf2d7(_0x1d7b6b- -0xf1,_0x2969c5);}this[_0xd694af(-0x104,-0x11e)](),this['windData']=_0x2050e0,this['windField']['setDate'](_0x2050e0),this['redraw']();}['redraw'](){if(!this['show'])return;this['windField']['setOptions'](this['options']),this['update']();}[_0x33bcfd(-0x18a,-0x1f5)](){if(this['_updateIng'])return;function _0x32aa94(_0x2107fb,_0x3f2130){return _0x33bcfd(_0x2107fb-0xf0,_0x3f2130);}this['_updateIng']=!![];function _0x554c49(_0x4b8e0c,_0x1e184f){return _0xfdf2d7(_0x1e184f-0x307,_0x4b8e0c);}if(this[_0x554c49(0x3a7,0x3cf)])this[_0x554c49(0x3d6,0x344)]['update']();else{const _0x1a37b7=this['windField'][_0x554c49(0x2c9,0x31c)]();this['_drawLines'](_0x1a37b7);}this[_0x32aa94(-0x112,-0xaf)]=![];}['_drawLines'](_0x39c7b9){this['canvasContext'][_0x3eb1dc(0x1d4,0x17f)]=_0x3eb1dc(0xcc,0x14c);function _0x18d794(_0x723d7d,_0x15febe){return _0x33bcfd(_0x15febe-0x4b0,_0x723d7d);}this['canvasContext']['fillRect'](0x0,0x0,this[_0x18d794(0x2ed,0x370)],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter';function _0x3eb1dc(_0x7e5c66,_0x2194e6){return _0xfdf2d7(_0x2194e6-0xca,_0x7e5c66);}this[_0x18d794(0x36b,0x2fe)]['globalAlpha']=0.9;const _0x3159a0=this['_map']['scene']['mode']!==Cesium[_0x3eb1dc(0x123,0x11a)]['SCENE3D'],_0x15249a=this[_0x18d794(0x392,0x370)]*0.25;if(this['_colorRamp'])for(let _0xfa3619=0x0,_0x256741=_0x39c7b9['length'];_0xfa3619<_0x256741;_0xfa3619++){const _0x18a3de=_0x39c7b9[_0xfa3619],_0x58c1ff=this[_0x18d794(0x3b8,0x36f)](_0x18a3de['lng'],_0x18a3de[_0x3eb1dc(0x88,0x10a)],_0x18a3de),_0x5c9f49=this[_0x18d794(0x34e,0x36f)](_0x18a3de[_0x18d794(0x256,0x274)],_0x18a3de[_0x3eb1dc(0x185,0x169)],_0x18a3de);if(!_0x58c1ff||!_0x5c9f49)continue;if(_0x3159a0&&Math[_0x3eb1dc(0x1d0,0x148)](_0x58c1ff[0x0]-_0x5c9f49[0x0])>=_0x15249a)continue;this[_0x3eb1dc(0x9f,0xfb)]['beginPath'](),this[_0x3eb1dc(0x163,0xfb)]['lineWidth']=this[_0x3eb1dc(0xc8,0x87)],this['canvasContext'][_0x3eb1dc(0x1ef,0x188)]=this['_colorRamp']['getColor'](_0x18a3de[_0x18d794(0x2bd,0x328)]),this['canvasContext']['moveTo'](_0x58c1ff[0x0],_0x58c1ff[0x1]),this['canvasContext'][_0x18d794(0x2f6,0x349)](_0x5c9f49[0x0],_0x5c9f49[0x1]),this['canvasContext']['stroke']();}else{this[_0x3eb1dc(0x15b,0xfb)]['beginPath'](),this[_0x18d794(0x356,0x2fe)][_0x3eb1dc(0xfa,0x87)]=this['lineWidth'],this['canvasContext']['strokeStyle']=this[_0x18d794(0x35a,0x2dd)];for(let _0x1a09e6=0x0,_0x230c39=_0x39c7b9['length'];_0x1a09e6<_0x230c39;_0x1a09e6++){const _0x23858a=_0x39c7b9[_0x1a09e6],_0x1011e9=this[_0x18d794(0x2f2,0x36f)](_0x23858a[_0x3eb1dc(0x9a,0x88)],_0x23858a['lat'],_0x23858a),_0x258d91=this['_tomap'](_0x23858a['tlng'],_0x23858a[_0x18d794(0x3e3,0x36c)],_0x23858a);if(!_0x1011e9||!_0x258d91)continue;if(_0x3159a0&&Math['abs'](_0x1011e9[0x0]-_0x258d91[0x0])>=_0x15249a)continue;this['canvasContext']['moveTo'](_0x1011e9[0x0],_0x1011e9[0x1]),this['canvasContext'][_0x3eb1dc(0x12a,0x146)](_0x258d91[0x0],_0x258d91[0x1]);}this['canvasContext'][_0x18d794(0x2ab,0x2c1)]();}}['_tomap'](_0x56323c,_0x269d97,_0xd454bd){const _0x5a71b0=Cesium[_0x1e611c(0xd2,0x129)]['fromDegrees'](_0x56323c,_0x269d97,this['fixedHeight']);function _0x50d67d(_0x39534b,_0x319e44){return _0xfdf2d7(_0x39534b-0x276,_0x319e44);}function _0x1e611c(_0x283797,_0x305d15){return _0xfdf2d7(_0x305d15-0x117,_0x283797);}const _0x3b8015=this['_map']['scene'];if(_0x3b8015[_0x50d67d(0x330,0x2ef)]===Cesium[_0x50d67d(0x2c6,0x260)][_0x1e611c(0x13a,0x177)]){const _0xd7a4ea=new Cesium[(_0x50d67d(0x305,0x329))](_0x3b8015['globe']['ellipsoid'],_0x3b8015['camera'][_0x1e611c(0x183,0x130)]),_0x82085b=_0xd7a4ea['isPointVisible'](_0x5a71b0);if(!_0x82085b)return _0xd454bd[_0x50d67d(0x231,0x2a5)]=0x0,null;}const _0x43e74b=mars3d__namespace[_0x1e611c(0x1bb,0x176)][_0x1e611c(0x20e,0x179)](this[_0x1e611c(0x18f,0x110)]['scene'],_0x5a71b0);return _0x43e74b?[_0x43e74b['x'],_0x43e74b['y']]:null;}['clear'](){this['windField'][_0x1333ef(0x1a6,0x1ba)]();function _0x2bbd90(_0x409d3c,_0x3f5131){return _0x33bcfd(_0x3f5131-0x68c,_0x409d3c);}function _0x1333ef(_0x7f20a9,_0x354438){return _0xfdf2d7(_0x7f20a9-0x1d3,_0x354438);}delete this[_0x1333ef(0x1a8,0x131)];}[_0x33bcfd(-0x18b,-0x1d9)](){function _0x360c4a(_0x586e43,_0x36eb87){return _0xfdf2d7(_0x36eb87-0x25c,_0x586e43);}function _0x548c5f(_0x1b5bc5,_0x3998aa){return _0x33bcfd(_0x3998aa-0x136,_0x1b5bc5);}this['worker']=new Worker(this[_0x548c5f(-0x51,-0xa7)][_0x360c4a(0x2f6,0x324)]),this['worker']['onmessage']=_0x4775d5=>{this[_0x2e2249(0x137,0x12e)](_0x4775d5[_0x2e2249(0x1aa,0x187)]['particles']);function _0x193b98(_0x26ee2b,_0xe38400){return _0x360c4a(_0xe38400,_0x26ee2b- -0x29);}function _0x2e2249(_0x113c86,_0x681e04){return _0x360c4a(_0x113c86,_0x681e04- -0xd9);}this[_0x2e2249(0x125,0x186)]=![];},this[_0x360c4a(0x297,0x299)]={'init':_0x4fbb0a=>{function _0x1e59e9(_0x116b4b,_0x5782ab){return _0x548c5f(_0x5782ab,_0x116b4b-0x9e);}const _0x34ee5c={};function _0x1c08ca(_0x2ef12a,_0x448840){return _0x548c5f(_0x2ef12a,_0x448840- -0x82);}_0x34ee5c[_0x1e59e9(-0x44,-0xc4)]='init',_0x34ee5c['options']=_0x4fbb0a,this[_0x1c08ca(-0xdf,-0x67)][_0x1c08ca(-0xcf,-0x101)](_0x34ee5c);},'setOptions':_0x15eb08=>{const _0x291276={};_0x291276['type']='setOptions';function _0x488b53(_0x1021aa,_0x45a4ef){return _0x548c5f(_0x1021aa,_0x45a4ef-0x2cd);}_0x291276['options']=_0x15eb08,this['worker'][_0x488b53(0x297,0x24e)](_0x291276);},'setDate':_0x17c7eb=>{const _0x36d2e3={};function _0x3fb180(_0xf599b0,_0x2c9379){return _0x360c4a(_0xf599b0,_0x2c9379- -0x47);}_0x36d2e3['type']=_0x3fb180(0x241,0x236),_0x36d2e3['data']=_0x17c7eb;function _0x4506d0(_0x4233da,_0x4f0f66){return _0x360c4a(_0x4f0f66,_0x4233da- -0x2a4);}this[_0x3fb180(0x31e,0x2dd)]['postMessage'](_0x36d2e3);},'update':()=>{if(this['_updateIng2'])return;function _0x13b236(_0x51f53c,_0x590bde){return _0x360c4a(_0x590bde,_0x51f53c- -0x294);}this['_updateIng2']=!![];function _0x3dc9da(_0x3e8079,_0x475099){return _0x360c4a(_0x475099,_0x3e8079- -0xe7);}const _0x4c1e3a={};_0x4c1e3a[_0x3dc9da(0x140,0x176)]=_0x13b236(0x21,0x2d),this['worker']['postMessage'](_0x4c1e3a);},'clear':()=>{function _0x30e4c3(_0x294225,_0x3e1d52){return _0x548c5f(_0x3e1d52,_0x294225-0x201);}const _0x251a73={};function _0x11c85e(_0x35462f,_0x32cea1){return _0x548c5f(_0x32cea1,_0x35462f-0x305);}_0x251a73[_0x11c85e(0x223,0x21f)]=_0x11c85e(0x22b,0x271),this[_0x11c85e(0x320,0x31c)]['postMessage'](_0x251a73);}},this[_0x360c4a(0x29e,0x299)]['init'](this[_0x548c5f(-0x54,-0xa7)]);}}mars3d__namespace['LayerUtil'][_0xfdf2d7(0x20,0x89)](_0xfdf2d7(0xa0,0xcb),CanvasWindLayer),mars3d__namespace[_0xfdf2d7(0x93,0x41)][_0xfdf2d7(0x87,0x7d)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x33bcfd(-0x15c,-0x1b9)]=CanvasWindLayer,exports[_0x33bcfd(-0x1ff,-0x1f6)]=WindLayer,exports['WindUtil']=WindUtil;const _0x2549c0={};_0x2549c0[_0xfdf2d7(0x39,-0x36)]=!![],Object[_0xfdf2d7(0x75,0x9f)](exports,_0xfdf2d7(-0x24,0x40),_0x2549c0);
|
|
15
15
|
}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mars3d-wind",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.0",
|
|
4
4
|
"description": "Mars3D平台插件,支持气象 风向图 功能插件",
|
|
5
5
|
"main": "dist/mars3d-wind.js",
|
|
6
6
|
"files": [
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
],
|
|
9
9
|
"peerDependencies": {},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"mars3d": "~3.
|
|
11
|
+
"mars3d": "~3.8.0"
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
14
|
"lint": "eslint ./src/**/*.{js,ts} --fix"
|