mars3d-wind 3.8.10 → 3.8.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -38
- package/mars3d-wind.js +3 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -58,59 +58,41 @@ import "mars3d-wind";
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
##
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
> Mars3D平台可用于构建无插件、跨操作系统、 跨浏览器的三维 GIS 应用程序。平台使用 WebGL 来进行硬件加速图形化,跨平台、跨浏览器来实现真正的动态大数据三维可视化。通过 Mars3D产品可快速实现浏览器和移动端上美观、流畅的三维地图呈现与空间分析。
|
|
65
|
-
|
|
66
|
-
## 相关网站
|
|
61
|
+
## NetCDF文件(.nc)说明
|
|
62
|
+
NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作 NetCDF 数据集。
|
|
67
63
|
|
|
68
|
-
|
|
64
|
+
### 如何获取NetCDF数据
|
|
65
|
+
- [美国大学大气研究协会 Unidata](https://www.unidata.ucar.edu/software/netcdf/examples/files.html)
|
|
66
|
+
- [全球天气预报系统(GFS)](https://www.ncdc.noaa.gov/data-access/model-data/model-datasets/global-forcast-system-gfs)
|
|
67
|
+
- [NASA Panoply](https://www.giss.nasa.gov/tools/panoply/)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
### 如何打开NetCDF文件
|
|
71
|
+
nc文件最好为NetCDF version 3形式,文件中必须至少包含U、V速度矩阵。
|
|
69
72
|
|
|
70
|
-
-
|
|
73
|
+
- [netcdf-java](https://downloads.unidata.ucar.edu/netcdf-java/)
|
|
71
74
|
|
|
72
75
|
|
|
73
76
|
|
|
74
77
|
|
|
75
78
|
## 参考来源
|
|
76
|
-
|
|
79
|
+
- CanvasWindLayer 参考了: https://blog.csdn.net/axiwang88/article/details/105737114
|
|
77
80
|
|
|
78
|
-
|
|
81
|
+
- WindLayer 参考了: https://github.com/RaymanNg/3D-Wind-Field
|
|
79
82
|
https://github.com/hongfaqiu/cesium-wind-layer (主要)
|
|
80
83
|
|
|
81
84
|
|
|
82
85
|
|
|
83
|
-
##
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### 如何获取NetCDF文件(.nc)数据
|
|
88
|
-
演示数据来自NOAA全球预报系统。原始数据为GRIB2格式,我使用toolsUI将GRIB2文件转换为NetCDF V3文件。
|
|
89
|
-
下载数据:https://www.unidata.ucar.edu/software/netcdf/examples/files.html
|
|
90
|
-
NOAA全球预报系统:https://www.ncdc.noaa.gov/data-access/model-data/model-datasets/global-forcast-system-gfs
|
|
91
|
-
|
|
92
|
-
您可以使用NCO(NetCDF运算符)来进一步处理NetCDF数据。我已经编写了一个PowerShell脚本,以通过使用NCO提取和转换数据。
|
|
93
|
-
|
|
94
|
-
您可以检查“ Util”文件夹以获取详细信息。
|
|
95
|
-
https://www.unidata.ucar.edu/software/netcdf-java/v4.5/ToolsUI.html
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
### 怎样加载自己的.nc文件
|
|
100
|
-
|
|
101
|
-
.nc文件最好为NetCDF version 3形式
|
|
86
|
+
## Mars3D 是什么
|
|
87
|
+
> `Mars3D三维地球平台软件` 是[火星科技](http://marsgis.cn/)研发的一款基于 WebGL 技术实现的三维客户端开发平台,基于[Cesium](https://cesium.com/cesiumjs/)优化提升与B/S架构设计,支持多行业扩展的轻量级高效能GIS开发平台,能够免安装、无插件地在浏览器中高效运行,并可快速接入与使用多种GIS数据和三维模型,呈现三维空间的可视化,完成平台在不同行业的灵活应用。
|
|
102
88
|
|
|
103
|
-
|
|
89
|
+
> Mars3D平台可用于构建无插件、跨操作系统、 跨浏览器的三维 GIS 应用程序。平台使用 WebGL 来进行硬件加速图形化,跨平台、跨浏览器来实现真正的动态大数据三维可视化。通过 Mars3D产品可快速实现浏览器和移动端上美观、流畅的三维地图呈现与空间分析。
|
|
104
90
|
|
|
105
|
-
|
|
106
|
-
- 纵向速度矩阵 V (lev, lat, lon)
|
|
107
|
-
- 经度维度 lon(0 - 360)
|
|
108
|
-
- 纬度维度 lat
|
|
91
|
+
## 相关网站
|
|
109
92
|
|
|
110
|
-
|
|
93
|
+
- Mars3D官网:[http://mars3d.cn](http://mars3d.cn)
|
|
111
94
|
|
|
112
|
-
|
|
95
|
+
- Mars3D开源项目列表:[https://github.com/marsgis/mars3d](https://github.com/marsgis/mars3d)
|
|
113
96
|
|
|
114
|
-
noData值设为0, 或者加载时配置valueRange属性。
|
|
115
97
|
|
|
116
|
-
|
|
98
|
+
|
package/mars3d-wind.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
|
|
3
3
|
*
|
|
4
|
-
* 版本信息:v3.8.
|
|
5
|
-
* 编译日期:2024-12-
|
|
4
|
+
* 版本信息:v3.8.11
|
|
5
|
+
* 编译日期:2024-12-24 10:46
|
|
6
6
|
* 版权所有:Copyright by 火星科技 http://mars3d.cn
|
|
7
7
|
* 使用单位:免费公开版 ,2024-08-01
|
|
8
8
|
*/
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
|
|
12
12
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
|
|
13
13
|
})(this, (function (exports, mars3d) {
|
|
14
|
-
'use strict';(function(_0x586787,_0x528b1f){function _0x564223(_0x189a1a,_0xe4febc){return _0x42d7(_0xe4febc- -0x180,_0x189a1a);}const _0x596ed2=_0x586787();function _0x27f34e(_0x3a4669,_0x2a66c8){return _0x42d7(_0x3a4669- -0x167,_0x2a66c8);}while(!![]){try{const _0x23ed0=-parseInt(_0x27f34e(0x4f,0x35))/0x1*(-parseInt(_0x564223(-0x52,-0x3))/0x2)+-parseInt(_0x27f34e(0x66,0x55))/0x3+parseInt(_0x27f34e(0x92,0x55))/0x4*(parseInt(_0x564223(0x6b,0x49))/0x5)+-parseInt(_0x564223(-0x5e,0x18))/0x6*(parseInt(_0x564223(0x8c,0x73))/0x7)+parseInt(_0x564223(-0x24,0xe))/0x8+-parseInt(_0x564223(0xb1,0x66))/0x9*(-parseInt(_0x564223(0x13,0x1c))/0xa)+-parseInt(_0x27f34e(0x73,0x86))/0xb;if(_0x23ed0===_0x528b1f)break;else _0x596ed2['push'](_0x596ed2['shift']());}catch(_0x423fea){_0x596ed2['push'](_0x596ed2['shift']());}}}(_0x44e8,0xd77e7));function _interopNamespace(_0x195144){if(_0x195144&&_0x195144['__esModule'])return _0x195144;var _0x2397d3=Object[_0x3b56ac(-0x145,-0x1cb)](null);_0x195144&&Object['keys'](_0x195144)[_0x3b56ac(-0x185,-0x119)](function(_0x1637b1){function _0x12fe0b(_0x577eb9,_0x3cd9fe){return _0x1b86f0(_0x3cd9fe,_0x577eb9- -0x2b5);}function _0x4a2f59(_0x2a10a2,_0x53fce3){return _0x3b56ac(_0x2a10a2,_0x53fce3-0x169);}if(_0x1637b1!==_0x12fe0b(0x22b,0x21e)){var _0x49689c=Object['getOwnPropertyDescriptor'](_0x195144,_0x1637b1);Object[_0x12fe0b(0x1ad,0x229)](_0x2397d3,_0x1637b1,_0x49689c['get']?_0x49689c:{'enumerable':!![],'get':function(){return _0x195144[_0x1637b1];}});}});_0x2397d3['default']=_0x195144;function _0x1b86f0(_0x2c4036,_0x1aab11){return _0x42d7(_0x1aab11-0x2cc,_0x2c4036);}function _0x3b56ac(_0x5e8af2,_0x36745b){return _0x42d7(_0x36745b- -0x334,_0x5e8af2);}return _0x2397d3;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function _0x2cdeac(_0x80e213,_0x40a259){return _0x42d7(_0x80e213-0x227,_0x40a259);}function getU(_0x4cf226,_0xc94f0a){function _0x4dd90c(_0x1ea26c,_0x3d8b71){return _0x42d7(_0x1ea26c-0x3c3,_0x3d8b71);}const _0x2e37ae=_0x4cf226*Math[_0x4dd90c(0x53c,0x599)](Cesium$2['Math']['toRadians'](_0xc94f0a));return _0x2e37ae;}function getV(_0x42c646,_0x3a0e38){const _0x31f070=_0x42c646*Math['sin'](Cesium$2['Math']['toRadians'](_0x3a0e38));return _0x31f070;}function getSpeed(_0x7b96c2,_0x4b5153){function _0x410ba4(_0x125d96,_0xfb9c22){return _0x42d7(_0x125d96- -0x346,_0xfb9c22);}const _0x232236=Math['sqrt'](Math['pow'](_0x7b96c2,0x2)+Math[_0x410ba4(-0x1ba,-0x1d7)](_0x4b5153,0x2));return _0x232236;}function getDirection(_0xbe6082,_0x54b772){let _0x3963ca=Cesium$2['Math']['toDegrees'](Math['atan2'](_0x54b772,_0xbe6082));return _0x3963ca+=_0x3963ca<0x0?0x168:0x0,_0x3963ca;}function _0x306136(_0x44e529,_0xcfc5f4){return _0x42d7(_0x44e529- -0x3d2,_0xcfc5f4);}const _0x3ea54a={};_0x3ea54a[_0x2cdeac(0x443,0x43a)]=null,_0x3ea54a[_0x306136(-0x23f,-0x22e)]=getU,_0x3ea54a['getV']=getV,_0x3ea54a[_0x306136(-0x2a1,-0x325)]=getSpeed,_0x3ea54a['getDirection']=getDirection;var WindUtil=_0x3ea54a,updatePositionShader=_0x2cdeac(0x378,0x3dc),calculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec2\x20uRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20vRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20speedRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20dimension;\x20//\x20(lon,\x20lat)\x0auniform\x20vec2\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec2\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0a\x0auniform\x20float\x20speedScaleFactor;\x0auniform\x20float\x20frameRateAdjustment;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20getInterval(vec2\x20maximum,\x20vec2\x20minimum,\x20vec2\x20dimension)\x20{\x0a\x20\x20return\x20(maximum\x20-\x20minimum)\x20/\x20(dimension\x20-\x201.0f);\x0a}\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLat.x\x20=\x20clamp(lonLat.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLat.y\x20=\x20clamp(lonLat.y,\x20minimum.y,\x20maximum.y);\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(0.0f);\x0a\x20\x20index2D.x\x20=\x20(lonLat.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index2D.y\x20=\x20(lonLat.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20dimension.y);\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0avec2\x20getWindComponents(vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20u\x20=\x20texture(U,\x20normalizedIndex2D).r;\x0a\x20\x20float\x20v\x20=\x20texture(V,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20vec2(u,\x20v);\x0a}\x0a\x0avec2\x20bilinearInterpolation(vec2\x20lonLat)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLat.x;\x0a\x20\x20float\x20lat\x20=\x20lonLat.y;\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20grid\x20cell\x20coordinates\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Get\x20wind\x20vectors\x20at\x20four\x20corners\x0a\x20\x20vec2\x20v00\x20=\x20getWindComponents(vec2(lon0,\x20lat0));\x0a\x20\x20vec2\x20v10\x20=\x20getWindComponents(vec2(lon1,\x20lat0));\x0a\x20\x20vec2\x20v01\x20=\x20getWindComponents(vec2(lon0,\x20lat1));\x0a\x20\x20vec2\x20v11\x20=\x20getWindComponents(vec2(lon1,\x20lat1));\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20all\x20wind\x20vectors\x20are\x20zero\x0a\x20\x20if(length(v00)\x20==\x200.0f\x20&&\x20length(v10)\x20==\x200.0f\x20&&\x20length(v01)\x20==\x200.0f\x20&&\x20length(v11)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x200.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20interpolation\x20weights\x0a\x20\x20float\x20s\x20=\x20(lon\x20-\x20lon0)\x20/\x20interval.x;\x0a\x20\x20float\x20t\x20=\x20(lat\x20-\x20lat0)\x20/\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Perform\x20bilinear\x20interpolation\x20on\x20vector\x20components\x0a\x20\x20vec2\x20v0\x20=\x20mix(v00,\x20v10,\x20s);\x0a\x20\x20vec2\x20v1\x20=\x20mix(v01,\x20v11,\x20s);\x0a\x20\x20return\x20mix(v0,\x20v1,\x20t);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec2\x20convertSpeedUnitToLonLat(vec2\x20lonLat,\x20vec2\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLat);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20vec2\x20windVectorInLonLat\x20=\x20vec2(u,\x20v);\x0a\x0a\x20\x20return\x20windVectorInLonLat;\x0a}\x0a\x0avec2\x20calculateSpeedByRungeKutta2(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec2\x20y_n\x20=\x20lonLat;\x0a\x20\x20vec2\x20f_n\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec2\x20speed\x20=\x20h\x20*\x20bilinearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20calculateWindNorm(vec2\x20speed)\x20{\x0a\x20\x20float\x20speedLength\x20=\x20length(speed.xy);\x0a\x20\x20if(speedLength\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Clamp\x20speedLength\x20to\x20range\x0a\x20\x20float\x20clampedSpeed\x20=\x20clamp(speedLength,\x20speedRange.x,\x20speedRange.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(clampedSpeed\x20-\x20speedRange.x)\x20/\x20(speedRange.y\x20-\x20speedRange.x);\x0a\x20\x20return\x20vec2(speedLength,\x20normalizedSpeed);\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec2\x20lonLat\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec2\x20speedOrigin\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLat)\x20*\x20frameRateAdjustment;\x0a\x20\x20vec2\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLat,\x20speed);\x0a\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',postProcessingPositionFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a',renderParticlesFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec4\x20speed;\x0ain\x20float\x20v_segmentPosition;\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20vec2\x20domain;\x0auniform\x20vec2\x20displayRange;\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speed.a\x20>\x20zero\x20&&\x20speed.b\x20>\x20displayRange.x\x20&&\x20speed.b\x20<\x20displayRange.y)\x20{\x0a\x20\x20\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x20\x20\x20\x20vec4\x20baseColor\x20=\x20texture(colorTable,\x20vec2(normalizedSpeed,\x20zero));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用更平滑的渐变效果\x0a\x20\x20\x20\x20float\x20alpha\x20=\x20smoothstep(0.0f,\x201.0f,\x20v_segmentPosition);\x0a\x20\x20\x20\x20alpha\x20=\x20pow(alpha,\x201.5f);\x20//\x20调整透明度渐变曲线\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20根据速度调整透明度\x0a\x20\x20\x20\x20float\x20speedAlpha\x20=\x20mix(0.3f,\x201.0f,\x20speed.a);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20组合颜色和透明度\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(baseColor.rgb,\x20baseColor.a\x20*\x20alpha\x20*\x20speedAlpha);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a\x0a\x20\x20float\x20segmentsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20if(segmentsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',renderParticlesVertexShader=_0x2cdeac(0x45d,0x45b);const {ShaderSource:ShaderSource$1}=mars3d__namespace[_0x2cdeac(0x40e,0x442)];class ShaderManager{static['getCalculateSpeedShader'](){const _0x128850={};return _0x128850['sources']=[calculateSpeedShader],new ShaderSource$1(_0x128850);}static['getUpdatePositionShader'](){const _0x533ee5={};return _0x533ee5['sources']=[updatePositionShader],new ShaderSource$1(_0x533ee5);}static['getSegmentDrawVertexShader'](){const _0xfcafaa={};return _0xfcafaa['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0xfcafaa);}static['getSegmentDrawFragmentShader'](){const _0x740878={};function _0x8e4bd0(_0x4dd16c,_0x26a416){return _0x306136(_0x4dd16c-0x2f6,_0x26a416);}return _0x740878[_0x8e4bd0(0x57,0xa5)]=[renderParticlesFragmentShader],new ShaderSource$1(_0x740878);}static[_0x2cdeac(0x42c,0x4a7)](){const _0x45d158={};return _0x45d158['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x45d158);}}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defaultValue,defined,destroyObject}=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x514110){this[_0x182b6f(-0x17a,-0x189)]=_0x514110[_0x2a6cae(0x3d2,0x36f)],this[_0x2a6cae(0x340,0x366)]=_0x514110['geometry'],this['attributeLocations']=_0x514110[_0x2a6cae(0x3b8,0x364)],this['primitiveType']=_0x514110['primitiveType'],this['uniformMap']=_0x514110[_0x2a6cae(0x2c7,0x32c)]||{},this['vertexShaderSource']=_0x514110[_0x2a6cae(0x48c,0x42d)],this['fragmentShaderSource']=_0x514110['fragmentShaderSource'],this[_0x2a6cae(0x41c,0x41b)]=_0x514110[_0x182b6f(-0x5e,-0xdd)],this[_0x182b6f(-0x20a,-0x18e)]=_0x514110['framebuffer'],this['outputTexture']=_0x514110['outputTexture'],this[_0x2a6cae(0x404,0x424)]=defaultValue(_0x514110['autoClear'],![]),this[_0x182b6f(-0x198,-0x165)]=_0x514110['preExecute'];function _0x2a6cae(_0x4e1028,_0x3a2206){return _0x2cdeac(_0x3a2206- -0x33,_0x4e1028);}function _0x182b6f(_0x2be063,_0x45e2dc){return _0x306136(_0x45e2dc-0xce,_0x2be063);}this[_0x182b6f(-0x19b,-0x153)]=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this[_0x182b6f(-0x137,-0x1ac)]=_0x514110[_0x2a6cae(0x34e,0x34c)]??(()=>!![]),this[_0x182b6f(-0xce,-0xd4)]&&(this['clearCommand']=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x2a6cae(0x31c,0x36a)],'pass':Pass$1[_0x182b6f(-0x125,-0x102)]}));}['createCommand'](_0x460973){function _0x1f43a6(_0x5a68d9,_0x1ecf94){return _0x306136(_0x5a68d9-0x339,_0x1ecf94);}function _0x1dd71f(_0x54fb9f,_0x3f3e8e){return _0x306136(_0x54fb9f-0x14,_0x3f3e8e);}if(this['commandType']==='Draw'){const _0x2f6324={};_0x2f6324[_0x1f43a6(0xae,0x35)]=_0x460973,_0x2f6324['geometry']=this[_0x1dd71f(-0x24c,-0x2d0)],_0x2f6324['attributeLocations']=this[_0x1dd71f(-0x24e,-0x2aa)],_0x2f6324['bufferUsage']=BufferUsage$1['STATIC_DRAW'];const _0x275ef9=VertexArray$1['fromGeometry'](_0x2f6324),_0x54131e={};_0x54131e[_0x1dd71f(-0x277,-0x235)]=_0x460973,_0x54131e['vertexShaderSource']=this['vertexShaderSource'],_0x54131e[_0x1f43a6(0x115,0xfc)]=this['fragmentShaderSource'],_0x54131e[_0x1dd71f(-0x24e,-0x27b)]=this[_0x1f43a6(0xd7,0x124)];const _0x603dc1=ShaderProgram['fromCache'](_0x54131e),_0x5eb686=RenderState[_0x1dd71f(-0x24f,-0x23d)](this[_0x1f43a6(0x18e,0x12a)]),_0x2aa77e={};return _0x2aa77e['owner']=this,_0x2aa77e['vertexArray']=_0x275ef9,_0x2aa77e['primitiveType']=this['primitiveType'],_0x2aa77e['modelMatrix']=Matrix4['IDENTITY'],_0x2aa77e['renderState']=_0x5eb686,_0x2aa77e['shaderProgram']=_0x603dc1,_0x2aa77e['framebuffer']=this['framebuffer'],_0x2aa77e['uniformMap']=this[_0x1dd71f(-0x286,-0x22a)],_0x2aa77e['pass']=Pass$1[_0x1f43a6(0x169,0x1ad)],new DrawCommand(_0x2aa77e);}else{if(this['commandType']===_0x1dd71f(-0x249,-0x2c0)){const _0x39f913={};return _0x39f913[_0x1f43a6(0x101,0x173)]=this,_0x39f913[_0x1dd71f(-0x210,-0x19c)]=this['fragmentShaderSource'],_0x39f913['uniformMap']=this[_0x1f43a6(0x9f,0x23)],_0x39f913[_0x1f43a6(0x195,0x1ee)]=this[_0x1f43a6(0x195,0x158)],_0x39f913[_0x1dd71f(-0x280,-0x261)]=!![],new ComputeCommand(_0x39f913);}else throw new Error('Unknown\x20command\x20type');}}[_0x306136(-0x1ac,-0x1cb)](_0x244afc,_0x1ac0c3){function _0x3bd12c(_0x18716e,_0xaae590){return _0x2cdeac(_0xaae590-0x160,_0x18716e);}function _0x59ac56(_0x7a7085,_0x59c0e5){return _0x2cdeac(_0x7a7085- -0xab,_0x59c0e5);}this['geometry']=_0x1ac0c3,defined(this[_0x3bd12c(0x592,0x537)])&&(this['commandToExecute']['vertexArray']=VertexArray$1['fromGeometry']({'context':_0x244afc,'geometry':this['geometry'],'attributeLocations':this[_0x3bd12c(0x50f,0x4f7)],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}['update'](_0x2c9a13){if(!this[_0x5068bc(0x25e,0x299)]())return;function _0x5068bc(_0x3befe3,_0x7e8b16){return _0x2cdeac(_0x3befe3- -0x121,_0x7e8b16);}if(!this[_0x5df398(0x2d4,0x316)]||!defined(_0x2c9a13))return;!defined(this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x2c9a13[_0x5df398(0x26a,0x1fc)]));defined(this[_0x5068bc(0x2a5,0x292)])&&this[_0x5068bc(0x2a5,0x287)]();function _0x5df398(_0x412e49,_0x4aefa6){return _0x306136(_0x412e49-0x4f5,_0x4aefa6);}if(!_0x2c9a13[_0x5068bc(0x2f4,0x36e)]){console['warn']('frameState.commandList\x20is\x20undefined');return;}defined(this['clearCommand'])&&_0x2c9a13[_0x5df398(0x311,0x2a3)]['push'](this['clearCommand']),defined(this[_0x5df398(0x2d3,0x322)])&&_0x2c9a13['commandList'][_0x5df398(0x296,0x252)](this['commandToExecute']);}[_0x306136(-0x2a3,-0x32b)](){return![];}['destroy'](){function _0x5450c2(_0x1266ba,_0x49d167){return _0x306136(_0x1266ba-0x431,_0x49d167);}function _0x2f7bd9(_0x428ff5,_0x1c7b1b){return _0x2cdeac(_0x428ff5-0xeb,_0x1c7b1b);}if(defined(this['commandToExecute'])){var _0x261910;(_0x261910=this[_0x5450c2(0x20f,0x25a)]['shaderProgram'])===null||_0x261910===void 0x0||_0x261910[_0x5450c2(0x29b,0x272)](),this['commandToExecute']['shaderProgram']=undefined;}return destroyObject(this);}}function deepMerge(_0x3bee53,_0x458ac2){if(!_0x3bee53)return _0x458ac2;function _0x420fb0(_0x39d118,_0x43827d){return _0x306136(_0x39d118-0x6ba,_0x43827d);}if(!_0x458ac2)return _0x3bee53;function _0x5e4a4a(_0x326f64,_0x529eea){return _0x306136(_0x326f64-0x572,_0x529eea);}const _0x5b99a9={..._0x458ac2},_0xdf6b11=_0x5b99a9;for(const _0x3a8957 in _0x3bee53){if(Object[_0x5e4a4a(0x2fe,0x2bc)][_0x5e4a4a(0x3a4,0x384)]['call'](_0x3bee53,_0x3a8957)){const _0x46872e=_0x3bee53[_0x3a8957],_0x57c21e=_0x458ac2[_0x3a8957];if(Array[_0x5e4a4a(0x2ee,0x2fc)](_0x46872e)){_0xdf6b11[_0x3a8957]=_0x46872e[_0x5e4a4a(0x37b,0x354)]();continue;}if(_0x46872e&&typeof _0x46872e==='object'){_0xdf6b11[_0x3a8957]=deepMerge(_0x46872e,_0x57c21e||{});continue;}_0x46872e!==undefined&&(_0xdf6b11[_0x3a8957]=_0x46872e);}}return _0xdf6b11;}const {Cartesian2:Cartesian2$1,FrameRateMonitor,PixelDatatype:PixelDatatype$1,PixelFormat:PixelFormat$1,Sampler:Sampler$1,Texture:Texture$1,TextureMagnificationFilter:TextureMagnificationFilter$1,TextureMinificationFilter:TextureMinificationFilter$1}=mars3d__namespace['Cesium'];class WindParticlesComputing{constructor(_0x4634e9,_0x2d25ea,_0x4b4083,_0x3907be,_0x470111){this['context']=_0x4634e9;function _0x1819ed(_0x3fd73f,_0x8669e5){return _0x306136(_0x3fd73f-0xba,_0x8669e5);}this[_0x3c68ed(0x1e3,0x168)]=_0x4b4083,this['viewerParameters']=_0x3907be,this['windData']=_0x2d25ea,this[_0x1819ed(-0x153,-0x187)]=0x3c,this[_0x3c68ed(0x89,0xeb)]=0x1;const _0x545d0f={};_0x545d0f[_0x3c68ed(0x83,0xdd)]=_0x470111,_0x545d0f['samplingWindow']=0x1,_0x545d0f['quietPeriod']=0x0;function _0x3c68ed(_0x433bf4,_0x392305){return _0x306136(_0x392305-0x352,_0x433bf4);}this[_0x1819ed(-0x1ab,-0x16c)]=new FrameRateMonitor(_0x545d0f),this[_0x1819ed(-0x172,-0x1bf)](),this['createWindTextures'](),this[_0x3c68ed(0x162,0xe1)](),this[_0x3c68ed(0x161,0x18d)]();}['initFrameRate'](){const _0x17cb63=()=>{function _0x5f518e(_0x83f96d,_0x11010c){return _0x42d7(_0x83f96d-0x1e3,_0x11010c);}function _0x32358c(_0x591ff0,_0x2a3b9e){return _0x42d7(_0x2a3b9e-0x1a9,_0x591ff0);}this[_0x32358c(0x303,0x316)]['lastFramesPerSecond']>0x14&&(this[_0x32358c(0x3b9,0x36e)]=this['frameRateMonitor']['lastFramesPerSecond'],this[_0x32358c(0x354,0x314)]=0x3c/Math['max'](this['frameRate'],0x1));};_0x17cb63();function _0x58012c(_0x3a0c40,_0xaba423){return _0x306136(_0xaba423-0x55d,_0x3a0c40);}function _0xa08e3b(_0x24ea0f,_0x750639){return _0x2cdeac(_0x24ea0f-0xe3,_0x750639);}const _0x2649a7=setInterval(_0x17cb63,0x3e8),_0x1800e6=this['destroy'][_0x58012c(0x338,0x396)](this);this[_0x58012c(0x3ea,0x3c7)]=()=>{clearInterval(_0x2649a7),_0x1800e6();};}['createWindTextures'](){const _0x21055a={};_0x21055a['minificationFilter']=TextureMinificationFilter$1[_0x11d342(0x302,0x307)];function _0x290d10(_0x5beff2,_0x4193d5){return _0x2cdeac(_0x5beff2- -0x5ad,_0x4193d5);}_0x21055a[_0x11d342(0x23e,0x2c6)]=TextureMagnificationFilter$1['LINEAR'];function _0x11d342(_0x285f1b,_0x36f1fe){return _0x306136(_0x36f1fe-0x501,_0x285f1b);}const _0x3bcd62={'context':this['context'],'width':this['windData'][_0x290d10(-0x224,-0x206)],'height':this['windData']['height'],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this[_0x290d10(-0x19e,-0x177)]['flipY']??![],'sampler':new Sampler$1(_0x21055a)};this[_0x11d342(0x2a7,0x2bf)]={'U':new Texture$1({..._0x3bcd62,'source':{'arrayBufferView':new Float32Array(this['windData']['u']['array'])}}),'V':new Texture$1({..._0x3bcd62,'source':{'arrayBufferView':new Float32Array(this[_0x11d342(0x37c,0x330)]['v']['array'])}})};}['createParticlesTextures'](){const _0x1d676c={};function _0x3bc02a(_0x364d0d,_0x502c0f){return _0x306136(_0x502c0f-0x33e,_0x364d0d);}_0x1d676c[_0x5d245d(-0x13f,-0x103)]=TextureMinificationFilter$1['NEAREST'];function _0x5d245d(_0x54d5bc,_0x36a8f9){return _0x306136(_0x36a8f9-0x19a,_0x54d5bc);}_0x1d676c['magnificationFilter']=TextureMagnificationFilter$1[_0x3bc02a(0x151,0x16a)];const _0x43b404={'context':this['context'],'width':this['options']['particlesTextureSize'],'height':this['options'][_0x3bc02a(0xf7,0xf7)],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1[_0x3bc02a(0x6f,0xec)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options'][_0x5d245d(-0xc6,-0xad)]*this['options'][_0x5d245d(-0x32,-0xad)]*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x1d676c)};this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0x43b404),'currentParticlesPosition':new Texture$1(_0x43b404),'nextParticlesPosition':new Texture$1(_0x43b404),'postProcessingPosition':new Texture$1(_0x43b404),'particlesSpeed':new Texture$1(_0x43b404)};}['destroyParticlesTextures'](){function _0x1fdbac(_0x333efb,_0xd8609d){return _0x2cdeac(_0xd8609d-0x132,_0x333efb);}Object['values'](this[_0x1fdbac(0x56e,0x55c)])['forEach'](_0x22385d=>_0x22385d['destroy']());}[_0x306136(-0x1c5,-0x22d)](){function _0x225551(_0x29692a,_0x571f8a){return _0x306136(_0x571f8a-0x76c,_0x29692a);}function _0x1634dd(_0x51ec14,_0x4b9904){return _0x2cdeac(_0x4b9904- -0x4a1,_0x51ec14);}this[_0x225551(0x503,0x587)]={'calculateSpeed':new CustomPrimitive({'commandType':_0x225551(0x54e,0x50f),'uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this['windData']['u']['min'],this[_0x225551(0x5b9,0x59b)]['u'][_0x1634dd(-0x139,-0xb8)]),'vRange':()=>new Cartesian2$1(this['windData']['v']['min'],this['windData']['v']['max']),'speedRange':()=>new Cartesian2$1(this['windData']['speed']['min'],this['windData'][_0x225551(0x5e8,0x564)]['max']),'currentParticlesPosition':()=>this['particlesTextures']['currentParticlesPosition'],'speedScaleFactor':()=>{function _0xdb3621(_0xda1312,_0x32ae96){return _0x225551(_0xda1312,_0x32ae96- -0x3d5);}function _0x40660c(_0x25306b,_0x424905){return _0x225551(_0x424905,_0x25306b- -0x30c);}return(this[_0xdb3621(0x13e,0x1b7)]['pixelSize']+0x32)*this['options'][_0xdb3621(0x116,0x110)];},'frameRateAdjustment':()=>this[_0x1634dd(-0x192,-0x10f)],'dimension':()=>new Cartesian2$1(this['windData'][_0x225551(0x582,0x4fc)],this['windData']['height']),'minimum':()=>new Cartesian2$1(this[_0x225551(0x554,0x59b)]['bounds'][_0x1634dd(-0x88,-0x110)],this['windData']['bounds'][_0x1634dd(0x2a,-0x59)]),'maximum':()=>new Cartesian2$1(this[_0x1634dd(-0x5f,-0x79)][_0x1634dd(-0x4d,-0x8a)]['east'],this['windData']['bounds']['north'])},'fragmentShaderSource':ShaderManager[_0x1634dd(-0xe9,-0xf7)](),'outputTexture':this['particlesTextures']['particlesSpeed'],'preExecute':()=>{const _0x225c48=this['particlesTextures']['previousParticlesPosition'];this[_0x4e8191(0x44a,0x4bf)]['previousParticlesPosition']=this[_0x4e8191(0x44a,0x4c3)][_0x252837(-0x1e6,-0x19a)],this['particlesTextures']['currentParticlesPosition']=this[_0x4e8191(0x44a,0x464)]['postProcessingPosition'];function _0x4e8191(_0x1c6a44,_0x2cb5f8){return _0x1634dd(_0x2cb5f8,_0x1c6a44-0x4c1);}function _0x252837(_0x59de93,_0x26792d){return _0x225551(_0x59de93,_0x26792d- -0x74b);}this[_0x252837(-0x125,-0x1ae)]['postProcessingPosition']=_0x225c48,this['primitives'][_0x4e8191(0x381,0x316)][_0x252837(-0x1c9,-0x201)]&&(this['primitives']['calculateSpeed'][_0x252837(-0x178,-0x201)]['outputTexture']=this['particlesTextures'][_0x4e8191(0x3a0,0x39a)]);},'isDynamic':()=>this[_0x225551(0x547,0x582)][_0x225551(0x533,0x4de)]}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this['particlesTextures']['currentParticlesPosition'],'particlesSpeed':()=>this['particlesTextures']['particlesSpeed']},'fragmentShaderSource':ShaderManager[_0x1634dd(-0xf9,-0xe5)](),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':()=>{function _0x28755b(_0x475a15,_0xa39bbe){return _0x1634dd(_0x475a15,_0xa39bbe- -0xe4);}function _0x93b523(_0xd95229,_0x4550b6){return _0x225551(_0xd95229,_0x4550b6- -0x62);}this['primitives']['updatePosition']['commandToExecute']&&(this[_0x93b523(0x54d,0x525)]['updatePosition'][_0x28755b(-0x19b,-0x1ae)]['outputTexture']=this['particlesTextures']['nextParticlesPosition']);},'isDynamic':()=>this['options']['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x225551(0x594,0x50f),'uniformMap':{'nextParticlesPosition':()=>this['particlesTextures']['nextParticlesPosition'],'particlesSpeed':()=>this[_0x1634dd(-0xfb,-0x77)]['particlesSpeed'],'lonRange':()=>this[_0x1634dd(-0x65,-0x88)][_0x1634dd(-0x12b,-0xd0)],'latRange':()=>this[_0x225551(0x5f6,0x58c)]['latRange'],'dataLonRange':()=>new Cartesian2$1(this['windData']['bounds'][_0x1634dd(-0xfe,-0x110)],this['windData'][_0x225551(0x5aa,0x58a)]['east']),'dataLatRange':()=>new Cartesian2$1(this[_0x1634dd(-0x3b,-0x79)][_0x225551(0x608,0x58a)][_0x225551(0x59c,0x5bb)],this['windData']['bounds'][_0x225551(0x546,0x4f0)]),'randomCoefficient':function(){function _0x408b51(_0x2c8c7b,_0x4a2954){return _0x225551(_0x2c8c7b,_0x4a2954- -0xd8);}return Math[_0x408b51(0x3ce,0x401)]();},'dropRate':()=>this['options']['dropRate'],'dropRateBump':()=>this[_0x1634dd(-0xc6,-0x92)][_0x225551(0x4a9,0x4fd)],'useViewerBounds':()=>this['options'][_0x225551(0x524,0x56f)]},'fragmentShaderSource':ShaderManager[_0x225551(0x5ef,0x59f)](),'outputTexture':this['particlesTextures'][_0x1634dd(-0x11c,-0xbc)],'preExecute':()=>{function _0x432eab(_0x323274,_0x321146){return _0x1634dd(_0x321146,_0x323274-0xdd);}function _0x3e1e1c(_0x30baf0,_0x15799a){return _0x225551(_0x30baf0,_0x15799a- -0x4a2);}this['primitives'][_0x3e1e1c(0x118,0xb6)]['commandToExecute']&&(this[_0x432eab(0x50,0x49)][_0x432eab(0x21,-0x1c)]['commandToExecute']['outputTexture']=this[_0x3e1e1c(0xbc,0xfb)][_0x3e1e1c(0x10b,0xb6)]);},'isDynamic':()=>this['options']['dynamic']})};}['reCreateWindTextures'](){function _0x5c09e9(_0x39cb64,_0x96474c){return _0x306136(_0x39cb64-0xea,_0x96474c);}function _0x46db1a(_0x2f9a05,_0xf714d2){return _0x2cdeac(_0xf714d2- -0x548,_0x2f9a05);}this[_0x46db1a(-0x191,-0x191)]['U'][_0x46db1a(-0xb1,-0xe5)](),this['windTextures']['V'][_0x5c09e9(-0xac,-0x5d)](),this['createWindTextures']();}['updateWindData'](_0x348c8){this[_0x2c3aae(0x18b,0x16f)]=_0x348c8;function _0x2c3aae(_0x256a7f,_0x1e1607){return _0x306136(_0x1e1607-0x340,_0x256a7f);}this['reCreateWindTextures']();}['updateOptions'](_0x1e0b87){function _0x51c1ff(_0x477662,_0x5c4aef){return _0x2cdeac(_0x477662- -0x433,_0x5c4aef);}function _0x1cd7df(_0x4da428,_0x55951b){return _0x2cdeac(_0x55951b- -0x2e,_0x4da428);}const _0x3fc8fb=_0x1e0b87['flipY']!==undefined&&_0x1e0b87['flipY']!==this['options'][_0x51c1ff(0x27,0x40)];this[_0x51c1ff(-0x24,-0x4d)]=deepMerge(_0x1e0b87,this[_0x1cd7df(0x46a,0x3e1)]),_0x3fc8fb&&this['reCreateWindTextures']();}[_0x306136(-0x202,-0x259)](_0xb170ed){const {array:_0x342b0a}=_0xb170ed;function _0x756217(_0x23335e,_0x17762e){return _0x2cdeac(_0x23335e- -0x3b3,_0x17762e);}let {min:_0x5e6ae0,max:_0x20b1fa}=_0xb170ed;const _0x1d2816=new Float32Array(_0x342b0a[_0x756217(0xa3,0xc6)]);_0x5e6ae0===undefined&&(console['warn']('min\x20is\x20undefined,\x20calculate\x20min'),_0x5e6ae0=Math[_0x756217(0x69,0x82)](..._0x342b0a));function _0x17c282(_0x50592a,_0x4d1bd4){return _0x2cdeac(_0x4d1bd4- -0x326,_0x50592a);}_0x20b1fa===undefined&&(console['warn']('max\x20is\x20undefined,\x20calculate\x20max'),_0x20b1fa=Math['max'](..._0x342b0a));const _0x26ff32=Math['max'](Math[_0x756217(0x27,0x11)](_0x5e6ae0),Math[_0x756217(0x27,0x23)](_0x20b1fa));for(let _0x1fb009=0x0;_0x1fb009<_0x342b0a['length'];_0x1fb009++){const _0x54d122=_0x342b0a[_0x1fb009]/_0x26ff32;_0x1d2816[_0x1fb009]=_0x54d122;}return _0x1d2816;}['destroy'](){Object[_0x562fc4(0x1b3,0x163)](this['windTextures'])['forEach'](_0x552a67=>_0x552a67[_0x562fc4(0x242,0x266)]()),Object[_0x562fc4(0x12a,0x163)](this['particlesTextures'])['forEach'](_0x4f057a=>_0x4f057a['destroy']());function _0x562fc4(_0x403f18,_0x3b268c){return _0x2cdeac(_0x3b268c- -0x1fd,_0x403f18);}Object['values'](this['primitives'])[_0x562fc4(0x246,0x245)](_0x162ed9=>_0x162ed9['destroy']());function _0x52078d(_0x29c70b,_0x4d3154){return _0x2cdeac(_0x4d3154- -0x243,_0x29c70b);}this[_0x562fc4(0x1cd,0x197)]['destroy']();}}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace[_0x306136(-0x1eb,-0x273)];class WindParticlesRendering{constructor(_0x5ce1e4,_0x10b214,_0x425dff,_0xa06fe){this['context']=_0x5ce1e4,this['options']=_0x10b214;function _0x1563e7(_0x33f56b,_0x28bae8){return _0x306136(_0x28bae8-0x1ac,_0x33f56b);}this['viewerParameters']=_0x425dff,this['computing']=_0xa06fe;function _0x41e16d(_0x20a8c4,_0xa690b2){return _0x2cdeac(_0xa690b2- -0x4f1,_0x20a8c4);}(typeof this['options']['particlesTextureSize']!=='number'||this[_0x1563e7(-0x75,-0x3e)]['particlesTextureSize']<=0x0)&&(console['error'](_0x1563e7(-0x99,-0x6e)),this['options']['particlesTextureSize']=0x100),this[_0x41e16d(-0x11a,-0xba)]=this['createColorTableTexture'](),this[_0x41e16d(-0xdf,-0x116)]=this['createRenderingTextures'](),this['framebuffers']=this['createRenderingFramebuffers'](),this[_0x1563e7(-0x56,-0x39)]=this[_0x1563e7(0x31,-0x1f)]();}[_0x2cdeac(0x3cf,0x3b0)](){const _0x4553d1={};function _0xde2e77(_0x356e8f,_0x570a3a){return _0x2cdeac(_0x356e8f- -0x1fd,_0x570a3a);}_0x4553d1['context']=this['context'],_0x4553d1['width']=this[_0xde2e77(0x171,0x11d)][_0x81f761(0x5f,0x21)],_0x4553d1[_0xde2e77(0x1fb,0x1ae)]=this['context'][_0xde2e77(0x1ea,0x273)],_0x4553d1['pixelFormat']=PixelFormat[_0xde2e77(0x1fd,0x267)],_0x4553d1[_0xde2e77(0x268,0x2af)]=PixelDatatype['UNSIGNED_BYTE'];const _0x36a926=_0x4553d1,_0x3ccd51={};_0x3ccd51['context']=this[_0x81f761(0x78,0xf9)],_0x3ccd51['width']=this['context']['drawingBufferWidth'],_0x3ccd51['height']=this[_0x81f761(0x78,0x80)]['drawingBufferHeight'],_0x3ccd51[_0xde2e77(0x262,0x1e6)]=PixelFormat['DEPTH_COMPONENT'];function _0x81f761(_0x4ad19b,_0x2200a3){return _0x306136(_0x4ad19b-0x303,_0x2200a3);}_0x3ccd51['pixelDatatype']=PixelDatatype['UNSIGNED_INT'];const _0x141e4c=_0x3ccd51;return{'segmentsColor':new Texture(_0x36a926),'segmentsDepth':new Texture(_0x141e4c)};}['createRenderingFramebuffers'](){const _0x1aec37={};function _0x59aed2(_0x4c3f2b,_0x3273f7){return _0x2cdeac(_0x3273f7- -0x20d,_0x4c3f2b);}return _0x1aec37['context']=this['context'],_0x1aec37['colorTextures']=[this['textures']['segmentsColor']],_0x1aec37['depthTexture']=this[_0x59aed2(0x209,0x1ce)]['segmentsDepth'],{'segments':new Framebuffer(_0x1aec37)};}['destoryRenderingFramebuffers'](){function _0x5884c8(_0x33a8f3,_0x3ff48e){return _0x306136(_0x33a8f3-0x41e,_0x3ff48e);}function _0x4c3831(_0x24133b,_0x110781){return _0x2cdeac(_0x24133b- -0x178,_0x110781);}Object[_0x4c3831(0x1e8,0x1a8)](this[_0x5884c8(0x1f1,0x25b)])[_0x5884c8(0x267,0x278)](_0x2aacd9=>{function _0x1c5ba5(_0x49b5b5,_0x476949){return _0x5884c8(_0x476949- -0x409,_0x49b5b5);}_0x2aacd9[_0x1c5ba5(-0x148,-0x181)]();});}[_0x306136(-0x20f,-0x1dd)](){const _0x52599c=new Float32Array(this['options']['colors'][_0x14610a(0x30b,0x330)](_0x2ba382=>{const _0x194151=Color$1['fromCssColorString'](_0x2ba382);function _0x3c7357(_0x5a3b61,_0x19ad59){return _0x14610a(_0x19ad59-0x1e2,_0x5a3b61);}return[_0x194151[_0x3c7357(0x434,0x49e)],_0x194151['green'],_0x194151['blue'],_0x194151['alpha']];})),_0x29eb31={};_0x29eb31[_0x4e85b2(-0xf5,-0x17d)]=TextureMinificationFilter[_0x4e85b2(-0x52,-0x1c)],_0x29eb31[_0x14610a(0x2a6,0x235)]=TextureMagnificationFilter[_0x4e85b2(-0x52,-0x74)],_0x29eb31[_0x14610a(0x2c6,0x240)]=TextureWrap['CLAMP_TO_EDGE'];function _0x14610a(_0x2c8d30,_0x1fb324){return _0x2cdeac(_0x2c8d30- -0x118,_0x1fb324);}function _0x4e85b2(_0x127f93,_0x4b4d7c){return _0x2cdeac(_0x127f93- -0x451,_0x4b4d7c);}return _0x29eb31[_0x4e85b2(-0xa,-0x40)]=TextureWrap['CLAMP_TO_EDGE'],new Texture({'context':this[_0x4e85b2(-0xe3,-0xc1)],'width':this[_0x14610a(0x2f7,0x33b)]['colors'][_0x4e85b2(0x5,0x82)],'height':0x1,'pixelFormat':PixelFormat['RGBA'],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x29eb31),'source':{'width':this['options']['colors']['length'],'height':0x1,'arrayBufferView':_0x52599c}});}[_0x2cdeac(0x41e,0x447)](){const _0x10f376=0x4,_0x117914=this['options']['particlesTextureSize'];let _0x1dc67f=[];for(let _0x536889=0x0;_0x536889<_0x117914;_0x536889++){for(let _0x5538c5=0x0;_0x5538c5<_0x117914;_0x5538c5++){for(let _0x49cbce=0x0;_0x49cbce<_0x10f376;_0x49cbce++){_0x1dc67f['push'](_0x536889/_0x117914),_0x1dc67f['push'](_0x5538c5/_0x117914);}}}_0x1dc67f=new Float32Array(_0x1dc67f);const _0x3d00f3=this[_0x5beb95(-0x1b0,-0x1d0)]['particlesTextureSize']**0x2;let _0x162727=[];for(let _0x369244=0x0;_0x369244<_0x3d00f3;_0x369244++){_0x162727['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x162727=new Float32Array(_0x162727);let _0x3293f0=[];for(let _0x23f5b9=0x0,_0x111ec6=0x0;_0x23f5b9<_0x3d00f3;_0x23f5b9++){_0x3293f0['push'](_0x111ec6+0x0,_0x111ec6+0x1,_0x111ec6+0x2,_0x111ec6+0x2,_0x111ec6+0x1,_0x111ec6+0x3),_0x111ec6+=_0x10f376;}_0x3293f0=new Uint32Array(_0x3293f0);const _0xd0d920={};_0xd0d920['componentDatatype']=ComponentDatatype['FLOAT'],_0xd0d920['componentsPerAttribute']=0x2,_0xd0d920['values']=_0x1dc67f;const _0x2e964c={};_0x2e964c['componentDatatype']=ComponentDatatype['FLOAT'];function _0x49d2fa(_0x55f5dd,_0x2dd263){return _0x2cdeac(_0x2dd263- -0x4ee,_0x55f5dd);}_0x2e964c[_0x5beb95(-0x1ae,-0x1b4)]=0x3,_0x2e964c['values']=_0x162727;const _0x147f0d=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0xd0d920),'normal':new GeometryAttribute(_0x2e964c)}),'indices':_0x3293f0});function _0x5beb95(_0x54ced8,_0x1351f3){return _0x2cdeac(_0x54ced8- -0x5bf,_0x1351f3);}return _0x147f0d;}['createRawRenderState'](_0x430faf){const _0x575132={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x430faf};return Appearance['getDefaultRenderState'](!![],![],_0x575132);}['createPrimitives'](){const _0x2b4498={};_0x2b4498['st']=0x0,_0x2b4498[_0xead771(0x58c,0x502)]=0x1;const _0x16a9ad={};_0x16a9ad[_0x4dca8e(0x92,0x55)]=!![];const _0x27bebf={};_0x27bebf['enabled']=!![],_0x27bebf['blendEquation']=WebGLRenderingContext[_0xead771(0x54c,0x4ed)],_0x27bebf[_0xead771(0x4b4,0x528)]=WebGLRenderingContext['SRC_ALPHA'],_0x27bebf['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x507ebd={};function _0xead771(_0x2ab1b7,_0x42590c){return _0x306136(_0x42590c-0x6fb,_0x2ab1b7);}_0x507ebd[_0x4dca8e(0xdc,0x59)]=undefined,_0x507ebd[_0x4dca8e(0xec,0x8c)]=_0x16a9ad,_0x507ebd[_0x4dca8e(0x32,0xba)]=!![],_0x507ebd['blending']=_0x27bebf;function _0x4dca8e(_0x1ea45d,_0x19fb72){return _0x306136(_0x1ea45d-0x29c,_0x19fb72);}const _0x23acdd=new CustomPrimitive({'commandType':_0xead771(0x535,0x556),'attributeLocations':_0x2b4498,'geometry':this['createSegmentsGeometry'](),'primitiveType':PrimitiveType[_0xead771(0x47f,0x4b6)],'uniformMap':{'previousParticlesPosition':()=>this['computing'][_0x4dca8e(0xcd,0x87)]['previousParticlesPosition'],'currentParticlesPosition':()=>this['computing'][_0x4dca8e(0xcd,0xa3)][_0xead771(0x51c,0x540)],'postProcessingPosition':()=>this['computing']['particlesTextures']['postProcessingPosition'],'particlesSpeed':()=>this['computing'][_0x4dca8e(0xcd,0x11b)]['particlesSpeed'],'frameRateAdjustment':()=>this[_0x4dca8e(0x6c,0x22)]['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{function _0x451f39(_0x120f3e,_0x15435c){return _0x4dca8e(_0x120f3e-0x1df,_0x15435c);}function _0x1a7b76(_0x5a1b2a,_0x442242){return _0xead771(_0x442242,_0x5a1b2a- -0x219);}var _0xa5fbfa,_0x2e6544;const _0x5d3cf0=new Cartesian2(((_0xa5fbfa=this['options'][_0x451f39(0x2da,0x290)])===null||_0xa5fbfa===void 0x0?void 0x0:_0xa5fbfa[_0x1a7b76(0x305,0x2f6)])??this[_0x451f39(0x24b,0x251)]['windData']['speed'][_0x451f39(0x29e,0x299)],((_0x2e6544=this[_0x451f39(0x291,0x315)][_0x1a7b76(0x341,0x322)])===null||_0x2e6544===void 0x0?void 0x0:_0x2e6544['max'])??this['computing'][_0x451f39(0x2aa,0x282)][_0x1a7b76(0x2da,0x286)]['max']);return _0x5d3cf0;},'displayRange':()=>{var _0x8bae1f,_0x5f229e;function _0x242afb(_0x35ca07,_0x316ad6){return _0xead771(_0x316ad6,_0x35ca07- -0x303);}function _0x1755d8(_0x2e6b59,_0x4b76a7){return _0x4dca8e(_0x4b76a7-0x165,_0x2e6b59);}const _0x517843=new Cartesian2(((_0x8bae1f=this['options'][_0x242afb(0x1ab,0x213)])===null||_0x8bae1f===void 0x0?void 0x0:_0x8bae1f[_0x1755d8(0x21f,0x224)])??this['computing'][_0x1755d8(0x1a8,0x230)]['speed']['min'],((_0x5f229e=this['options']['displayRange'])===null||_0x5f229e===void 0x0?void 0x0:_0x5f229e['max'])??this[_0x1755d8(0x18a,0x1d1)][_0x1755d8(0x213,0x230)]['speed'][_0x242afb(0x1e8,0x1cf)]);return _0x517843;},'particleHeight':()=>this['options'][_0xead771(0x4ba,0x50e)]||0x0,'aspect':()=>this[_0x4dca8e(0x11,-0x67)][_0xead771(0x4a4,0x457)]/this['context']['drawingBufferHeight'],'pixelSize':()=>this['viewerParameters']['pixelSize'],'lineWidth':()=>{function _0x3d4caf(_0x4c1642,_0x28283a){return _0xead771(_0x28283a,_0x4c1642- -0x155);}const _0x5aa9b2={};_0x5aa9b2['min']=0x1;function _0x2baac5(_0x3c0ce5,_0x2cc7e1){return _0x4dca8e(_0x2cc7e1-0xac,_0x3c0ce5);}_0x5aa9b2['max']=0x2;const _0xe0208e=this['options'][_0x2baac5(0x164,0xdc)]||_0x5aa9b2;return new Cartesian2(_0xe0208e['min'],_0xe0208e[_0x3d4caf(0x396,0x41e)]);},'lineLength':()=>{const _0x5e0a05={};_0x5e0a05['min']=0x14,_0x5e0a05['max']=0x64;const _0x5bf64a=this['options']['lineLength']||_0x5e0a05;return new Cartesian2(_0x5bf64a['min'],_0x5bf64a['max']);},'is3D':()=>this['viewerParameters'][_0xead771(0x535,0x55b)]===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this['textures'][_0xead771(0x475,0x48d)]},'vertexShaderSource':ShaderManager['getSegmentDrawVertexShader'](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x507ebd)}),_0x485c1a={};return _0x485c1a['segments']=_0x23acdd,_0x485c1a;}[_0x306136(-0x266,-0x1e7)](){const _0x2f7621=this[_0x4fe1bf(-0x152,-0x12a)]();this[_0x3680e5(-0x1d8,-0x1a1)][_0x3680e5(-0x298,-0x2a3)]['geometry']=_0x2f7621;const _0x1f09bd={};function _0x4fe1bf(_0x3d678d,_0x2b4379){return _0x306136(_0x3d678d-0x89,_0x2b4379);}_0x1f09bd['context']=this[_0x3680e5(-0x27e,-0x271)];function _0x3680e5(_0x41a77b,_0x2d2bf0){return _0x2cdeac(_0x41a77b- -0x5ec,_0x2d2bf0);}_0x1f09bd['geometry']=_0x2f7621,_0x1f09bd[_0x3680e5(-0x255,-0x2b2)]=this['primitives']['segments']['attributeLocations'],_0x1f09bd[_0x3680e5(-0x1fe,-0x181)]=BufferUsage['STATIC_DRAW'];const _0x416898=VertexArray[_0x4fe1bf(-0x1cb,-0x145)](_0x1f09bd);this['primitives'][_0x3680e5(-0x298,-0x2d9)]['commandToExecute']&&(this['primitives']['segments'][_0x3680e5(-0x215,-0x1cd)]['vertexArray']=_0x416898);}[_0x306136(-0x28a,-0x202)](){function _0x392fc1(_0x3f9f1d,_0x572888){return _0x2cdeac(_0x3f9f1d- -0x1f0,_0x572888);}function _0x38a108(_0x495550,_0x4d1a49){return _0x306136(_0x495550-0x792,_0x4d1a49);}this['colorTable'][_0x38a108(0x5fc,0x577)](),this['colorTable']=this[_0x392fc1(0x1fa,0x1a9)]();}[_0x2cdeac(0x404,0x440)](_0x1e8e56){function _0xea892d(_0x4589bc,_0x38c6a6){return _0x2cdeac(_0x38c6a6- -0x309,_0x4589bc);}const _0x99fc7a=_0x1e8e56['colors']&&JSON['stringify'](_0x1e8e56['colors'])!==JSON[_0x5a4cf0(-0x4,-0x60)](this[_0xea892d(0x93,0x106)][_0x5a4cf0(-0x155,-0x146)]);this['options']=deepMerge(_0x1e8e56,this['options']);function _0x5a4cf0(_0x3c28c5,_0x183384){return _0x2cdeac(_0x183384- -0x4a1,_0x3c28c5);}_0x99fc7a&&this['onColorTableChange']();}[_0x2cdeac(0x463,0x3f2)](){Object['values'](this['framebuffers'])[_0x219a9e(-0xdd,-0xb7)](_0x5a035c=>{_0x5a035c['destroy']();});function _0x219a9e(_0x1ad015,_0x2520db){return _0x2cdeac(_0x1ad015- -0x51f,_0x2520db);}function _0x10d9bb(_0x44fbd7,_0x566076){return _0x306136(_0x44fbd7-0x748,_0x566076);}Object[_0x219a9e(-0x1bf,-0x195)](this[_0x219a9e(-0x10b,-0xc2)])[_0x219a9e(-0xdd,-0x14f)](_0x371d6f=>{_0x371d6f['destroy']();}),this[_0x219a9e(-0xe8,-0x6c)][_0x219a9e(-0xbc,-0xfa)]();}}const {ClearCommand,Color,Pass}=mars3d__namespace['Cesium'];class WindParticleSystem{constructor(_0x5d6c37,_0x40b39f,_0x1cbf70,_0x3ab541,_0x180a52){this['context']=_0x5d6c37,this['options']=_0x1cbf70,this[_0x31273a(0x271,0x22f)]=_0x3ab541;function _0x1184c4(_0x1ab987,_0x1c046f){return _0x2cdeac(_0x1c046f-0xe7,_0x1ab987);}function _0x31273a(_0x2d3c2c,_0x32a6f7){return _0x2cdeac(_0x32a6f7- -0x1ea,_0x2d3c2c);}this['computing']=new WindParticlesComputing(_0x5d6c37,_0x40b39f,_0x1cbf70,_0x3ab541,_0x180a52),this['rendering']=new WindParticlesRendering(_0x5d6c37,_0x1cbf70,_0x3ab541,this[_0x1184c4(0x473,0x4b0)]),this['clearFramebuffers']();}[_0x306136(-0x19b,-0x1a4)](){function _0x1d56b5(_0x3986b3,_0x3d05af){return _0x2cdeac(_0x3d05af- -0x4ca,_0x3986b3);}const _0x54d640=[this['computing']['primitives']['calculateSpeed'],this[_0x1d56b5(-0x112,-0x101)]['primitives'][_0x5dc130(0xf7,0xd3)],this[_0x5dc130(0xb1,0x9e)]['primitives'][_0x5dc130(0x96,0xba)],this[_0x5dc130(0x2b,0x45)]['primitives']['segments']];function _0x5dc130(_0x58dfa1,_0x27a584){return _0x2cdeac(_0x27a584- -0x32b,_0x58dfa1);}return _0x54d640;}['clearFramebuffers'](){const _0x275727=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass[_0x564664(0x3e2,0x368)]});function _0x305ddd(_0x58b63c,_0x1a13f0){return _0x2cdeac(_0x58b63c-0x3a,_0x1a13f0);}function _0x564664(_0x2767e2,_0x411804){return _0x306136(_0x2767e2-0x5b2,_0x411804);}Object[_0x305ddd(0x3ff,0x418)](this[_0x564664(0x329,0x3a9)][_0x564664(0x385,0x37c)])[_0x564664(0x3fb,0x474)](_0x1da10e=>{_0x275727[_0x579227(0xa6,0xa4)]=this['rendering']['framebuffers'][_0x1da10e];function _0x579227(_0x129444,_0x6ebfba){return _0x564664(_0x6ebfba- -0x2b2,_0x129444);}_0x275727['execute'](this['context']);});}['changeOptions'](_0x550891){function _0x257537(_0x13ef1f,_0x430d4b){return _0x2cdeac(_0x430d4b-0x4d,_0x13ef1f);}let _0x290aa2=![];function _0x59ea73(_0x4939ee,_0x47178d){return _0x306136(_0x47178d-0x6da,_0x4939ee);}_0x550891['particlesTextureSize']&&this[_0x59ea73(0x4db,0x4f0)][_0x257537(0x405,0x3ff)]!==_0x550891['particlesTextureSize']&&(_0x290aa2=!![]);const _0x344fa0=deepMerge(_0x550891,this['options']);if(_0x344fa0['particlesTextureSize']<0x1)throw new Error('particlesTextureSize\x20must\x20be\x20greater\x20than\x200');this['options']=_0x344fa0,this[_0x257537(0x340,0x3bd)]['updateOptions'](_0x550891),this['computing']['updateOptions'](_0x550891),_0x290aa2&&(this[_0x257537(0x3cd,0x416)][_0x59ea73(0x515,0x4e9)](),this[_0x59ea73(0x51b,0x4aa)]['createParticlesTextures'](),this['rendering']['onParticlesTextureSizeChange']());}['applyViewerParameters'](_0x400e3e){this['viewerParameters']=_0x400e3e;function _0x3391df(_0x5b7416,_0x369b15){return _0x2cdeac(_0x369b15-0xe5,_0x5b7416);}this['computing']['viewerParameters']=_0x400e3e,this['rendering'][_0x3391df(0x4e7,0x4fe)]=_0x400e3e;}[_0x306136(-0x196,-0x11a)](){this['computing']['destroy']();function _0x141401(_0x2f3911,_0x55d302){return _0x306136(_0x2f3911-0x210,_0x55d302);}function _0x4211e4(_0x2d1d61,_0x3e541b){return _0x306136(_0x3e541b-0x77,_0x2d1d61);}this[_0x141401(-0x79,-0xfc)][_0x141401(0x7a,0xb8)]();}}function _0x42d7(_0x4bc3aa,_0xeebd54){const _0x44e892=_0x44e8();return _0x42d7=function(_0x42d712,_0x4a1606){_0x42d712=_0x42d712-0x12d;let _0x56d51a=_0x44e892[_0x42d712];return _0x56d51a;},_0x42d7(_0x4bc3aa,_0xeebd54);}const Cesium$1=mars3d__namespace[_0x2cdeac(0x40e,0x45d)],BaseLayer$1=mars3d__namespace[_0x306136(-0x292,-0x236)][_0x2cdeac(0x376,0x394)],_0x2633fe={};_0x2633fe['min']=0x1,_0x2633fe[_0x306136(-0x210,-0x1f5)]=0x2;function _0x44e8(){const _0x2c31b7=['east','owner','_mountedHook','2713830MZlrDk','willReadFrequently','keys','preExecute','clear','floor','computing','addEventListener','_onMouseDownEvent','framebuffers','initFrameRate','clientWidth','createRenderingTextures','updateViewerParameters','lonRange','redraw','maxAge','red','fragmentShaderSource','speedRate','commandToExecute','show','EventType','abs','textures','pointer-events','1udpeBZ','wrapS','Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.','interpolated','LayerUtil','vmax','canvasContext','udata','postProcessingPosition','applyViewerParameters','drawingBufferHeight','vdata','max','createColorTableTexture','FUNC_ADD','frameRate','isInExtent','bufferUsage','enabled','3161335ZeCtqh','speed','_randomParticle','getParticles','2738880affRKt','original','dropRate','processWindData','height','style','RGBA','zIndex','useViewerBounds','particles','updatePosition','LINEAR','normal','533951RcOVPz','slice','reverseY','updateOptions','hidden','_pointerEvents','tlat','destroyParticlesTextures','postMessage','particleSystem','_addedHook','particleHeight','36gTOIUl','Cesium','options','_setOptionsHook','componentsPerAttribute','getRandomLatLng','now','primitives','commandList','lat','bounds','setData','viewerParameters','7HtXZSm','mouseUp','min','mouse_move','createSegmentsGeometry','data','8oAbxcH','_calc_speedRate','camera','flatMap','getUVByPoint','NEAREST','blendFuncSource','fillRect','windData','OPAQUE','particlesTextures','hasOwnProperty','getPostProcessingPositionShader','0px','createPrimitives','Cartesian2','_canrefresh','lineTo','bind','initWorker','createComputingPrimitives','sqrt','getContext','colorTable','particlesNumber','viewport','ColorRamp','default','mars3d-canvasWind','pickEllipsoid','currentParticlesPosition','canvas','color','stringify','forEach','__proto__','none','_updateIng','Cartesian3','wrapT','south','depthTest','canvasWidth','globalCompositeOperation','mode','setGeometry','rawRenderState','removeChild','_onMouseMoveEvent','_calcUV','wheel','strokeStyle','Draw','outputTexture','length','autoClear','domain','sceneMode','flipY','removeEventListener','moveTo','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0ain\x20vec3\x20normal;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20frameRateAdjustment;\x0auniform\x20float\x20particleHeight;\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20vec2\x20lineWidth;\x0auniform\x20vec2\x20lineLength;\x0auniform\x20vec2\x20domain;\x0auniform\x20bool\x20is3D;\x0a\x0a//\x20添加输出变量传递给片元着色器\x0aout\x20vec4\x20speed;\x0aout\x20float\x20v_segmentPosition;\x0aout\x20vec2\x20textureCoordinate;\x0a\x0a//\x20添加结构体定义\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0avec3\x20convertCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLat.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20if(is3D)\x20{\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLat);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用\x20modelViewProjection\x20矩阵进行投影变换\x0a\x20\x20\x20\x20vec4\x20projectedPosition\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20\x20\x20return\x20projectedPosition;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20vec3\x20position2D\x20=\x20vec3(radians(lonLat.x),\x20radians(lonLat.y),\x200.0f);\x0a\x20\x20\x20\x20return\x20czm_modelViewProjection\x20*\x20vec4(position2D,\x201.0f);\x0a\x20\x20}\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign,\x20float\x20widthFactor)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20//\x20计算方向向量\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x0a\x20\x20\x20\x20//\x20计算法向量\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x0a\x20\x20\x20\x20//\x20使用\x20widthFactor\x20调整宽度\x0a\x20\x20float\x20offsetLength\x20=\x20widthFactor\x20*\x20lineWidth.y;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20翻转\x20Y\x20轴坐标\x0a\x20\x20vec2\x20flippedIndex\x20=\x20vec2(st.x,\x201.0f\x20-\x20st.y);\x0a\x0a\x20\x20vec2\x20particleIndex\x20=\x20flippedIndex;\x0a\x20\x20speed\x20=\x20texture(particlesSpeed,\x20particleIndex);\x0a\x0a\x20\x20vec2\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rg;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x0a\x20\x20\x20\x20//\x20计算速度相关的宽度和长度因子\x0a\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x0a\x20\x20\x20\x20//\x20根据速度计算宽度\x0a\x20\x20float\x20widthFactor\x20=\x20mix(lineWidth.x,\x20lineWidth.y,\x20normalizedSpeed);\x0a\x20\x20widthFactor\x20*=\x20(pointToUse\x20<\x200\x20?\x201.0f\x20:\x200.5f);\x20//\x20头部更宽,尾部更窄\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20length\x20based\x20on\x20speed\x0a\x20\x20float\x20lengthFactor\x20=\x20mix(lineLength.x,\x20lineLength.y,\x20normalizedSpeed)\x20*\x20pixelSize;\x0a\x0a\x20\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20头部位置\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x200.0f;\x20//\x20头部\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Get\x20direction\x20and\x20normalize\x20it\x20to\x20length\x201.0\x0a\x20\x20\x20\x20vec4\x20direction\x20=\x20normalize(projectedCoordinates.next\x20-\x20projectedCoordinates.current);\x0a\x20\x20\x20\x20vec4\x20extendedPosition\x20=\x20projectedCoordinates.current\x20+\x20direction\x20*\x20lengthFactor;\x0a\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20extendedPosition,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20extendedPosition\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x201.0f;\x20//\x20尾部\x0a\x20\x20}\x0a\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a}\x0a','getPrimitives','pixelFormat','vertexShaderSource','round','lighter','destroy','_onMouseUpEvent','pixelDatatype','alt','segments','drawingBufferWidth','isDestroyed','PointTrans','getSpeed','container','sources','colors','minificationFilter','visibility','clientHeight','uniformMap','values','calculateSpeed','beginPath','frameTime','toWindowCoordinates','persists','random','layer','worker','setDate','_createCanvas','dynamic','requestRender','_animateFrame','context','onColorTableChange','rendering','_drawLines','speedFactor','_updateIng2','age','isArray','BaseLayer','mouse_down','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20获取当前粒子的位置\x0a\x20\x20vec2\x20currentPos\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20获取粒子的速度\x0a\x20\x20vec2\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20计算下一个位置\x0a\x20\x20vec2\x20nextPos\x20=\x20currentPos\x20+\x20speed;\x0a\x0a\x20\x20\x20\x20//\x20将新的位置写入\x20fragColor\x0a\x20\x20fragColor\x20=\x20vec4(nextPos,\x200.0f,\x201.0f);\x0a}\x0a','top','update','fixedHeight','xmax','north','stroke','isDynamic','particlesSpeed','cols','setOptions','fromDegrees','scene','prototype','pointerEvents','lng','createParticlesTextures','width','dropRateBump','segmentsDepth','visible','lineWidth','rgb(206,255,255)','depthMask','create','west','frameRateAdjustment','onParticlesTextureSizeChange','frameRateMonitor','grid','fromCache','attributeLocations','onmessage','geometry','push','CanvasWindField','Compute','framebuffer','rows','windField','cos','getUVByXY','commandType','updateWindData','1175422WLSxJP','fromGeometry','CanvasWindLayer','FLOAT','changeOptions','ymin','getCalculateSpeedShader','globe','displayRange','_tomap','tlng','getColor','type','array','particlesTextureSize','pow','TRIANGLES','2143368yBZNZk','resize','windTextures','_map','off','getU','ymax','getUpdatePositionShader','defineProperty','magnificationFilter','8169204GKdDsP'];_0x44e8=function(){return _0x2c31b7;};return _0x44e8();}const _0x3239fd={};_0x3239fd[_0x2cdeac(0x41c,0x3e8)]=0x14,_0x3239fd[_0x2cdeac(0x3e9,0x365)]=0x64;const _0x47f6fc={};_0x47f6fc['particlesTextureSize']=0x64,_0x47f6fc['particleHeight']=0x3e8,_0x47f6fc[_0x306136(-0x26c,-0x2a1)]=_0x2633fe,_0x47f6fc['lineLength']=_0x3239fd,_0x47f6fc[_0x306136(-0x287,-0x275)]=0x1,_0x47f6fc[_0x2cdeac(0x3f6,0x42c)]=0.003,_0x47f6fc['dropRateBump']=0.001,_0x47f6fc['colors']=[_0x2cdeac(0x38e,0x3c4)],_0x47f6fc[_0x2cdeac(0x45a,0x472)]=![],_0x47f6fc['dynamic']=!![];const DEF_OPTIONS=_0x47f6fc;class WindLayer extends BaseLayer$1{constructor(_0x3367a8={}){_0x3367a8={...DEF_OPTIONS,..._0x3367a8},super(_0x3367a8),this['_setOptionsHook'](_0x3367a8,_0x3367a8);}get['layer'](){return this['primitives'];}get['data'](){return this['options']['data'];}set[_0x2cdeac(0x41f,0x3c6)](_0x503df5){this['options']['data']=_0x503df5,this['setData'](_0x503df5);}get['colors'](){function _0x52af19(_0x4a26cf,_0x3848d2){return _0x306136(_0x4a26cf-0x9,_0x3848d2);}return this[_0x52af19(-0x1e1,-0x1a8)]['colors'];}set[_0x2cdeac(0x35b,0x3b9)](_0x4d4ec9){this['options']['colors']=_0x4d4ec9;const _0x5bc46e={};function _0x480abd(_0x23aa14,_0x13f8ce){return _0x2cdeac(_0x23aa14- -0x544,_0x13f8ce);}_0x5bc46e[_0x480abd(-0x1e9,-0x174)]=_0x4d4ec9,this['_setOptionsHook'](this['options'],_0x5bc46e);}[_0x2cdeac(0x3c2,0x3e0)](){}['_addedHook'](){this[_0x3abf74(0x46,-0x16)]=this[_0x357de7(0x3fd,0x476)]['scene'],this[_0x357de7(0x467,0x442)]=this['_map']['camera'];this[_0x3abf74(-0xb,0x75)][_0x357de7(0x464,0x4ec)]&&this['setData'](this[_0x3abf74(0x73,0x75)]['data']);function _0x357de7(_0x33dc14,_0x38cb1d){return _0x2cdeac(_0x33dc14-0x45,_0x38cb1d);}if(!this[_0x357de7(0x46d,0x4ee)])return;this['viewerParameters']={'lonRange':new Cesium$1[(_0x357de7(0x474,0x498))](-0xb4,0xb4),'latRange':new Cesium$1[(_0x357de7(0x474,0x4d6))](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this['scene'][_0x3abf74(0x65,0xb2)]},this[_0x3abf74(-0x4f,0x36)](),this['particleSystem']=new WindParticleSystem(this['scene'][_0x357de7(0x3b3,0x412)],this['windData'],this[_0x357de7(0x454,0x446)],this[_0x357de7(0x45e,0x438)],this[_0x3abf74(-0x81,-0x16)]),this[_0x357de7(0x459,0x3e2)]=this['particleSystem']['getPrimitives'](),this['primitives']['forEach'](_0x1d3a0d=>{this['scene']['primitives']['add'](_0x1d3a0d);}),this[_0x357de7(0x467,0x4ae)]['percentageChanged']=0.01,this['camera']['changed']['addEventListener'](this['updateViewerParameters'][_0x357de7(0x477,0x4a3)](this));function _0x3abf74(_0x58d5e6,_0x59292f){return _0x2cdeac(_0x59292f- -0x39a,_0x58d5e6);}this['scene']['morphComplete'][_0x3abf74(-0x40,0x30)](this[_0x357de7(0x415,0x3a0)][_0x357de7(0x477,0x46b)](this)),window['addEventListener']('resize',this[_0x357de7(0x415,0x3fe)]['bind'](this));}['_removedHook'](){function _0x5c563c(_0x4ce791,_0xe0d045){return _0x306136(_0x4ce791-0x1ed,_0xe0d045);}function _0x1539d1(_0x229385,_0x4b4042){return _0x306136(_0x229385-0x41d,_0x4b4042);}this[_0x1539d1(0x246,0x2c3)]['changed']['removeEventListener'](this['updateViewerParameters']['bind'](this)),this[_0x5c563c(-0x88,-0xf2)]['morphComplete']['removeEventListener'](this['updateViewerParameters']['bind'](this)),window['removeEventListener'](_0x1539d1(0x1da,0x221),this['updateViewerParameters']['bind'](this)),this[_0x5c563c(0x8,-0x66)]&&(this[_0x5c563c(0x8,0x49)]['forEach'](_0x149693=>{function _0x205e14(_0x1cb9b2,_0x22c477){return _0x5c563c(_0x1cb9b2-0x3a2,_0x22c477);}function _0x180040(_0x3abfcb,_0xc0aa8c){return _0x1539d1(_0x3abfcb- -0x125,_0xc0aa8c);}this[_0x205e14(0x31a,0x377)][_0x180040(0x113,0x17f)]['remove'](_0x149693);}),delete this[_0x5c563c(0x8,0x82)]),this[_0x1539d1(0x22e,0x1c6)]&&(this['particleSystem']['destroy'](),delete this['particleSystem']);}[_0x2cdeac(0x418,0x464)](_0x499081,_0x3cd021){function _0x466a0d(_0x30db47,_0x4934dc){return _0x306136(_0x4934dc-0x668,_0x30db47);}this[_0x342e9d(-0xf9,-0xfb)]=this[_0x466a0d(0x445,0x466)](_0x499081);if(_0x3cd021){this['_removedHook'](),this[_0x466a0d(0x446,0x47a)]();return;}function _0x342e9d(_0x1262ae,_0x5732ef){return _0x306136(_0x1262ae-0xd8,_0x5732ef);}this['particleSystem']?(this['particleSystem']['computing'][_0x466a0d(0x40e,0x412)](this['windData']),this['scene'][_0x342e9d(-0x1b5,-0x209)]()):this[_0x466a0d(0x3f0,0x47a)]();}[_0x306136(-0x1e9,-0x1f5)](_0x38bca8,_0x490381){function _0x193252(_0x46a840,_0x5c2999){return _0x306136(_0x5c2999-0x117,_0x46a840);}function _0x251cdf(_0x51e6c8,_0x49698b){return _0x306136(_0x49698b-0x63c,_0x51e6c8);}this['particleSystem']&&(this['particleSystem'][_0x193252(-0xb8,-0x13a)](_0x490381),this[_0x193252(-0x130,-0x15e)][_0x251cdf(0x420,0x3af)]());}['processWindData'](_0x34755b){function _0x5c0d4a(_0x55f467,_0xfebe70){return _0x2cdeac(_0x55f467- -0x256,_0xfebe70);}var _0x1fe4c8,_0x231e21;const _0x4675f4={..._0x34755b},_0x1245d6=_0x4675f4;!_0x1245d6['height']&&_0x1245d6[_0x579946(-0xf0,-0xfd)]&&(_0x1245d6['height']=_0x1245d6['rows']);!_0x1245d6['width']&&_0x1245d6['cols']&&(_0x1245d6['width']=_0x1245d6[_0x5c0d4a(0x12b,0xb0)]);!_0x1245d6['bounds']&&(_0x1245d6[_0x579946(-0x77,-0x7)]={'west':_0x1245d6['xmin'],'south':_0x1245d6['ymin'],'east':_0x1245d6['xmax'],'north':_0x1245d6['ymax']});if(!_0x1245d6['u']){const _0x475659={};_0x475659[_0x579946(-0xdd,-0x10b)]=_0x34755b[_0x5c0d4a(0x18e,0x1a2)],_0x475659['min']=_0x34755b['umin'],_0x475659['max']=_0x34755b['umax'],_0x1245d6['u']=_0x475659;}if(!_0x1245d6['v']){const _0x35e024={};_0x35e024['array']=_0x34755b['vdata'],_0x35e024[_0x5c0d4a(0x1c6,0x143)]=_0x34755b['vmin'],_0x35e024[_0x5c0d4a(0x193,0x1f9)]=_0x34755b[_0x579946(-0xac,-0xef)],_0x1245d6['v']=_0x35e024;}function _0x579946(_0xb8c837,_0x2432f0){return _0x306136(_0xb8c837-0x16b,_0x2432f0);}if(((_0x1fe4c8=_0x1245d6['speed'])===null||_0x1fe4c8===void 0x0?void 0x0:_0x1fe4c8[_0x579946(-0x72,-0xc0)])===undefined||((_0x231e21=_0x1245d6['speed'])===null||_0x231e21===void 0x0?void 0x0:_0x231e21['max'])===undefined||_0x1245d6['speed']['array']===undefined){const _0x4dd5e8={'array':new Float32Array(_0x1245d6['u']['array'][_0x5c0d4a(0x200,0x24b)]),'min':Number['MAX_VALUE'],'max':Number['MIN_VALUE']};for(let _0x3e13f3=0x0;_0x3e13f3<_0x1245d6['u']['array'][_0x579946(-0x38,-0x63)];_0x3e13f3++){_0x4dd5e8[_0x579946(-0xdd,-0x154)][_0x3e13f3]=Math[_0x579946(-0x59,-0x48)](_0x1245d6['u'][_0x579946(-0xdd,-0x139)][_0x3e13f3]*_0x1245d6['u']['array'][_0x3e13f3]+_0x1245d6['v']['array'][_0x3e13f3]*_0x1245d6['v']['array'][_0x3e13f3]),_0x4dd5e8['array'][_0x3e13f3]!==0x0&&(_0x4dd5e8['min']=Math[_0x579946(-0x72,-0x8b)](_0x4dd5e8['min'],_0x4dd5e8['array'][_0x3e13f3]),_0x4dd5e8[_0x5c0d4a(0x193,0x200)]=Math[_0x579946(-0xa5,-0x25)](_0x4dd5e8['max'],_0x4dd5e8['array'][_0x3e13f3]));}_0x1245d6[_0x5c0d4a(0x19b,0x1d6)]=_0x4dd5e8;}return _0x1245d6;}[_0x2cdeac(0x3d0,0x3bf)](){var _0x1285df;const _0x3e674e=this['scene'],_0x5170a0=_0x3e674e['canvas'];function _0xca41ba(_0x13f7be,_0x3a9234){return _0x2cdeac(_0x13f7be- -0x143,_0x3a9234);}const _0x4a2d1b={};_0x4a2d1b['x']=0x0;function _0x5f07c6(_0x3f6f06,_0x43c835){return _0x2cdeac(_0x3f6f06- -0x216,_0x43c835);}_0x4a2d1b['y']=0x0;const _0x51b3c2={};_0x51b3c2['x']=0x0,_0x51b3c2['y']=_0x5170a0[_0xca41ba(0x21b,0x1a0)];const _0x1f5721={};_0x1f5721['x']=_0x5170a0[_0xca41ba(0x28b,0x224)],_0x1f5721['y']=0x0;const _0x324d1f={};_0x324d1f['x']=_0x5170a0[_0xca41ba(0x28b,0x22d)],_0x324d1f['y']=_0x5170a0['clientHeight'];const _0x4503b1=[_0x4a2d1b,_0x51b3c2,_0x1f5721,_0x324d1f];let _0x6730e7=0xb4,_0x4b90f8=-0xb4,_0x3c03ef=0x5a,_0xc679e3=-0x5a,_0x4ee809=![];for(const _0xbf4493 of _0x4503b1){const _0x19c5d5=_0x3e674e[_0x5f07c6(0x20c,0x1a6)][_0x5f07c6(0x227,0x1ef)](new Cesium$1['Cartesian2'](_0xbf4493['x'],_0xbf4493['y']),_0x3e674e[_0xca41ba(0x268,0x2c5)]['ellipsoid']);if(!_0x19c5d5){_0x4ee809=!![];break;}const _0x39d5f3=_0x3e674e[_0xca41ba(0x268,0x28d)]['ellipsoid']['cartesianToCartographic'](_0x19c5d5),_0x44221e=Cesium$1['Math']['toDegrees'](_0x39d5f3['longitude']),_0x18f989=Cesium$1['Math']['toDegrees'](_0x39d5f3['latitude']);_0x6730e7=Math['min'](_0x6730e7,_0x44221e),_0x4b90f8=Math['max'](_0x4b90f8,_0x44221e),_0x3c03ef=Math['min'](_0x3c03ef,_0x18f989),_0xc679e3=Math['max'](_0xc679e3,_0x18f989);}if(!_0x4ee809){const _0x177294=new Cesium$1['Cartesian2'](Math['max'](this[_0xca41ba(0x2e5,0x30a)][_0x5f07c6(0x201,0x214)][_0xca41ba(0x24e,0x22a)],_0x6730e7),Math['min'](this['windData'][_0xca41ba(0x2d4,0x349)]['east'],_0x4b90f8)),_0x125293=new Cesium$1['Cartesian2'](Math['max'](this[_0xca41ba(0x2e5,0x327)]['bounds'][_0xca41ba(0x305,0x329)],_0x3c03ef),Math[_0x5f07c6(0x206,0x22e)](this['windData']['bounds'][_0x5f07c6(0x167,0x193)],_0xc679e3)),_0x35dd78=(_0x177294['y']-_0x177294['x'])*0.05,_0x5616ee=(_0x125293['y']-_0x125293['x'])*0.05;_0x177294['x']=Math['max'](this['windData']['bounds'][_0x5f07c6(0x17b,0x1e4)],_0x177294['x']-_0x35dd78),_0x177294['y']=Math['min'](this[_0x5f07c6(0x212,0x1c3)]['bounds'][_0xca41ba(0x27d,0x281)],_0x177294['y']+_0x35dd78),_0x125293['x']=Math['max'](this[_0x5f07c6(0x212,0x1fe)]['bounds']['south'],_0x125293['x']-_0x5616ee),_0x125293['y']=Math['min'](this[_0xca41ba(0x2e5,0x2ff)]['bounds'][_0xca41ba(0x23a,0x242)],_0x125293['y']+_0x5616ee),this[_0x5f07c6(0x203,0x255)]['lonRange']=_0x177294,this[_0x5f07c6(0x203,0x1f9)]['latRange']=_0x125293;const _0x320a09=this[_0x5f07c6(0x212,0x26a)][_0xca41ba(0x2d4,0x325)]['east']-this['windData'][_0x5f07c6(0x201,0x25b)]['west'],_0x44b1d6=this['windData']['bounds']['north']-this['windData']['bounds'][_0x5f07c6(0x232,0x20b)],_0x31ebf3=(_0x177294['y']-_0x177294['x'])/_0x320a09,_0x58b867=(_0x125293['y']-_0x125293['x'])/_0x44b1d6,_0x541e0d=Math[_0xca41ba(0x2d9,0x336)](_0x31ebf3,_0x58b867),_0x3b28cf=0x3e8*_0x541e0d;_0x3b28cf>0x0&&(this['viewerParameters']['pixelSize']=Math['max'](0x0,Math['min'](0x3e8,_0x3b28cf)));}this['viewerParameters']['sceneMode']=this['scene'][_0xca41ba(0x309,0x35d)],(_0x1285df=this['particleSystem'])===null||_0x1285df===void 0x0||_0x1285df[_0x5f07c6(0x1d0,0x1da)](this['viewerParameters']);}['getDataAtLonLat'](_0x5e00a1,_0x324c23){const {bounds:_0x5935c5,width:_0x39713c,height:_0x1f031b,u:_0x5c1242,v:_0x360a97,speed:_0x1404b7}=this['windData'],{flipY:_0x26a93c}=this['options'];function _0x2e1676(_0x55c70e,_0xbedf78){return _0x2cdeac(_0xbedf78-0xe8,_0x55c70e);}if(_0x5e00a1<_0x5935c5[_0x2e1676(0x49e,0x479)]||_0x5e00a1>_0x5935c5[_0x498ada(-0x109,-0xfe)]||_0x324c23<_0x5935c5['south']||_0x324c23>_0x5935c5['north'])return null;const _0x383872=(_0x5e00a1-_0x5935c5['west'])/(_0x5935c5[_0x498ada(-0x109,-0xd5)]-_0x5935c5[_0x2e1676(0x4fe,0x479)])*(_0x39713c-0x1);let _0x1b014c=(_0x324c23-_0x5935c5[_0x498ada(-0x81,-0x7b)])/(_0x5935c5[_0x498ada(-0x14c,-0x199)]-_0x5935c5[_0x2e1676(0x4fa,0x530)])*(_0x1f031b-0x1);_0x26a93c&&(_0x1b014c=_0x1f031b-0x1-_0x1b014c);const _0x15999b=Math['floor'](_0x383872),_0x2ccd10=Math['floor'](_0x1b014c),_0x12cc18=Math['floor'](_0x383872),_0x43089d=Math[_0x498ada(-0xad,-0x128)](_0x12cc18+0x1,_0x39713c-0x1),_0x59b29b=Math[_0x498ada(-0x101,-0x15e)](_0x1b014c),_0x284cdb=Math['min'](_0x59b29b+0x1,_0x1f031b-0x1),_0x54cfd6=_0x383872-_0x12cc18,_0x3352b2=_0x1b014c-_0x59b29b,_0x487b4e=_0x2ccd10*_0x39713c+_0x15999b,_0x48ab0e=_0x59b29b*_0x39713c+_0x12cc18,_0x2f747a=_0x59b29b*_0x39713c+_0x43089d,_0x753756=_0x284cdb*_0x39713c+_0x12cc18,_0x12096a=_0x284cdb*_0x39713c+_0x43089d,_0x1f5371=_0x5c1242['array'][_0x48ab0e],_0x25ddb2=_0x5c1242[_0x498ada(-0x118,-0x125)][_0x2f747a];function _0x498ada(_0x5d4ddc,_0x57f3db){return _0x306136(_0x5d4ddc-0x130,_0x57f3db);}const _0x29e360=_0x5c1242[_0x498ada(-0x118,-0xd8)][_0x753756],_0x53aae3=_0x5c1242[_0x2e1676(0x516,0x499)][_0x12096a],_0x33272d=(0x1-_0x54cfd6)*(0x1-_0x3352b2)*_0x1f5371+_0x54cfd6*(0x1-_0x3352b2)*_0x25ddb2+(0x1-_0x54cfd6)*_0x3352b2*_0x29e360+_0x54cfd6*_0x3352b2*_0x53aae3,_0x32e730=_0x360a97['array'][_0x48ab0e],_0x406c96=_0x360a97[_0x2e1676(0x4cf,0x499)][_0x2f747a],_0x4b088e=_0x360a97['array'][_0x753756],_0x461f2a=_0x360a97[_0x2e1676(0x44d,0x499)][_0x12096a],_0x248701=(0x1-_0x54cfd6)*(0x1-_0x3352b2)*_0x32e730+_0x54cfd6*(0x1-_0x3352b2)*_0x406c96+(0x1-_0x54cfd6)*_0x3352b2*_0x4b088e+_0x54cfd6*_0x3352b2*_0x461f2a,_0x1f40ef=Math[_0x2e1676(0x565,0x51d)](_0x33272d*_0x33272d+_0x248701*_0x248701),_0x3ca3cf={};_0x3ca3cf['u']=_0x5c1242[_0x2e1676(0x4ac,0x499)][_0x487b4e],_0x3ca3cf['v']=_0x360a97['array'][_0x487b4e],_0x3ca3cf[_0x2e1676(0x53b,0x4d9)]=_0x1404b7['array'][_0x487b4e];const _0x5556cb={};_0x5556cb['u']=_0x33272d,_0x5556cb['v']=_0x248701,_0x5556cb[_0x2e1676(0x537,0x4d9)]=_0x1f40ef;const _0x550bfa={};return _0x550bfa[_0x498ada(-0xd4,-0xeb)]=_0x3ca3cf,_0x550bfa[_0x498ada(-0xe9,-0x122)]=_0x5556cb,_0x550bfa;}}mars3d__namespace[_0x2cdeac(0x3e1,0x430)]['register']('wind',WindLayer),mars3d__namespace[_0x2cdeac(0x367,0x36d)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this['lat']=null,this['tlng']=null,this[_0x32ae71(-0x236,-0x1b9)]=null;function _0x32ae71(_0x4cee75,_0x39928c){return _0x2cdeac(_0x39928c- -0x5c0,_0x4cee75);}this[_0x4b7dce(0x4c1,0x50c)]=null;function _0x4b7dce(_0x16e48a,_0x98263e){return _0x2cdeac(_0x16e48a-0x14d,_0x98263e);}this['speed']=null;}[_0x306136(-0x196,-0x18e)](){for(const _0xd459b1 in this){delete this[_0xd459b1];}}}class CanvasWindField{constructor(_0x1d0f6a){this['setOptions'](_0x1d0f6a);}get[_0x306136(-0x223,-0x292)](){return this['_speedRate'];}set[_0x2cdeac(0x3d6,0x454)](_0x3c9db5){function _0x1f27cb(_0x4de379,_0x3cd609){return _0x2cdeac(_0x4de379-0xbf,_0x3cd609);}function _0x12194f(_0x368534,_0x4ae3a2){return _0x2cdeac(_0x4ae3a2- -0x542,_0x368534);}this['_speedRate']=(0x64-(_0x3c9db5>0x63?0x63:_0x3c9db5))*0x64,this[_0x1f27cb(0x4e0,0x4bb)]=[(this['xmax']-this['xmin'])/this['_speedRate'],(this[_0x12194f(-0x1a9,-0x187)]-this[_0x12194f(-0x1ae,-0x199)])/this['_speedRate']];}get[_0x2cdeac(0x3d3,0x443)](){return this['_maxAge'];}set['maxAge'](_0x34eb68){this['_maxAge']=_0x34eb68;}[_0x2cdeac(0x382,0x3d6)](_0x4a0816){this['options']=_0x4a0816,this['maxAge']=_0x4a0816['maxAge']||0x78,this['speedRate']=_0x4a0816[_0x5c68d0(-0x106,-0x132)]||0x32;function _0x97f2fb(_0x5d8490,_0x5d9425){return _0x306136(_0x5d9425-0x762,_0x5d8490);}function _0x5c68d0(_0x40b95e,_0x2dec16){return _0x2cdeac(_0x40b95e- -0x4dc,_0x2dec16);}this['particles']=[];const _0x3e73d7=_0x4a0816['particlesNumber']||0x1000;for(let _0x1f54c7=0x0;_0x1f54c7<_0x3e73d7;_0x1f54c7++){const _0x1fdade=this['_randomParticle'](new CanvasParticle());this[_0x97f2fb(0x5ca,0x566)]['push'](_0x1fdade);}}['setDate'](_0xf24e39){this['rows']=_0xf24e39[_0x178fc1(0x35e,0x370)];function _0xb0f0e2(_0x2564e9,_0x33d9ba){return _0x2cdeac(_0x33d9ba- -0x56c,_0x2564e9);}this['cols']=_0xf24e39[_0xb0f0e2(-0x1fd,-0x1eb)];function _0x178fc1(_0xd3a05b,_0x234562){return _0x306136(_0xd3a05b-0x5b9,_0x234562);}this['xmin']=_0xf24e39['xmin'],this[_0x178fc1(0x33c,0x327)]=_0xf24e39['xmax'],this['ymin']=_0xf24e39['ymin'],this['ymax']=_0xf24e39[_0x178fc1(0x37b,0x366)],this[_0x178fc1(0x355,0x2e6)]=[];const _0x3ff536=_0xf24e39['udata'],_0x50be57=_0xf24e39[_0x178fc1(0x3a8,0x3ed)];let _0x4848b2=![];_0x3ff536[_0xb0f0e2(-0x145,-0x116)]===this[_0x178fc1(0x35e,0x3e4)]&&_0x3ff536[0x0][_0x178fc1(0x416,0x484)]===this['cols']&&(_0x4848b2=!![]);let _0x2f70a9=0x0,_0x5146ae=null,_0x14aa7d=null;for(let _0x3a9a24=0x0;_0x3a9a24<this['rows'];_0x3a9a24++){_0x5146ae=[];for(let _0x53c596=0x0;_0x53c596<this[_0xb0f0e2(-0x26d,-0x1eb)];_0x53c596++,_0x2f70a9++){_0x4848b2?_0x14aa7d=this[_0x178fc1(0x411,0x481)](_0x3ff536[_0x3a9a24][_0x53c596],_0x50be57[_0x3a9a24][_0x53c596]):_0x14aa7d=this[_0x178fc1(0x411,0x431)](_0x3ff536[_0x2f70a9],_0x50be57[_0x2f70a9]),_0x5146ae['push'](_0x14aa7d);}this[_0xb0f0e2(-0x25e,-0x1d7)][_0xb0f0e2(-0x1ef,-0x1d2)](_0x5146ae);}this[_0x178fc1(0x3cf,0x429)]['reverseY']&&this['grid']['reverse']();}[_0x2cdeac(0x3c7,0x3cd)](){delete this['rows'],delete this['cols'],delete this['xmin'];function _0xe3ca3c(_0x18df3f,_0x402430){return _0x306136(_0x402430-0xd7,_0x18df3f);}delete this['xmax'],delete this['ymin'];function _0x23fef2(_0x407fe2,_0x396ae2){return _0x2cdeac(_0x407fe2-0x11a,_0x396ae2);}delete this[_0xe3ca3c(-0x1aa,-0x167)],delete this[_0xe3ca3c(-0x172,-0x18d)],delete this['particles'];}['toGridXY'](_0x583f39,_0x2f55ea){function _0x2bfa4c(_0x1b683c,_0x289935){return _0x2cdeac(_0x289935-0x85,_0x1b683c);}const _0x4827ab=(_0x583f39-this['xmin'])/(this['xmax']-this['xmin'])*(this[_0x2bfa4c(0x3b9,0x406)]-0x1);function _0x4270af(_0x54cbc7,_0xe471ee){return _0x306136(_0xe471ee-0x11b,_0x54cbc7);}const _0xa93656=(this[_0x2bfa4c(0x49d,0x440)]-_0x2f55ea)/(this['ymax']-this['ymin'])*(this[_0x4270af(-0x165,-0x140)]-0x1);return[_0x4827ab,_0xa93656];}['getUVByXY'](_0x5c8671,_0x54aa30){if(_0x5c8671<0x0||_0x5c8671>=this[_0x3d6ec9(0x2d5,0x271)]||_0x54aa30>=this['rows'])return[0x0,0x0,0x0];const _0x2e7b52=Math['floor'](_0x5c8671),_0x1f9f9c=Math[_0x3d6ec9(0x2a5,0x2b8)](_0x54aa30);if(_0x2e7b52===_0x5c8671&&_0x1f9f9c===_0x54aa30)return this[_0x3d6ec9(0x2d4,0x285)][_0x54aa30][_0x5c8671];function _0x3d6ec9(_0x15240a,_0x57cf15){return _0x2cdeac(_0x57cf15- -0x110,_0x15240a);}const _0x593209=_0x2e7b52+0x1,_0x2b0560=_0x1f9f9c+0x1,_0x3ce539=this['getUVByXY'](_0x2e7b52,_0x1f9f9c);function _0x530bf9(_0x11da22,_0x18717e){return _0x306136(_0x18717e-0x1ff,_0x11da22);}const _0x5acc9c=this[_0x3d6ec9(0x306,0x291)](_0x593209,_0x1f9f9c),_0x8c23cd=this['getUVByXY'](_0x2e7b52,_0x2b0560),_0x132d73=this[_0x3d6ec9(0x255,0x291)](_0x593209,_0x2b0560);let _0x3d5aa8=null;try{_0x3d5aa8=this['_bilinearInterpolation'](_0x5c8671-_0x2e7b52,_0x54aa30-_0x1f9f9c,_0x3ce539,_0x5acc9c,_0x8c23cd,_0x132d73);}catch(_0xb50538){console['log'](_0x5c8671,_0x54aa30);}return _0x3d5aa8;}['_bilinearInterpolation'](_0xf479c,_0x476e9d,_0x560863,_0x7016b8,_0xe04f4d,_0xeeea4f){const _0x197e6c=0x1-_0xf479c,_0x59f751=0x1-_0x476e9d,_0x7ddbca=_0x197e6c*_0x59f751,_0x32fc37=_0xf479c*_0x59f751,_0xa5fa55=_0x197e6c*_0x476e9d;function _0x18df74(_0x439300,_0x11c93f){return _0x306136(_0x11c93f-0x380,_0x439300);}const _0x26588f=_0xf479c*_0x476e9d,_0xf8ee36=_0x560863[0x0]*_0x7ddbca+_0x7016b8[0x0]*_0x32fc37+_0xe04f4d[0x0]*_0xa5fa55+_0xeeea4f[0x0]*_0x26588f,_0x170f6e=_0x560863[0x1]*_0x7ddbca+_0x7016b8[0x1]*_0x32fc37+_0xe04f4d[0x1]*_0xa5fa55+_0xeeea4f[0x1]*_0x26588f;return this[_0x18df74(0x1c0,0x1d8)](_0xf8ee36,_0x170f6e);}['_calcUV'](_0x50c1be,_0x254d2e){function _0x20a6a2(_0x34ce35,_0x1cca27){return _0x2cdeac(_0x1cca27- -0x4ee,_0x34ce35);}return[+_0x50c1be,+_0x254d2e,Math[_0x20a6a2(-0x83,-0xb9)](_0x50c1be*_0x50c1be+_0x254d2e*_0x254d2e)];}['getUVByPoint'](_0x4394f0,_0x3f6381){if(!this['isInExtent'](_0x4394f0,_0x3f6381))return null;const _0x4a3744=this['toGridXY'](_0x4394f0,_0x3f6381),_0x100395=this['getUVByXY'](_0x4a3744[0x0],_0x4a3744[0x1]);return _0x100395;}[_0x2cdeac(0x3ed,0x402)](_0x2b7e79,_0x43c7db){function _0x360775(_0x4a0f9b,_0x3e1cef){return _0x306136(_0x4a0f9b-0x4b4,_0x3e1cef);}return _0x2b7e79>=this['xmin']&&_0x2b7e79<=this[_0x360775(0x237,0x232)]&&_0x43c7db>=this['ymin']&&_0x43c7db<=this['ymax']?!![]:![];}[_0x2cdeac(0x412,0x48d)](){const _0x6b5a3b=fRandomByfloat(this['xmin'],this[_0x228c50(-0xe3,-0x144)]),_0x43623b=fRandomByfloat(this['ymin'],this['ymax']);function _0x228c50(_0x823ca2,_0x1a31d6){return _0x2cdeac(_0x1a31d6- -0x4c0,_0x823ca2);}const _0x3a4dfd={};_0x3a4dfd[_0x228c50(-0xe3,-0xaa)]=_0x43623b,_0x3a4dfd['lng']=_0x6b5a3b;function _0x2407c5(_0x2592fb,_0x25c411){return _0x306136(_0x2592fb-0x105,_0x25c411);}return _0x3a4dfd;}['getParticles'](){let _0x5ab59a,_0x564648,_0x607840;for(let _0x595b2d=0x0,_0x147621=this[_0x5eab57(0x153,0xdc)]['length'];_0x595b2d<_0x147621;_0x595b2d++){let _0x16d90a=this[_0x2f4525(0x1e8,0x1a5)][_0x595b2d];_0x16d90a['age']<=0x0&&(_0x16d90a=this[_0x5eab57(0xda,0xd1)](_0x16d90a));if(_0x16d90a['age']>0x0){const _0x1ea067=_0x16d90a['tlng'],_0x210eec=_0x16d90a['tlat'];_0x607840=this['getUVByPoint'](_0x1ea067,_0x210eec),_0x607840?(_0x5ab59a=_0x1ea067+this['_calc_speedRate'][0x0]*_0x607840[0x0],_0x564648=_0x210eec+this['_calc_speedRate'][0x1]*_0x607840[0x1],_0x16d90a['lng']=_0x1ea067,_0x16d90a['lat']=_0x210eec,_0x16d90a['tlng']=_0x5ab59a,_0x16d90a[_0x2f4525(0x1f2,0x271)]=_0x564648,_0x16d90a['speed']=_0x607840[0x2],_0x16d90a['age']--):_0x16d90a['age']=0x0;}}function _0x2f4525(_0x6a1feb,_0x48336b){return _0x306136(_0x6a1feb-0x3e4,_0x48336b);}function _0x5eab57(_0x1e2ed5,_0x5cd510){return _0x306136(_0x5cd510-0x2d8,_0x1e2ed5);}return this['particles'];}['_randomParticle'](_0x45073d){let _0x39807e,_0x1fbc5e;for(let _0x3fe9c9=0x0;_0x3fe9c9<0x1e;_0x3fe9c9++){_0x39807e=this['getRandomLatLng'](),_0x1fbc5e=this[_0x2e0dcc(0xb6,0x13a)](_0x39807e[_0x3de04a(0x348,0x373)],_0x39807e['lat']);if(_0x1fbc5e&&_0x1fbc5e[0x2]>0x0)break;}if(!_0x1fbc5e)return _0x45073d;const _0x23f01a=_0x39807e['lng']+this['_calc_speedRate'][0x0]*_0x1fbc5e[0x0];function _0x3de04a(_0x581291,_0x38d11c){return _0x306136(_0x581291-0x5ba,_0x38d11c);}const _0x32d555=_0x39807e[_0x2e0dcc(0x16c,0x12c)]+this['_calc_speedRate'][0x1]*_0x1fbc5e[0x1];_0x45073d[_0x2e0dcc(0xac,0x9d)]=_0x39807e['lng'],_0x45073d[_0x2e0dcc(0x106,0x12c)]=_0x39807e['lat'],_0x45073d[_0x2e0dcc(0x12b,0xc4)]=_0x23f01a,_0x45073d['tlat']=_0x32d555,_0x45073d['age']=Math[_0x2e0dcc(0x11e,0x177)](Math[_0x2e0dcc(0x36,0x7c)]()*this['maxAge']);function _0x2e0dcc(_0x7acc6f,_0x48e779){return _0x2cdeac(_0x48e779- -0x2ea,_0x7acc6f);}return _0x45073d['speed']=_0x1fbc5e[0x2],_0x45073d;}['destroy'](){for(const _0xc93ea6 in this){delete this[_0xc93ea6];}}}function fRandomByfloat(_0x21cfa9,_0x2376d8){return _0x21cfa9+Math['random']()*(_0x2376d8-_0x21cfa9);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x2cdeac(0x367,0x3be)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x1133d3={}){super(_0x1133d3),this[_0x36b8c5(0x2c5,0x266)](_0x1133d3);function _0x52433a(_0x9ab3e2,_0x31c9ee){return _0x306136(_0x31c9ee-0x314,_0x9ab3e2);}function _0x36b8c5(_0x119244,_0x5edd98){return _0x2cdeac(_0x119244- -0x14b,_0x5edd98);}this[_0x52433a(0x10a,0x15a)]=null,_0x1133d3[_0x36b8c5(0x210,0x1b4)]&&_0x1133d3['steps']&&(this['_colorRamp']=new mars3d__namespace[(_0x36b8c5(0x2ef,0x331))](_0x1133d3));}['_setOptionsHook'](_0xf3d30c,_0x162af9){this[_0x1dadeb(0x58,0x98)]=0x3e8/(_0xf3d30c[_0x188d12(0x2a4,0x223)]||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this[_0x1dadeb(0x135,0xc1)]=_0xf3d30c[_0x188d12(0x1f6,0x277)]||'#ffffff';function _0x1dadeb(_0x136862,_0xef801a){return _0x306136(_0x136862-0x2ee,_0xef801a);}this[_0x1dadeb(0x82,0x1c)]=_0xf3d30c['lineWidth']||0x1,this[_0x188d12(0x1aa,0x1b2)]=_0xf3d30c['fixedHeight']??0x0;function _0x188d12(_0x26eb1c,_0x1903be){return _0x306136(_0x1903be-0x430,_0x26eb1c);}this['reverseY']=_0xf3d30c[_0x188d12(0x1e1,0x23a)]??![],this['windField']&&this[_0x188d12(0x23f,0x1d6)]['setOptions'](_0xf3d30c);}get['layer'](){function _0x54139e(_0x421e9c,_0x4d3b40){return _0x306136(_0x421e9c-0x7e,_0x4d3b40);}return this[_0x54139e(-0x13c,-0x153)];}get[_0x306136(-0x1af,-0x22b)](){function _0x150b5e(_0x374ac6,_0x569e48){return _0x306136(_0x569e48-0x5cf,_0x374ac6);}return this['_map'][_0x150b5e(0x329,0x35a)]['canvas']['clientWidth'];}get['canvasHeight'](){function _0x347e62(_0x6f80cf,_0x506b8b){return _0x2cdeac(_0x6f80cf- -0x8c,_0x506b8b);}function _0x2d9d6c(_0x2eca24,_0x43f001){return _0x2cdeac(_0x2eca24- -0x5b,_0x43f001);}return this['_map'][_0x2d9d6c(0x329,0x2ba)][_0x2d9d6c(0x3e4,0x3f3)]['clientHeight'];}get[_0x2cdeac(0x386,0x313)](){function _0x329da4(_0x45346e,_0x4fcd4c){return _0x2cdeac(_0x4fcd4c- -0x210,_0x45346e);}return this[_0x329da4(0x252,0x1f6)];}set['pointerEvents'](_0x57abaf){function _0x21be9a(_0x3fd515,_0x9b7f3a){return _0x306136(_0x9b7f3a-0x465,_0x3fd515);}this['_pointerEvents']=_0x57abaf;function _0x2fc1b4(_0x5ce32f,_0x138f69){return _0x306136(_0x138f69-0x34e,_0x5ce32f);}if(!this['canvas'])return;_0x57abaf?this[_0x21be9a(0x26c,0x2ab)]['style'][_0x2fc1b4(0xd0,0x131)]='all':this['canvas'][_0x21be9a(0x1fd,0x265)][_0x21be9a(0x2bd,0x248)]=_0x2fc1b4(0x18e,0x199);}get[_0x2cdeac(0x438,0x409)](){function _0x5e3c91(_0x590566,_0x469ebc){return _0x2cdeac(_0x590566-0x9a,_0x469ebc);}return this['options'][_0x5e3c91(0x4d2,0x45a)];}set['particlesNumber'](_0x4a951c){function _0x1076e5(_0x8c506a,_0x1cbad8){return _0x2cdeac(_0x8c506a- -0x4df,_0x1cbad8);}this['options']['particlesNumber']=_0x4a951c,clearTimeout(this['_canrefresh']),this[_0x1076e5(-0xaf,-0x39)]=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x2cdeac(0x3d6,0x35f)](){function _0x54c318(_0xb01730,_0x359d4e){return _0x2cdeac(_0xb01730- -0x446,_0x359d4e);}return this[_0x54c318(-0x37,0x48)]['speedRate'];}set['speedRate'](_0x191cfe){function _0x5da315(_0xa79a04,_0xa37caf){return _0x306136(_0xa79a04-0x4ba,_0xa37caf);}this['options'][_0x5da315(0x297,0x288)]=_0x191cfe;function _0x84078f(_0x37d1f2,_0x282aaf){return _0x2cdeac(_0x37d1f2- -0x44c,_0x282aaf);}this['windField']&&(this[_0x84078f(-0xad,-0xb8)][_0x84078f(-0x76,-0xaa)]=_0x191cfe);}get[_0x2cdeac(0x3d3,0x3db)](){function _0x565f32(_0x50a7da,_0x13b329){return _0x2cdeac(_0x13b329-0x4f,_0x50a7da);}return this['options'][_0x565f32(0x3e8,0x422)];}set['maxAge'](_0x1fa492){function _0x3085d9(_0x5cc21f,_0x2f2e20){return _0x2cdeac(_0x2f2e20- -0x456,_0x5cc21f);}this['options']['maxAge']=_0x1fa492,this['windField']&&(this['windField'][_0x3085d9(-0xd,-0x83)]=_0x1fa492);}get[_0x2cdeac(0x41f,0x41d)](){return this['windData'];}set['data'](_0x341e3a){this['setData'](_0x341e3a);}get['rectangle'](){let _0xda942b=this['windData']['xmin'],_0x5c2877=this['windData']['xmax'],_0x3523ec=this['windData'][_0xde76da(0x415,0x467)];function _0x3f1836(_0x2d67e0,_0x5b0edc){return _0x306136(_0x5b0edc-0x15e,_0x2d67e0);}let _0x4328f2=this['windData']['ymax'];_0x5c2877>=0x167&&_0xda942b===0x0&&(_0xda942b=-0xb4,_0x5c2877=0xb4);_0xda942b=Math['max'](_0xda942b,-0xb4),_0x5c2877=Math[_0xde76da(0x458,0x4da)](_0x5c2877,0xb4);function _0xde76da(_0x23ec96,_0x36ab08){return _0x2cdeac(_0x36ab08-0xbe,_0x23ec96);}return _0x3523ec=Math[_0xde76da(0x4ab,0x4a7)](_0x3523ec,-0x5a),_0x4328f2=Math[_0x3f1836(-0x72,-0x7f)](_0x4328f2,0x5a),Cesium['Rectangle'][_0xde76da(0x3db,0x441)](_0xda942b,_0x3523ec,_0x5c2877,_0x4328f2);}['_showHook'](_0x222f85){_0x222f85?this['_addedHook']():(this['windData']&&(this['options']['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){function _0xd069f7(_0x28fa41,_0x209917){return _0x306136(_0x209917-0x5cc,_0x28fa41);}function _0x1525f7(_0x2d9dfc,_0x5e90d1){return _0x306136(_0x5e90d1-0x23e,_0x2d9dfc);}this['options'][_0x1525f7(-0xc,-0x53)]?this[_0xd069f7(0x457,0x406)]():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){this[_0x1c4471(0x4c6,0x501)]=this[_0x36d48b(0x4e0,0x568)]();function _0x36d48b(_0x60ce32,_0x59ad0f){return _0x2cdeac(_0x60ce32-0x176,_0x59ad0f);}function _0x1c4471(_0x3ad155,_0x47896b){return _0x2cdeac(_0x3ad155-0x87,_0x47896b);}const _0x3ab796={};_0x3ab796[_0x36d48b(0x53a,0x506)]=!![],this[_0x36d48b(0x559,0x54c)]=this['canvas'][_0x36d48b(0x5ac,0x55d)]('2d',_0x3ab796),this['bindEvent'](),this[_0x36d48b(0x585,0x51b)][_0x36d48b(0x595,0x55a)]&&this[_0x36d48b(0x58e,0x612)](this[_0x36d48b(0x585,0x538)][_0x1c4471(0x4a6,0x4cf)]);}['_removedHook'](){this['clear'](),this['unbindEvent']();function _0x588cc(_0x583a38,_0x1b9074){return _0x306136(_0x1b9074-0x53d,_0x583a38);}function _0x2f1c97(_0x29d60c,_0x2ef85a){return _0x306136(_0x2ef85a-0x483,_0x29d60c);}this[_0x588cc(0x36e,0x383)]&&(this['_map']['container'][_0x588cc(0x346,0x393)](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x79711a=mars3d__namespace['DomUtil'][_0x493636(0x4e8,0x4e0)](_0x1cd06c(0x61a,0x5d0),_0x1cd06c(0x5e1,0x5cd),this[_0x1cd06c(0x573,0x549)][_0x493636(0x4b1,0x43a)]);_0x79711a[_0x1cd06c(0x57a,0x58a)]['position']='absolute',_0x79711a[_0x1cd06c(0x5d7,0x58a)][_0x493636(0x4d1,0x45d)]=_0x1cd06c(0x5c7,0x5be),_0x79711a['style']['left']='0px',_0x79711a[_0x493636(0x551,0x506)]['width']=this[_0x493636(0x510,0x56f)]['scene'][_0x493636(0x597,0x5cc)]['clientWidth']+'px',_0x79711a['style']['height']=this[_0x493636(0x510,0x4fc)][_0x493636(0x4dc,0x45e)]['canvas']['clientHeight']+'px';function _0x493636(_0x54bc66,_0x5cb694){return _0x306136(_0x54bc66-0x751,_0x5cb694);}_0x79711a['style'][_0x493636(0x4de,0x4cc)]=this['_pointerEvents']?'auto':'none',_0x79711a['style']['zIndex']=this[_0x493636(0x567,0x526)][_0x493636(0x553,0x56d)]??0x9,_0x79711a[_0x493636(0x4e1,0x54a)]=this[_0x1cd06c(0x503,0x549)][_0x1cd06c(0x583,0x515)]['canvas']['clientWidth'];function _0x1cd06c(_0x3720c8,_0xdb31e){return _0x2cdeac(_0xdb31e-0x191,_0x3720c8);}return _0x79711a[_0x493636(0x550,0x5c2)]=this[_0x493636(0x510,0x596)]['scene']['canvas']['clientHeight'],_0x79711a;}['resize'](){function _0x59cf36(_0x415748,_0x3a48be){return _0x306136(_0x3a48be-0xa1,_0x415748);}function _0x1355af(_0x543f5a,_0x5b09de){return _0x306136(_0x543f5a-0x4c0,_0x5b09de);}this['canvas']&&(this['canvas']['style']['width']=this['_map'][_0x1355af(0x24b,0x272)]['canvas'][_0x59cf36(-0x197,-0x18a)]+'px',this['canvas']['style']['height']=this['_map'][_0x59cf36(-0x23c,-0x1d4)][_0x59cf36(-0xa3,-0x119)][_0x1355af(0x225,0x210)]+'px',this[_0x59cf36(-0x139,-0x119)][_0x59cf36(-0x145,-0x1cf)]=this['_map'][_0x59cf36(-0x239,-0x1d4)][_0x59cf36(-0x123,-0x119)]['clientWidth'],this[_0x59cf36(-0x16d,-0x119)][_0x1355af(0x2bf,0x26f)]=this['_map'][_0x1355af(0x24b,0x29a)]['canvas']['clientHeight']);}['bindEvent'](){const _0x27264f=this;let _0x5b77fc=Date['now']();(function _0x4f79d7(){if(_0x27264f['isDestroy'])return;function _0x4b670d(_0x303192,_0x80793){return _0x42d7(_0x303192- -0x248,_0x80793);}_0x27264f[_0x4b670d(-0x102,-0xf1)]=window['requestAnimationFrame'](_0x4f79d7);function _0x445749(_0x140bbe,_0x5ce931){return _0x42d7(_0x5ce931- -0x118,_0x140bbe);}if(_0x27264f[_0x4b670d(-0x97,-0x11)]&&_0x27264f['windField']){const _0x4c39a5=Date[_0x445749(0xa8,0xd4)](),_0x5a137e=_0x4c39a5-_0x5b77fc;_0x5a137e>_0x27264f[_0x4b670d(-0x10c,-0x11e)]&&(_0x5b77fc=_0x4c39a5-_0x5a137e%_0x27264f['frameTime'],_0x27264f[_0x445749(0x35,0x3b)]());}}(),window[_0x58c5af(0x28a,0x262)]('resize',this['resize'][_0x1a9c70(-0x86,-0xd2)](this),![]),this['mouse_down']=![]);function _0x1a9c70(_0x560ba8,_0x47e9a8){return _0x306136(_0x47e9a8-0xf5,_0x560ba8);}this['mouse_move']=![];function _0x58c5af(_0x39cdd7,_0x1c0ae5){return _0x2cdeac(_0x1c0ae5- -0x168,_0x39cdd7);}this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x1a9c70(-0x10a,-0x14c)]['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x1a9c70(-0xc2,-0x14c)]['on'](mars3d__namespace['EventType']['mouseUp'],this[_0x58c5af(0x2bf,0x2fc)],this));}['unbindEvent'](){window['cancelAnimationFrame'](this['_animateFrame']);function _0x20b25b(_0x4f8856,_0xffa66b){return _0x306136(_0x4f8856-0x6d3,_0xffa66b);}function _0x42160b(_0x51a60c,_0x58b043){return _0x306136(_0x58b043-0x2f9,_0x51a60c);}delete this['_animateFrame'],window[_0x42160b(0x188,0x15b)]('resize',this[_0x42160b(0x36,0xb6)]),this['options']['mouseHidden']&&(this[_0x20b25b(0x492,0x466)][_0x42160b(0xc2,0xb9)](mars3d__namespace['EventType'][_0x42160b(0x1db,0x152)],this['_onMapWhellEvent'],this),this[_0x42160b(0x83,0xb8)]['off'](mars3d__namespace['EventType']['mouseDown'],this[_0x42160b(0x144,0xcb)],this),this['_map'][_0x42160b(0x3b,0xb9)](mars3d__namespace['EventType'][_0x42160b(0xf1,0x11b)],this[_0x42160b(0x1b5,0x164)],this),this[_0x20b25b(0x492,0x4aa)]['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x42160b(0x19e,0x150)],this));}['_onMapWhellEvent'](_0x265b46){function _0x4500af(_0xf55451,_0x292f3a){return _0x2cdeac(_0xf55451- -0x257,_0x292f3a);}function _0x2dee37(_0x575dad,_0x59187a){return _0x306136(_0x59187a-0x293,_0x575dad);}clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;this['canvas'][_0x4500af(0x1a2,0x136)][_0x2dee37(-0x53,-0x9)]='hidden',this['refreshTimer']=setTimeout(()=>{function _0x2daa98(_0x48f8a0,_0x19897a){return _0x4500af(_0x48f8a0- -0xff,_0x19897a);}if(!this[_0x2daa98(0x82,0xbb)])return;this['redraw']();function _0x282f86(_0x324dc1,_0x280617){return _0x4500af(_0x324dc1- -0xe5,_0x280617);}this[_0x2daa98(0xe9,0xcb)]['style'][_0x2daa98(0x7,0x4e)]='visible';},0xc8);}[_0x306136(-0x22e,-0x221)](_0xba1af6){function _0x22fae1(_0xff0338,_0x62c728){return _0x2cdeac(_0x62c728- -0x2b8,_0xff0338);}function _0x428b24(_0x345c95,_0x59b9cb){return _0x2cdeac(_0x345c95- -0x273,_0x59b9cb);}this['mouse_down']=!![],this[_0x428b24(0x145,0x16f)]['off'](mars3d__namespace[_0x22fae1(0x13f,0x121)]['mouseMove'],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace[_0x428b24(0x166,0x19f)]['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x5ed48e){function _0x45b475(_0x46c511,_0x2e5180){return _0x2cdeac(_0x2e5180- -0x102,_0x46c511);}function _0x153995(_0x322400,_0x243827){return _0x2cdeac(_0x322400- -0x422,_0x243827);}if(!this[_0x153995(-0x4a,-0x12)]||!this[_0x45b475(0x306,0x33d)])return;this[_0x45b475(0x2f9,0x275)]&&(this['canvas']['style']['visibility']=_0x45b475(0x2e1,0x303),this[_0x153995(-0x5,-0x51)]=!![]);}[_0x306136(-0x195,-0x127)](_0x1c6476){if(!this[_0x4d584a(0x198,0x180)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x4d584a(0x1f7,0x1f8)],this);this[_0x4d584a(0x174,0x11f)]&&this['mouse_move']&&this['redraw']();function _0x4d584a(_0x3a767b,_0x27359f){return _0x306136(_0x27359f-0x3a1,_0x3a767b);}this['canvas'][_0x4d584a(0x13c,0x1a1)][_0x4d584a(0x162,0x105)]=_0x4d584a(0x1bc,0x134),this[_0x318891(0x466,0x47a)]=![];function _0x318891(_0x596bf6,_0x5c4ce3){return _0x2cdeac(_0x5c4ce3-0x103,_0x596bf6);}this['mouse_move']=![];}['setData'](_0x50e8ca){function _0x4a6d89(_0x53f465,_0x5345db){return _0x2cdeac(_0x5345db- -0x5fc,_0x53f465);}this[_0x4a6d89(-0x23a,-0x235)](),this['windData']=_0x50e8ca,this[_0x4a6d89(-0x2d5,-0x25d)][_0x4a6d89(-0x256,-0x293)](_0x50e8ca);function _0x21aa07(_0x2c41e1,_0x2ed1d7){return _0x2cdeac(_0x2c41e1- -0x1b1,_0x2ed1d7);}this['redraw']();}[_0x306136(-0x227,-0x1ee)](){if(!this['show'])return;function _0x9349b9(_0xafd753,_0x1fc557){return _0x306136(_0xafd753-0x1c3,_0x1fc557);}function _0x13c90f(_0x27efcc,_0x54c38e){return _0x306136(_0x27efcc-0x452,_0x54c38e);}this[_0x13c90f(0x1f8,0x25a)]['setOptions'](this[_0x9349b9(-0x27,0x41)]),this['update']();}[_0x306136(-0x27f,-0x2e6)](){if(this['_updateIng'])return;this[_0x479b3a(0x1d6,0x194)]=!![];function _0x2e16b4(_0x41d611,_0x4e4e42){return _0x2cdeac(_0x4e4e42- -0x43c,_0x41d611);}if(this['worker'])this['windField']['update']();else{const _0x12ff13=this['windField'][_0x2e16b4(-0x28,-0x49)]();this['_drawLines'](_0x12ff13);}function _0x479b3a(_0x4db463,_0x137fa9){return _0x2cdeac(_0x137fa9- -0x2b1,_0x4db463);}this['_updateIng']=![];}[_0x2cdeac(0x371,0x3d7)](_0x4266ec){this['_canvasParticles']=_0x4266ec,this[_0x59db4f(0x42c,0x4a5)][_0x59db4f(0x494,0x41c)]='destination-in';function _0x4f043f(_0x2ec85d,_0x426687){return _0x2cdeac(_0x426687- -0x475,_0x2ec85d);}this['canvasContext'][_0x4f043f(-0xb0,-0x4e)](0x0,0x0,this['canvasWidth'],this['canvasHeight']);function _0x59db4f(_0x4cd96e,_0x5dd195){return _0x2cdeac(_0x4cd96e-0x49,_0x5dd195);}this['canvasContext']['globalCompositeOperation']=_0x59db4f(0x4ab,0x4ac),this['canvasContext']['globalAlpha']=0.9;const _0xf424fa=this['_map']['scene']['mode']!==Cesium['SceneMode']['SCENE3D'],_0x56a84c=this['canvasWidth']*0.25;if(this['_colorRamp'])for(let _0xd74e8d=0x0,_0x4dad64=_0x4266ec[_0x59db4f(0x49f,0x478)];_0xd74e8d<_0x4dad64;_0xd74e8d++){const _0x216606=_0x4266ec[_0xd74e8d],_0x30db25=this[_0x59db4f(0x3f6,0x37d)](_0x216606,_0x216606['lng'],_0x216606['lat'],_0x216606['alt']),_0x14ec03=this['_tomap'](_0x216606,_0x216606[_0x4f043f(-0xf0,-0xc7)],_0x216606[_0x59db4f(0x450,0x3fc)],_0x216606['talt']);if(!_0x30db25||!_0x14ec03)continue;if(_0xf424fa&&Math['abs'](_0x30db25[0x0]-_0x14ec03[0x0])>=_0x56a84c)continue;this['canvasContext'][_0x4f043f(-0xcc,-0x113)](),this['canvasContext'][_0x59db4f(0x3d6,0x350)]=this[_0x4f043f(-0x6b,-0xe8)],this['canvasContext'][_0x4f043f(0x3,-0x22)]=this['_colorRamp'][_0x59db4f(0x3f8,0x411)](_0x216606['speed']),this[_0x59db4f(0x42c,0x3e7)][_0x59db4f(0x4a5,0x4df)](_0x30db25[0x0],_0x30db25[0x1]),this[_0x4f043f(-0x1e,-0x92)]['lineTo'](_0x14ec03[0x0],_0x14ec03[0x1]),this[_0x4f043f(-0x9b,-0x92)][_0x59db4f(0x3c7,0x3cf)]();}else{this['canvasContext']['beginPath'](),this[_0x4f043f(-0xd8,-0x92)]['lineWidth']=this[_0x59db4f(0x3d6,0x41d)],this['canvasContext'][_0x59db4f(0x49c,0x43e)]=this['color'];for(let _0x369af7=0x0,_0x16aa6f=_0x4266ec[_0x59db4f(0x49f,0x44b)];_0x369af7<_0x16aa6f;_0x369af7++){const _0x34af24=_0x4266ec[_0x369af7],_0x5b1a3e=this['_tomap'](_0x34af24,_0x34af24[_0x59db4f(0x3d0,0x43c)],_0x34af24['lat'],_0x34af24[_0x4f043f(0x24,-0xf)]),_0x518455=this['_tomap'](_0x34af24,_0x34af24['tlng'],_0x34af24['tlat'],_0x34af24['talt']);if(!_0x5b1a3e||!_0x518455)continue;if(_0xf424fa&&Math[_0x4f043f(-0x95,-0x9b)](_0x5b1a3e[0x0]-_0x518455[0x0])>=_0x56a84c)continue;this[_0x4f043f(-0xd2,-0x92)]['moveTo'](_0x5b1a3e[0x0],_0x5b1a3e[0x1]),this[_0x59db4f(0x42c,0x3f2)][_0x4f043f(-0x96,-0x44)](_0x518455[0x0],_0x518455[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x541df2,_0x1e097d,_0x1ff9c7,_0x2ec06d){const _0x50dbf6=Cesium[_0x3e9d38(0x293,0x24f)]['fromDegrees'](_0x1e097d,_0x1ff9c7,_0x2ec06d??this['fixedHeight']),_0x2dd09d=this['_map']['scene'];if(_0x2dd09d['mode']===Cesium['SceneMode']['SCENE3D']){const _0x26a5dc=new Cesium['EllipsoidalOccluder'](_0x2dd09d['globe']['ellipsoid'],_0x2dd09d[_0x3e9d38(0x26f,0x259)]['positionWC']),_0x48ab23=_0x26a5dc['isPointVisible'](_0x50dbf6);if(!_0x48ab23)return _0x541df2['age']=0x0,null;}const _0x2e5118=mars3d__namespace[_0x3e9d38(0x1a4,0x1bb)][_0x3e9d38(0x1b1,0x223)](this['_map']['scene'],_0x50dbf6);function _0x3e9d38(_0x32ff23,_0x8b5098){return _0x306136(_0x32ff23-0x446,_0x8b5098);}function _0x4cf4a3(_0x3cf14e,_0x334313){return _0x2cdeac(_0x334313- -0x380,_0x3cf14e);}return _0x2e5118?[_0x2e5118['x'],_0x2e5118['y']]:null;}['clear'](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){function _0x427391(_0x25e25f,_0x885e91){return _0x306136(_0x885e91-0x31c,_0x25e25f);}this[_0x427391(0xe0,0x8b)]=new Worker(this['options'][_0x427391(0xf2,0x8b)]);function _0x421c91(_0x5292e9,_0x8722e4){return _0x2cdeac(_0x8722e4-0x19a,_0x5292e9);}this[_0x421c91(0x4f8,0x502)][_0x421c91(0x54b,0x532)]=_0x2c7650=>{function _0x4e0a48(_0x55b1d1,_0x2eb2da){return _0x427391(_0x55b1d1,_0x2eb2da-0xa);}this[_0x1d33da(-0x12e,-0xbb)](_0x2c7650[_0x4e0a48(0x100,0x14c)]['particles']);function _0x1d33da(_0x11b841,_0x3ea795){return _0x421c91(_0x3ea795,_0x11b841- -0x639);}this[_0x1d33da(-0x12c,-0x165)]=![];},this[_0x421c91(0x5c2,0x539)]={'init':_0x3ca15b=>{const _0xee1562={};_0xee1562[_0xf6f5b0(-0xbe,-0x83)]='init';function _0x28d2da(_0x2c817f,_0x4e5140){return _0x427391(_0x4e5140,_0x2c817f- -0x5c);}_0xee1562[_0xf6f5b0(-0x5f,-0xc8)]=_0x3ca15b;function _0xf6f5b0(_0x3caeaa,_0xa7027b){return _0x421c91(_0xa7027b,_0x3caeaa- -0x608);}this[_0xf6f5b0(-0x106,-0x83)]['postMessage'](_0xee1562);},'setOptions':_0x20a902=>{const _0x3d83f9={};_0x3d83f9[_0x38876d(0x22f,0x224)]='setOptions';function _0x704d9a(_0xf7e76a,_0x1b855a){return _0x421c91(_0xf7e76a,_0x1b855a- -0x43d);}function _0x38876d(_0x19ad56,_0x415b42){return _0x421c91(_0x19ad56,_0x415b42- -0x326);}_0x3d83f9[_0x38876d(0x2db,0x283)]=_0x20a902,this['worker']['postMessage'](_0x3d83f9);},'setDate':_0x1792ae=>{function _0x47b9cc(_0x4e4d64,_0x326756){return _0x421c91(_0x326756,_0x4e4d64- -0x554);}function _0x24a8bd(_0x4bb6ac,_0x2cb207){return _0x427391(_0x2cb207,_0x4bb6ac-0x1be);}const _0x392ba9={};_0x392ba9[_0x47b9cc(-0xa,-0x5)]=_0x47b9cc(-0x51,0xc),_0x392ba9['data']=_0x1792ae,this[_0x47b9cc(-0x52,-0xce)]['postMessage'](_0x392ba9);},'update':()=>{if(this['_updateIng2'])return;this[_0x319520(0xa5,0xd6)]=!![];function _0x4e1e56(_0xecb3ce,_0x2911de){return _0x427391(_0x2911de,_0xecb3ce-0xdc);}const _0x2e192d={};function _0x319520(_0x470ec5,_0x278849){return _0x427391(_0x278849,_0x470ec5-0xf);}_0x2e192d['type']=_0x4e1e56(0x179,0xf4),this[_0x4e1e56(0x167,0x19c)][_0x4e1e56(0x208,0x1ee)](_0x2e192d);},'clear':()=>{const _0x1a90cf={};function _0x22122f(_0x48aead,_0x5277eb){return _0x427391(_0x48aead,_0x5277eb-0x52);}_0x1a90cf[_0x36ceb5(-0x22d,-0x1d8)]=_0x36ceb5(-0x182,-0x1c1);function _0x36ceb5(_0x42e5c9,_0x496337){return _0x421c91(_0x42e5c9,_0x496337- -0x722);}this[_0x36ceb5(-0x242,-0x220)][_0x36ceb5(-0x1e3,-0x17f)](_0x1a90cf);}},this['windField']['init'](this['options']);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace[_0x306136(-0x292,-0x261)][_0x306136(-0x253,-0x264)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports[_0x2cdeac(0x39b,0x334)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil;const _0xf49cad={};_0xf49cad['value']=!![],Object[_0x2cdeac(0x3bd,0x35f)](exports,'__esModule',_0xf49cad);
|
|
14
|
+
'use strict';(function(_0x291159,_0x22d5c4){const _0x5a6a96=_0x291159();function _0x760a11(_0x34ad88,_0x3dbfc1){return _0xac00(_0x3dbfc1-0x376,_0x34ad88);}function _0x178db5(_0xa57d09,_0x117609){return _0xac00(_0xa57d09-0x335,_0x117609);}while(!![]){try{const _0x512d8d=-parseInt(_0x178db5(0x558,0x55f))/0x1+parseInt(_0x178db5(0x519,0x56c))/0x2*(parseInt(_0x178db5(0x5e8,0x598))/0x3)+-parseInt(_0x178db5(0x508,0x56f))/0x4+-parseInt(_0x760a11(0x5ac,0x592))/0x5+-parseInt(_0x760a11(0x4e0,0x566))/0x6+-parseInt(_0x178db5(0x5d2,0x5e5))/0x7*(parseInt(_0x760a11(0x5f4,0x60c))/0x8)+parseInt(_0x178db5(0x567,0x513))/0x9;if(_0x512d8d===_0x22d5c4)break;else _0x5a6a96['push'](_0x5a6a96['shift']());}catch(_0x48f080){_0x5a6a96['push'](_0x5a6a96['shift']());}}}(_0x5aa1,0xbf4c0));function _interopNamespace(_0x32a06c){if(_0x32a06c&&_0x32a06c[_0x396c8d(0x10b,0xa5)])return _0x32a06c;var _0x2f3573=Object['create'](null);function _0x16d411(_0x59a9e7,_0x5903a0){return _0xac00(_0x5903a0- -0xd6,_0x59a9e7);}function _0x396c8d(_0x55c6e5,_0x247a84){return _0xac00(_0x247a84- -0x145,_0x55c6e5);}return _0x32a06c&&Object[_0x16d411(0x154,0x173)](_0x32a06c)[_0x396c8d(0x6a,0x9d)](function(_0xcc75e5){if(_0xcc75e5!=='default'){var _0x3d3cad=Object['getOwnPropertyDescriptor'](_0x32a06c,_0xcc75e5);Object['defineProperty'](_0x2f3573,_0xcc75e5,_0x3d3cad['get']?_0x3d3cad:{'enumerable':!![],'get':function(){return _0x32a06c[_0xcc75e5];}});}}),_0x2f3573['default']=_0x32a06c,_0x2f3573;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function _0x1b4f03(_0x215f20,_0x396281){return _0xac00(_0x215f20- -0x212,_0x396281);}function getU(_0x48c306,_0x518794){const _0x4301e1=_0x48c306*Math['cos'](Cesium$2['Math']['toRadians'](_0x518794));return _0x4301e1;}function getV(_0x547914,_0x1bd55d){function _0xf77f62(_0x1808c0,_0x4ce1c5){return _0xac00(_0x4ce1c5-0x56,_0x1808c0);}const _0x2f43dc=_0x547914*Math['sin'](Cesium$2[_0xf77f62(0x21e,0x25b)]['toRadians'](_0x1bd55d));return _0x2f43dc;}function getSpeed(_0x28eb2b,_0x564370){const _0x809247=Math['sqrt'](Math['pow'](_0x28eb2b,0x2)+Math['pow'](_0x564370,0x2));return _0x809247;}function getDirection(_0x3a6412,_0x567c96){function _0x404c72(_0x2d2c94,_0xb108b6){return _0xac00(_0x2d2c94-0x2ae,_0xb108b6);}let _0x525dd7=Cesium$2['Math'][_0x5ea718(0x283,0x21f)](Math[_0x404c72(0x562,0x529)](_0x567c96,_0x3a6412));_0x525dd7+=_0x525dd7<0x0?0x168:0x0;function _0x5ea718(_0x4cf569,_0x572366){return _0xac00(_0x4cf569-0x6c,_0x572366);}return _0x525dd7;}const _0x1994ea={};_0x1994ea['__proto__']=null,_0x1994ea[_0x3e9da2(0x271,0x200)]=getU,_0x1994ea['getV']=getV,_0x1994ea['getSpeed']=getSpeed,_0x1994ea[_0x1b4f03(0x47,0x47)]=getDirection;var WindUtil=_0x1994ea,updatePositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20获取当前粒子的位置\x0a\x20\x20vec2\x20currentPos\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20获取粒子的速度\x0a\x20\x20vec2\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20计算下一个位置\x0a\x20\x20vec2\x20nextPos\x20=\x20currentPos\x20+\x20speed;\x0a\x0a\x20\x20\x20\x20//\x20将新的位置写入\x20fragColor\x0a\x20\x20fragColor\x20=\x20vec4(nextPos,\x200.0f,\x201.0f);\x0a}\x0a',calculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec2\x20uRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20vRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20speedRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20dimension;\x20//\x20(lon,\x20lat)\x0auniform\x20vec2\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec2\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0a\x0auniform\x20float\x20speedScaleFactor;\x0auniform\x20float\x20frameRateAdjustment;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20getInterval(vec2\x20maximum,\x20vec2\x20minimum,\x20vec2\x20dimension)\x20{\x0a\x20\x20return\x20(maximum\x20-\x20minimum)\x20/\x20(dimension\x20-\x201.0f);\x0a}\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLat.x\x20=\x20clamp(lonLat.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLat.y\x20=\x20clamp(lonLat.y,\x20minimum.y,\x20maximum.y);\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(0.0f);\x0a\x20\x20index2D.x\x20=\x20(lonLat.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index2D.y\x20=\x20(lonLat.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20dimension.y);\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0avec2\x20getWindComponents(vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20u\x20=\x20texture(U,\x20normalizedIndex2D).r;\x0a\x20\x20float\x20v\x20=\x20texture(V,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20vec2(u,\x20v);\x0a}\x0a\x0avec2\x20bilinearInterpolation(vec2\x20lonLat)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLat.x;\x0a\x20\x20float\x20lat\x20=\x20lonLat.y;\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20grid\x20cell\x20coordinates\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Get\x20wind\x20vectors\x20at\x20four\x20corners\x0a\x20\x20vec2\x20v00\x20=\x20getWindComponents(vec2(lon0,\x20lat0));\x0a\x20\x20vec2\x20v10\x20=\x20getWindComponents(vec2(lon1,\x20lat0));\x0a\x20\x20vec2\x20v01\x20=\x20getWindComponents(vec2(lon0,\x20lat1));\x0a\x20\x20vec2\x20v11\x20=\x20getWindComponents(vec2(lon1,\x20lat1));\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20all\x20wind\x20vectors\x20are\x20zero\x0a\x20\x20if(length(v00)\x20==\x200.0f\x20&&\x20length(v10)\x20==\x200.0f\x20&&\x20length(v01)\x20==\x200.0f\x20&&\x20length(v11)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x200.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20interpolation\x20weights\x0a\x20\x20float\x20s\x20=\x20(lon\x20-\x20lon0)\x20/\x20interval.x;\x0a\x20\x20float\x20t\x20=\x20(lat\x20-\x20lat0)\x20/\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Perform\x20bilinear\x20interpolation\x20on\x20vector\x20components\x0a\x20\x20vec2\x20v0\x20=\x20mix(v00,\x20v10,\x20s);\x0a\x20\x20vec2\x20v1\x20=\x20mix(v01,\x20v11,\x20s);\x0a\x20\x20return\x20mix(v0,\x20v1,\x20t);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec2\x20convertSpeedUnitToLonLat(vec2\x20lonLat,\x20vec2\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLat);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20vec2\x20windVectorInLonLat\x20=\x20vec2(u,\x20v);\x0a\x0a\x20\x20return\x20windVectorInLonLat;\x0a}\x0a\x0avec2\x20calculateSpeedByRungeKutta2(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec2\x20y_n\x20=\x20lonLat;\x0a\x20\x20vec2\x20f_n\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec2\x20speed\x20=\x20h\x20*\x20bilinearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20calculateWindNorm(vec2\x20speed)\x20{\x0a\x20\x20float\x20speedLength\x20=\x20length(speed.xy);\x0a\x20\x20if(speedLength\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Clamp\x20speedLength\x20to\x20range\x0a\x20\x20float\x20clampedSpeed\x20=\x20clamp(speedLength,\x20speedRange.x,\x20speedRange.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(clampedSpeed\x20-\x20speedRange.x)\x20/\x20(speedRange.y\x20-\x20speedRange.x);\x0a\x20\x20return\x20vec2(speedLength,\x20normalizedSpeed);\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec2\x20lonLat\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec2\x20speedOrigin\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLat)\x20*\x20frameRateAdjustment;\x0a\x20\x20vec2\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLat,\x20speed);\x0a\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',postProcessingPositionFragmentShader=_0x3e9da2(0x30d,0x28f),renderParticlesFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec4\x20speed;\x0ain\x20float\x20v_segmentPosition;\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20vec2\x20domain;\x0auniform\x20vec2\x20displayRange;\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speed.a\x20>\x20zero\x20&&\x20speed.b\x20>\x20displayRange.x\x20&&\x20speed.b\x20<\x20displayRange.y)\x20{\x0a\x20\x20\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x20\x20\x20\x20vec4\x20baseColor\x20=\x20texture(colorTable,\x20vec2(normalizedSpeed,\x20zero));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用更平滑的渐变效果\x0a\x20\x20\x20\x20float\x20alpha\x20=\x20smoothstep(0.0f,\x201.0f,\x20v_segmentPosition);\x0a\x20\x20\x20\x20alpha\x20=\x20pow(alpha,\x201.5f);\x20//\x20调整透明度渐变曲线\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20根据速度调整透明度\x0a\x20\x20\x20\x20float\x20speedAlpha\x20=\x20mix(0.3f,\x201.0f,\x20speed.a);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20组合颜色和透明度\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(baseColor.rgb,\x20baseColor.a\x20*\x20alpha\x20*\x20speedAlpha);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a\x0a\x20\x20float\x20segmentsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20if(segmentsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',renderParticlesVertexShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0ain\x20vec3\x20normal;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20frameRateAdjustment;\x0auniform\x20float\x20particleHeight;\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20vec2\x20lineWidth;\x0auniform\x20vec2\x20lineLength;\x0auniform\x20vec2\x20domain;\x0auniform\x20bool\x20is3D;\x0a\x0a//\x20添加输出变量传递给片元着色器\x0aout\x20vec4\x20speed;\x0aout\x20float\x20v_segmentPosition;\x0aout\x20vec2\x20textureCoordinate;\x0a\x0a//\x20添加结构体定义\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0avec3\x20convertCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLat.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20if(is3D)\x20{\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLat);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用\x20modelViewProjection\x20矩阵进行投影变换\x0a\x20\x20\x20\x20vec4\x20projectedPosition\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20\x20\x20return\x20projectedPosition;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20vec3\x20position2D\x20=\x20vec3(radians(lonLat.x),\x20radians(lonLat.y),\x200.0f);\x0a\x20\x20\x20\x20return\x20czm_modelViewProjection\x20*\x20vec4(position2D,\x201.0f);\x0a\x20\x20}\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign,\x20float\x20widthFactor)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20//\x20计算方向向量\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x0a\x20\x20\x20\x20//\x20计算法向量\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x0a\x20\x20\x20\x20//\x20使用\x20widthFactor\x20调整宽度\x0a\x20\x20float\x20offsetLength\x20=\x20widthFactor\x20*\x20lineWidth.y;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20翻转\x20Y\x20轴坐标\x0a\x20\x20vec2\x20flippedIndex\x20=\x20vec2(st.x,\x201.0f\x20-\x20st.y);\x0a\x0a\x20\x20vec2\x20particleIndex\x20=\x20flippedIndex;\x0a\x20\x20speed\x20=\x20texture(particlesSpeed,\x20particleIndex);\x0a\x0a\x20\x20vec2\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rg;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x0a\x20\x20\x20\x20//\x20计算速度相关的宽度和长度因子\x0a\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x0a\x20\x20\x20\x20//\x20根据速度计算宽度\x0a\x20\x20float\x20widthFactor\x20=\x20mix(lineWidth.x,\x20lineWidth.y,\x20normalizedSpeed);\x0a\x20\x20widthFactor\x20*=\x20(pointToUse\x20<\x200\x20?\x201.0f\x20:\x200.5f);\x20//\x20头部更宽,尾部更窄\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20length\x20based\x20on\x20speed\x0a\x20\x20float\x20lengthFactor\x20=\x20mix(lineLength.x,\x20lineLength.y,\x20normalizedSpeed)\x20*\x20pixelSize;\x0a\x0a\x20\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20头部位置\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x200.0f;\x20//\x20头部\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Get\x20direction\x20and\x20normalize\x20it\x20to\x20length\x201.0\x0a\x20\x20\x20\x20vec4\x20direction\x20=\x20normalize(projectedCoordinates.next\x20-\x20projectedCoordinates.current);\x0a\x20\x20\x20\x20vec4\x20extendedPosition\x20=\x20projectedCoordinates.current\x20+\x20direction\x20*\x20lengthFactor;\x0a\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20extendedPosition,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20extendedPosition\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x201.0f;\x20//\x20尾部\x0a\x20\x20}\x0a\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a}\x0a';const {ShaderSource:ShaderSource$1}=mars3d__namespace['Cesium'];class ShaderManager{static[_0x1b4f03(0x2f,-0x32)](){const _0x4dd04e={};return _0x4dd04e['sources']=[calculateSpeedShader],new ShaderSource$1(_0x4dd04e);}static[_0x1b4f03(0x70,0x7b)](){const _0x32a7ce={};return _0x32a7ce['sources']=[updatePositionShader],new ShaderSource$1(_0x32a7ce);}static['getSegmentDrawVertexShader'](){const _0x25ed11={};return _0x25ed11['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x25ed11);}static['getSegmentDrawFragmentShader'](){const _0x22c4f7={};return _0x22c4f7['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x22c4f7);}static['getPostProcessingPositionShader'](){const _0x150cbc={};return _0x150cbc['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x150cbc);}}function _0x5aa1(){const _0x36c967=['pixelDatatype','wheel','21176010lTVsMT','getUVByXY','processWindData','bounds','show','lineWidth','pointerEvents','geometry','vmax','min','ymin','left','positionWC','componentDatatype','isDestroy','getCalculateSpeedShader','createWindTextures','primitives','textures','FLOAT','CLAMP_TO_EDGE','vmin','canvas','keys','createParticlesTextures','_speedRate','type','mode','number','LINEAR','_calcUV','outputTexture','lat','postMessage','renderState','setDate','requestAnimationFrame','autoClear','frameRateAdjustment','getDirection','zIndex','warn','mouse_move','_bilinearInterpolation','shaderProgram','age','pixelSize','add','min\x20is\x20undefined,\x20calculate\x20min','frameRateMonitor','scene','particlesTextureSize\x20must\x20be\x20greater\x20than\x200','fragmentShaderSource','preExecute','create','frameTime','computing','west','bindEvent','_setOptionsHook','colorTable','requestRender','magnificationFilter','colors','onmessage','context','setGeometry','data','latRange','getPostProcessingPositionShader','stroke','mouseDown','frameRate','tlng','reCreateWindTextures','getRandomLatLng','createCommand','flatMap','execute','wrapT','getUpdatePositionShader','abs','_map','sqrt','commandToExecute','Unknown\x20command\x20type','tlat','_animateFrame','max\x20is\x20undefined,\x20calculate\x20max','Compute','update','refreshTimer','LayerUtil','globe','resize','push','commandType','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a','_addedHook','drawingBufferWidth','8jorYsT','setOptions','pass','floor','depthTexture','attributeLocations','_drawLines','4932487mWOedC','applyViewerParameters','clearCommand','udata','BaseLayer','rawRenderState','STATIC_DRAW','worker','xmax','isDynamic','camera','reverseY','globalAlpha','segmentsColor','prototype','mouse_down','RED','nextParticlesPosition','visible','rendering','cartesianToCartographic','random','3796347wXUmEK','atan2','uniformMap','ellipsoid','framebuffers','componentsPerAttribute','Cesium','_canrefresh','currentParticlesPosition','redraw','postProcessingPosition','maxAge','interpolated','moveTo','none','framebuffer','_onMouseUpEvent','max','SceneMode','dynamic','vdata','particleSystem','particlesTextures','destroyParticlesTextures','onParticlesTextureSizeChange','drawingBufferHeight','commandList','speed','cols','pixelFormat','canvasWidth','updateViewerParameters','EllipsoidalOccluder','CanvasWindLayer','style','isInExtent','particlesTextureSize','SCENE3D','SRC_ALPHA','wrapS','lng','primitiveType','fromCache','east','updatePosition','_colorRamp','ymax','destroy','flipY','xmin','calculateSpeed','5188320ZGuQdv','lineTo','particlesNumber','grid','minificationFilter','Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.','fixedHeight','viewerParameters','array','values','_onMouseMoveEvent','_calc_speedRate','getUVByPoint','onColorTableChange','WindUtil','forEach','removeChild','2cygEXO','EventType','particles','CanvasWindField','segments','createPrimitives','__esModule','willReadFrequently','setData','RGBA','slice','length','454668UpixGS','_updateIng','options','alpha','reverse','bufferUsage','_onMapWhellEvent','persists','rows','dropRateBump','color','north','#ffffff','OPAQUE','layer','initFrameRate','windField','segmentsDepth','latitude','container','getU','Math','globalCompositeOperation','createRenderingFramebuffers','speedRate','_onMouseDownEvent','canvasContext','off','initWorker','sceneMode','_updateIng2','_pointerEvents','getPrimitives','stringify','Cartesian2','unbindEvent','width','now','call','toDegrees','NEAREST','all','visibility','cancelAnimationFrame','2379870JEDfEd','createSegmentsGeometry','height','bind','dropRate','particlesSpeed','log','281314Ckpfkf','remove','windData','clear','updateOptions','register','vertexShaderSource','south','removeEventListener','clientWidth','windTextures','UNSIGNED_INT','strokeStyle'];_0x5aa1=function(){return _0x36c967;};return _0x5aa1();}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defaultValue,defined,destroyObject}=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0xea9577){this[_0x308ccb(0xa6,0x3a)]=_0xea9577[_0x5b3c75(0x488,0x478)],this[_0x5b3c75(0x413,0x41f)]=_0xea9577[_0x308ccb(-0x39,-0x1f)],this['attributeLocations']=_0xea9577['attributeLocations'],this['primitiveType']=_0xea9577[_0x308ccb(-0x61,-0x8f)],this['uniformMap']=_0xea9577['uniformMap']||{};function _0x308ccb(_0x23db93,_0x25b867){return _0x3e9da2(_0x23db93,_0x25b867- -0x254);}this['vertexShaderSource']=_0xea9577['vertexShaderSource'],this[_0x308ccb(0x8f,0xe)]=_0xea9577['fragmentShaderSource'],this[_0x5b3c75(0x47f,0x488)]=_0xea9577['rawRenderState'],this[_0x5b3c75(0x3b1,0x395)]=_0xea9577['framebuffer'],this['outputTexture']=_0xea9577['outputTexture'],this['autoClear']=defaultValue(_0xea9577['autoClear'],![]),this[_0x5b3c75(0x4ad,0x44d)]=_0xea9577['preExecute'],this[_0x308ccb(-0x31,-0x22)]=!![];function _0x5b3c75(_0x34720b,_0x19deeb){return _0x3e9da2(_0x34720b,_0x19deeb-0x1ea);}this['commandToExecute']=undefined,this[_0x308ccb(-0x25,0x47)]=undefined,this['isDynamic']=_0xea9577['isDynamic']??(()=>!![]),this[_0x308ccb(0x88,-0x1)]&&(this[_0x308ccb(0xc7,0x47)]=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x5b3c75(0x3db,0x395)],'pass':Pass$1[_0x308ccb(-0x78,-0x5b)]}));}[_0x1b4f03(0x6c,0x1c)](_0x4b291c){function _0x31960e(_0x16dfc3,_0x368ce9){return _0x1b4f03(_0x368ce9- -0x4a,_0x16dfc3);}function _0x5b0527(_0x116fc7,_0x4a73e0){return _0x3e9da2(_0x4a73e0,_0x116fc7-0x64);}if(this[_0x31960e(0x27,0x36)]==='Draw'){const _0x4c8124={};_0x4c8124[_0x31960e(0x11,0x17)]=_0x4b291c,_0x4c8124[_0x31960e(0x67,-0x23)]=this[_0x5b0527(0x299,0x295)],_0x4c8124['attributeLocations']=this[_0x31960e(0x51,0x3f)],_0x4c8124[_0x5b0527(0x255,0x235)]=BufferUsage$1[_0x31960e(-0x1b,0x47)];const _0x3476ac=VertexArray$1['fromGeometry'](_0x4c8124),_0x55a4a2={};_0x55a4a2['context']=_0x4b291c,_0x55a4a2[_0x5b0527(0x289,0x287)]=this['vertexShaderSource'],_0x55a4a2['fragmentShaderSource']=this[_0x5b0527(0x2c6,0x2dc)],_0x55a4a2['attributeLocations']=this['attributeLocations'];const _0x45f937=ShaderProgram[_0x5b0527(0x22a,0x219)](_0x55a4a2),_0x48882b=RenderState['fromCache'](this['rawRenderState']),_0x4525a4={};return _0x4525a4['owner']=this,_0x4525a4['vertexArray']=_0x3476ac,_0x4525a4[_0x5b0527(0x229,0x243)]=this['primitiveType'],_0x4525a4['modelMatrix']=Matrix4['IDENTITY'],_0x4525a4[_0x5b0527(0x2b4,0x269)]=_0x48882b,_0x4525a4[_0x5b0527(0x2be,0x334)]=_0x45f937,_0x4525a4['framebuffer']=this['framebuffer'],_0x4525a4[_0x31960e(0x98,0x59)]=this['uniformMap'],_0x4525a4[_0x5b0527(0x2f8,0x2b9)]=Pass$1[_0x5b0527(0x25d,0x1fc)],new DrawCommand(_0x4525a4);}else{if(this['commandType']===_0x5b0527(0x2eb,0x2dc)){const _0x3d1450={};return _0x3d1450['owner']=this,_0x3d1450['fragmentShaderSource']=this['fragmentShaderSource'],_0x3d1450[_0x5b0527(0x315,0x381)]=this['uniformMap'],_0x3d1450['outputTexture']=this['outputTexture'],_0x3d1450[_0x31960e(-0x8f,-0x65)]=!![],new ComputeCommand(_0x3d1450);}else throw new Error(_0x31960e(0x7b,0x2b));}}[_0x3e9da2(0x2a8,0x270)](_0x18adc9,_0xdc3f9e){function _0x17672e(_0x1ae078,_0x587c76){return _0x3e9da2(_0x1ae078,_0x587c76- -0x157);}this['geometry']=_0xdc3f9e;function _0x31b1d3(_0x48839f,_0x2bfd18){return _0x1b4f03(_0x2bfd18- -0x3e,_0x48839f);}defined(this[_0x17672e(0x139,0x12b)])&&(this['commandToExecute']['vertexArray']=VertexArray$1['fromGeometry']({'context':_0x18adc9,'geometry':this[_0x31b1d3(-0x9e,-0x17)],'attributeLocations':this['attributeLocations'],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}['update'](_0x266176){if(!this[_0x125bef(0x683,0x65f)]())return;function _0x231282(_0x2f00b4,_0x45a3d0){return _0x3e9da2(_0x45a3d0,_0x2f00b4-0x22e);}if(!this[_0x125bef(0x613,0x59d)]||!defined(_0x266176))return;!defined(this[_0x125bef(0x663,0x5ed)])&&(this['commandToExecute']=this[_0x231282(0x4a8,0x472)](_0x266176['context']));defined(this[_0x231282(0x491,0x504)])&&this[_0x231282(0x491,0x415)]();if(!_0x266176['commandList']){console['warn']('frameState.commandList\x20is\x20undefined');return;}function _0x125bef(_0x4830ea,_0x2fd57c){return _0x3e9da2(_0x2fd57c,_0x4830ea-0x3e1);}defined(this['clearCommand'])&&_0x266176['commandList']['push'](this[_0x125bef(0x67c,0x61e)]),defined(this['commandToExecute'])&&_0x266176[_0x231282(0x3e4,0x442)][_0x125bef(0x66e,0x6ce)](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){if(defined(this['commandToExecute'])){var _0x4db4cf;(_0x4db4cf=this['commandToExecute'][_0x44c853(-0x2c,-0x41)])===null||_0x4db4cf===void 0x0||_0x4db4cf[_0x294b6e(0x9b,0xff)](),this['commandToExecute']['shaderProgram']=undefined;}function _0x294b6e(_0x283079,_0x304257){return _0x3e9da2(_0x283079,_0x304257- -0xcc);}function _0x44c853(_0x38feaa,_0xe78464){return _0x3e9da2(_0x38feaa,_0xe78464- -0x29b);}return destroyObject(this);}}function deepMerge(_0x5edb9b,_0x3c030f){if(!_0x5edb9b)return _0x3c030f;function _0x5d0c4f(_0x2d7259,_0x4176ee){return _0x3e9da2(_0x2d7259,_0x4176ee- -0x20e);}if(!_0x3c030f)return _0x5edb9b;const _0x55be27={..._0x3c030f},_0x1c0996=_0x55be27;function _0x6af55d(_0x33f35b,_0x59384f){return _0x1b4f03(_0x59384f-0x4f4,_0x33f35b);}for(const _0x13b2a6 in _0x5edb9b){if(Object[_0x5d0c4f(0x33,0x99)]['hasOwnProperty'][_0x5d0c4f(-0x7f,0x4)](_0x5edb9b,_0x13b2a6)){const _0x1b1f2b=_0x5edb9b[_0x13b2a6],_0x1db047=_0x3c030f[_0x13b2a6];if(Array['isArray'](_0x1b1f2b)){_0x1c0996[_0x13b2a6]=_0x1b1f2b[_0x5d0c4f(-0xb,-0x24)]();continue;}if(_0x1b1f2b&&typeof _0x1b1f2b==='object'){_0x1c0996[_0x13b2a6]=deepMerge(_0x1b1f2b,_0x1db047||{});continue;}_0x1b1f2b!==undefined&&(_0x1c0996[_0x13b2a6]=_0x1b1f2b);}}return _0x1c0996;}const {Cartesian2:Cartesian2$1,FrameRateMonitor,PixelDatatype:PixelDatatype$1,PixelFormat:PixelFormat$1,Sampler:Sampler$1,Texture:Texture$1,TextureMagnificationFilter:TextureMagnificationFilter$1,TextureMinificationFilter:TextureMinificationFilter$1}=mars3d__namespace['Cesium'];class WindParticlesComputing{constructor(_0x16f8e9,_0x4f789a,_0x4781ea,_0x5300dd,_0x177cf3){this['context']=_0x16f8e9,this['options']=_0x4781ea,this['viewerParameters']=_0x5300dd,this['windData']=_0x4f789a,this[_0x3d06e8(-0x153,-0x1bd)]=0x3c;function _0x3d06e8(_0x525fa0,_0x1ee90c){return _0x3e9da2(_0x1ee90c,_0x525fa0- -0x3c9);}this[_0x3d06e8(-0x175,-0x190)]=0x1;const _0x2f824d={};_0x2f824d['scene']=_0x177cf3,_0x2f824d['samplingWindow']=0x1,_0x2f824d['quietPeriod']=0x0,this[_0x3d06e8(-0x16a,-0x19d)]=new FrameRateMonitor(_0x2f824d),this[_0x3d06e8(-0x1ce,-0x15a)](),this[_0x3d06e8(-0x18b,-0x189)]();function _0x585c6c(_0x1e1eb5,_0x12b807){return _0x3e9da2(_0x12b807,_0x1e1eb5-0x3d9);}this[_0x585c6c(0x61f,0x5a5)](),this['createComputingPrimitives']();}['initFrameRate'](){function _0x44e0b1(_0x554d6b,_0x2ab57a){return _0x1b4f03(_0x554d6b-0x21e,_0x2ab57a);}const _0x17ff18=()=>{function _0x3df1cc(_0x52bff6,_0x2668fc){return _0xac00(_0x2668fc- -0x22f,_0x52bff6);}function _0x5674f1(_0x38969b,_0x597a76){return _0xac00(_0x597a76-0x3d5,_0x38969b);}this[_0x5674f1(0x61b,0x638)]['lastFramesPerSecond']>0x14&&(this[_0x3df1cc(0x50,0x4b)]=this['frameRateMonitor']['lastFramesPerSecond'],this['frameRateAdjustment']=0x3c/Math['max'](this['frameRate'],0x1));};_0x17ff18();const _0x2d8120=setInterval(_0x17ff18,0x3e8),_0x2d2201=this['destroy'][_0x44e0b1(0x22b,0x288)](this);this['destroy']=()=>{clearInterval(_0x2d8120),_0x2d2201();};}['createWindTextures'](){const _0x51467b={};_0x51467b['minificationFilter']=TextureMinificationFilter$1[_0x14f504(-0x14c,-0x117)];function _0x14f504(_0x1febdd,_0x1a7e04){return _0x1b4f03(_0x1febdd- -0x189,_0x1a7e04);}_0x51467b[_0x14f504(-0x12b,-0xb9)]=TextureMagnificationFilter$1['LINEAR'];function _0x9d92a8(_0x5d3e4f,_0x105aa7){return _0x1b4f03(_0x105aa7-0x1f3,_0x5d3e4f);}const _0x15bb51={'context':this['context'],'width':this['windData']['width'],'height':this[_0x9d92a8(0x239,0x206)]['height'],'pixelFormat':PixelFormat$1[_0x14f504(-0xee,-0xb0)],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this['options']['flipY']??![],'sampler':new Sampler$1(_0x51467b)};this['windTextures']={'U':new Texture$1({..._0x15bb51,'source':{'arrayBufferView':new Float32Array(this['windData']['u'][_0x14f504(-0x1c0,-0x21e)])}}),'V':new Texture$1({..._0x15bb51,'source':{'arrayBufferView':new Float32Array(this['windData']['v']['array'])}})};}['createParticlesTextures'](){function _0x2ed456(_0x738723,_0x2ca6fa){return _0x1b4f03(_0x2ca6fa-0x1cc,_0x738723);}const _0x1758ac={};_0x1758ac[_0x23d091(0x27f,0x2a3)]=TextureMinificationFilter$1[_0x23d091(0x2c0,0x2d2)],_0x1758ac['magnificationFilter']=TextureMagnificationFilter$1[_0x23d091(0x2c0,0x26a)];function _0x23d091(_0x22fb39,_0x5804f4){return _0x3e9da2(_0x5804f4,_0x22fb39-0xac);}const _0x17837f={'context':this['context'],'width':this['options']['particlesTextureSize'],'height':this['options']['particlesTextureSize'],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1[_0x2ed456(0x205,0x1ff)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this[_0x23d091(0x29a,0x247)]['particlesTextureSize']*this[_0x2ed456(0x212,0x1ac)]['particlesTextureSize']*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x1758ac)};this[_0x23d091(0x25e,0x2a6)]={'previousParticlesPosition':new Texture$1(_0x17837f),'currentParticlesPosition':new Texture$1(_0x17837f),'nextParticlesPosition':new Texture$1(_0x17837f),'postProcessingPosition':new Texture$1(_0x17837f),'particlesSpeed':new Texture$1(_0x17837f)};}[_0x1b4f03(-0x5b,-0xd4)](){function _0x3ccb21(_0x81d3cf,_0x283926){return _0x1b4f03(_0x81d3cf-0x1db,_0x283926);}function _0x426b03(_0x587038,_0x3c3c7d){return _0x3e9da2(_0x3c3c7d,_0x587038-0x3ce);}Object[_0x426b03(0x5a6,0x557)](this[_0x426b03(0x580,0x60a)])[_0x3ccb21(0x1ab,0x183)](_0x32d078=>_0x32d078['destroy']());}['createComputingPrimitives'](){function _0xc019ff(_0x5b9f32,_0x5c3f59){return _0x3e9da2(_0x5b9f32,_0x5c3f59-0x245);}function _0x2ba255(_0x52b557,_0x107966){return _0x3e9da2(_0x52b557,_0x107966- -0x18f);}this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':_0x2ba255(0xdc,0xf8),'uniformMap':{'U':()=>this[_0xc019ff(0x48b,0x46e)]['U'],'V':()=>this[_0x2ba255(0xca,0x9a)]['V'],'uRange':()=>new Cartesian2$1(this['windData']['u']['min'],this['windData']['u'][_0x2ba255(-0x22,0x1e)]),'vRange':()=>new Cartesian2$1(this['windData']['v'][_0xc019ff(0x4bd,0x47c)],this[_0x2ba255(0x9e,0x92)]['v'][_0xc019ff(0x384,0x3f2)]),'speedRange':()=>new Cartesian2$1(this['windData'][_0x2ba255(0x55,0x28)][_0xc019ff(0x463,0x47c)],this['windData']['speed']['max']),'currentParticlesPosition':()=>this[_0xc019ff(0x3be,0x3f7)]['currentParticlesPosition'],'speedScaleFactor':()=>{function _0x37864f(_0x3441f2,_0x1517be){return _0x2ba255(_0x3441f2,_0x1517be- -0x173);}function _0x2f4a3e(_0x35f0f2,_0x4bf7f2){return _0xc019ff(_0x35f0f2,_0x4bf7f2- -0x46d);}return(this[_0x37864f(-0xc9,-0x12c)]['pixelSize']+0x32)*this[_0x37864f(-0x132,-0x114)]['speedFactor'];},'frameRateAdjustment':()=>this[_0x2ba255(0xed,0xc5)],'dimension':()=>new Cartesian2$1(this['windData'][_0x2ba255(0x53,0x81)],this['windData']['height']),'minimum':()=>new Cartesian2$1(this[_0x2ba255(0xcb,0x92)]['bounds']['west'],this[_0xc019ff(0x49e,0x466)]['bounds']['south']),'maximum':()=>new Cartesian2$1(this['windData']['bounds']['east'],this[_0xc019ff(0x43f,0x466)]['bounds'][_0x2ba255(0xd8,0x68)])},'fragmentShaderSource':ShaderManager['getCalculateSpeedShader'](),'outputTexture':this[_0xc019ff(0x38b,0x3f7)]['particlesSpeed'],'preExecute':()=>{const _0x16810d=this[_0x482b73(0x272,0x2b8)]['previousParticlesPosition'];this[_0x38da67(-0x7e,-0xf7)]['previousParticlesPosition']=this['particlesTextures'][_0x482b73(0x264,0x205)];function _0x482b73(_0x11cb0d,_0x43f053){return _0xc019ff(_0x43f053,_0x11cb0d- -0x185);}this['particlesTextures']['currentParticlesPosition']=this['particlesTextures']['postProcessingPosition'],this['particlesTextures'][_0x38da67(-0x116,-0x103)]=_0x16810d;function _0x38da67(_0xe2ec30,_0x148b7b){return _0xc019ff(_0xe2ec30,_0x148b7b- -0x4ee);}this[_0x482b73(0x2ff,0x333)]['calculateSpeed']['commandToExecute']&&(this[_0x482b73(0x2ff,0x2b9)]['calculateSpeed'][_0x38da67(-0x5d,-0x27)]['outputTexture']=this[_0x482b73(0x272,0x273)]['particlesSpeed']);},'isDynamic':()=>this[_0xc019ff(0x3fb,0x433)][_0xc019ff(0x391,0x3f4)]}),'updatePosition':new CustomPrimitive({'commandType':_0x2ba255(0x8a,0xf8),'uniformMap':{'currentParticlesPosition':()=>this[_0x2ba255(0x2,0x23)][_0x2ba255(0x32,0x15)],'particlesSpeed':()=>this[_0xc019ff(0x45d,0x3f7)][_0xc019ff(0x4aa,0x462)]},'fragmentShaderSource':ShaderManager[_0xc019ff(0x461,0x4c3)](),'outputTexture':this[_0x2ba255(0x25,0x23)][_0xc019ff(0x4b7,0x4ef)],'preExecute':()=>{function _0x53bdee(_0x26b60f,_0x1e7207){return _0xc019ff(_0x26b60f,_0x1e7207- -0x2a8);}function _0x36b5fe(_0xb9d540,_0x582064){return _0x2ba255(_0x582064,_0xb9d540-0x145);}this['primitives'][_0x36b5fe(0x17e,0x1d2)]['commandToExecute']&&(this[_0x36b5fe(0x1f5,0x23e)]['updatePosition'][_0x36b5fe(0x238,0x201)][_0x36b5fe(0x203,0x252)]=this[_0x53bdee(0x153,0x14f)]['nextParticlesPosition']);},'isDynamic':()=>this[_0xc019ff(0x413,0x433)]['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this['particlesTextures'][_0x2ba255(0xe3,0x11b)],'particlesSpeed':()=>this['particlesTextures']['particlesSpeed'],'lonRange':()=>this[_0x2ba255(-0x34,0x47)]['lonRange'],'latRange':()=>this['viewerParameters'][_0xc019ff(0x52f,0x4b7)],'dataLonRange':()=>new Cartesian2$1(this['windData'][_0x2ba255(0xd6,0xa2)]['west'],this[_0x2ba255(0xdb,0x92)][_0x2ba255(0xc0,0xa2)][_0xc019ff(0x3a1,0x40c)]),'dataLatRange':()=>new Cartesian2$1(this['windData']['bounds']['south'],this['windData']['bounds']['north']),'randomCoefficient':function(){return Math['random']();},'dropRate':()=>this[_0x2ba255(0x7d,0x5f)]['dropRate'],'dropRateBump':()=>this['options'][_0xc019ff(0x3c6,0x43a)],'useViewerBounds':()=>this[_0x2ba255(0xd6,0x5f)]['useViewerBounds']},'fragmentShaderSource':ShaderManager[_0xc019ff(0x4d4,0x4b8)](),'outputTexture':this[_0x2ba255(-0x14,0x23)][_0x2ba255(-0x58,0x17)],'preExecute':()=>{function _0x77b0a9(_0x244e0b,_0x1994a6){return _0x2ba255(_0x244e0b,_0x1994a6-0xb7);}function _0x57b8ee(_0xa7c37c,_0x324712){return _0xc019ff(_0x324712,_0xa7c37c- -0x33e);}this[_0x57b8ee(0x146,0x142)]['postProcessingPosition'][_0x57b8ee(0x189,0x11c)]&&(this['primitives']['postProcessingPosition'][_0x57b8ee(0x189,0x15f)]['outputTexture']=this['particlesTextures']['postProcessingPosition']);},'isDynamic':()=>this[_0xc019ff(0x4a8,0x433)]['dynamic']})};}[_0x3e9da2(0x286,0x278)](){function _0x487b26(_0x1e4f58,_0x3bce1c){return _0x1b4f03(_0x3bce1c-0x2bb,_0x1e4f58);}function _0x223b10(_0x18545f,_0x1651b8){return _0x1b4f03(_0x1651b8-0x238,_0x18545f);}this[_0x487b26(0x30e,0x2d6)]['U'][_0x487b26(0x207,0x278)](),this[_0x223b10(0x248,0x253)]['V']['destroy'](),this[_0x487b26(0x283,0x2eb)]();}['updateWindData'](_0x5313d6){this[_0x3fda30(0x63,0x13)]=_0x5313d6;function _0x3fda30(_0x40be77,_0x5da0cb){return _0x3e9da2(_0x5da0cb,_0x40be77- -0x1be);}function _0x4922e4(_0x2aceb2,_0x5906bc){return _0x1b4f03(_0x5906bc-0x4b4,_0x2aceb2);}this[_0x3fda30(0xba,0x8f)]();}[_0x1b4f03(0x15,-0x5b)](_0x57cd1a){function _0x40c2be(_0x474daf,_0x3a7430){return _0x3e9da2(_0x474daf,_0x3a7430-0x2f4);}const _0x331177=_0x57cd1a['flipY']!==undefined&&_0x57cd1a['flipY']!==this['options']['flipY'];function _0x47032a(_0x286b0b,_0x145d15){return _0x1b4f03(_0x145d15-0x37d,_0x286b0b);}this[_0x47032a(0x389,0x35d)]=deepMerge(_0x57cd1a,this['options']),_0x331177&&this[_0x40c2be(0x593,0x56c)]();}['processWindData'](_0x19d29f){const {array:_0x138a70}=_0x19d29f;let {min:_0x1d1260,max:_0x5a390f}=_0x19d29f;function _0x328352(_0x228617,_0x5cf1dd){return _0x3e9da2(_0x5cf1dd,_0x228617- -0xb);}const _0x3c5289=new Float32Array(_0x138a70['length']);function _0x254dbc(_0xf5e040,_0x316338){return _0x3e9da2(_0x316338,_0xf5e040-0x346);}_0x1d1260===undefined&&(console[_0x328352(0x24c,0x27e)](_0x254dbc(0x5a4,0x555)),_0x1d1260=Math['min'](..._0x138a70));_0x5a390f===undefined&&(console['warn'](_0x254dbc(0x5cc,0x5f1)),_0x5a390f=Math['max'](..._0x138a70));const _0x796933=Math['max'](Math[_0x328352(0x274,0x2f5)](_0x1d1260),Math['abs'](_0x5a390f));for(let _0x5e1de5=0x0;_0x5e1de5<_0x138a70['length'];_0x5e1de5++){const _0x1d75a7=_0x138a70[_0x5e1de5]/_0x796933;_0x3c5289[_0x5e1de5]=_0x1d75a7;}return _0x3c5289;}['destroy'](){function _0x52c466(_0x5714b0,_0x12da29){return _0x3e9da2(_0x5714b0,_0x12da29- -0x199);}Object[_0x207b01(0x492,0x435)](this[_0x207b01(0x4e3,0x4bc)])['forEach'](_0x2c1121=>_0x2c1121[_0x207b01(0x485,0x46a)]()),Object[_0x207b01(0x492,0x4b6)](this[_0x52c466(-0x68,0x19)])['forEach'](_0x2e9176=>_0x2e9176[_0x207b01(0x485,0x498)]());function _0x207b01(_0x46f28c,_0x1a5a0c){return _0x3e9da2(_0x1a5a0c,_0x46f28c-0x2ba);}Object['values'](this['primitives'])[_0x207b01(0x498,0x495)](_0x4f554f=>_0x4f554f['destroy']()),this[_0x207b01(0x519,0x4e5)][_0x52c466(0x99,0x32)]();}}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace['Cesium'];function _0xac00(_0x14db8c,_0x3cb93){const _0x5aa14a=_0x5aa1();return _0xac00=function(_0xac0029,_0x14676e){_0xac0029=_0xac0029-0x1a6;let _0x3c606a=_0x5aa14a[_0xac0029];return _0x3c606a;},_0xac00(_0x14db8c,_0x3cb93);}class WindParticlesRendering{constructor(_0x4f9637,_0x3a915d,_0x429c31,_0x11dc2d){this[_0x2c7484(0x3c3,0x3e0)]=_0x4f9637;function _0x2c7484(_0xbc5fcf,_0x5d206f){return _0x1b4f03(_0xbc5fcf-0x362,_0x5d206f);}this[_0x2c7484(0x342,0x32e)]=_0x3a915d,this['viewerParameters']=_0x429c31,this['computing']=_0x11dc2d;(typeof this[_0x2c7484(0x342,0x2d7)][_0x2c7484(0x314,0x391)]!==_0x2c7484(0x39e,0x36a)||this['options']['particlesTextureSize']<=0x0)&&(console['error'](_0x2c7484(0x328,0x34b)),this[_0x2c7484(0x342,0x340)][_0x2c7484(0x314,0x325)]=0x100);this[_0x2c7484(0x3be,0x390)]=this['createColorTableTexture'](),this[_0x380b83(-0x3a,-0x17)]=this['createRenderingTextures']();function _0x380b83(_0x5b9a1c,_0x1cf21c){return _0x3e9da2(_0x1cf21c,_0x5b9a1c- -0x27a);}this['framebuffers']=this[_0x380b83(-0x77,-0xe)](),this['primitives']=this['createPrimitives']();}['createRenderingTextures'](){const _0x3b78f6={};_0x3b78f6[_0x71839f(0x218,0x241)]=this['context'],_0x3b78f6['width']=this[_0x71839f(0x1ed,0x241)]['drawingBufferWidth'],_0x3b78f6[_0x47a24c(-0x127,-0x162)]=this[_0x71839f(0x285,0x241)][_0x71839f(0x1a3,0x187)];function _0x47a24c(_0x36f51e,_0x97e83){return _0x3e9da2(_0x97e83,_0x36f51e- -0x341);}_0x3b78f6[_0x47a24c(-0x188,-0x1e8)]=PixelFormat['RGBA'],_0x3b78f6[_0x47a24c(-0x115,-0xf8)]=PixelDatatype['UNSIGNED_BYTE'];const _0x11b561=_0x3b78f6,_0x109857={};_0x109857[_0x47a24c(-0xd2,-0xf6)]=this['context'],_0x109857['width']=this['context'][_0x47a24c(-0xb0,-0x126)],_0x109857[_0x47a24c(-0x127,-0x1a3)]=this['context']['drawingBufferHeight'];function _0x71839f(_0x2a552c,_0xdbf488){return _0x3e9da2(_0x2a552c,_0xdbf488- -0x2e);}_0x109857[_0x47a24c(-0x188,-0x1f0)]=PixelFormat['DEPTH_COMPONENT'],_0x109857['pixelDatatype']=PixelDatatype[_0x47a24c(-0x117,-0xc0)];const _0x85b349=_0x109857;return{'segmentsColor':new Texture(_0x11b561),'segmentsDepth':new Texture(_0x85b349)};}['createRenderingFramebuffers'](){function _0x3824ea(_0x2f3b10,_0x5a4bcd){return _0x1b4f03(_0x2f3b10- -0xdf,_0x5a4bcd);}const _0x213bf7={};_0x213bf7['context']=this['context'],_0x213bf7['colorTextures']=[this['textures'][_0x37081c(0x3d0,0x3f6)]],_0x213bf7[_0x37081c(0x3eb,0x3e6)]=this[_0x37081c(0x3f4,0x390)]['segmentsDepth'];function _0x37081c(_0x4533df,_0x3375b7){return _0x1b4f03(_0x3375b7-0x35e,_0x4533df);}return{'segments':new Framebuffer(_0x213bf7)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x4772ac=>{_0x4772ac['destroy']();});}['createColorTableTexture'](){const _0x4f4c74=new Float32Array(this['options'][_0x4f2731(0x44b,0x45d)][_0x3bce21(0x31,0x49)](_0x270a03=>{function _0x1fd79b(_0x15d3a9,_0x207b84){return _0x4f2731(_0x15d3a9,_0x207b84-0x51);}const _0x58ffce=Color$1['fromCssColorString'](_0x270a03);return[_0x58ffce['red'],_0x58ffce['green'],_0x58ffce['blue'],_0x58ffce[_0x1fd79b(0x3ca,0x430)]];})),_0x2c7612={};_0x2c7612['minificationFilter']=TextureMinificationFilter['LINEAR'],_0x2c7612['magnificationFilter']=TextureMagnificationFilter[_0x4f2731(0x424,0x43b)],_0x2c7612[_0x4f2731(0x3f9,0x3b3)]=TextureWrap[_0x3bce21(0x47,0x10)];function _0x4f2731(_0x12667a,_0x39d53f){return _0x1b4f03(_0x39d53f-0x3fe,_0x12667a);}function _0x3bce21(_0x509e76,_0x4c7726){return _0x3e9da2(_0x509e76,_0x4c7726- -0x232);}return _0x2c7612[_0x3bce21(0x5a,0x4b)]=TextureWrap['CLAMP_TO_EDGE'],new Texture({'context':this[_0x3bce21(0x9d,0x3d)],'width':this['options']['colors']['length'],'height':0x1,'pixelFormat':PixelFormat[_0x3bce21(-0x59,-0x49)],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x2c7612),'source':{'width':this[_0x3bce21(-0x7a,-0x44)]['colors']['length'],'height':0x1,'arrayBufferView':_0x4f4c74}});}['createSegmentsGeometry'](){const _0xad1c8c=0x4,_0x379991=this['options']['particlesTextureSize'];let _0x1a8c40=[];for(let _0x5ef419=0x0;_0x5ef419<_0x379991;_0x5ef419++){for(let _0x3512ca=0x0;_0x3512ca<_0x379991;_0x3512ca++){for(let _0x4069bb=0x0;_0x4069bb<_0xad1c8c;_0x4069bb++){_0x1a8c40[_0x2100cc(0x558,0x5d3)](_0x5ef419/_0x379991),_0x1a8c40[_0x4a6997(0x4b7,0x4f7)](_0x3512ca/_0x379991);}}}_0x1a8c40=new Float32Array(_0x1a8c40);const _0x5bd988=this['options']['particlesTextureSize']**0x2;let _0x2dd07e=[];for(let _0x52aa65=0x0;_0x52aa65<_0x5bd988;_0x52aa65++){_0x2dd07e['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x2dd07e=new Float32Array(_0x2dd07e);let _0x176dc6=[];for(let _0x49b4ba=0x0,_0x3a1426=0x0;_0x49b4ba<_0x5bd988;_0x49b4ba++){_0x176dc6['push'](_0x3a1426+0x0,_0x3a1426+0x1,_0x3a1426+0x2,_0x3a1426+0x2,_0x3a1426+0x1,_0x3a1426+0x3),_0x3a1426+=_0xad1c8c;}function _0x4a6997(_0x63b3f0,_0x21d4bd){return _0x1b4f03(_0x21d4bd-0x478,_0x63b3f0);}_0x176dc6=new Uint32Array(_0x176dc6);const _0x57d91e={};_0x57d91e[_0x2100cc(0x520,0x581)]=ComponentDatatype['FLOAT'];function _0x2100cc(_0xaa2cba,_0x1f6d6a){return _0x3e9da2(_0xaa2cba,_0x1f6d6a-0x346);}_0x57d91e[_0x2100cc(0x5b4,0x5fa)]=0x2,_0x57d91e['values']=_0x1a8c40;const _0x3fbbc8={};_0x3fbbc8['componentDatatype']=ComponentDatatype['FLOAT'],_0x3fbbc8[_0x2100cc(0x60e,0x5fa)]=0x3,_0x3fbbc8['values']=_0x2dd07e;const _0x296f7f=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x57d91e),'normal':new GeometryAttribute(_0x3fbbc8)}),'indices':_0x176dc6});return _0x296f7f;}['createRawRenderState'](_0x390d37){const _0x596154={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x390d37};return Appearance['getDefaultRenderState'](!![],![],_0x596154);}[_0x3e9da2(0x169,0x1e5)](){const _0x1f7405={};function _0x30c8bc(_0xeca196,_0x4e6941){return _0x1b4f03(_0xeca196-0x471,_0x4e6941);}_0x1f7405['st']=0x0,_0x1f7405['normal']=0x1;const _0xf90ef6={};function _0x8fba0c(_0x249b76,_0x343baf){return _0x3e9da2(_0x249b76,_0x343baf- -0x1bd);}_0xf90ef6['enabled']=!![];const _0x12627b={};_0x12627b['enabled']=!![],_0x12627b['blendEquation']=WebGLRenderingContext['FUNC_ADD'],_0x12627b['blendFuncSource']=WebGLRenderingContext[_0x8fba0c(-0x61,0x5)],_0x12627b['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x18b311={};_0x18b311['viewport']=undefined,_0x18b311['depthTest']=_0xf90ef6,_0x18b311['depthMask']=!![],_0x18b311['blending']=_0x12627b;const _0x3382db=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x1f7405,'geometry':this['createSegmentsGeometry'](),'primitiveType':PrimitiveType['TRIANGLES'],'uniformMap':{'previousParticlesPosition':()=>this[_0x8fba0c(0xb8,0xa9)][_0x8fba0c(0x75,-0xb)]['previousParticlesPosition'],'currentParticlesPosition':()=>this['computing']['particlesTextures']['currentParticlesPosition'],'postProcessingPosition':()=>this['computing'][_0x30c8bc(0x415,0x3f9)][_0x8fba0c(0x68,-0x17)],'particlesSpeed':()=>this['computing']['particlesTextures'][_0x30c8bc(0x480,0x422)],'frameRateAdjustment':()=>this['computing']['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{function _0x254f1f(_0xa55532,_0x15d2d9){return _0x30c8bc(_0x15d2d9- -0x1f4,_0xa55532);}function _0x2f8d7c(_0x1672e3,_0x435322){return _0x8fba0c(_0x1672e3,_0x435322-0x590);}var _0x3b48fd,_0x329270;const _0x493b0c=new Cartesian2(((_0x3b48fd=this['options']['domain'])===null||_0x3b48fd===void 0x0?void 0x0:_0x3b48fd[_0x2f8d7c(0x603,0x60a)])??this[_0x2f8d7c(0x6c2,0x639)]['windData'][_0x2f8d7c(0x58b,0x58a)]['min'],((_0x329270=this['options']['domain'])===null||_0x329270===void 0x0?void 0x0:_0x329270['max'])??this[_0x254f1f(0x2dd,0x2d5)][_0x2f8d7c(0x5bc,0x5f4)][_0x254f1f(0x2ae,0x226)]['max']);return _0x493b0c;},'displayRange':()=>{function _0x224905(_0x3bf356,_0x28cf19){return _0x8fba0c(_0x28cf19,_0x3bf356- -0x8e);}var _0x107f91,_0x2f894c;function _0x14ff6e(_0x56c72c,_0x30fc18){return _0x30c8bc(_0x30fc18- -0xc3,_0x56c72c);}const _0x462335=new Cartesian2(((_0x107f91=this['options']['displayRange'])===null||_0x107f91===void 0x0?void 0x0:_0x107f91['min'])??this[_0x14ff6e(0x3f6,0x406)][_0x224905(-0x2a,-0x76)]['speed']['min'],((_0x2f894c=this['options']['displayRange'])===null||_0x2f894c===void 0x0?void 0x0:_0x2f894c['max'])??this[_0x224905(0x1b,0x47)]['windData'][_0x224905(-0x94,-0xac)]['max']);return _0x462335;},'particleHeight':()=>this['options']['particleHeight']||0x0,'aspect':()=>this[_0x8fba0c(0x42,0xb2)]['drawingBufferWidth']/this['context'][_0x8fba0c(0x3,-0x8)],'pixelSize':()=>this['viewerParameters'][_0x8fba0c(0x79,0x9f)],'lineWidth':()=>{function _0x3d5c6e(_0x7f0a94,_0x3aa3c3){return _0x30c8bc(_0x3aa3c3- -0x1be,_0x7f0a94);}const _0x352574={};_0x352574['min']=0x1,_0x352574['max']=0x2;function _0x101cba(_0x10964c,_0x15fad3){return _0x30c8bc(_0x15fad3- -0x185,_0x10964c);}const _0x3b8438=this[_0x101cba(0x273,0x2cc)]['lineWidth']||_0x352574;return new Cartesian2(_0x3b8438[_0x3d5c6e(0x263,0x2dc)],_0x3b8438['max']);},'lineLength':()=>{const _0x16a1ba={};_0x16a1ba[_0x278c53(0x1b0,0x151)]=0x14;function _0x278c53(_0x484443,_0x43d050){return _0x30c8bc(_0x43d050- -0x349,_0x484443);}_0x16a1ba['max']=0x64;const _0x406ad7=this['options']['lineLength']||_0x16a1ba;return new Cartesian2(_0x406ad7['min'],_0x406ad7['max']);},'is3D':()=>this[_0x8fba0c(0xa,0x19)]['sceneMode']===SceneMode[_0x30c8bc(0x424,0x3ae)],'segmentsDepthTexture':()=>this[_0x8fba0c(0x6d,0x83)][_0x30c8bc(0x460,0x3f5)]},'vertexShaderSource':ShaderManager['getSegmentDrawVertexShader'](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x18b311)}),_0xa26c75={};return _0xa26c75[_0x8fba0c(0x51,0x27)]=_0x3382db,_0xa26c75;}[_0x1b4f03(-0x5a,-0x8f)](){const _0xa59c27=this[_0x385384(0x522,0x546)]();function _0x157425(_0x16337b,_0xa64db0){return _0x1b4f03(_0xa64db0-0x343,_0x16337b);}this['primitives']['segments']['geometry']=_0xa59c27;const _0x225f6c={};_0x225f6c[_0x385384(0x57a,0x59c)]=this[_0x157425(0x397,0x3a4)],_0x225f6c['geometry']=_0xa59c27;function _0x385384(_0x16b1dd,_0x34d00f){return _0x1b4f03(_0x34d00f-0x53b,_0x16b1dd);}_0x225f6c['attributeLocations']=this[_0x385384(0x559,0x56c)]['segments']['attributeLocations'],_0x225f6c['bufferUsage']=BufferUsage['STATIC_DRAW'];const _0x2a77f6=VertexArray['fromGeometry'](_0x225f6c);this['primitives'][_0x385384(0x4b6,0x511)]['commandToExecute']&&(this[_0x157425(0x3ac,0x374)]['segments'][_0x157425(0x33d,0x3b7)]['vertexArray']=_0x2a77f6);}['onColorTableChange'](){function _0x36eb33(_0x113853,_0x42d809){return _0x3e9da2(_0x42d809,_0x113853-0x15c);}this[_0x250a2b(0x5f5,0x5fe)][_0x36eb33(0x327,0x338)]();function _0x250a2b(_0x5848dd,_0x23fba0){return _0x1b4f03(_0x23fba0-0x5a2,_0x5848dd);}this['colorTable']=this['createColorTableTexture']();}['updateOptions'](_0x30433d){const _0x1ac2b0=_0x30433d['colors']&&JSON['stringify'](_0x30433d[_0xd94b77(0x45e,0x45b)])!==JSON[_0xd94b77(0x397,0x3fb)](this[_0xd94b77(0x3a0,0x3dc)][_0x3ace1d(0x2ac,0x27b)]);this['options']=deepMerge(_0x30433d,this[_0xd94b77(0x3ad,0x3dc)]);function _0xd94b77(_0x49a485,_0x55c24){return _0x1b4f03(_0x55c24-0x3fc,_0x49a485);}function _0x3ace1d(_0xc1a5ee,_0x1b7d77){return _0x3e9da2(_0x1b7d77,_0xc1a5ee-0x3f);}_0x1ac2b0&&this[_0x3ace1d(0x21b,0x235)]();}[_0x3e9da2(0x23c,0x1cb)](){function _0x35e3f4(_0x511c9e,_0xfc06f){return _0x1b4f03(_0xfc06f-0x3d9,_0x511c9e);}Object['values'](this[_0x35e3f4(0x48d,0x47e)])[_0x393ddd(0x74,0xb7)](_0x73ab9f=>{_0x73ab9f['destroy']();});function _0x393ddd(_0x4f7ade,_0x4249f5){return _0x1b4f03(_0x4f7ade-0xa4,_0x4249f5);}Object[_0x35e3f4(0x32d,0x3a3)](this['primitives'])['forEach'](_0x9ff02=>{function _0x26a5e6(_0x5a53ae,_0x1a8da1){return _0x35e3f4(_0x1a8da1,_0x5a53ae- -0x1ca);}_0x9ff02[_0x26a5e6(0x1cc,0x205)]();}),this['colorTable']['destroy']();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0x1b4f03(-0x6c,-0xf1)];class WindParticleSystem{constructor(_0x229977,_0xe81c54,_0x5799e7,_0x1f253e,_0x4b4164){this[_0x19cce5(0x581,0x533)]=_0x229977,this[_0x19cce5(0x48a,0x4b2)]=_0x5799e7,this[_0x19cce5(0x439,0x49a)]=_0x1f253e;function _0x19cce5(_0x22a9b3,_0x2454f1){return _0x1b4f03(_0x2454f1-0x4d2,_0x22a9b3);}this['computing']=new WindParticlesComputing(_0x229977,_0xe81c54,_0x5799e7,_0x1f253e,_0x4b4164),this['rendering']=new WindParticlesRendering(_0x229977,_0x5799e7,_0x1f253e,this['computing']);function _0xd47cf8(_0x557dc2,_0x132a88){return _0x1b4f03(_0x132a88-0x2b5,_0x557dc2);}this['clearFramebuffers']();}['getPrimitives'](){function _0x5a5ed2(_0x2a5d54,_0x7f2bf0){return _0x3e9da2(_0x2a5d54,_0x7f2bf0-0xb7);}const _0x498987=[this[_0x1b0a2c(0x160,0x1ac)]['primitives'][_0x5a5ed2(0x2ee,0x285)],this['computing'][_0x1b0a2c(0x139,0xe5)][_0x5a5ed2(0x2d6,0x27f)],this['computing'][_0x5a5ed2(0x2fd,0x2f6)]['postProcessingPosition'],this['rendering'][_0x5a5ed2(0x2d6,0x2f6)][_0x1b0a2c(0xde,0xa7)]];function _0x1b0a2c(_0x1c385e,_0x153390){return _0x1b4f03(_0x1c385e-0x108,_0x153390);}return _0x498987;}['clearFramebuffers'](){const _0x4cffbc=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});function _0x89313a(_0x13604f,_0x59323c){return _0x3e9da2(_0x59323c,_0x13604f-0x1a4);}function _0x44e768(_0x1977ef,_0x57b357){return _0x1b4f03(_0x1977ef-0x41f,_0x57b357);}Object['keys'](this[_0x44e768(0x4bd,0x4c5)]['framebuffers'])[_0x89313a(0x382,0x311)](_0x236245=>{_0x4cffbc[_0x5d2d96(0x578,0x541)]=this[_0x34864d(-0x158,-0xec)]['framebuffers'][_0x236245];function _0x34864d(_0x599014,_0x40eefd){return _0x89313a(_0x40eefd- -0x53c,_0x599014);}function _0x5d2d96(_0x236fc0,_0x55bc37){return _0x89313a(_0x55bc37-0x1f2,_0x236fc0);}_0x4cffbc[_0x34864d(-0x95,-0x11c)](this['context']);});}['changeOptions'](_0x2f0ead){let _0x4d38e0=![];_0x2f0ead['particlesTextureSize']&&this['options']['particlesTextureSize']!==_0x2f0ead['particlesTextureSize']&&(_0x4d38e0=!![]);const _0x1622d7=deepMerge(_0x2f0ead,this['options']);if(_0x1622d7[_0x1f11f7(0xbf,0xb7)]<0x1)throw new Error(_0x1f11f7(0x182,0x158));function _0xd4521a(_0x4ecdaf,_0x283a75){return _0x3e9da2(_0x4ecdaf,_0x283a75-0xee);}this[_0x1f11f7(0x144,0xe5)]=_0x1622d7;function _0x1f11f7(_0xeb10e3,_0x476218){return _0x3e9da2(_0xeb10e3,_0x476218- -0x109);}this[_0xd4521a(0x345,0x39a)][_0xd4521a(0x2a9,0x311)](_0x2f0ead),this['computing'][_0x1f11f7(0x179,0x11a)](_0x2f0ead),_0x4d38e0&&(this['computing'][_0xd4521a(0x2f8,0x2a1)](),this[_0xd4521a(0x2f9,0x354)][_0x1f11f7(0x1bd,0x13d)](),this['rendering']['onParticlesTextureSizeChange']());}[_0x3e9da2(0x27b,0x29a)](_0x2307c6){this['viewerParameters']=_0x2307c6,this['computing']['viewerParameters']=_0x2307c6;function _0x420f6d(_0xbad05c,_0x1c9d10){return _0x3e9da2(_0x1c9d10,_0xbad05c-0x1ac);}this['rendering'][_0x420f6d(0x382,0x39d)]=_0x2307c6;}['destroy'](){this['computing']['destroy']();function _0x3919a8(_0x3ca722,_0x4ebe20){return _0x3e9da2(_0x4ebe20,_0x3ca722- -0x220);}function _0x418756(_0x35319a,_0x3ea402){return _0x1b4f03(_0x35319a-0x119,_0x3ea402);}this[_0x418756(0x1b7,0x133)][_0x3919a8(-0x55,-0x86)]();}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],_0x2b6ca6={};_0x2b6ca6['min']=0x1,_0x2b6ca6[_0x3e9da2(0x209,0x1ad)]=0x2;const _0x38b544={};_0x38b544['min']=0x14,_0x38b544['max']=0x64;const _0x24b20b={};_0x24b20b[_0x1b4f03(-0x4e,-0xc8)]=0x64,_0x24b20b['particleHeight']=0x3e8,_0x24b20b['lineWidth']=_0x2b6ca6,_0x24b20b['lineLength']=_0x38b544,_0x24b20b['speedFactor']=0x1,_0x24b20b[_0x3e9da2(0x1cc,0x21c)]=0.003,_0x24b20b['dropRateBump']=0.001,_0x24b20b['colors']=['rgb(206,255,255)'],_0x24b20b[_0x1b4f03(-0x42,-0x26)]=![],_0x24b20b['dynamic']=!![];const DEF_OPTIONS=_0x24b20b;class WindLayer extends BaseLayer$1{constructor(_0x32b08d={}){_0x32b08d={...DEF_OPTIONS,..._0x32b08d},super(_0x32b08d);function _0x4cfcce(_0x37b486,_0x37a1b9){return _0x3e9da2(_0x37a1b9,_0x37b486-0x231);}this[_0x4cfcce(0x49a,0x460)](_0x32b08d,_0x32b08d);}get['layer'](){function _0x46e5fd(_0x4cc64f,_0x48c1d7){return _0x1b4f03(_0x48c1d7-0x1f8,_0x4cc64f);}return this[_0x46e5fd(0x243,0x229)];}get['data'](){function _0x5da574(_0xaa66c,_0x4e080f){return _0x1b4f03(_0xaa66c-0x551,_0x4e080f);}return this[_0x5da574(0x531,0x591)]['data'];}set['data'](_0x22689a){this['options']['data']=_0x22689a;function _0x5f031d(_0x4041ff,_0x377167){return _0x1b4f03(_0x4041ff-0x168,_0x377167);}this[_0x5f031d(0x142,0xd8)](_0x22689a);}get[_0x1b4f03(0x5f,0x8)](){function _0x4b43e3(_0x41d8ff,_0x315779){return _0x1b4f03(_0x41d8ff-0x1a2,_0x315779);}return this[_0x4b43e3(0x182,0x1df)]['colors'];}set['colors'](_0x309a86){this['options']['colors']=_0x309a86;const _0x36ac9d={};_0x36ac9d['colors']=_0x309a86;function _0x20fe3d(_0x2a495b,_0x2441a1){return _0x1b4f03(_0x2a495b- -0x8d,_0x2441a1);}this['_setOptionsHook'](this[_0x20fe3d(-0xad,-0x55)],_0x36ac9d);}['_mountedHook'](){}[_0x3e9da2(0x2e2,0x290)](){function _0x5d2970(_0x1f571e,_0x4345fd){return _0x3e9da2(_0x1f571e,_0x4345fd- -0x2d3);}this[_0x5d2970(-0x68,-0x73)]=this[_0x418495(0x3fe,0x42d)]['scene'],this['camera']=this[_0x5d2970(-0x89,-0x53)][_0x418495(0x421,0x3df)];this[_0x5d2970(-0xc7,-0xe5)]['data']&&this[_0x5d2970(-0x12b,-0xeb)](this['options']['data']);if(!this['windData'])return;this[_0x5d2970(-0x167,-0xfd)]={'lonRange':new Cesium$1['Cartesian2'](-0xb4,0xb4),'latRange':new Cesium$1['Cartesian2'](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this[_0x418495(0x3de,0x3d1)][_0x5d2970(-0x86,-0x8a)]},this[_0x418495(0x339,0x362)](),this['particleSystem']=new WindParticleSystem(this['scene']['context'],this['windData'],this[_0x5d2970(-0x112,-0xe5)],this['viewerParameters'],this[_0x418495(0x3de,0x44c)]),this[_0x5d2970(-0x89,-0x94)]=this[_0x418495(0x32f,0x39d)][_0x418495(0x38a,0x3b6)](),this['primitives']['forEach'](_0xf595a6=>{function _0x480c8a(_0x38ec1e,_0x2cfc47){return _0x5d2970(_0x38ec1e,_0x2cfc47-0x132);}function _0x1332d6(_0x369567,_0x9052e2){return _0x5d2970(_0x9052e2,_0x369567-0x3b8);}this['scene'][_0x480c8a(0xd7,0x9e)][_0x480c8a(0x8d,0xbc)](_0xf595a6);}),this[_0x5d2970(0x3c,-0x30)]['percentageChanged']=0.01,this['camera']['changed']['addEventListener'](this[_0x418495(0x339,0x35c)]['bind'](this)),this['scene']['morphComplete']['addEventListener'](this['updateViewerParameters'][_0x5d2970(-0x46,-0xb8)](this));function _0x418495(_0x4ac4a4,_0x208ecf){return _0x3e9da2(_0x208ecf,_0x4ac4a4-0x17e);}window['addEventListener'](_0x418495(0x40a,0x47a),this['updateViewerParameters']['bind'](this));}['_removedHook'](){this[_0x56a8bd(0x703,0x68c)]['changed']['removeEventListener'](this['updateViewerParameters'][_0x56a8bd(0x653,0x604)](this)),this[_0x9629c2(0x182,0x11e)]['morphComplete'][_0x9629c2(0x163,0xe5)](this[_0x9629c2(0x1b,0x79)]['bind'](this));function _0x56a8bd(_0x2211e2,_0x2ee9bf){return _0x1b4f03(_0x2ee9bf-0x5f7,_0x2211e2);}window[_0x9629c2(0x7c,0xe5)]('resize',this[_0x56a8bd(0x578,0x5a4)][_0x56a8bd(0x5ff,0x604)](this));this[_0x56a8bd(0x684,0x628)]&&(this['primitives']['forEach'](_0x47140d=>{function _0x2ae9bd(_0x4c9214,_0x5a02f5){return _0x56a8bd(_0x4c9214,_0x5a02f5- -0x6e1);}function _0x44d70e(_0x16489a,_0x2bdf30){return _0x56a8bd(_0x2bdf30,_0x16489a- -0xcf);}this[_0x2ae9bd(-0xec,-0x98)][_0x2ae9bd(-0x57,-0xb9)][_0x44d70e(0x53a,0x595)](_0x47140d);}),delete this[_0x9629c2(0x133,0xfd)]);function _0x9629c2(_0x18b427,_0x1b3bfa){return _0x1b4f03(_0x1b3bfa-0xcc,_0x18b427);}this['particleSystem']&&(this['particleSystem']['destroy'](),delete this['particleSystem']);}['setData'](_0x17c1b9,_0x2dd4d7){function _0x41cd85(_0x3b7202,_0x4bc433){return _0x3e9da2(_0x3b7202,_0x4bc433- -0x24e);}this[_0x25e106(0x460,0x3e8)]=this['processWindData'](_0x17c1b9);if(_0x2dd4d7){this['_removedHook'](),this['_addedHook']();return;}function _0x25e106(_0x2a3392,_0x56927d){return _0x1b4f03(_0x2a3392-0x44d,_0x56927d);}this[_0x41cd85(-0x1a,-0x9d)]?(this[_0x25e106(0x3f0,0x3cf)][_0x25e106(0x4a5,0x435)]['updateWindData'](this['windData']),this['scene'][_0x25e106(0x4aa,0x4ab)]()):this['_addedHook']();}[_0x3e9da2(0x262,0x269)](_0x4423c6,_0x11e550){function _0x212e5c(_0x1d6196,_0x44a314){return _0x3e9da2(_0x44a314,_0x1d6196-0x15f);}function _0x162ccb(_0x3c0f65,_0x405274){return _0x1b4f03(_0x3c0f65-0xf7,_0x405274);}this[_0x162ccb(0x9a,0x53)]&&(this['particleSystem']['changeOptions'](_0x11e550),this['scene'][_0x162ccb(0x154,0x1c9)]());}[_0x3e9da2(0x210,0x230)](_0x258ab5){var _0x2dd799,_0x421dda;function _0x37f6a9(_0x61e315,_0x504c8b){return _0x1b4f03(_0x61e315- -0x187,_0x504c8b);}function _0x167897(_0x32d94e,_0x1d5a77){return _0x3e9da2(_0x1d5a77,_0x32d94e-0x151);}const _0x5923d7={..._0x258ab5},_0xacfc01=_0x5923d7;!_0xacfc01['height']&&_0xacfc01['rows']&&(_0xacfc01['height']=_0xacfc01[_0x167897(0x345,0x31f)]);!_0xacfc01['width']&&_0xacfc01['cols']&&(_0xacfc01[_0x167897(0x361,0x34a)]=_0xacfc01[_0x37f6a9(-0x1dd,-0x1cb)]);!_0xacfc01['bounds']&&(_0xacfc01['bounds']={'west':_0xacfc01[_0x37f6a9(-0x1c8,-0x230)],'south':_0xacfc01[_0x167897(0x389,0x369)],'east':_0xacfc01[_0x167897(0x3f2,0x423)],'north':_0xacfc01[_0x37f6a9(-0x1cb,-0x142)]});if(!_0xacfc01['u']){const _0x9eb308={};_0x9eb308['array']=_0x258ab5['udata'],_0x9eb308[_0x167897(0x388,0x3bc)]=_0x258ab5['umin'],_0x9eb308['max']=_0x258ab5['umax'],_0xacfc01['u']=_0x9eb308;}if(!_0xacfc01['v']){const _0x168aaf={};_0x168aaf['array']=_0x258ab5[_0x167897(0x301,0x2f9)],_0x168aaf['min']=_0x258ab5[_0x167897(0x394,0x319)],_0x168aaf['max']=_0x258ab5[_0x37f6a9(-0x15f,-0xd9)],_0xacfc01['v']=_0x168aaf;}if(((_0x2dd799=_0xacfc01['speed'])===null||_0x2dd799===void 0x0?void 0x0:_0x2dd799[_0x167897(0x388,0x3e4)])===undefined||((_0x421dda=_0xacfc01['speed'])===null||_0x421dda===void 0x0?void 0x0:_0x421dda['max'])===undefined||_0xacfc01[_0x37f6a9(-0x1de,-0x230)][_0x37f6a9(-0x1be,-0x1e8)]===undefined){const _0x130146={'array':new Float32Array(_0xacfc01['u'][_0x37f6a9(-0x1be,-0x241)]['length']),'min':Number['MAX_VALUE'],'max':Number['MIN_VALUE']};for(let _0x400fe9=0x0;_0x400fe9<_0xacfc01['u']['array']['length'];_0x400fe9++){_0x130146['array'][_0x400fe9]=Math[_0x37f6a9(-0x114,-0xf6)](_0xacfc01['u'][_0x167897(0x328,0x2ed)][_0x400fe9]*_0xacfc01['u'][_0x167897(0x328,0x331)][_0x400fe9]+_0xacfc01['v']['array'][_0x400fe9]*_0xacfc01['v']['array'][_0x400fe9]),_0x130146['array'][_0x400fe9]!==0x0&&(_0x130146['min']=Math[_0x37f6a9(-0x15e,-0x1d6)](_0x130146['min'],_0x130146['array'][_0x400fe9]),_0x130146['max']=Math[_0x37f6a9(-0x1e8,-0x262)](_0x130146['max'],_0x130146['array'][_0x400fe9]));}_0xacfc01['speed']=_0x130146;}return _0xacfc01;}['updateViewerParameters'](){var _0x2d61fa;const _0x514246=this['scene'],_0x303daf=_0x514246[_0x476948(0x568,0x5a2)],_0x2fe451={};_0x2fe451['x']=0x0,_0x2fe451['y']=0x0;const _0x1a2517={};_0x1a2517['x']=0x0,_0x1a2517['y']=_0x303daf['clientHeight'];const _0xc87c99={};_0xc87c99['x']=_0x303daf['clientWidth'],_0xc87c99['y']=0x0;const _0x26e35e={};function _0x476948(_0x1f1b1d,_0x5c457b){return _0x3e9da2(_0x1f1b1d,_0x5c457b-0x35e);}_0x26e35e['x']=_0x303daf[_0x476948(0x521,0x586)],_0x26e35e['y']=_0x303daf['clientHeight'];const _0x6807a7=[_0x2fe451,_0x1a2517,_0xc87c99,_0x26e35e];let _0x3e62cc=0xb4,_0x2709ab=-0xb4,_0x1bac23=0x5a,_0x2eac6d=-0x5a,_0x5e6a39=![];for(const _0x2a20b7 of _0x6807a7){const _0x17dd43=_0x514246[_0x476948(0x605,0x601)]['pickEllipsoid'](new Cesium$1[(_0x1ecc44(0x11c,0xe0))](_0x2a20b7['x'],_0x2a20b7['y']),_0x514246[_0x476948(0x571,0x5e9)]['ellipsoid']);if(!_0x17dd43){_0x5e6a39=!![];break;}const _0xa4bdec=_0x514246['globe'][_0x1ecc44(0x1c0,0x1dd)][_0x476948(0x59e,0x60b)](_0x17dd43),_0x238727=Cesium$1[_0x476948(0x4e1,0x55f)]['toDegrees'](_0xa4bdec['longitude']),_0x781104=Cesium$1[_0x1ecc44(0x10f,0x194)]['toDegrees'](_0xa4bdec[_0x476948(0x540,0x55c)]);_0x3e62cc=Math['min'](_0x3e62cc,_0x238727),_0x2709ab=Math['max'](_0x2709ab,_0x238727),_0x1bac23=Math['min'](_0x1bac23,_0x781104),_0x2eac6d=Math[_0x1ecc44(0xbb,0x12f)](_0x2eac6d,_0x781104);}function _0x1ecc44(_0x353f43,_0x274106){return _0x3e9da2(_0x274106,_0x353f43- -0xf2);}if(!_0x5e6a39){const _0x6644ab=new Cesium$1['Cartesian2'](Math['max'](this['windData']['bounds'][_0x1ecc44(0x175,0xf9)],_0x3e62cc),Math['min'](this['windData']['bounds']['east'],_0x2709ab)),_0x17ecff=new Cesium$1[(_0x476948(0x4ef,0x56c))](Math[_0x476948(0x4c2,0x50b)](this['windData']['bounds']['south'],_0x1bac23),Math[_0x476948(0x572,0x595)](this[_0x476948(0x594,0x57f)]['bounds'][_0x1ecc44(0x105,0x182)],_0x2eac6d)),_0x5c8fc8=(_0x6644ab['y']-_0x6644ab['x'])*0.05,_0x1c3873=(_0x17ecff['y']-_0x17ecff['x'])*0.05;_0x6644ab['x']=Math['max'](this['windData'][_0x1ecc44(0x13f,0x172)]['west'],_0x6644ab['x']-_0x5c8fc8),_0x6644ab['y']=Math['min'](this[_0x476948(0x57d,0x57f)]['bounds']['east'],_0x6644ab['y']+_0x5c8fc8),_0x17ecff['x']=Math[_0x476948(0x482,0x50b)](this[_0x476948(0x57e,0x57f)]['bounds']['south'],_0x17ecff['x']-_0x1c3873),_0x17ecff['y']=Math['min'](this['windData'][_0x476948(0x58b,0x58f)]['north'],_0x17ecff['y']+_0x1c3873),this['viewerParameters']['lonRange']=_0x6644ab,this[_0x1ecc44(0xe4,0xce)]['latRange']=_0x17ecff;const _0x4fed2e=this['windData']['bounds']['east']-this['windData'][_0x476948(0x5c7,0x58f)]['west'],_0x26af64=this['windData'][_0x476948(0x540,0x58f)]['north']-this[_0x476948(0x600,0x57f)]['bounds']['south'],_0x3b649c=(_0x6644ab['y']-_0x6644ab['x'])/_0x4fed2e,_0x5c444f=(_0x17ecff['y']-_0x17ecff['x'])/_0x26af64,_0xf0b7ef=Math['min'](_0x3b649c,_0x5c444f),_0x13ee96=0x3e8*_0xf0b7ef;_0x13ee96>0x0&&(this[_0x1ecc44(0xe4,0x149)]['pixelSize']=Math['max'](0x0,Math['min'](0x3e8,_0x13ee96)));}this[_0x476948(0x4ae,0x534)][_0x476948(0x548,0x567)]=this['scene']['mode'],(_0x2d61fa=this[_0x1ecc44(0xbf,0x117)])===null||_0x2d61fa===void 0x0||_0x2d61fa['applyViewerParameters'](this['viewerParameters']);}['getDataAtLonLat'](_0x552caa,_0x84e91a){const {bounds:_0x5c5309,width:_0x53f1ce,height:_0x2350a5,u:_0x58baa5,v:_0x3a3012,speed:_0x2ba68e}=this['windData'],{flipY:_0x99a533}=this['options'];if(_0x552caa<_0x5c5309['west']||_0x552caa>_0x5c5309[_0x20569d(0x1df,0x230)]||_0x84e91a<_0x5c5309['south']||_0x84e91a>_0x5c5309[_0x20569d(0x254,0x260)])return null;const _0x5796ce=(_0x552caa-_0x5c5309['west'])/(_0x5c5309['east']-_0x5c5309[_0x4d8cd7(0x571,0x5a0)])*(_0x53f1ce-0x1);let _0x5ba217=(_0x84e91a-_0x5c5309[_0x20569d(0x272,0x28f)])/(_0x5c5309['north']-_0x5c5309[_0x20569d(0x24c,0x28f)])*(_0x2350a5-0x1);_0x99a533&&(_0x5ba217=_0x2350a5-0x1-_0x5ba217);const _0x4bdb85=Math['floor'](_0x5796ce),_0x262fa2=Math['floor'](_0x5ba217),_0x4798ab=Math['floor'](_0x5796ce),_0x3ec22e=Math[_0x20569d(0x2a4,0x2a0)](_0x4798ab+0x1,_0x53f1ce-0x1),_0x218f45=Math['floor'](_0x5ba217),_0x5511e0=Math['min'](_0x218f45+0x1,_0x2350a5-0x1),_0x512616=_0x5796ce-_0x4798ab,_0x2ba7a0=_0x5ba217-_0x218f45,_0x5d2d14=_0x262fa2*_0x53f1ce+_0x4bdb85,_0x4791d8=_0x218f45*_0x53f1ce+_0x4798ab,_0x3676eb=_0x218f45*_0x53f1ce+_0x3ec22e,_0x90d5a1=_0x5511e0*_0x53f1ce+_0x4798ab,_0x8df2e3=_0x5511e0*_0x53f1ce+_0x3ec22e,_0x12ec59=_0x58baa5[_0x20569d(0x258,0x240)][_0x4791d8],_0x4161e7=_0x58baa5[_0x20569d(0x1ef,0x240)][_0x3676eb],_0x49504a=_0x58baa5['array'][_0x90d5a1],_0x10389a=_0x58baa5[_0x20569d(0x2b3,0x240)][_0x8df2e3],_0xf099dc=(0x1-_0x512616)*(0x1-_0x2ba7a0)*_0x12ec59+_0x512616*(0x1-_0x2ba7a0)*_0x4161e7+(0x1-_0x512616)*_0x2ba7a0*_0x49504a+_0x512616*_0x2ba7a0*_0x10389a,_0x3d8916=_0x3a3012['array'][_0x4791d8];function _0x20569d(_0x5c0cb5,_0x86087f){return _0x1b4f03(_0x86087f-0x277,_0x5c0cb5);}const _0x3b2981=_0x3a3012[_0x20569d(0x1d2,0x240)][_0x3676eb],_0x3fcfa5=_0x3a3012['array'][_0x90d5a1],_0x503359=_0x3a3012['array'][_0x8df2e3],_0x54f8d0=(0x1-_0x512616)*(0x1-_0x2ba7a0)*_0x3d8916+_0x512616*(0x1-_0x2ba7a0)*_0x3b2981+(0x1-_0x512616)*_0x2ba7a0*_0x3fcfa5+_0x512616*_0x2ba7a0*_0x503359,_0x13ece8=Math['sqrt'](_0xf099dc*_0xf099dc+_0x54f8d0*_0x54f8d0),_0x4a0685={};_0x4a0685['u']=_0x58baa5['array'][_0x5d2d14],_0x4a0685['v']=_0x3a3012['array'][_0x5d2d14],_0x4a0685[_0x4d8cd7(0x4c1,0x483)]=_0x2ba68e['array'][_0x5d2d14];const _0x568199={};_0x568199['u']=_0xf099dc,_0x568199['v']=_0x54f8d0,_0x568199['speed']=_0x13ece8;const _0x4fda39={};_0x4fda39['original']=_0x4a0685,_0x4fda39[_0x4d8cd7(0x4b2,0x51f)]=_0x568199;function _0x4d8cd7(_0x4a8af6,_0x125aeb){return _0x3e9da2(_0x125aeb,_0x4a8af6-0x30a);}return _0x4fda39;}}function _0x3e9da2(_0x4d1795,_0x186b27){return _0xac00(_0x186b27- -0x4,_0x4d1795);}mars3d__namespace[_0x1b4f03(0x7c,0xf7)][_0x1b4f03(0x16,0x49)]('wind',WindLayer),mars3d__namespace[_0x1b4f03(-0x14,0x39)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){function _0x362fa4(_0x4f1cc4,_0x21c9e9){return _0x3e9da2(_0x21c9e9,_0x4f1cc4- -0x23d);}this[_0x362fa4(-0x79,-0xe3)]=null,this['lat']=null,this[_0x3609ee(0x409,0x431)]=null,this['tlat']=null,this[_0x3609ee(0x3ed,0x464)]=null;function _0x3609ee(_0x4a8047,_0x23a037){return _0x1b4f03(_0x4a8047-0x3a0,_0x23a037);}this['speed']=null;}['destroy'](){for(const _0x4a048e in this){delete this[_0x4a048e];}}}class CanvasWindField{constructor(_0x2a5ad8){function _0x530b17(_0x4abce2,_0x5abd0a){return _0x1b4f03(_0x4abce2-0x535,_0x5abd0a);}this[_0x530b17(0x5ba,0x5c1)](_0x2a5ad8);}get['speedRate'](){function _0x3ee1c0(_0x50dafb,_0x271f4e){return _0x3e9da2(_0x50dafb,_0x271f4e- -0x1d4);}return this[_0x3ee1c0(0x21,0x73)];}set['speedRate'](_0x7e3965){function _0x5c8c36(_0x301c5d,_0x35b9f9){return _0x1b4f03(_0x301c5d- -0x11a,_0x35b9f9);}this[_0x5c8c36(-0xe1,-0xcd)]=(0x64-(_0x7e3965>0x63?0x63:_0x7e3965))*0x64;function _0x1e2e29(_0x3c9ed0,_0xa96655){return _0x3e9da2(_0xa96655,_0x3c9ed0-0x1ad);}this['_calc_speedRate']=[(this[_0x5c8c36(-0x87,-0xad)]-this[_0x5c8c36(-0x15b,-0x147)])/this['_speedRate'],(this[_0x5c8c36(-0x15e,-0x18c)]-this[_0x5c8c36(-0xf0,-0x10a)])/this[_0x5c8c36(-0xe1,-0xf9)]];}get['maxAge'](){return this['_maxAge'];}set[_0x1b4f03(-0x67,0x9)](_0x3505cf){this['_maxAge']=_0x3505cf;}['setOptions'](_0x3a50b3){this[_0x492b0a(0x7d,0x74)]=_0x3a50b3,this['maxAge']=_0x3a50b3[_0x492b0a(0x2a,0x2d)]||0x78;function _0x492b0a(_0x4f9a10,_0x338b48){return _0x3e9da2(_0x4f9a10,_0x338b48- -0x17a);}this['speedRate']=_0x3a50b3[_0x49319d(-0xe0,-0xed)]||0x32,this[_0x49319d(-0x102,-0xe7)]=[];function _0x49319d(_0x12091c,_0x1b02eb){return _0x3e9da2(_0x1b02eb,_0x12091c- -0x2e4);}const _0x495930=_0x3a50b3['particlesNumber']||0x1000;for(let _0x5c5ebf=0x0;_0x5c5ebf<_0x495930;_0x5c5ebf++){const _0x5d3bce=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x5d3bce);}}[_0x1b4f03(0x43,0xc6)](_0x7ec939){this[_0x517070(-0x1bb,-0x177)]=_0x7ec939['rows'];function _0x3091c6(_0x4cad8d,_0x17e019){return _0x1b4f03(_0x4cad8d-0x59a,_0x17e019);}this[_0x517070(-0x12d,-0x1b3)]=_0x7ec939['cols'],this[_0x3091c6(0x559,0x5d1)]=_0x7ec939['xmin'],this['xmax']=_0x7ec939['xmax'],this['ymin']=_0x7ec939[_0x517070(-0x18c,-0x133)],this['ymax']=_0x7ec939['ymax'],this['grid']=[];const _0x294c99=_0x7ec939[_0x517070(-0x63,-0xcf)],_0xf20f47=_0x7ec939[_0x517070(-0x1e2,-0x1bb)];let _0x2de0c9=![];_0x294c99[_0x3091c6(0x577,0x54d)]===this['rows']&&_0x294c99[0x0]['length']===this['cols']&&(_0x2de0c9=!![]);let _0x5c9c81=0x0;function _0x517070(_0x41cf27,_0x26fd3d){return _0x1b4f03(_0x26fd3d- -0x15d,_0x41cf27);}let _0xdc454=null,_0xb02f40=null;for(let _0x54d703=0x0;_0x54d703<this[_0x517070(-0x14c,-0x177)];_0x54d703++){_0xdc454=[];for(let _0x492392=0x0;_0x492392<this['cols'];_0x492392++,_0x5c9c81++){_0x2de0c9?_0xb02f40=this['_calcUV'](_0x294c99[_0x54d703][_0x492392],_0xf20f47[_0x54d703][_0x492392]):_0xb02f40=this[_0x3091c6(0x5d8,0x653)](_0x294c99[_0x5c9c81],_0xf20f47[_0x5c9c81]),_0xdc454[_0x517070(-0xff,-0xde)](_0xb02f40);}this[_0x3091c6(0x55e,0x51c)][_0x517070(-0x146,-0xde)](_0xdc454);}this[_0x517070(-0x174,-0x17d)][_0x517070(-0xdd,-0xc7)]&&this['grid'][_0x517070(-0x1ce,-0x17b)]();}['clear'](){delete this['rows'],delete this['cols'],delete this['xmin'],delete this[_0x2039c5(-0x2,0x5a)],delete this['ymin'],delete this['ymax'],delete this['grid'];function _0x2039c5(_0x6d113d,_0x3e639c){return _0x1b4f03(_0x6d113d- -0x95,_0x3e639c);}delete this['particles'];}['toGridXY'](_0x17232e,_0x456243){function _0x3d4420(_0x4e4c47,_0x5a20e5){return _0x3e9da2(_0x4e4c47,_0x5a20e5-0x2a4);}function _0x42f2e6(_0x29faab,_0x962f81){return _0x3e9da2(_0x29faab,_0x962f81- -0x6a);}const _0xfe0b0f=(_0x17232e-this['xmin'])/(this[_0x3d4420(0x595,0x545)]-this['xmin'])*(this['cols']-0x1),_0x2b63ae=(this[_0x3d4420(0x4b9,0x46e)]-_0x456243)/(this[_0x3d4420(0x4ba,0x46e)]-this['ymin'])*(this[_0x3d4420(0x511,0x498)]-0x1);return[_0xfe0b0f,_0x2b63ae];}['getUVByXY'](_0x52a5b5,_0xabad62){function _0x33916d(_0x1bfeb8,_0x19c322){return _0x1b4f03(_0x1bfeb8-0x90,_0x19c322);}if(_0x52a5b5<0x0||_0x52a5b5>=this['cols']||_0xabad62>=this['rows'])return[0x0,0x0,0x0];const _0x51dbc6=Math['floor'](_0x52a5b5),_0x5c16c2=Math[_0x33916d(0x117,0x8d)](_0xabad62);if(_0x51dbc6===_0x52a5b5&&_0x5c16c2===_0xabad62)return this[_0xb768e3(-0x4f,-0xa7)][_0xabad62][_0x52a5b5];const _0x20a961=_0x51dbc6+0x1,_0x45363b=_0x5c16c2+0x1,_0x196a7a=this['getUVByXY'](_0x51dbc6,_0x5c16c2),_0x2a658f=this['getUVByXY'](_0x20a961,_0x5c16c2),_0x3f19d3=this[_0x33916d(0xb1,0x81)](_0x51dbc6,_0x45363b),_0x488df4=this[_0xb768e3(0xe,0xb)](_0x20a961,_0x45363b);let _0x23a58d=null;try{_0x23a58d=this['_bilinearInterpolation'](_0x52a5b5-_0x51dbc6,_0xabad62-_0x5c16c2,_0x196a7a,_0x2a658f,_0x3f19d3,_0x488df4);}catch(_0x343bc9){console[_0xb768e3(-0x3,0x34)](_0x52a5b5,_0xabad62);}function _0xb768e3(_0x3ffd0d,_0x48b8ae){return _0x1b4f03(_0x3ffd0d- -0x13,_0x48b8ae);}return _0x23a58d;}[_0x3e9da2(0x1f9,0x259)](_0x3ba006,_0x41d1ed,_0x3a779c,_0xf344b,_0x3ee16f,_0x4e5020){const _0x4c15c1=0x1-_0x3ba006,_0xaed071=0x1-_0x41d1ed,_0x59e5e4=_0x4c15c1*_0xaed071,_0x5e18f5=_0x3ba006*_0xaed071,_0x12416d=_0x4c15c1*_0x41d1ed,_0x51bc21=_0x3ba006*_0x41d1ed,_0x3758f0=_0x3a779c[0x0]*_0x59e5e4+_0xf344b[0x0]*_0x5e18f5+_0x3ee16f[0x0]*_0x12416d+_0x4e5020[0x0]*_0x51bc21,_0x2c35d4=_0x3a779c[0x1]*_0x59e5e4+_0xf344b[0x1]*_0x5e18f5+_0x3ee16f[0x1]*_0x12416d+_0x4e5020[0x1]*_0x51bc21;function _0x4f03ef(_0x2ead8e,_0x210511){return _0x3e9da2(_0x210511,_0x2ead8e- -0xdd);}return this[_0x4f03ef(0x16f,0x1c0)](_0x3758f0,_0x2c35d4);}['_calcUV'](_0x47a67a,_0x59cb11){function _0x4f69ab(_0x4f7c03,_0x13f862){return _0x3e9da2(_0x13f862,_0x4f7c03-0x27b);}return[+_0x47a67a,+_0x59cb11,Math[_0x4f69ab(0x4fc,0x551)](_0x47a67a*_0x47a67a+_0x59cb11*_0x59cb11)];}[_0x3e9da2(0x191,0x1db)](_0xe6d6ea,_0x94056d){if(!this[_0xb9f08a(0x48f,0x4ce)](_0xe6d6ea,_0x94056d))return null;function _0x226f66(_0x481efb,_0x52c7f2){return _0x1b4f03(_0x52c7f2-0x3d0,_0x481efb);}const _0x1c594e=this['toGridXY'](_0xe6d6ea,_0x94056d),_0x3238c3=this[_0x226f66(0x3ba,0x3f1)](_0x1c594e[0x0],_0x1c594e[0x1]);function _0xb9f08a(_0x1b37ed,_0x436e91){return _0x3e9da2(_0x1b37ed,_0x436e91-0x30f);}return _0x3238c3;}['isInExtent'](_0xce5884,_0x22d39e){function _0xc97d40(_0x463738,_0x64706d){return _0x1b4f03(_0x463738-0xae,_0x64706d);}return _0xce5884>=this['xmin']&&_0xce5884<=this['xmax']&&_0x22d39e>=this['ymin']&&_0x22d39e<=this[_0xc97d40(0x6a,0x77)]?!![]:![];}['getRandomLatLng'](){const _0x5d8d92=fRandomByfloat(this['xmin'],this['xmax']),_0x18b00f=fRandomByfloat(this['ymin'],this['ymax']),_0x58465a={};function _0xde50ec(_0x334db2,_0xcf5d0d){return _0x3e9da2(_0x334db2,_0xcf5d0d- -0x2dc);}_0x58465a[_0x461afa(0x4c7,0x530)]=_0x18b00f;function _0x461afa(_0x21646d,_0x469a47){return _0x1b4f03(_0x21646d-0x487,_0x469a47);}return _0x58465a[_0x461afa(0x43d,0x48e)]=_0x5d8d92,_0x58465a;}['getParticles'](){function _0x3d1433(_0x42a74f,_0x896c3d){return _0x1b4f03(_0x896c3d-0x5cc,_0x42a74f);}let _0x523877,_0x42adf9,_0x3a0160;function _0x3baa03(_0x53e468,_0x1f1b14){return _0x1b4f03(_0x1f1b14-0x205,_0x53e468);}for(let _0x6f6535=0x0,_0x575ad7=this['particles']['length'];_0x6f6535<_0x575ad7;_0x6f6535++){let _0x3c869f=this[_0x3d1433(0x605,0x5a0)][_0x6f6535];_0x3c869f['age']<=0x0&&(_0x3c869f=this['_randomParticle'](_0x3c869f));if(_0x3c869f['age']>0x0){const _0x4f20af=_0x3c869f[_0x3d1433(0x676,0x635)],_0xbe28c=_0x3c869f[_0x3baa03(0x2b8,0x27b)];_0x3a0160=this[_0x3baa03(0x165,0x1d2)](_0x4f20af,_0xbe28c),_0x3a0160?(_0x523877=_0x4f20af+this[_0x3d1433(0x514,0x598)][0x0]*_0x3a0160[0x0],_0x42adf9=_0xbe28c+this['_calc_speedRate'][0x1]*_0x3a0160[0x1],_0x3c869f['lng']=_0x4f20af,_0x3c869f[_0x3baa03(0x1ed,0x245)]=_0xbe28c,_0x3c869f[_0x3d1433(0x5da,0x635)]=_0x523877,_0x3c869f['tlat']=_0x42adf9,_0x3c869f['speed']=_0x3a0160[0x2],_0x3c869f[_0x3baa03(0x254,0x252)]--):_0x3c869f[_0x3baa03(0x206,0x252)]=0x0;}}return this['particles'];}['_randomParticle'](_0x1f425){let _0x5898f5,_0x43aef9;for(let _0x22dc77=0x0;_0x22dc77<0x1e;_0x22dc77++){_0x5898f5=this[_0x1c2312(0x1d8,0x1b5)](),_0x43aef9=this['getUVByPoint'](_0x5898f5['lng'],_0x5898f5[_0x287b02(-0x10,0x38)]);if(_0x43aef9&&_0x43aef9[0x2]>0x0)break;}if(!_0x43aef9)return _0x1f425;function _0x287b02(_0x17a6d1,_0x1c49cf){return _0x3e9da2(_0x17a6d1,_0x1c49cf- -0x216);}const _0x1255da=_0x5898f5['lng']+this['_calc_speedRate'][0x0]*_0x43aef9[0x0],_0x3eba85=_0x5898f5['lat']+this['_calc_speedRate'][0x1]*_0x43aef9[0x1];_0x1f425['lng']=_0x5898f5[_0x287b02(-0x6,-0x52)],_0x1f425[_0x287b02(0x9b,0x38)]=_0x5898f5[_0x287b02(0x78,0x38)],_0x1f425['tlng']=_0x1255da,_0x1f425[_0x1c2312(0x1e3,0x205)]=_0x3eba85,_0x1f425['age']=Math['round'](0xa+Math[_0x287b02(0x52,0x98)]()*this[_0x1c2312(0x106,0xfe)]),_0x1f425[_0x1c2312(0x116,0x143)]=_0x43aef9[0x2];function _0x1c2312(_0x4418dd,_0x529cd9){return _0x3e9da2(_0x529cd9,_0x4418dd- -0xa1);}return _0x1f425;}['destroy'](){for(const _0x47c676 in this){delete this[_0x47c676];}}}function fRandomByfloat(_0x277957,_0x322fa6){function _0xc65275(_0x2da810,_0x407c54){return _0x1b4f03(_0x2da810-0x30a,_0x407c54);}return _0x277957+Math[_0xc65275(0x3aa,0x351)]()*(_0x322fa6-_0x277957);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x1b4f03(-0x14,-0x89)][_0x1b4f03(0x8f,0x94)];class CanvasWindLayer extends BaseLayer{constructor(_0x54cb0a={}){function _0x3c1021(_0x3d7ff2,_0xeebed9){return _0x3e9da2(_0xeebed9,_0x3d7ff2-0x29);}super(_0x54cb0a),this[_0x3c1021(0x292,0x292)](_0x54cb0a),this['canvas']=null;function _0x1cd2c0(_0x2e5bb3,_0x1db0c2){return _0x1b4f03(_0x2e5bb3-0x1ab,_0x1db0c2);}_0x54cb0a[_0x3c1021(0x296,0x2f4)]&&_0x54cb0a['steps']&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x54cb0a));}['_setOptionsHook'](_0x45839f,_0x267c2c){this['frameTime']=0x3e8/(_0x45839f[_0x539add(-0x88,-0x57)]||0xa);function _0x36266b(_0xe42c16,_0x457083){return _0x3e9da2(_0x457083,_0xe42c16- -0x392);}this[_0x36266b(-0x187,-0x1b2)]=this[_0x36266b(-0x1a4,-0x1d5)]['pointerEvents']??![],this[_0x36266b(-0x19c,-0x21f)]=_0x45839f['color']||_0x539add(-0x9a,-0xd5);function _0x539add(_0x27469b,_0x542ae4){return _0x1b4f03(_0x542ae4- -0xbf,_0x27469b);}this[_0x539add(-0x102,-0x9a)]=_0x45839f['lineWidth']||0x1,this['fixedHeight']=_0x45839f['fixedHeight']??0x0,this['reverseY']=_0x45839f['reverseY']??![],this[_0x539add(-0xf5,-0xd1)]&&this[_0x539add(-0x8e,-0xd1)][_0x36266b(-0xff,-0xab)](_0x45839f);}get['layer'](){function _0x391202(_0x3b937b,_0x414334){return _0x1b4f03(_0x3b937b- -0xb4,_0x414334);}return this[_0x391202(-0x7e,-0x2c)];}get['canvasWidth'](){return this['_map']['scene']['canvas']['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get[_0x1b4f03(0x26,0xac)](){function _0x4616bd(_0x141748,_0x2c5307){return _0x3e9da2(_0x2c5307,_0x141748- -0x398);}return this[_0x4616bd(-0x18d,-0x1ea)];}set['pointerEvents'](_0x5f57bb){function _0x1207c8(_0x473322,_0x56503f){return _0x3e9da2(_0x473322,_0x56503f- -0x212);}this['_pointerEvents']=_0x5f57bb;if(!this['canvas'])return;function _0x16962a(_0x3f1c93,_0x38a724){return _0x3e9da2(_0x38a724,_0x3f1c93- -0x22d);}_0x5f57bb?this[_0x16962a(0x17,0x4a)]['style']['pointer-events']=_0x1207c8(0x49,0x3):this['canvas']['style']['pointer-events']=_0x16962a(-0x83,-0x79);}get[_0x3e9da2(0x1fc,0x1d1)](){return this['options']['particlesNumber'];}set['particlesNumber'](_0x391f58){this[_0x47770e(0x224,0x2a8)][_0x270ab5(0x189,0x113)]=_0x391f58;function _0x270ab5(_0x44acd6,_0x11a0aa){return _0x1b4f03(_0x44acd6-0x1c6,_0x11a0aa);}function _0x47770e(_0x387c0c,_0x3bf458){return _0x1b4f03(_0x387c0c-0x244,_0x3bf458);}clearTimeout(this['_canrefresh']),this[_0x47770e(0x1d9,0x1ff)]=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x3e9da2(0x27a,0x204)](){return this['options']['speedRate'];}set['speedRate'](_0x145e89){this['options']['speedRate']=_0x145e89;function _0x4ec0da(_0x5a0e8b,_0x1973e){return _0x3e9da2(_0x5a0e8b,_0x1973e-0x238);}this['windField']&&(this[_0x4ec0da(0x3fb,0x434)]['speedRate']=_0x145e89);}get[_0x1b4f03(-0x67,-0x67)](){function _0x27b045(_0x357f1d,_0xcbc24){return _0x1b4f03(_0x357f1d-0x1df,_0xcbc24);}function _0x397a53(_0x1096fb,_0x52979b){return _0x3e9da2(_0x52979b,_0x1096fb- -0x1d2);}return this[_0x397a53(0x1c,-0x7)][_0x27b045(0x178,0x1c0)];}set['maxAge'](_0x4c20f3){function _0x4799eb(_0x7a5b22,_0x365d95){return _0x3e9da2(_0x365d95,_0x7a5b22-0x2b);}this['options']['maxAge']=_0x4c20f3;function _0x2f7a45(_0x1941c7,_0x475507){return _0x3e9da2(_0x475507,_0x1941c7- -0x71);}this['windField']&&(this[_0x2f7a45(0x18b,0x152)][_0x2f7a45(0x136,0x16d)]=_0x4c20f3);}get[_0x1b4f03(0x63,0x9a)](){return this['windData'];}set['data'](_0x3c1c0d){this['setData'](_0x3c1c0d);}get['rectangle'](){function _0x3c02e3(_0x5dd652,_0x4a294e){return _0x1b4f03(_0x5dd652-0xa2,_0x4a294e);}let _0x42ea15=this[_0x5a1be9(0x3d7,0x413)][_0x5a1be9(0x33a,0x3bf)],_0x59dd4b=this['windData']['xmax'];function _0x5a1be9(_0x448c21,_0x2129f6){return _0x3e9da2(_0x448c21,_0x2129f6-0x1f2);}let _0x1cd640=this[_0x5a1be9(0x470,0x413)][_0x5a1be9(0x3a6,0x42a)],_0x3ef369=this[_0x3c02e3(0xb5,0xc9)]['ymax'];return _0x59dd4b>=0x167&&_0x42ea15===0x0&&(_0x42ea15=-0xb4,_0x59dd4b=0xb4),_0x42ea15=Math[_0x5a1be9(0x41d,0x39f)](_0x42ea15,-0xb4),_0x59dd4b=Math['min'](_0x59dd4b,0xb4),_0x1cd640=Math['max'](_0x1cd640,-0x5a),_0x3ef369=Math[_0x3c02e3(0xcb,0x108)](_0x3ef369,0x5a),Cesium['Rectangle']['fromDegrees'](_0x42ea15,_0x1cd640,_0x59dd4b,_0x3ef369);}['_showHook'](_0x454d29){function _0x139b9e(_0x133b96,_0x486a32){return _0x3e9da2(_0x486a32,_0x133b96- -0x327);}function _0x5e78fd(_0x56fcf3,_0x166065){return _0x1b4f03(_0x56fcf3-0x373,_0x166065);}_0x454d29?this['_addedHook']():(this[_0x139b9e(-0x106,-0x184)]&&(this[_0x139b9e(-0x139,-0x14b)]['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){function _0x496ba0(_0x1daae1,_0x12a455){return _0x1b4f03(_0x12a455- -0x2,_0x1daae1);}function _0x16062c(_0x322b47,_0x127a6b){return _0x3e9da2(_0x322b47,_0x127a6b-0x1e5);}this[_0x496ba0(0x5d,-0x22)][_0x496ba0(0x7c,0x90)]?this[_0x16062c(0x38c,0x3ed)]():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){this[_0x3ffc52(0x12,0x6e)]=this['_createCanvas']();const _0x5a3c85={};_0x5a3c85[_0x3ffc52(-0x4b,0x26)]=!![],this[_0x3ffc52(-0x2c,-0x9f)]=this['canvas']['getContext']('2d',_0x5a3c85);function _0x3ffc52(_0x1cd59e,_0x4d5e09){return _0x3e9da2(_0x4d5e09,_0x1cd59e- -0x232);}this['bindEvent']();function _0x2fb5fd(_0x1c7416,_0x26a877){return _0x1b4f03(_0x1c7416-0x144,_0x26a877);}this[_0x2fb5fd(0x124,0x170)]['data']&&this[_0x2fb5fd(0x11e,0x172)](this['options']['data']);}['_removedHook'](){this['clear'](),this[_0x298918(0x186,0x1b8)]();function _0x4b6332(_0x593c37,_0xc8836c){return _0x3e9da2(_0x593c37,_0xc8836c-0x28);}function _0x298918(_0x1787ed,_0x4c1fd1){return _0x3e9da2(_0x1787ed,_0x4c1fd1- -0x57);}this[_0x298918(0x1b9,0x1ed)]&&(this['_map'][_0x4b6332(0x299,0x227)][_0x4b6332(0x219,0x207)](this[_0x4b6332(0x24b,0x26c)]),delete this[_0x4b6332(0x2b1,0x26c)]);}['_createCanvas'](){const _0x43541c=mars3d__namespace['DomUtil'][_0x4fa92f(0x516,0x538)](_0x5ea73b(-0xf9,-0xc7),'mars3d-canvasWind',this['_map'][_0x5ea73b(-0x13e,-0xb8)]);_0x43541c[_0x4fa92f(0x4d0,0x492)]['position']='absolute',_0x43541c[_0x5ea73b(-0x17f,-0x1e2)]['top']='0px',_0x43541c[_0x4fa92f(0x43d,0x492)][_0x4fa92f(0x4a7,0x50d)]='0px',_0x43541c['style'][_0x4fa92f(0x512,0x4e4)]=this[_0x4fa92f(0x59d,0x554)]['scene']['canvas']['clientWidth']+'px';function _0x4fa92f(_0x284d87,_0x5d157a){return _0x1b4f03(_0x5d157a-0x4e2,_0x284d87);}_0x43541c[_0x5ea73b(-0x17f,-0x1a5)]['height']=this['_map'][_0x5ea73b(-0xdd,-0x156)]['canvas']['clientHeight']+'px',_0x43541c['style']['pointerEvents']=this[_0x4fa92f(0x4c9,0x4df)]?'auto':_0x4fa92f(0x48c,0x47e),_0x43541c['style'][_0x4fa92f(0x546,0x52a)]=this['options'][_0x5ea73b(-0xe7,-0x145)]??0x9,_0x43541c[_0x5ea73b(-0x12d,-0x1b7)]=this['_map']['scene']['canvas']['clientWidth'];function _0x5ea73b(_0x42823e,_0x2c60e9){return _0x3e9da2(_0x2c60e9,_0x42823e- -0x33d);}return _0x43541c['height']=this[_0x5ea73b(-0xbd,-0xdf)][_0x5ea73b(-0xdd,-0x111)]['canvas']['clientHeight'],_0x43541c;}['resize'](){function _0x28dd33(_0x4c3bc0,_0x1bf334){return _0x1b4f03(_0x4c3bc0-0x11a,_0x1bf334);}function _0x1855fa(_0x11d60f,_0x4b7e57){return _0x1b4f03(_0x4b7e57- -0x145,_0x11d60f);}this['canvas']&&(this['canvas'][_0x1855fa(-0x201,-0x195)]['width']=this['_map']['scene']['canvas']['clientWidth']+'px',this['canvas']['style']['height']=this['_map'][_0x28dd33(0x16c,0x122)]['canvas']['clientHeight']+'px',this[_0x28dd33(0x150,0x178)]['width']=this['_map']['scene']['canvas']['clientWidth'],this['canvas'][_0x28dd33(0x126,0xa8)]=this[_0x1855fa(-0xee,-0xd3)][_0x1855fa(-0x10e,-0xf3)]['canvas']['clientHeight']);}[_0x3e9da2(0x25d,0x268)](){function _0x153a13(_0x1243af,_0x52af6e){return _0x3e9da2(_0x52af6e,_0x1243af-0x1e6);}const _0x1a8ed4=this;let _0x3b2db0=Date[_0x153a13(0x3f7,0x430)]();function _0x23d54e(_0xa08383,_0x4a5d56){return _0x3e9da2(_0xa08383,_0x4a5d56-0x2a8);}(function _0x28abd4(){if(_0x1a8ed4[_0x4a6fc8(0x2da,0x312)])return;_0x1a8ed4['_animateFrame']=window[_0x4b15be(0x514,0x584)](_0x28abd4);function _0x4b15be(_0x327c16,_0x58f279){return _0x153a13(_0x58f279-0x14c,_0x327c16);}function _0x4a6fc8(_0x21f0be,_0x204f46){return _0x153a13(_0x21f0be- -0x148,_0x204f46);}if(_0x1a8ed4['show']&&_0x1a8ed4[_0x4a6fc8(0x29a,0x2ad)]){const _0x47b281=Date['now'](),_0x24492e=_0x47b281-_0x3b2db0;_0x24492e>_0x1a8ed4[_0x4b15be(0x5a6,0x597)]&&(_0x3b2db0=_0x47b281-_0x24492e%_0x1a8ed4[_0x4b15be(0x527,0x597)],_0x1a8ed4['update']());}}(),window['addEventListener'](_0x153a13(0x472,0x496),this['resize'][_0x23d54e(0x490,0x4c3)](this),![]),this['mouse_down']=![],this[_0x153a13(0x43e,0x44a)]=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x153a13(0x466,0x458)]['on'](mars3d__namespace['EventType'][_0x23d54e(0x52f,0x51d)],this['_onMouseDownEvent'],this),this[_0x23d54e(0x527,0x528)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x1b4f03(0x1,0x1f)](){function _0x34ebf8(_0x2e00ea,_0x4c8e02){return _0x3e9da2(_0x2e00ea,_0x4c8e02-0x2fc);}window[_0x2711bd(0xf5,0xf8)](this[_0x2711bd(0x163,0xfe)]),delete this['_animateFrame'],window['removeEventListener']('resize',this[_0x2711bd(0x16a,0xf7)]);function _0x2711bd(_0x3a7860,_0x3a63da){return _0x1b4f03(_0x3a7860-0xec,_0x3a63da);}this['options']['mouseHidden']&&(this[_0x2711bd(0x15e,0xf7)]['off'](mars3d__namespace['EventType'][_0x2711bd(0x10b,0x110)],this[_0x34ebf8(0x473,0x4ee)],this),this[_0x2711bd(0x15e,0x193)]['off'](mars3d__namespace[_0x2711bd(0xbf,0x11a)]['mouseDown'],this[_0x2711bd(0xe3,0x16b)],this),this['_map'][_0x2711bd(0xe5,0xd3)](mars3d__namespace['EventType']['mouseUp'],this[_0x2711bd(0x8a,0xf1)],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x34ebf8(0x54d,0x4d5)],this));}[_0x3e9da2(0x16c,0x1f2)](_0xed2b23){clearTimeout(this[_0x273143(0x555,0x591)]);if(!this['show']||!this['canvas'])return;function _0x273143(_0x45d946,_0x2e5abf){return _0x1b4f03(_0x45d946-0x4da,_0x2e5abf);}this['canvas']['style'][_0x273143(0x4e2,0x559)]='hidden';function _0x39b84d(_0x1e7221,_0x2365d1){return _0x3e9da2(_0x2365d1,_0x1e7221-0x245);}this['refreshTimer']=setTimeout(()=>{function _0x3c5e0f(_0x4654c8,_0x1997bf){return _0x273143(_0x4654c8- -0x3a9,_0x1997bf);}if(!this[_0x3c5e0f(0x155,0x1d9)])return;function _0x1e09fa(_0x1b5053,_0x2cb51e){return _0x39b84d(_0x2cb51e- -0x46d,_0x1b5053);}this[_0x1e09fa(-0xe8,-0x83)](),this['canvas']['style'][_0x1e09fa(-0x7d,-0x12)]='visible';},0xc8);}['_onMouseDownEvent'](_0x3ee32f){this[_0x291ab8(0x376,0x2f5)]=!![];function _0x291ab8(_0x504afe,_0xcd7d54){return _0x3e9da2(_0x504afe,_0xcd7d54-0x4d);}this[_0x291ab8(0x301,0x2cd)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);function _0x8aa210(_0x4030c7,_0x4d8350){return _0x3e9da2(_0x4d8350,_0x4030c7- -0x2dc);}this['_map']['on'](mars3d__namespace[_0x8aa210(-0xfb,-0x75)]['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x53f3ae){function _0x2c87ef(_0x527c6c,_0x3d7b05){return _0x3e9da2(_0x527c6c,_0x3d7b05-0x1d6);}if(!this['show']||!this[_0x2c87ef(0x3ec,0x41a)])return;function _0x314c42(_0x5da886,_0x359511){return _0x1b4f03(_0x359511- -0xa0,_0x5da886);}this['mouse_down']&&(this['canvas'][_0x2c87ef(0x334,0x394)]['visibility']='hidden',this[_0x2c87ef(0x3ea,0x42e)]=!![]);}['_onMouseUpEvent'](_0x2e9a20){if(!this[_0x2276e0(-0x12c,-0x175)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace[_0x2dfe0(-0x115,-0xaa)]['mouseMove'],this['_onMouseMoveEvent'],this);this[_0x2dfe0(0x77,0x1d)]&&this[_0x2276e0(-0x166,-0x14f)]&&this['redraw']();function _0x2276e0(_0x2c6b7d,_0x50b89a){return _0x3e9da2(_0x2c6b7d,_0x50b89a- -0x3a7);}function _0x2dfe0(_0x311ff2,_0x46d5fd){return _0x3e9da2(_0x311ff2,_0x46d5fd- -0x28b);}this[_0x2dfe0(0xb,-0x47)][_0x2dfe0(-0x55,-0xcd)]['visibility']=_0x2dfe0(0xa7,0x20),this[_0x2276e0(-0xe0,-0xff)]=![],this['mouse_move']=![];}['setData'](_0x955540){this['clear'](),this[_0x51151e(0x4be,0x4ac)]=_0x955540;function _0x426ce3(_0x1dfab4,_0x1ab29b){return _0x3e9da2(_0x1dfab4,_0x1ab29b-0x2bf);}function _0x51151e(_0x1de9d7,_0x887ee){return _0x1b4f03(_0x887ee-0x499,_0x1de9d7);}this[_0x426ce3(0x516,0x4bb)]['setDate'](_0x955540),this['redraw']();}[_0x3e9da2(0x1ab,0x1a5)](){if(!this['show'])return;this[_0x43520f(-0x17f,-0x177)]['setOptions'](this['options']);function _0x5d2fa4(_0x503b44,_0x250c9b){return _0x3e9da2(_0x250c9b,_0x503b44- -0x2c2);}function _0x43520f(_0x34e85c,_0x1cbf8a){return _0x3e9da2(_0x34e85c,_0x1cbf8a- -0x373);}this[_0x5d2fa4(-0x3a,-0x7d)]();}[_0x1b4f03(0x7a,0x23)](){function _0x399d6f(_0x57f2c8,_0x4fba86){return _0x1b4f03(_0x57f2c8- -0xda,_0x4fba86);}if(this['_updateIng'])return;this['_updateIng']=!![];if(this[_0x4008ef(0x2db,0x31d)])this['windField']['update']();else{const _0x19be05=this[_0x4008ef(0x277,0x279)]['getParticles']();this['_drawLines'](_0x19be05);}function _0x4008ef(_0x387cda,_0x282004){return _0x3e9da2(_0x387cda,_0x282004-0x7d);}this[_0x4008ef(0x2d0,0x26a)]=![];}[_0x1b4f03(0x8a,0x68)](_0x3808d5){function _0x1850ce(_0x141593,_0x54d800){return _0x1b4f03(_0x54d800- -0x14e,_0x141593);}this['_canvasParticles']=_0x3808d5,this['canvasContext'][_0x1b7961(0x29,-0x1b)]='destination-in';function _0x1b7961(_0x462858,_0x437ee3){return _0x1b4f03(_0x462858-0x35,_0x437ee3);}this['canvasContext']['fillRect'](0x0,0x0,this[_0x1850ce(-0x1be,-0x1a2)],this['canvasHeight']),this[_0x1850ce(-0xd5,-0x156)]['globalCompositeOperation']='lighter',this['canvasContext'][_0x1b7961(0xcc,0xec)]=0.9;const _0x4ec449=this[_0x1850ce(-0xe8,-0xdc)]['scene']['mode']!==Cesium[_0x1850ce(-0x1f4,-0x1ae)]['SCENE3D'],_0x180c85=this[_0x1850ce(-0x17e,-0x1a2)]*0.25;if(this['_colorRamp'])for(let _0x134199=0x0,_0x4dd496=_0x3808d5['length'];_0x134199<_0x4dd496;_0x134199++){const _0xf74cf3=_0x3808d5[_0x134199],_0x58a153=this['_tomap'](_0xf74cf3,_0xf74cf3['lng'],_0xf74cf3[_0x1850ce(-0xb2,-0x10e)],_0xf74cf3['alt']),_0xd294cc=this['_tomap'](_0xf74cf3,_0xf74cf3['tlng'],_0xf74cf3['tlat'],_0xf74cf3['talt']);if(!_0x58a153||!_0xd294cc)continue;if(_0x4ec449&&Math['abs'](_0x58a153[0x0]-_0xd294cc[0x0])>=_0x180c85)continue;this['canvasContext']['beginPath'](),this[_0x1b7961(0x2d,0x35)]['lineWidth']=this[_0x1850ce(-0x178,-0x129)],this[_0x1b7961(0x2d,0x5f)][_0x1b7961(0x52,-0x25)]=this[_0x1b7961(-0x10,-0x18)]['getColor'](_0xf74cf3[_0x1b7961(-0x22,-0xb)]),this['canvasContext'][_0x1850ce(-0x1f3,-0x1b3)](_0x58a153[0x0],_0x58a153[0x1]),this[_0x1b7961(0x2d,-0x17)]['lineTo'](_0xd294cc[0x0],_0xd294cc[0x1]),this[_0x1850ce(-0x105,-0x156)][_0x1850ce(-0xf6,-0xe8)]();}else{this[_0x1b7961(0x2d,0x32)]['beginPath'](),this['canvasContext'][_0x1b7961(0x5a,0x4e)]=this['lineWidth'],this['canvasContext']['strokeStyle']=this[_0x1b7961(0x1d,-0x16)];for(let _0x30642f=0x0,_0xdba5bf=_0x3808d5['length'];_0x30642f<_0xdba5bf;_0x30642f++){const _0x3e3c06=_0x3808d5[_0x30642f],_0x19aad3=this['_tomap'](_0x3e3c06,_0x3e3c06['lng'],_0x3e3c06['lat'],_0x3e3c06['alt']),_0x163d2f=this['_tomap'](_0x3e3c06,_0x3e3c06['tlng'],_0x3e3c06[_0x1850ce(-0x14d,-0xd8)],_0x3e3c06['talt']);if(!_0x19aad3||!_0x163d2f)continue;if(_0x4ec449&&Math['abs'](_0x19aad3[0x0]-_0x163d2f[0x0])>=_0x180c85)continue;this['canvasContext']['moveTo'](_0x19aad3[0x0],_0x19aad3[0x1]),this['canvasContext'][_0x1b7961(-0x9,-0x55)](_0x163d2f[0x0],_0x163d2f[0x1]);}this['canvasContext'][_0x1850ce(-0xd1,-0xe8)]();}}['_tomap'](_0x37f2f6,_0x22eedd,_0x186616,_0x55910f){const _0x123bf6=Cesium['Cartesian3']['fromDegrees'](_0x22eedd,_0x186616,_0x55910f??this[_0x346f75(0x1ba,0x186)]);function _0x346f75(_0x42c63e,_0x5110da){return _0x1b4f03(_0x42c63e-0x1f3,_0x5110da);}const _0x4dd4f5=this['_map']['scene'];if(_0x4dd4f5['mode']===Cesium[_0x346f75(0x193,0x1e8)]['SCENE3D']){const _0x5b3eb3=new Cesium[(_0x346f75(0x1a1,0x14d))](_0x4dd4f5['globe']['ellipsoid'],_0x4dd4f5['camera'][_0x362f9c(0x1fa,0x17c)]),_0x49a746=_0x5b3eb3['isPointVisible'](_0x123bf6);if(!_0x49a746)return _0x37f2f6['age']=0x0,null;}function _0x362f9c(_0x4eddf1,_0x241eac){return _0x3e9da2(_0x4eddf1,_0x241eac- -0xbe);}const _0x44434d=mars3d__namespace['PointTrans']['toWindowCoordinates'](this[_0x362f9c(0x1cb,0x1c2)]['scene'],_0x123bf6);return _0x44434d?[_0x44434d['x'],_0x44434d['y']]:null;}['clear'](){this[_0x32faaf(0x56f,0x560)]['clear']();function _0x30bb5a(_0x5db37b,_0x2fe6f0){return _0x1b4f03(_0x5db37b-0x50,_0x2fe6f0);}function _0x32faaf(_0x2df537,_0x3abe20){return _0x1b4f03(_0x2df537-0x581,_0x3abe20);}delete this[_0x30bb5a(0x63,0xc0)];}[_0x1b4f03(-0x6,-0x72)](){this[_0x5362ce(0x469,0x46b)]=new Worker(this['options']['worker']);function _0x13ea9b(_0x3c361f,_0x19849d){return _0x1b4f03(_0x19849d-0x107,_0x3c361f);}function _0x5362ce(_0x4ba813,_0x18759f){return _0x3e9da2(_0x4ba813,_0x18759f-0x1cb);}this[_0x5362ce(0x3fc,0x46b)][_0x13ea9b(0x1e0,0x167)]=_0x3727d4=>{function _0xa63166(_0x40921f,_0x5b890a){return _0x13ea9b(_0x5b890a,_0x40921f-0x228);}this['_drawLines'](_0x3727d4[_0x47075e(-0x11,-0x91)][_0x47075e(-0xa0,-0xeb)]);function _0x47075e(_0x56d0c0,_0xb39db){return _0x13ea9b(_0xb39db,_0x56d0c0- -0x17b);}this['_updateIng2']=![];},this['windField']={'init':_0x4e99a7=>{const _0x414bca={};_0x414bca['type']='init';function _0x270286(_0x465f1d,_0x2e4b5e){return _0x13ea9b(_0x465f1d,_0x2e4b5e-0x17c);}function _0x361505(_0x5a2f50,_0x5ddb90){return _0x5362ce(_0x5ddb90,_0x5a2f50- -0x395);}_0x414bca[_0x361505(0x24,-0x3d)]=_0x4e99a7,this[_0x270286(0x385,0x315)]['postMessage'](_0x414bca);},'setOptions':_0x8cb4b0=>{function _0x4c4cc9(_0x82e5c8,_0x353fe8){return _0x13ea9b(_0x353fe8,_0x82e5c8- -0x192);}const _0x56e32e={};function _0xdf55c9(_0x4d604e,_0x47b97b){return _0x13ea9b(_0x47b97b,_0x4d604e-0x11a);}_0x56e32e[_0xdf55c9(0x25b,0x241)]='setOptions',_0x56e32e['options']=_0x8cb4b0,this['worker'][_0x4c4cc9(-0x4a,-0xf)](_0x56e32e);},'setDate':_0x1fb0d2=>{function _0x141a10(_0x1a0325,_0x513aa6){return _0x13ea9b(_0x513aa6,_0x1a0325- -0xd3);}const _0x49dd57={};function _0x395803(_0x4d0f21,_0x44a410){return _0x5362ce(_0x44a410,_0x4d0f21- -0x402);}_0x49dd57[_0x141a10(0x6e,-0x1a)]='setDate',_0x49dd57['data']=_0x1fb0d2,this['worker'][_0x141a10(0x75,0x78)](_0x49dd57);},'update':()=>{if(this['_updateIng2'])return;function _0x58b350(_0x5d734d,_0x50384){return _0x13ea9b(_0x50384,_0x5d734d- -0x59);}this[_0x58b350(0xaa,0x24)]=!![];const _0x6fedec={};function _0x3b004d(_0x55670f,_0x51e668){return _0x13ea9b(_0x51e668,_0x55670f-0x16b);}_0x6fedec['type']='update',this[_0x3b004d(0x304,0x377)][_0x58b350(0xef,0x8f)](_0x6fedec);},'clear':()=>{function _0x1fefe8(_0x26c825,_0x2df5d2){return _0x13ea9b(_0x2df5d2,_0x26c825-0x21e);}function _0x7c8202(_0x5e018b,_0x338df3){return _0x13ea9b(_0x5e018b,_0x338df3-0x1ad);}const _0x12e67c={};_0x12e67c[_0x1fefe8(0x35f,0x378)]=_0x7c8202(0x2cc,0x2c8),this['worker']['postMessage'](_0x12e67c);}},this[_0x13ea9b(0xb6,0xf5)]['init'](this[_0x13ea9b(0xfc,0xe7)]);}}mars3d__namespace['LayerUtil'][_0x3e9da2(0x1fc,0x224)]('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace[_0x3e9da2(0x1f7,0x1e3)]=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x3e9da2(0x1a0,0x1bd)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x3e9da2(0x1e9,0x1dd)]=WindUtil;const _0x5c1edd={};_0x5c1edd['value']=!![],Object['defineProperty'](exports,'__esModule',_0x5c1edd);
|
|
15
15
|
}));
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mars3d-wind",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.11",
|
|
4
4
|
"description": "Mars3D平台插件,支持气象 风向图 功能插件",
|
|
5
5
|
"main": "./mars3d-wind.js",
|
|
6
6
|
"peerDependencies": {},
|
|
7
7
|
"devDependencies": {
|
|
8
|
-
"mars3d": "~3.8.
|
|
8
|
+
"mars3d": "~3.8.11"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"lint": "eslint ./src/**/*.{js,ts} --fix"
|