mars3d-wind 3.10.12 → 3.11.1
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 +1 -1
- package/mars3d-wind.js +5 -5
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -84,7 +84,7 @@ import "mars3d-wind";
|
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
## Mars3D 是什么
|
|
87
|
-
> `Mars3D三维地球平台软件`
|
|
87
|
+
> `Mars3D三维地球平台软件` 是一款基于 WebGL 技术实现的三维客户端开发平台,基于[Cesium](https://cesium.com/cesiumjs/)优化提升与B/S架构设计,支持多行业扩展的轻量级高效能GIS开发平台,能够免安装、无插件地在浏览器中高效运行,并可快速接入与使用多种GIS数据和三维模型,呈现三维空间的可视化,完成平台在不同行业的灵活应用。
|
|
88
88
|
|
|
89
89
|
> Mars3D平台可用于构建无插件、跨操作系统、 跨浏览器的三维 GIS 应用程序。平台使用 WebGL 来进行硬件加速图形化,跨平台、跨浏览器来实现真正的动态大数据三维可视化。通过 Mars3D产品可快速实现浏览器和移动端上美观、流畅的三维地图呈现与空间分析。
|
|
90
90
|
|
package/mars3d-wind.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
|
|
3
3
|
*
|
|
4
|
-
* 版本信息:v3.
|
|
5
|
-
* 编译日期:2026-
|
|
6
|
-
* 版权所有:Copyright by
|
|
7
|
-
*
|
|
4
|
+
* 版本信息:v3.11.1
|
|
5
|
+
* 编译日期:2026-03-17 19:23
|
|
6
|
+
* 版权所有:Copyright by http://mars3d.cn
|
|
7
|
+
* 使用单位:免费公开版 ,2026-02-01
|
|
8
8
|
*/
|
|
9
9
|
(function (global, factory) {
|
|
10
10
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, (window.mars3d || require('mars3d'))) :
|
|
11
11
|
typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
|
|
12
12
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
|
|
13
13
|
})(this, (function (exports, mars3d) {
|
|
14
|
-
'use strict';(function(_0x3e1a21,_0x441994){function _0x1662b1(_0x175674,_0x471015){return _0x3249(_0x471015- -0xbf,_0x175674);}function _0x5c0ee1(_0x5b46a4,_0x3d732d){return _0x3249(_0x3d732d- -0x248,_0x5b46a4);}const _0x444518=_0x3e1a21();while(!![]){try{const _0x25adca=-parseInt(_0x5c0ee1(-0xf1,-0x78))/0x1+-parseInt(_0x1662b1(0xde,0x141))/0x2*(parseInt(_0x5c0ee1(-0xe6,-0xb6))/0x3)+parseInt(_0x5c0ee1(-0x7e,-0x5e))/0x4+-parseInt(_0x5c0ee1(-0xcf,-0x91))/0x5*(parseInt(_0x5c0ee1(-0x27,-0x67))/0x6)+-parseInt(_0x5c0ee1(-0x19,-0x25))/0x7+parseInt(_0x1662b1(0x161,0x119))/0x8*(parseInt(_0x1662b1(0xf0,0x135))/0x9)+parseInt(_0x1662b1(0x136,0x188))/0xa;if(_0x25adca===_0x441994)break;else _0x444518['push'](_0x444518['shift']());}catch(_0x244edb){_0x444518['push'](_0x444518['shift']());}}}(_0x1fe0,0xc7d47));function _interopNamespace(_0x275c10){if(_0x275c10&&_0x275c10['__esModule'])return _0x275c10;function _0x624113(_0x455395,_0xd8f593){return _0x3249(_0xd8f593- -0x237,_0x455395);}var _0x1d1184=Object['create'](null);return _0x275c10&&Object['keys'](_0x275c10)[_0x624113(-0xd0,-0x54)](function(_0x12f12b){function _0x262366(_0x249a84,_0x237b25){return _0x624113(_0x237b25,_0x249a84-0x537);}if(_0x12f12b!=='default'){var _0x4afbc1=Object['getOwnPropertyDescriptor'](_0x275c10,_0x12f12b);Object['defineProperty'](_0x1d1184,_0x12f12b,_0x4afbc1[_0x262366(0x560,0x56a)]?_0x4afbc1:{'enumerable':!![],'get':function(){return _0x275c10[_0x12f12b];}});}}),_0x1d1184['default']=_0x275c10,_0x1d1184;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function getU(_0x371dfd,_0xa760c8){function _0x44b165(_0x188712,_0x5479c7){return _0x3249(_0x5479c7-0x1e0,_0x188712);}const _0x4fc61f=_0x371dfd*Math['cos'](Cesium$2['Math'][_0x44b165(0x381,0x3e5)](_0xa760c8));return _0x4fc61f;}function getV(_0x5692df,_0x26776c){const _0x2c6db8=_0x5692df*Math['sin'](Cesium$2['Math']['toRadians'](_0x26776c));return _0x2c6db8;}function getSpeed(_0x19f1fd,_0xaaae29){const _0x61b517=Math['sqrt'](Math[_0x374b18(0xc4,0x111)](_0x19f1fd,0x2)+Math[_0x37f14f(-0x211,-0x188)](_0xaaae29,0x2));function _0x374b18(_0x1f2c95,_0x5a97f4){return _0x3249(_0x1f2c95- -0xd5,_0x5a97f4);}function _0x37f14f(_0xa54f1e,_0x3cc8b1){return _0x3249(_0x3cc8b1- -0x321,_0xa54f1e);}return _0x61b517;}function getDirection(_0x21a587,_0x11ebab){let _0x3cd984=Cesium$2['Math'][_0x4cf95d(-0xd3,-0x127)](Math[_0x9131e5(0x274,0x2f0)](_0x11ebab,_0x21a587));function _0x4cf95d(_0x4935f2,_0x529663){return _0x3249(_0x529663- -0x2f8,_0x4935f2);}function _0x9131e5(_0x593102,_0x57458c){return _0x3249(_0x57458c-0x9c,_0x593102);}return _0x3cd984+=_0x3cd984<0x0?0x168:0x0,_0x3cd984;}const _0x1306c3={};_0x1306c3[_0x5deefe(-0x24d,-0x1ca)]=null,_0x1306c3[_0x5deefe(-0x242,-0x23d)]=getU,_0x1306c3['getV']=getV,_0x1306c3[_0x5e9d7c(0x522,0x586)]=getSpeed,_0x1306c3[_0x5deefe(-0x208,-0x24e)]=getDirection;var WindUtil=_0x1306c3;const version='3.10.12',buildTime=_0x5e9d7c(0x623,0x61b);var updatePositionShader=_0x5e9d7c(0x59a,0x54d),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='#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[_0x5deefe(-0x253,-0x2d4)](){const _0x5170d1={};return _0x5170d1['sources']=[calculateSpeedShader],new ShaderSource$1(_0x5170d1);}static['getUpdatePositionShader'](){const _0x5c4fde={};return _0x5c4fde['sources']=[updatePositionShader],new ShaderSource$1(_0x5c4fde);}static[_0x5deefe(-0x1f0,-0x1e5)](){const _0x1a95f5={};return _0x1a95f5['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x1a95f5);}static['getSegmentDrawFragmentShader'](){const _0x10fdf4={};return _0x10fdf4['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x10fdf4);}static[_0x5deefe(-0x236,-0x1c6)](){const _0x5b605c={};return _0x5b605c['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x5b605c);}}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defined,destroyObject}=mars3d__namespace[_0x5deefe(-0x161,-0x1d1)];class CustomPrimitive{constructor(_0x2b4c93){this[_0x64eadc(-0x46,-0x66)]=_0x2b4c93[_0x64eadc(-0x46,-0x61)],this['geometry']=_0x2b4c93['geometry'],this[_0x64eadc(0x1a,0x6e)]=_0x2b4c93['attributeLocations'],this['primitiveType']=_0x2b4c93[_0x64eadc(0x6,0x61)],this['uniformMap']=_0x2b4c93['uniformMap']||{},this[_0x2f7e9a(-0x1b2,-0x237)]=_0x2b4c93[_0x64eadc(-0x73,-0x33)];function _0x64eadc(_0x100d03,_0x1fc126){return _0x5e9d7c(_0x100d03- -0x5e2,_0x1fc126);}this['fragmentShaderSource']=_0x2b4c93['fragmentShaderSource'],this[_0x64eadc(-0x6f,-0x34)]=_0x2b4c93['rawRenderState'],this['framebuffer']=_0x2b4c93['framebuffer'];function _0x2f7e9a(_0x5ce474,_0x41a0ce){return _0x5deefe(_0x5ce474-0x5e,_0x41a0ce);}this[_0x64eadc(-0x4e,-0x2f)]=_0x2b4c93['outputTexture'],this['autoClear']=_0x2b4c93['autoClear']??![],this['preExecute']=_0x2b4c93['preExecute'],this['show']=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this['isDynamic']=_0x2b4c93[_0x64eadc(-0x18,-0x6f)]??(()=>!![]),this['autoClear']&&(this['clearCommand']=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x64eadc(-0x80,-0x7a)],'pass':Pass$1['OPAQUE']}));}[_0x5deefe(-0x193,-0x119)](_0xf87098){function _0x53ca4b(_0x861435,_0x26ae23){return _0x5deefe(_0x861435-0x46a,_0x26ae23);}function _0x1bcdd6(_0x19e746,_0x118659){return _0x5e9d7c(_0x118659- -0x50f,_0x19e746);}if(this['commandType']==='Draw'){const _0x5dfde0={};_0x5dfde0[_0x1bcdd6(0x125,0x106)]=_0xf87098,_0x5dfde0[_0x53ca4b(0x210,0x1c4)]=this['geometry'],_0x5dfde0[_0x53ca4b(0x2e7,0x264)]=this['attributeLocations'],_0x5dfde0[_0x53ca4b(0x24c,0x1c2)]=BufferUsage$1[_0x53ca4b(0x2e9,0x276)];const _0x4d61f8=VertexArray$1['fromGeometry'](_0x5dfde0),_0x36a13f={};_0x36a13f['context']=_0xf87098,_0x36a13f[_0x53ca4b(0x25a,0x238)]=this['vertexShaderSource'],_0x36a13f['fragmentShaderSource']=this[_0x53ca4b(0x28d,0x296)],_0x36a13f['attributeLocations']=this['attributeLocations'];const _0x5ef5ae=ShaderProgram[_0x1bcdd6(0x71,0x5d)](_0x36a13f),_0x2e1bf4=RenderState[_0x1bcdd6(0xa5,0x5d)](this['rawRenderState']),_0x3e5654={};return _0x3e5654[_0x1bcdd6(0x1d,0x99)]=this,_0x3e5654[_0x53ca4b(0x255,0x29d)]=_0x4d61f8,_0x3e5654['primitiveType']=this['primitiveType'],_0x3e5654['modelMatrix']=Matrix4['IDENTITY'],_0x3e5654['renderState']=_0x2e1bf4,_0x3e5654['shaderProgram']=_0x5ef5ae,_0x3e5654['framebuffer']=this[_0x1bcdd6(-0x23,0x53)],_0x3e5654['uniformMap']=this[_0x1bcdd6(0xc0,0xa6)],_0x3e5654[_0x1bcdd6(0x94,0x79)]=Pass$1['OPAQUE'],new DrawCommand(_0x3e5654);}else{if(this['commandType']===_0x1bcdd6(0xa6,0x8a)){const _0x3db416={};return _0x3db416['owner']=this,_0x3db416[_0x53ca4b(0x28d,0x2ab)]=this[_0x1bcdd6(0x115,0x93)],_0x3db416[_0x1bcdd6(0x105,0xa6)]=this['uniformMap'],_0x3db416[_0x1bcdd6(0x1f,0x85)]=this['outputTexture'],_0x3db416[_0x53ca4b(0x2f1,0x34f)]=!![],new ComputeCommand(_0x3db416);}else throw new Error(_0x1bcdd6(0x74,0x18));}}['setGeometry'](_0x6ee26f,_0x599091){function _0xc5fa5c(_0x419a1b,_0x41be02){return _0x5deefe(_0x419a1b-0x2d,_0x41be02);}function _0x54cdfc(_0x213dd1,_0x5dc9f9){return _0x5e9d7c(_0x213dd1- -0x588,_0x5dc9f9);}this['geometry']=_0x599091,defined(this['commandToExecute'])&&(this['commandToExecute'][_0x54cdfc(-0x1e,-0x1d)]=VertexArray$1[_0x54cdfc(-0x1d,-0x13)]({'context':_0x6ee26f,'geometry':this[_0x54cdfc(-0x63,-0x89)],'attributeLocations':this[_0xc5fa5c(-0x156,-0x104)],'bufferUsage':BufferUsage$1[_0xc5fa5c(-0x154,-0x1c3)]}));}[_0x5deefe(-0x1c3,-0x15e)](_0xa8c84){function _0x3f1268(_0xf8487c,_0x96c110){return _0x5e9d7c(_0xf8487c- -0x11e,_0x96c110);}if(!this['isDynamic']())return;if(!this[_0x13c773(0x449,0x4b7)]||!defined(_0xa8c84))return;!defined(this['commandToExecute'])&&(this['commandToExecute']=this[_0x13c773(0x45f,0x440)](_0xa8c84['context']));function _0x13c773(_0x5c8149,_0x1da576){return _0x5deefe(_0x5c8149-0x5f2,_0x1da576);}defined(this['preExecute'])&&this['preExecute']();if(!_0xa8c84['commandList']){console['warn'](_0x13c773(0x3d6,0x3fe));return;}defined(this[_0x13c773(0x446,0x486)])&&_0xa8c84[_0x3f1268(0x4e9,0x4a4)][_0x3f1268(0x4bf,0x469)](this[_0x13c773(0x446,0x458)]),defined(this[_0x3f1268(0x4c9,0x4e9)])&&_0xa8c84['commandList'][_0x3f1268(0x4bf,0x43a)](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){if(defined(this[_0x1c01ba(0x164,0x117)])){var _0x58a0bf;(_0x58a0bf=this[_0x4d4230(0x1c8,0x146)][_0x4d4230(0x105,0x7b)])===null||_0x58a0bf===void 0x0||_0x58a0bf[_0x4d4230(0x149,0x134)](),this[_0x1c01ba(0x148,0x117)]['shaderProgram']=undefined;}function _0x4d4230(_0x52b371,_0x23972f){return _0x5deefe(_0x23972f-0x2de,_0x52b371);}function _0x1c01ba(_0x3ae58c,_0x1732ed){return _0x5deefe(_0x1732ed-0x2af,_0x3ae58c);}return destroyObject(this);}}function deepMerge(_0x3e9f55,_0x172133){if(!_0x3e9f55)return _0x172133;if(!_0x172133)return _0x3e9f55;const _0xc8c03d={..._0x172133},_0x2ae16a=_0xc8c03d;for(const _0x516a7f in _0x3e9f55){if(Object['prototype']['hasOwnProperty']['call'](_0x3e9f55,_0x516a7f)){const _0x1371e3=_0x3e9f55[_0x516a7f],_0x258c57=_0x172133[_0x516a7f];if(Array['isArray'](_0x1371e3)){_0x2ae16a[_0x516a7f]=_0x1371e3['slice']();continue;}if(_0x1371e3&&typeof _0x1371e3===_0x4d84cb(0x40b,0x433)){_0x2ae16a[_0x516a7f]=deepMerge(_0x1371e3,_0x258c57||{});continue;}_0x1371e3!==undefined&&(_0x2ae16a[_0x516a7f]=_0x1371e3);}}function _0x4d84cb(_0x2b3ab4,_0x400ea8){return _0x5e9d7c(_0x2b3ab4- -0x146,_0x400ea8);}return _0x2ae16a;}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(_0x5aec1f,_0x43d39b,_0x3e4960,_0x6f5118,_0x56a128){this['context']=_0x5aec1f;function _0xba28e2(_0x441620,_0x5df0a7){return _0x5deefe(_0x441620-0x586,_0x5df0a7);}this[_0xba28e2(0x3e1,0x358)]=_0x3e4960,this[_0xba28e2(0x3cf,0x437)]=_0x6f5118,this['windData']=_0x43d39b,this['frameRate']=0x3c,this['frameRateAdjustment']=0x1;const _0x1c08f8={};function _0xceea8d(_0xbf3204,_0x32e145){return _0x5e9d7c(_0xbf3204- -0x5b3,_0x32e145);}_0x1c08f8['scene']=_0x56a128,_0x1c08f8[_0xba28e2(0x3b5,0x357)]=0x1,_0x1c08f8['quietPeriod']=0x0,this[_0xceea8d(0x3a,0x54)]=new FrameRateMonitor(_0x1c08f8),this[_0xceea8d(-0x4a,-0x1f)](),this[_0xceea8d(0x58,0x38)](),this['createParticlesTextures'](),this['createComputingPrimitives']();}['initFrameRate'](){const _0x1b818c=()=>{function _0x3d0328(_0x267a56,_0x3f5a81){return _0x3249(_0x267a56- -0x358,_0x3f5a81);}function _0x3642bd(_0x45b0a3,_0x2d90c6){return _0x3249(_0x2d90c6- -0x1cb,_0x45b0a3);}this[_0x3642bd(0x61,0x65)]['lastFramesPerSecond']>0x14&&(this['frameRate']=this['frameRateMonitor']['lastFramesPerSecond'],this[_0x3642bd(-0x25,0x2a)]=0x3c/Math[_0x3642bd(-0x69,0xe)](this[_0x3d0328(-0x1b1,-0x1bf)],0x1));};_0x1b818c();const _0x499272=setInterval(_0x1b818c,0x3e8);function _0x5226a5(_0x3a8eca,_0x2032df){return _0x5e9d7c(_0x3a8eca- -0x125,_0x2032df);}const _0x31703f=this['destroy'][_0x5226a5(0x465,0x4b1)](this);this['destroy']=()=>{clearInterval(_0x499272),_0x31703f();};}['createWindTextures'](){const _0x1a5433={};_0x1a5433['minificationFilter']=TextureMinificationFilter$1['LINEAR'],_0x1a5433['magnificationFilter']=TextureMagnificationFilter$1[_0x355a79(0x520,0x586)];const _0x1a9058={'context':this['context'],'width':this['windData']['width'],'height':this['windData']['height'],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this['options'][_0x355a79(0x585,0x5d9)]??![],'sampler':new Sampler$1(_0x1a5433)};function _0x355a79(_0x10f177,_0x8a3400){return _0x5deefe(_0x10f177-0x704,_0x8a3400);}function _0x31a6f6(_0x4928cb,_0x31cd96){return _0x5e9d7c(_0x4928cb- -0x6d4,_0x31cd96);}this['windTextures']={'U':new Texture$1({..._0x1a9058,'source':{'arrayBufferView':new Float32Array(this['windData']['u'][_0x31a6f6(-0xdf,-0x167)])}}),'V':new Texture$1({..._0x1a9058,'source':{'arrayBufferView':new Float32Array(this[_0x355a79(0x509,0x506)]['v']['array'])}})};}['createParticlesTextures'](){const _0x302125={};_0x302125[_0x24d72b(0x10b,0xda)]=TextureMinificationFilter$1[_0x24d72b(0x59,0xbe)];function _0x107f5e(_0x29a62d,_0x32a2a4){return _0x5deefe(_0x29a62d-0x53d,_0x32a2a4);}_0x302125[_0x24d72b(0x102,0xeb)]=TextureMagnificationFilter$1['NEAREST'];function _0x24d72b(_0x20967d,_0x4283c1){return _0x5e9d7c(_0x4283c1- -0x473,_0x20967d);}const _0x1c2dde={'context':this[_0x24d72b(0x207,0x1a2)],'width':this[_0x24d72b(0x108,0x167)]['particlesTextureSize'],'height':this['options']['particlesTextureSize'],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1[_0x107f5e(0x347,0x2ea)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options'][_0x107f5e(0x324,0x2d2)]*this['options']['particlesTextureSize']*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x302125)};this[_0x107f5e(0x39f,0x41d)]={'previousParticlesPosition':new Texture$1(_0x1c2dde),'currentParticlesPosition':new Texture$1(_0x1c2dde),'nextParticlesPosition':new Texture$1(_0x1c2dde),'postProcessingPosition':new Texture$1(_0x1c2dde),'particlesSpeed':new Texture$1(_0x1c2dde)};}[_0x5e9d7c(0x542,0x4cf)](){function _0x1c55e2(_0x414d0d,_0x19dcde){return _0x5deefe(_0x19dcde-0x711,_0x414d0d);}Object['values'](this[_0x1c55e2(0x52a,0x573)])['forEach'](_0x29635b=>_0x29635b['destroy']());}['createComputingPrimitives'](){function _0x408b64(_0x386d9c,_0x26a7f8){return _0x5e9d7c(_0x26a7f8- -0x5fd,_0x386d9c);}function _0x377c05(_0x9b51da,_0xfbe337){return _0x5deefe(_0x9b51da-0xc7,_0xfbe337);}this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':_0x377c05(-0x11f,-0x10b),'uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this['windData']['u'][_0x408b64(-0x11c,-0xc5)],this[_0x408b64(-0x47,-0x79)]['u'][_0x408b64(-0x92,-0x67)]),'vRange':()=>new Cartesian2$1(this['windData']['v'][_0x408b64(-0x11d,-0xc5)],this['windData']['v']['max']),'speedRange':()=>new Cartesian2$1(this['windData']['speed']['min'],this[_0x408b64(-0x37,-0x79)]['speed']['max']),'currentParticlesPosition':()=>this[_0x408b64(0x3,-0x1c)]['currentParticlesPosition'],'speedScaleFactor':()=>{function _0x537636(_0x2e51ae,_0x1c960e){return _0x377c05(_0x2e51ae-0x162,_0x1c960e);}return(this['viewerParameters'][_0x537636(0x90,0x8a)]+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this['frameRateAdjustment'],'dimension':()=>new Cartesian2$1(this['windData']['width'],this['windData']['height']),'minimum':()=>new Cartesian2$1(this['windData'][_0x377c05(-0x13a,-0x1bc)]['west'],this['windData'][_0x408b64(-0xef,-0x7f)]['south']),'maximum':()=>new Cartesian2$1(this['windData']['bounds']['east'],this[_0x408b64(0x6,-0x79)]['bounds']['north'])},'fragmentShaderSource':ShaderManager['getCalculateSpeedShader'](),'outputTexture':this[_0x408b64(0x59,-0x1c)][_0x408b64(-0x83,-0xe2)],'preExecute':()=>{function _0x105150(_0x48a85b,_0x17d2d4){return _0x377c05(_0x48a85b- -0xea,_0x17d2d4);}const _0x375f30=this[_0x105150(-0x1c1,-0x196)]['previousParticlesPosition'];this['particlesTextures']['previousParticlesPosition']=this[_0x105150(-0x1c1,-0x20a)]['currentParticlesPosition'],this['particlesTextures']['currentParticlesPosition']=this['particlesTextures']['postProcessingPosition'],this[_0xd8cace(0x3d9,0x438)][_0x105150(-0x275,-0x2bf)]=_0x375f30;function _0xd8cace(_0xbe795e,_0x506834){return _0x377c05(_0xbe795e-0x4b0,_0x506834);}this[_0xd8cace(0x328,0x2df)]['calculateSpeed'][_0xd8cace(0x3df,0x396)]&&(this['primitives']['calculateSpeed']['commandToExecute']['outputTexture']=this['particlesTextures']['particlesSpeed']);},'isDynamic':()=>this[_0x377c05(-0xde,-0x54)][_0x377c05(-0xb0,-0x59)]}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this['particlesTextures']['currentParticlesPosition'],'particlesSpeed':()=>this[_0x408b64(-0x7f,-0x1c)][_0x377c05(-0x19d,-0x217)]},'fragmentShaderSource':ShaderManager['getUpdatePositionShader'](),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':()=>{function _0x402b57(_0x8b152,_0x12fdb2){return _0x408b64(_0x8b152,_0x12fdb2-0x265);}this['primitives']['updatePosition']['commandToExecute']&&(this[_0x402b57(0x1f5,0x198)]['updatePosition']['commandToExecute']['outputTexture']=this['particlesTextures']['nextParticlesPosition']);},'isDynamic':()=>this[_0x408b64(0x1c,-0x23)]['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this['particlesTextures']['nextParticlesPosition'],'particlesSpeed':()=>this[_0x377c05(-0xd7,-0x62)]['particlesSpeed'],'lonRange':()=>this['viewerParameters']['lonRange'],'latRange':()=>this[_0x408b64(0xf,-0x35)][_0x408b64(-0x5a,-0x50)],'dataLonRange':()=>new Cartesian2$1(this[_0x408b64(-0xd3,-0x79)][_0x377c05(-0x13a,-0xb3)]['west'],this['windData'][_0x408b64(-0x3e,-0x7f)]['east']),'dataLatRange':()=>new Cartesian2$1(this['windData']['bounds']['south'],this[_0x377c05(-0x134,-0x129)][_0x377c05(-0x13a,-0xb8)][_0x377c05(-0xc9,-0xa8)]),'randomCoefficient':function(){function _0x4fc992(_0x2bbfd6,_0x58bf39){return _0x408b64(_0x58bf39,_0x2bbfd6-0x608);}return Math[_0x4fc992(0x591,0x58c)]();},'dropRate':()=>this['options']['dropRate'],'dropRateBump':()=>this['options'][_0x377c05(-0xc5,-0xe5)],'useViewerBounds':()=>this[_0x408b64(-0x88,-0x23)][_0x377c05(-0x113,-0xbf)]},'fragmentShaderSource':ShaderManager['getPostProcessingPositionShader'](),'outputTexture':this[_0x408b64(0x9,-0x1c)]['postProcessingPosition'],'preExecute':()=>{function _0x35f215(_0x43b925,_0x523d91){return _0x377c05(_0x43b925-0x2ea,_0x523d91);}function _0x571167(_0x3d8fdf,_0x5570d6){return _0x408b64(_0x5570d6,_0x3d8fdf- -0xfa);}this[_0x571167(-0x1c7,-0x1c8)][_0x35f215(0x15f,0x140)][_0x35f215(0x219,0x263)]&&(this['primitives']['postProcessingPosition']['commandToExecute']['outputTexture']=this[_0x35f215(0x213,0x279)]['postProcessingPosition']);},'isDynamic':()=>this[_0x377c05(-0xde,-0x11f)]['dynamic']})};}['reCreateWindTextures'](){this['windTextures']['U']['destroy']();function _0x5be63f(_0x5d5dcc,_0x348432){return _0x5e9d7c(_0x348432- -0x5c8,_0x5d5dcc);}this['windTextures']['V']['destroy'](),this[_0x5be63f(-0x2e,0x43)]();}['updateWindData'](_0x19df77){this[_0x2ba525(0xf7,0x93)]=_0x19df77;function _0x2ba525(_0x23b2c9,_0x5b2804){return _0x5deefe(_0x23b2c9-0x2f2,_0x5b2804);}function _0x3e0832(_0x145ec7,_0x56497a){return _0x5e9d7c(_0x145ec7- -0x257,_0x56497a);}this[_0x2ba525(0x9d,0x116)]();}[_0x5e9d7c(0x587,0x5a2)](_0x484e3f){const _0x39370b=_0x484e3f['flipY']!==undefined&&_0x484e3f['flipY']!==this[_0x1ed5c8(0x159,0x12b)]['flipY'];function _0x587332(_0xbdf92a,_0x3b4a26){return _0x5e9d7c(_0x3b4a26- -0x67a,_0xbdf92a);}this[_0x1ed5c8(0x159,0x12b)]=deepMerge(_0x484e3f,this['options']);function _0x1ed5c8(_0x2a2f64,_0x9fa411){return _0x5deefe(_0x9fa411-0x2d0,_0x2a2f64);}_0x39370b&&this[_0x587332(-0x15e,-0x150)]();}[_0x5e9d7c(0x622,0x69d)](_0x1c748d){const {array:_0x440455}=_0x1c748d;let {min:_0x3e7919,max:_0x58a4b1}=_0x1c748d;function _0x22cee7(_0xed2097,_0x58f5d7){return _0x5e9d7c(_0x58f5d7- -0x6d2,_0xed2097);}const _0x81d81a=new Float32Array(_0x440455['length']);_0x3e7919===undefined&&(console['warn']('min\x20is\x20undefined,\x20calculate\x20min'),_0x3e7919=Math['min'](..._0x440455));function _0x4ea1a2(_0x4efbe9,_0x258518){return _0x5e9d7c(_0x258518- -0x63c,_0x4efbe9);}_0x58a4b1===undefined&&(console[_0x4ea1a2(-0xa2,-0x4e)]('max\x20is\x20undefined,\x20calculate\x20max'),_0x58a4b1=Math[_0x22cee7(-0x163,-0x13c)](..._0x440455));const _0x238d68=Math['max'](Math[_0x22cee7(-0x21c,-0x1bd)](_0x3e7919),Math[_0x4ea1a2(-0x152,-0x127)](_0x58a4b1));for(let _0x49d314=0x0;_0x49d314<_0x440455['length'];_0x49d314++){const _0x3ce1bc=_0x440455[_0x49d314]/_0x238d68;_0x81d81a[_0x49d314]=_0x3ce1bc;}return _0x81d81a;}['destroy'](){function _0x4b1c05(_0x1dff15,_0xecdd61){return _0x5deefe(_0x1dff15-0x5c6,_0xecdd61);}Object[_0x53501f(0x459,0x427)](this['windTextures'])['forEach'](_0x125105=>_0x125105['destroy']());function _0x53501f(_0x4b0826,_0x148976){return _0x5deefe(_0x148976-0x672,_0x4b0826);}Object[_0x53501f(0x444,0x427)](this[_0x53501f(0x53a,0x4d4)])[_0x53501f(0x4ad,0x493)](_0x318c58=>_0x318c58['destroy']()),Object['values'](this['primitives'])['forEach'](_0x52117f=>_0x52117f['destroy']()),this[_0x53501f(0x463,0x4e0)][_0x4b1c05(0x41c,0x396)]();}}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace[_0x5deefe(-0x161,-0x155)];class WindParticlesRendering{constructor(_0xf80523,_0x4b719b,_0x287a9b,_0x117a4){this['context']=_0xf80523,this[_0x312435(-0x50,-0x32)]=_0x4b719b;function _0x793155(_0x562e8c,_0x47ec71){return _0x5e9d7c(_0x47ec71- -0x348,_0x562e8c);}function _0x312435(_0x1e99b3,_0x4cb214){return _0x5e9d7c(_0x1e99b3- -0x62a,_0x4cb214);}this[_0x312435(-0x62,-0x4b)]=_0x287a9b,this['computing']=_0x117a4,(typeof this[_0x793155(0x289,0x292)][_0x793155(0x218,0x21e)]!=='number'||this[_0x312435(-0x50,-0x6e)]['particlesTextureSize']<=0x0)&&(console['error']('Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.'),this['options'][_0x793155(0x278,0x21e)]=0x100),this['colorTable']=this[_0x793155(0x2c0,0x2c5)](),this['textures']=this['createRenderingTextures'](),this[_0x312435(-0x45,-0x54)]=this['createRenderingFramebuffers'](),this['primitives']=this['createPrimitives']();}['createRenderingTextures'](){const _0x1a2ce2={};_0x1a2ce2['context']=this['context'],_0x1a2ce2['width']=this['context'][_0x27f2bb(0x3dc,0x39a)],_0x1a2ce2[_0x2fd8cf(0x1,0x4b)]=this['context']['drawingBufferHeight'],_0x1a2ce2[_0x27f2bb(0x3e7,0x3b2)]=PixelFormat[_0x27f2bb(0x43a,0x45c)],_0x1a2ce2['pixelDatatype']=PixelDatatype['UNSIGNED_BYTE'];function _0x27f2bb(_0xa461c6,_0x51c950){return _0x5e9d7c(_0xa461c6- -0x189,_0x51c950);}const _0x2eaad7=_0x1a2ce2,_0x43c1f4={};_0x43c1f4[_0x2fd8cf(0x4,0x39)]=this[_0x2fd8cf(0xaf,0x39)];function _0x2fd8cf(_0x1e519b,_0x226b3a){return _0x5deefe(_0x226b3a-0x1a3,_0x1e519b);}_0x43c1f4[_0x2fd8cf(-0x84,-0xb4)]=this[_0x27f2bb(0x48c,0x507)]['drawingBufferWidth'],_0x43c1f4['height']=this[_0x2fd8cf(0x34,0x39)]['drawingBufferHeight'],_0x43c1f4['pixelFormat']=PixelFormat[_0x2fd8cf(-0xc7,-0x87)],_0x43c1f4['pixelDatatype']=PixelDatatype[_0x27f2bb(0x496,0x48c)];const _0xe14593=_0x43c1f4;return{'segmentsColor':new Texture(_0x2eaad7),'segmentsDepth':new Texture(_0xe14593)};}[_0x5e9d7c(0x61c,0x5a4)](){const _0xb3590a={};function _0xb1dd9a(_0x43c04b,_0x1a1ace){return _0x5e9d7c(_0x43c04b- -0x25a,_0x1a1ace);}function _0xb34eda(_0x4d7686,_0x7db93c){return _0x5deefe(_0x4d7686-0x6d,_0x7db93c);}return _0xb3590a[_0xb1dd9a(0x3bb,0x384)]=this[_0xb1dd9a(0x3bb,0x3de)],_0xb3590a[_0xb1dd9a(0x3a9,0x344)]=[this['textures']['segmentsColor']],_0xb3590a['depthTexture']=this[_0xb1dd9a(0x378,0x32d)][_0xb1dd9a(0x2c9,0x31b)],{'segments':new Framebuffer(_0xb3590a)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x125604=>{_0x125604['destroy']();});}['createColorTableTexture'](){const _0x38bce6=new Float32Array(this['options']['colors'][_0x56b6ba(0x509,0x510)](_0x30f500=>{function _0x5c9d39(_0x48f21b,_0x2aa68b){return _0x56b6ba(_0x48f21b,_0x2aa68b- -0x58f);}const _0x2a20c9=Color$1['fromCssColorString'](_0x30f500);function _0x410a2e(_0x113c34,_0x3c1d50){return _0x56b6ba(_0x3c1d50,_0x113c34- -0x702);}return[_0x2a20c9['red'],_0x2a20c9[_0x5c9d39(-0xbd,-0xe1)],_0x2a20c9[_0x5c9d39(-0x112,-0xf3)],_0x2a20c9[_0x410a2e(-0x259,-0x255)]];})),_0x1076da={};_0x1076da['minificationFilter']=TextureMinificationFilter[_0x56b6ba(0x56e,0x50e)],_0x1076da[_0x245c26(0x1e0,0x1c5)]=TextureMagnificationFilter['LINEAR'],_0x1076da[_0x56b6ba(0x513,0x48d)]=TextureWrap[_0x245c26(0x247,0x1f2)];function _0x56b6ba(_0x324289,_0x31d171){return _0x5e9d7c(_0x31d171- -0x8d,_0x324289);}function _0x245c26(_0x151586,_0x592fec){return _0x5e9d7c(_0x592fec- -0x399,_0x151586);}return _0x1076da[_0x245c26(0x126,0x187)]=TextureWrap['CLAMP_TO_EDGE'],new Texture({'context':this['context'],'width':this[_0x245c26(0x21c,0x241)]['colors'][_0x245c26(0x184,0x1ff)],'height':0x1,'pixelFormat':PixelFormat['RGBA'],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x1076da),'source':{'width':this['options']['colors'][_0x56b6ba(0x518,0x50b)],'height':0x1,'arrayBufferView':_0x38bce6}});}['createSegmentsGeometry'](){const _0x1f7acd=0x4,_0x4388d9=this[_0x3bd870(0x1df,0x16c)][_0x3bd870(0x11c,0xf8)];let _0x219e21=[];for(let _0x2d15d7=0x0;_0x2d15d7<_0x4388d9;_0x2d15d7++){for(let _0xa9fce2=0x0;_0xa9fce2<_0x4388d9;_0xa9fce2++){for(let _0x588f7d=0x0;_0x588f7d<_0x1f7acd;_0x588f7d++){_0x219e21['push'](_0x2d15d7/_0x4388d9),_0x219e21[_0x3bd870(0x164,0x16f)](_0xa9fce2/_0x4388d9);}}}_0x219e21=new Float32Array(_0x219e21);const _0x1eb182=this[_0x1ef04e(-0x92,-0xb1)]['particlesTextureSize']**0x2;let _0x54f146=[];for(let _0x41a930=0x0;_0x41a930<_0x1eb182;_0x41a930++){_0x54f146[_0x1ef04e(-0x8f,-0x117)](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x54f146=new Float32Array(_0x54f146);let _0x43d917=[];for(let _0x904ee2=0x0,_0x341e28=0x0;_0x904ee2<_0x1eb182;_0x904ee2++){_0x43d917[_0x3bd870(0xf2,0x16f)](_0x341e28+0x0,_0x341e28+0x1,_0x341e28+0x2,_0x341e28+0x2,_0x341e28+0x1,_0x341e28+0x3),_0x341e28+=_0x1f7acd;}_0x43d917=new Uint32Array(_0x43d917);const _0x1d9a85={};_0x1d9a85['componentDatatype']=ComponentDatatype['FLOAT'],_0x1d9a85['componentsPerAttribute']=0x2,_0x1d9a85[_0x3bd870(0x122,0xc6)]=_0x219e21;function _0x1ef04e(_0x832fa,_0x5eeaa7){return _0x5e9d7c(_0x832fa- -0x66c,_0x5eeaa7);}const _0x433c29={};_0x433c29['componentDatatype']=ComponentDatatype[_0x3bd870(0x1a6,0x11b)];function _0x3bd870(_0xdaab59,_0x49b850){return _0x5e9d7c(_0x49b850- -0x46e,_0xdaab59);}_0x433c29[_0x1ef04e(-0x13e,-0x1b7)]=0x3,_0x433c29['values']=_0x54f146;const _0x5661ae=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x1d9a85),'normal':new GeometryAttribute(_0x433c29)}),'indices':_0x43d917});return _0x5661ae;}['createRawRenderState'](_0x8da0ca){const _0x10e8b7={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x8da0ca};return Appearance['getDefaultRenderState'](!![],![],_0x10e8b7);}['createPrimitives'](){function _0x2c853d(_0x385a91,_0x1c6817){return _0x5deefe(_0x1c6817-0x6ea,_0x385a91);}const _0x23a0eb={};_0x23a0eb['st']=0x0,_0x23a0eb[_0x2c853d(0x50e,0x54a)]=0x1;const _0x1c127b={};_0x1c127b['enabled']=!![];const _0x168aa9={};_0x168aa9['enabled']=!![],_0x168aa9[_0x2ccc7b(0x58a,0x5a4)]=WebGLRenderingContext[_0x2c853d(0x4ec,0x555)],_0x168aa9['blendFuncSource']=WebGLRenderingContext['SRC_ALPHA'],_0x168aa9['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x2b60b8={};_0x2b60b8['viewport']=undefined,_0x2b60b8['depthTest']=_0x1c127b;function _0x2ccc7b(_0x378bfe,_0x118fe2){return _0x5e9d7c(_0x118fe2- -0x21,_0x378bfe);}_0x2b60b8['depthMask']=!![],_0x2b60b8['blending']=_0x168aa9;const _0x18cc15=new CustomPrimitive({'commandType':_0x2c853d(0x4d3,0x546),'attributeLocations':_0x23a0eb,'geometry':this[_0x2ccc7b(0x5ae,0x5e1)](),'primitiveType':PrimitiveType['TRIANGLES'],'uniformMap':{'previousParticlesPosition':()=>this['computing'][_0x2ccc7b(0x545,0x5c0)]['previousParticlesPosition'],'currentParticlesPosition':()=>this[_0x2ccc7b(0x4d8,0x51b)]['particlesTextures']['currentParticlesPosition'],'postProcessingPosition':()=>this['computing']['particlesTextures'][_0x2c853d(0x43f,0x498)],'particlesSpeed':()=>this['computing'][_0x2ccc7b(0x5f5,0x5c0)]['particlesSpeed'],'frameRateAdjustment':()=>this['computing']['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{function _0xd04489(_0x1ff2c2,_0x1a5a1d){return _0x2c853d(_0x1ff2c2,_0x1a5a1d-0x58);}var _0x14cf8e,_0x510447;function _0x2d1178(_0x11b5f1,_0x439b08){return _0x2ccc7b(_0x11b5f1,_0x439b08- -0x611);}const _0x2bf542=new Cartesian2(((_0x14cf8e=this[_0x2d1178(-0xb2,-0x58)]['domain'])===null||_0x14cf8e===void 0x0?void 0x0:_0x14cf8e['min'])??this[_0x2d1178(-0x155,-0xf6)]['windData'][_0x2d1178(-0xc7,-0xfd)][_0xd04489(0x521,0x4fb)],((_0x510447=this[_0xd04489(0x588,0x59d)][_0xd04489(0x4e9,0x567)])===null||_0x510447===void 0x0?void 0x0:_0x510447['max'])??this[_0xd04489(0x538,0x4ff)]['windData']['speed']['max']);return _0x2bf542;},'displayRange':()=>{function _0x2aa9e3(_0xaa2eba,_0x5a2c7d){return _0x2ccc7b(_0x5a2c7d,_0xaa2eba- -0x25);}var _0x16a244,_0x37ae4c;const _0xc35c9a=new Cartesian2(((_0x16a244=this['options']['displayRange'])===null||_0x16a244===void 0x0?void 0x0:_0x16a244['min'])??this['computing'][_0x2aa9e3(0x53e,0x54a)][_0x2aa9e3(0x4ef,0x539)]['min'],((_0x37ae4c=this[_0x3acf13(0x1e0,0x1f9)][_0x2aa9e3(0x551,0x5b4)])===null||_0x37ae4c===void 0x0?void 0x0:_0x37ae4c[_0x3acf13(0x1c1,0x1b5)])??this[_0x3acf13(0x1a4,0x15b)][_0x3acf13(0x126,0x1a3)][_0x3acf13(0x1d8,0x154)][_0x3acf13(0x1e6,0x1b5)]);function _0x3acf13(_0x4f0800,_0x2681be){return _0x2c853d(_0x4f0800,_0x2681be- -0x34c);}return _0xc35c9a;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x2ccc7b(0x5f4,0x5f4)][_0x2c853d(0x548,0x4d0)]/this[_0x2c853d(0x550,0x580)]['drawingBufferHeight'],'pixelSize':()=>this['viewerParameters']['pixelSize'],'lineWidth':()=>{const _0x1b4c81={};_0x1b4c81['min']=0x1,_0x1b4c81['max']=0x2;const _0x5a0cf9=this['options']['lineWidth']||_0x1b4c81;function _0x3960b0(_0x59057c,_0x3eef8f){return _0x2ccc7b(_0x3eef8f,_0x59057c- -0x5d);}return new Cartesian2(_0x5a0cf9[_0x3960b0(0x4ba,0x505)],_0x5a0cf9['max']);},'lineLength':()=>{const _0x452e6b={};function _0x16f6c8(_0x2c9de3,_0x416db0){return _0x2ccc7b(_0x2c9de3,_0x416db0- -0x148);}_0x452e6b['min']=0x14;function _0x2a00ef(_0x22ae63,_0xfe6bc9){return _0x2c853d(_0xfe6bc9,_0x22ae63- -0x710);}_0x452e6b['max']=0x64;const _0x34f79d=this['options'][_0x2a00ef(-0x1d6,-0x239)]||_0x452e6b;return new Cartesian2(_0x34f79d['min'],_0x34f79d[_0x2a00ef(-0x20f,-0x1a8)]);},'is3D':()=>this['viewerParameters']['sceneMode']===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this['textures'][_0x2c853d(0x4e7,0x48e)]},'vertexShaderSource':ShaderManager[_0x2c853d(0x582,0x4fa)](),'fragmentShaderSource':ShaderManager[_0x2ccc7b(0x60e,0x5bb)](),'rawRenderState':this['createRawRenderState'](_0x2b60b8)}),_0x876f82={};return _0x876f82['segments']=_0x18cc15,_0x876f82;}[_0x5e9d7c(0x583,0x5e4)](){const _0x11c577=this[_0x348038(-0x7b,-0xa8)]();this[_0x348038(-0x14d,-0x106)][_0x4403db(-0x155,-0x18d)]['geometry']=_0x11c577;const _0x4c6a78={};function _0x348038(_0x2c19a3,_0x405e60){return _0x5deefe(_0x2c19a3-0x102,_0x405e60);}_0x4c6a78['context']=this['context'],_0x4c6a78['geometry']=_0x11c577,_0x4c6a78['attributeLocations']=this[_0x4403db(-0x1a1,-0x147)]['segments']['attributeLocations'],_0x4c6a78[_0x4403db(-0x170,-0x16c)]=BufferUsage[_0x4403db(-0xd3,-0x65)];const _0x3033d4=VertexArray['fromGeometry'](_0x4c6a78);function _0x4403db(_0x367625,_0x249719){return _0x5e9d7c(_0x367625- -0x6d1,_0x249719);}this['primitives']['segments']['commandToExecute']&&(this['primitives']['segments']['commandToExecute']['vertexArray']=_0x3033d4);}[_0x5e9d7c(0x5ac,0x5cb)](){this[_0x48e39d(-0x10b,-0x12d)]['destroy']();function _0x3fd61d(_0x39de41,_0x1650df){return _0x5deefe(_0x39de41-0x2b4,_0x1650df);}function _0x48e39d(_0x3288c4,_0x2e5f0a){return _0x5e9d7c(_0x3288c4- -0x6fb,_0x2e5f0a);}this[_0x3fd61d(0x125,0x143)]=this['createColorTableTexture']();}['updateOptions'](_0xf9080d){const _0x504dbf=_0xf9080d['colors']&&JSON['stringify'](_0xf9080d[_0x14725f(0x234,0x2af)])!==JSON['stringify'](this['options']['colors']);function _0x14725f(_0x1fe3e5,_0x3a3526){return _0x5deefe(_0x3a3526-0x4ac,_0x1fe3e5);}this['options']=deepMerge(_0xf9080d,this['options']),_0x504dbf&&this['onColorTableChange']();}[_0x5deefe(-0x1aa,-0x22c)](){Object[_0x13ea0b(-0x180,-0x1cf)](this[_0x53958d(0x59d,0x57b)])[_0x53958d(0x541,0x536)](_0x4f0077=>{_0x4f0077['destroy']();});function _0x53958d(_0x340199,_0x40f012){return _0x5e9d7c(_0x40f012- -0x6a,_0x340199);}Object['values'](this['primitives'])[_0x13ea0b(-0x170,-0x163)](_0x3298c6=>{_0x3298c6['destroy']();});function _0x13ea0b(_0x4288d3,_0x5a5b9a){return _0x5deefe(_0x5a5b9a-0x7c,_0x4288d3);}this['colorTable']['destroy']();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0x5deefe(-0x161,-0x1b3)];class WindParticleSystem{constructor(_0x2db346,_0x5a09e7,_0x129a22,_0x3ee201,_0x293ee9){this['context']=_0x2db346,this[_0x17e729(-0x123,-0xa7)]=_0x129a22,this['viewerParameters']=_0x3ee201,this[_0x17e729(-0x1c1,-0x1c1)]=new WindParticlesComputing(_0x2db346,_0x5a09e7,_0x129a22,_0x3ee201,_0x293ee9);function _0x15c65f(_0x2531d3,_0x1ac6f6){return _0x5e9d7c(_0x1ac6f6- -0x77e,_0x2531d3);}this['rendering']=new WindParticlesRendering(_0x2db346,_0x129a22,_0x3ee201,this['computing']);function _0x17e729(_0x2921d4,_0x3fd4af){return _0x5e9d7c(_0x2921d4- -0x6fd,_0x3fd4af);}this['clearFramebuffers']();}['getPrimitives'](){function _0x29559e(_0x536fd7,_0x210536){return _0x5e9d7c(_0x210536- -0x285,_0x536fd7);}function _0x16e605(_0x5841f3,_0x578696){return _0x5deefe(_0x578696-0x73f,_0x5841f3);}const _0x571f54=[this['computing']['primitives'][_0x16e605(0x555,0x50a)],this['computing'][_0x16e605(0x549,0x4f0)][_0x16e605(0x5b8,0x5cc)],this['computing']['primitives']['postProcessingPosition'],this[_0x16e605(0x558,0x4d3)][_0x16e605(0x487,0x4f0)]['segments']];return _0x571f54;}['clearFramebuffers'](){const _0x1d8648=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});Object['keys'](this['rendering']['framebuffers'])['forEach'](_0x4090a2=>{function _0x5ee98c(_0x53e90b,_0x4516e9){return _0x3249(_0x4516e9- -0x287,_0x53e90b);}_0x1d8648[_0xf21513(0x20e,0x22a)]=this[_0xf21513(0x225,0x1db)][_0x5ee98c(-0x4d,-0x5f)][_0x4090a2];function _0xf21513(_0x2d92fa,_0x36e522){return _0x3249(_0x36e522-0x85,_0x2d92fa);}_0x1d8648['execute'](this[_0x5ee98c(0x38,-0x2f)]);});}[_0x5deefe(-0x1bb,-0x190)](_0x7b0929){function _0x223be8(_0x497f2f,_0x1523e3){return _0x5e9d7c(_0x1523e3- -0x26d,_0x497f2f);}let _0x2aa763=![];_0x7b0929[_0x223be8(0x2e8,0x2f9)]&&this[_0x223be8(0x3f6,0x36d)][_0x4d31e1(0x1a5,0x21e)]!==_0x7b0929[_0x223be8(0x365,0x2f9)]&&(_0x2aa763=!![]);const _0x2bf711=deepMerge(_0x7b0929,this[_0x223be8(0x308,0x36d)]);if(_0x2bf711['particlesTextureSize']<0x1)throw new Error(_0x4d31e1(0x2c6,0x2b5));this['options']=_0x2bf711,this[_0x4d31e1(0x236,0x1cb)]['updateOptions'](_0x7b0929);function _0x4d31e1(_0x42fe4e,_0x2c6930){return _0x5deefe(_0x2c6930-0x437,_0x42fe4e);}this[_0x223be8(0x2a8,0x2cf)]['updateOptions'](_0x7b0929),_0x2aa763&&(this[_0x223be8(0x2b1,0x2cf)][_0x223be8(0x2bc,0x2d5)](),this['computing']['createParticlesTextures'](),this['rendering'][_0x223be8(0x2ad,0x316)]());}[_0x5deefe(-0x1b9,-0x1c1)](_0x8c6ae7){function _0x7f7320(_0x3d6dd0,_0x3e5188){return _0x5e9d7c(_0x3e5188- -0x6ec,_0x3d6dd0);}this['viewerParameters']=_0x8c6ae7;function _0x490184(_0x31c7e2,_0x4ce3c8){return _0x5deefe(_0x4ce3c8-0x45,_0x31c7e2);}this['computing'][_0x490184(-0x13c,-0x172)]=_0x8c6ae7,this[_0x490184(-0x23e,-0x227)]['viewerParameters']=_0x8c6ae7;}[_0x5e9d7c(0x5d5,0x64f)](){function _0x3fa14f(_0x4694a0,_0x8e0444){return _0x5e9d7c(_0x4694a0- -0x5ca,_0x8e0444);}this[_0x4d3b60(0x56e,0x4ee)]['destroy']();function _0x4d3b60(_0x2913f1,_0x56e28a){return _0x5e9d7c(_0x56e28a- -0x4e,_0x2913f1);}this[_0x4d3b60(0x47e,0x4c5)]['destroy']();}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer'][_0x5deefe(-0x26d,-0x22c)],_0x4bf303={};_0x4bf303['min']=0x1,_0x4bf303[_0x5deefe(-0x1e9,-0x266)]=0x2;const _0x196bc2={};_0x196bc2[_0x5deefe(-0x247,-0x283)]=0x14,_0x196bc2[_0x5deefe(-0x1e9,-0x21d)]=0x64;const _0x34576d={};_0x34576d['particlesTextureSize']=0x64,_0x34576d['fixedHeight']=0x0,_0x34576d['lineWidth']=_0x4bf303,_0x34576d[_0x5deefe(-0x1b0,-0x1e0)]=_0x196bc2,_0x34576d[_0x5e9d7c(0x5b7,0x62f)]=0x1;function _0x5deefe(_0x5e716a,_0x4f2e78){return _0x3249(_0x5e716a- -0x3c2,_0x4f2e78);}_0x34576d['dropRate']=0.003,_0x34576d['dropRateBump']=0.001,_0x34576d[_0x5e9d7c(0x582,0x515)]=[_0x5deefe(-0x19d,-0x157)],_0x34576d['flipY']=![],_0x34576d['dynamic']=!![];const DEF_OPTIONS=_0x34576d;class WindLayer extends BaseLayer$1{constructor(_0x56ca13={}){_0x56ca13={...DEF_OPTIONS,..._0x56ca13},super(_0x56ca13);function _0x5a9a39(_0x4d6d9c,_0x589e3d){return _0x5deefe(_0x4d6d9c- -0x15,_0x589e3d);}this[_0x5a9a39(-0x26e,-0x20c)](_0x56ca13,_0x56ca13);}get['layer'](){return this['primitives'];}get['data'](){function _0x49989f(_0x370f0a,_0x1ae28a){return _0x5e9d7c(_0x370f0a- -0x6d5,_0x1ae28a);}return this['options'][_0x49989f(-0x185,-0x203)];}set['data'](_0x3e1382){this['options']['data']=_0x3e1382,this['setData'](_0x3e1382);}get[_0x5e9d7c(0x582,0x552)](){return this['options']['colors'];}set['colors'](_0x553fbf){this[_0x318f37(0x544,0x569)][_0x318f37(0x4ec,0x513)]=_0x553fbf;function _0x4804f9(_0xc0beb9,_0x40186d){return _0x5e9d7c(_0x40186d- -0x46b,_0xc0beb9);}const _0x425485={};function _0x318f37(_0x43ccc1,_0x5a5882){return _0x5e9d7c(_0x43ccc1- -0x96,_0x5a5882);}_0x425485['colors']=_0x553fbf,this['_setOptionsHook'](this['options'],_0x425485);}[_0x5e9d7c(0x5a1,0x5ed)](_0xa5d87d){_0xa5d87d?this['_addedHook']():this['_removedHook']();}[_0x5deefe(-0x1cb,-0x1b9)](){}[_0x5deefe(-0x1af,-0x1c5)](){this[_0x49c456(0x35,-0x10)]=this['_map']['scene'],this['camera']=this[_0x19f555(-0x2b,-0x72)][_0x19f555(0xe2,0x5c)];this['options'][_0x49c456(0x5a,0x6)]&&this['setData'](this[_0x49c456(0xd5,0x90)]['data']);if(!this['windData']||!this[_0x19f555(0x3,0x4e)])return;this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](-0xb4,0xb4),'latRange':new Cesium$1[(_0x19f555(0x1,0x27))](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this['scene']['mode']},this[_0x49c456(0xa3,0x2f)]();function _0x49c456(_0x610e62,_0x45ef4a){return _0x5e9d7c(_0x45ef4a- -0x54a,_0x610e62);}this[_0x49c456(-0x28,-0x26)]=new WindParticleSystem(this[_0x49c456(0x3c,-0x10)]['context'],this[_0x19f555(0x1b,-0x4)],this['options'],this['viewerParameters'],this[_0x49c456(0x30,-0x10)]),this['primitives']=this[_0x49c456(-0x82,-0x26)]['getPrimitives'](),this['primitives']['forEach'](_0x598092=>{function _0x57b3da(_0x5b478e,_0x1d23c7){return _0x19f555(_0x1d23c7,_0x5b478e- -0x195);}this['scene'][_0x57b3da(-0x1ed,-0x212)]['add'](_0x598092);}),this[_0x19f555(0x5e,0x5c)]['percentageChanged']=0.01,this['camera']['changed']['addEventListener'](this['updateViewerParameters'][_0x19f555(0x61,0x2)](this)),this[_0x19f555(0x11,-0x4e)][_0x19f555(-0x1a,-0x67)][_0x49c456(-0x7e,-0x32)](this[_0x19f555(0x5a,-0xf)]['bind'](this));function _0x19f555(_0x3d2276,_0x2461df){return _0x5deefe(_0x2461df-0x1f7,_0x3d2276);}window[_0x49c456(0x28,-0x32)]('resize',this['updateViewerParameters']['bind'](this));}['_removedHook'](){function _0xbef01d(_0x3d31cc,_0x5c439a){return _0x5deefe(_0x3d31cc-0x322,_0x5c439a);}this['camera'][_0xbef01d(0x1bc,0x215)][_0x1708f4(0x599,0x614)](this[_0x1708f4(0x58d,0x5ed)][_0xbef01d(0x12d,0xc9)](this)),this[_0xbef01d(0xdd,0x13a)]['morphComplete'][_0x1708f4(0x599,0x563)](this[_0x1708f4(0x58d,0x5d0)][_0x1708f4(0x59e,0x5e3)](this)),window['removeEventListener']('resize',this[_0x1708f4(0x58d,0x5d7)][_0x1708f4(0x59e,0x5a9)](this));this['primitives']&&(this[_0xbef01d(0xd3,0x78)]['forEach'](_0x4efd3e=>{function _0x525a2e(_0x2dfba0,_0x5effc7){return _0x1708f4(_0x5effc7- -0x12d,_0x2dfba0);}function _0x46c640(_0x12dab2,_0x47d226){return _0xbef01d(_0x12dab2-0x39f,_0x47d226);}this['scene'][_0x525a2e(0x3b8,0x417)][_0x525a2e(0x57b,0x4fe)](_0x4efd3e);}),delete this['primitives']);function _0x1708f4(_0x4df9fd,_0x5260d8){return _0x5e9d7c(_0x4df9fd-0x14,_0x5260d8);}this[_0x1708f4(0x538,0x525)]&&(this[_0x1708f4(0x538,0x574)][_0xbef01d(0x178,0x1f7)](),delete this['particleSystem']);}[_0x5e9d7c(0x5d1,0x59e)](_0x3446b3,_0x154dd6){function _0x1a8b04(_0x29c2b2,_0x13260e){return _0x5e9d7c(_0x13260e- -0x23,_0x29c2b2);}this['windData']=this['processWindData'](_0x3446b3);if(_0x154dd6){this['_removedHook'](),this[_0x1a8b04(0x626,0x5ad)]();return;}function _0x3ad14b(_0x4ed612,_0x4b68bf){return _0x5e9d7c(_0x4ed612- -0x84,_0x4b68bf);}this[_0x1a8b04(0x56b,0x501)]?(this[_0x1a8b04(0x4e9,0x501)]['computing'][_0x3ad14b(0x4e9,0x468)](this['windData']),this['scene']['requestRender']()):this['_addedHook']();}['_setOptionsHook'](_0x2a53c0,_0x28470a){function _0x3d2725(_0x1fed34,_0x103058){return _0x5e9d7c(_0x103058- -0x27,_0x1fed34);}function _0x9a0d77(_0x3f4f24,_0x8e3b10){return _0x5deefe(_0x8e3b10-0x79f,_0x3f4f24);}this[_0x3d2725(0x575,0x4fd)]&&(this['particleSystem']['changeOptions'](_0x28470a),this[_0x3d2725(0x48e,0x513)]['requestRender']());}['processWindData'](_0x448600){var _0x13baf4,_0x51463b;const _0x30baff={..._0x448600},_0x230010=_0x30baff;!_0x230010[_0xadca3(0x3af,0x381)]&&_0x230010[_0x587f2d(0x494,0x4bb)]&&(_0x230010['height']=_0x230010['rows']);!_0x230010[_0x587f2d(0x3f1,0x42c)]&&_0x230010['cols']&&(_0x230010['width']=_0x230010['cols']);function _0x587f2d(_0x54e9e5,_0x2e5902){return _0x5deefe(_0x54e9e5-0x648,_0x2e5902);}!_0x230010[_0xadca3(0x306,0x36c)]&&(_0x230010[_0x587f2d(0x447,0x43a)]={'west':_0x230010['xmin'],'south':_0x230010['ymin'],'east':_0x230010[_0x587f2d(0x43f,0x3db)],'north':_0x230010[_0xadca3(0x341,0x2e3)]});if(!_0x230010['u']){const _0x2ef2e7={};_0x2ef2e7['array']=_0x448600['udata'],_0x2ef2e7['min']=_0x448600['umin'],_0x2ef2e7['max']=_0x448600[_0xadca3(0x3a0,0x3b4)],_0x230010['u']=_0x2ef2e7;}function _0xadca3(_0x4851ad,_0x5e2ff4){return _0x5deefe(_0x4851ad-0x507,_0x5e2ff4);}if(!_0x230010['v']){const _0x186528={};_0x186528[_0x587f2d(0x4be,0x4ae)]=_0x448600[_0xadca3(0x2e3,0x292)],_0x186528['min']=_0x448600['vmin'],_0x186528[_0xadca3(0x31e,0x2b2)]=_0x448600['vmax'],_0x230010['v']=_0x186528;}if(((_0x13baf4=_0x230010['speed'])===null||_0x13baf4===void 0x0?void 0x0:_0x13baf4['min'])===undefined||((_0x51463b=_0x230010[_0x587f2d(0x3fe,0x436)])===null||_0x51463b===void 0x0?void 0x0:_0x51463b['max'])===undefined||_0x230010['speed']['array']===undefined){const _0x42edbf={'array':new Float32Array(_0x230010['u'][_0xadca3(0x37d,0x3f5)][_0x587f2d(0x461,0x48b)]),'min':Number[_0x587f2d(0x46c,0x441)],'max':Number['MIN_VALUE']};for(let _0x3dc568=0x0;_0x3dc568<_0x230010['u']['array'][_0x587f2d(0x461,0x4cc)];_0x3dc568++){_0x42edbf['array'][_0x3dc568]=Math[_0x587f2d(0x437,0x42b)](_0x230010['u'][_0x587f2d(0x4be,0x488)][_0x3dc568]*_0x230010['u'][_0x587f2d(0x4be,0x519)][_0x3dc568]+_0x230010['v']['array'][_0x3dc568]*_0x230010['v']['array'][_0x3dc568]),_0x42edbf['array'][_0x3dc568]!==0x0&&(_0x42edbf['min']=Math['min'](_0x42edbf['min'],_0x42edbf[_0xadca3(0x37d,0x3d2)][_0x3dc568]),_0x42edbf[_0xadca3(0x31e,0x3a2)]=Math['max'](_0x42edbf[_0x587f2d(0x45f,0x4a5)],_0x42edbf['array'][_0x3dc568]));}_0x230010['speed']=_0x42edbf;}return _0x230010;}[_0x5e9d7c(0x579,0x5cf)](){var _0x177b6b;const _0x5da6ff=this[_0x180205(0x51e,0x4b7)];function _0x180205(_0x4a3828,_0x59c8da){return _0x5e9d7c(_0x4a3828- -0x1c,_0x59c8da);}if(!_0x5da6ff)return;const _0xfead1a=_0x5da6ff[_0x189873(0xf,0x69)],_0x5de2dd={};_0x5de2dd['x']=0x0,_0x5de2dd['y']=0x0;const _0x550a28={};_0x550a28['x']=0x0,_0x550a28['y']=_0xfead1a['clientHeight'];const _0x33f936={};_0x33f936['x']=_0xfead1a[_0x189873(0x1a,0x40)],_0x33f936['y']=0x0;const _0x9b0391={};_0x9b0391['x']=_0xfead1a['clientWidth'],_0x9b0391['y']=_0xfead1a['clientHeight'];const _0x49821f=[_0x5de2dd,_0x550a28,_0x33f936,_0x9b0391];let _0xe0e071=0xb4,_0x5cb02a=-0xb4,_0x45182e=0x5a,_0x3b72b1=-0x5a,_0x50ef85=![];for(const _0x54eebe of _0x49821f){const _0x131e0b=_0x5da6ff['camera'][_0x189873(-0x24,-0xc)](new Cesium$1[(_0x180205(0x593,0x590))](_0x54eebe['x'],_0x54eebe['y']),_0x5da6ff[_0x180205(0x5b1,0x587)][_0x180205(0x537,0x4d1)]);if(!_0x131e0b){_0x50ef85=!![];break;}const _0x100584=_0x5da6ff['globe'][_0x180205(0x537,0x555)][_0x189873(-0x32,0x1e)](_0x131e0b),_0x28a61f=Cesium$1['Math']['toDegrees'](_0x100584['longitude']),_0x4cc3ad=Cesium$1[_0x180205(0x55c,0x531)][_0x189873(0x1c,0x5)](_0x100584[_0x189873(0x5c,0x61)]);_0xe0e071=Math['min'](_0xe0e071,_0x28a61f),_0x5cb02a=Math[_0x180205(0x57a,0x573)](_0x5cb02a,_0x28a61f),_0x45182e=Math['min'](_0x45182e,_0x4cc3ad),_0x3b72b1=Math[_0x180205(0x57a,0x550)](_0x3b72b1,_0x4cc3ad);}if(!_0x50ef85){const _0x3c4df1=new Cesium$1[(_0x180205(0x593,0x5c6))](Math[_0x180205(0x57a,0x572)](this['windData'][_0x189873(0xc,0x9)][_0x180205(0x529,0x540)],_0xe0e071),Math['min'](this['windData'][_0x180205(0x562,0x56e)]['east'],_0x5cb02a)),_0x52ef4f=new Cesium$1['Cartesian2'](Math['max'](this[_0x180205(0x568,0x55f)][_0x189873(0xc,0x3a)]['south'],_0x45182e),Math['min'](this['windData']['bounds'][_0x180205(0x5d3,0x61f)],_0x3b72b1)),_0x12243e=(_0x3c4df1['y']-_0x3c4df1['x'])*0.05,_0x8579be=(_0x52ef4f['y']-_0x52ef4f['x'])*0.05;_0x3c4df1['x']=Math['max'](this['windData']['bounds']['west'],_0x3c4df1['x']-_0x12243e),_0x3c4df1['y']=Math['min'](this[_0x189873(0x12,0x13)]['bounds']['east'],_0x3c4df1['y']+_0x12243e),_0x52ef4f['x']=Math['max'](this[_0x189873(0x12,-0x6d)]['bounds']['south'],_0x52ef4f['x']-_0x8579be),_0x52ef4f['y']=Math['min'](this['windData']['bounds']['north'],_0x52ef4f['y']+_0x8579be),this['viewerParameters']['lonRange']=_0x3c4df1,this[_0x180205(0x5ac,0x57e)]['latRange']=_0x52ef4f;const _0x5e473c=this[_0x180205(0x568,0x4f2)][_0x180205(0x562,0x4d9)]['east']-this[_0x189873(0x12,-0xc)][_0x189873(0xc,-0x19)]['west'],_0x33e833=this['windData'][_0x180205(0x562,0x538)][_0x180205(0x5d3,0x562)]-this[_0x180205(0x568,0x595)]['bounds'][_0x189873(0x86,0xdc)],_0x3e75e7=(_0x3c4df1['y']-_0x3c4df1['x'])/_0x5e473c,_0x1f2b9a=(_0x52ef4f['y']-_0x52ef4f['x'])/_0x33e833,_0x3e1d29=Math['min'](_0x3e75e7,_0x1f2b9a),_0xd3130e=0x3e8*_0x3e1d29;_0xd3130e>0x0&&(this['viewerParameters']['pixelSize']=Math['max'](0x0,Math[_0x189873(-0x3a,-0x62)](0x3e8,_0xd3130e)));}this['viewerParameters'][_0x180205(0x5f2,0x626)]=this[_0x189873(-0x38,-0x9f)]['mode'];function _0x189873(_0x2d5f2c,_0x3b187a){return _0x5e9d7c(_0x2d5f2c- -0x572,_0x3b187a);}(_0x177b6b=this['particleSystem'])===null||_0x177b6b===void 0x0||_0x177b6b['applyViewerParameters'](this[_0x189873(0x56,0xa4)]);}['getDataAtLonLat'](_0x1bb484,_0x79d7c){const {bounds:_0x34a497,width:_0x3ead99,height:_0x28ae68,u:_0x1e5a40,v:_0x402624,speed:_0x5cea37}=this['windData'],{flipY:_0x591e4e}=this[_0x1f6927(0x297,0x31f)];if(_0x1bb484<_0x34a497['west']||_0x1bb484>_0x34a497['east']||_0x79d7c<_0x34a497[_0xef72ff(0x20c,0x189)]||_0x79d7c>_0x34a497['north'])return null;const _0x4e66f9=(_0x1bb484-_0x34a497['west'])/(_0x34a497['east']-_0x34a497[_0x1f6927(0x202,0x1e9)])*(_0x3ead99-0x1);let _0x1d4cf8=(_0x79d7c-_0x34a497['south'])/(_0x34a497['north']-_0x34a497['south'])*(_0x28ae68-0x1);function _0xef72ff(_0x5a4b80,_0x3c41db){return _0x5deefe(_0x5a4b80-0x393,_0x3c41db);}_0x591e4e&&(_0x1d4cf8=_0x28ae68-0x1-_0x1d4cf8);const _0x56b33c=Math['floor'](_0x4e66f9),_0x163cb4=Math['floor'](_0x1d4cf8);function _0x1f6927(_0x4d392f,_0x29b151){return _0x5e9d7c(_0x4d392f- -0x343,_0x29b151);}const _0x54e600=Math['floor'](_0x4e66f9),_0x1e6818=Math['min'](_0x54e600+0x1,_0x3ead99-0x1),_0x5d677f=Math[_0xef72ff(0x155,0x194)](_0x1d4cf8),_0x16a8a1=Math[_0x1f6927(0x1f5,0x1cf)](_0x5d677f+0x1,_0x28ae68-0x1),_0x322a7a=_0x4e66f9-_0x54e600,_0x1ec159=_0x1d4cf8-_0x5d677f,_0x3b066d=_0x163cb4*_0x3ead99+_0x56b33c,_0x2c6f75=_0x5d677f*_0x3ead99+_0x54e600,_0x4b29f7=_0x5d677f*_0x3ead99+_0x1e6818,_0x4e5b96=_0x16a8a1*_0x3ead99+_0x54e600,_0x160357=_0x16a8a1*_0x3ead99+_0x1e6818,_0x5f0d4a=_0x1e5a40[_0x1f6927(0x2b2,0x2d3)][_0x2c6f75],_0x164476=_0x1e5a40['array'][_0x4b29f7],_0x282fa7=_0x1e5a40['array'][_0x4e5b96],_0x8e744f=_0x1e5a40[_0xef72ff(0x209,0x1d3)][_0x160357],_0x29bb28=(0x1-_0x322a7a)*(0x1-_0x1ec159)*_0x5f0d4a+_0x322a7a*(0x1-_0x1ec159)*_0x164476+(0x1-_0x322a7a)*_0x1ec159*_0x282fa7+_0x322a7a*_0x1ec159*_0x8e744f,_0x45799b=_0x402624['array'][_0x2c6f75],_0x2a9c2b=_0x402624['array'][_0x4b29f7],_0xd7961f=_0x402624[_0xef72ff(0x209,0x18a)][_0x4e5b96],_0x28f8cc=_0x402624['array'][_0x160357],_0x58fa2d=(0x1-_0x322a7a)*(0x1-_0x1ec159)*_0x45799b+_0x322a7a*(0x1-_0x1ec159)*_0x2a9c2b+(0x1-_0x322a7a)*_0x1ec159*_0xd7961f+_0x322a7a*_0x1ec159*_0x28f8cc,_0x2b7826=Math[_0xef72ff(0x182,0x131)](_0x29bb28*_0x29bb28+_0x58fa2d*_0x58fa2d),_0x25874d={};_0x25874d['u']=_0x1e5a40['array'][_0x3b066d],_0x25874d['v']=_0x402624[_0x1f6927(0x2b2,0x2fa)][_0x3b066d],_0x25874d['speed']=_0x5cea37[_0xef72ff(0x209,0x19b)][_0x3b066d];const _0x2d29ae={};_0x2d29ae['u']=_0x29bb28,_0x2d29ae['v']=_0x58fa2d,_0x2d29ae['speed']=_0x2b7826;const _0x43ac70={};return _0x43ac70['original']=_0x25874d,_0x43ac70[_0xef72ff(0x189,0x200)]=_0x2d29ae,_0x43ac70;}}mars3d__namespace[_0x5deefe(-0x22b,-0x286)]['register']('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null;function _0x30e0cc(_0x4bb564,_0x2f1158){return _0x5e9d7c(_0x2f1158- -0xe0,_0x4bb564);}this[_0x30e0cc(0x44a,0x49d)]=null,this['tlng']=null,this[_0x312890(0x32a,0x39b)]=null;function _0x312890(_0x548fa,_0xd03d63){return _0x5e9d7c(_0xd03d63- -0x1cc,_0x548fa);}this['age']=null,this[_0x312890(0x3e2,0x369)]=null;}['destroy'](){for(const _0x12c5a9 in this){delete this[_0x12c5a9];}}}class CanvasWindField{constructor(_0x52b0fe){this['setOptions'](_0x52b0fe);}get[_0x5deefe(-0x176,-0x148)](){return this['_speedRate'];}set['speedRate'](_0x3220f2){function _0x481895(_0x3767a8,_0x50b89a){return _0x5e9d7c(_0x3767a8- -0x172,_0x50b89a);}this[_0x43b0e7(-0x1b1,-0x14e)]=(0x64-(_0x3220f2>0x63?0x63:_0x3220f2))*0x64;function _0x43b0e7(_0x140d32,_0x1a809c){return _0x5e9d7c(_0x1a809c- -0x727,_0x140d32);}this[_0x481895(0x3eb,0x3af)]=[(this['xmax']-this[_0x43b0e7(-0x142,-0x117)])/this[_0x481895(0x467,0x3dd)],(this['ymax']-this['ymin'])/this[_0x43b0e7(-0x11b,-0x14e)]];}get[_0x5deefe(-0x1c9,-0x15c)](){return this['_maxAge'];}set[_0x5e9d7c(0x5b6,0x5ad)](_0x1c9b35){function _0xc189df(_0x3b3006,_0x57be05){return _0x5e9d7c(_0x57be05- -0x143,_0x3b3006);}this[_0xc189df(0x392,0x3ec)]=_0x1c9b35;}['setOptions'](_0x12405f){this[_0x421d2e(0x3f9,0x42c)]=_0x12405f,this[_0x421d2e(0x386,0x408)]=_0x12405f[_0x3ac770(-0x9b,-0x7e)]||0x78,this[_0x421d2e(0x443,0x45b)]=_0x12405f['speedRate']||0x32,this[_0x3ac770(-0x2d,-0x6f)]=[];function _0x421d2e(_0x477dfa,_0x297e1b){return _0x5e9d7c(_0x297e1b- -0x1ae,_0x477dfa);}function _0x3ac770(_0x30e447,_0x342a80){return _0x5deefe(_0x30e447-0x12e,_0x342a80);}const _0x2ff9c=_0x12405f['particlesNumber']||0x1000;for(let _0x54a190=0x0;_0x54a190<_0x2ff9c;_0x54a190++){const _0x354a83=this[_0x3ac770(-0xf7,-0x105)](new CanvasParticle());this[_0x3ac770(-0x2d,-0x61)]['push'](_0x354a83);}}[_0x5deefe(-0x184,-0x137)](_0x5786c0){this['rows']=_0x5786c0['rows'],this[_0x1a9889(0x5a3,0x569)]=_0x5786c0[_0x1a9889(0x5a3,0x5af)];function _0x38b981(_0x4aaa58,_0x282b0a){return _0x5e9d7c(_0x4aaa58- -0x503,_0x282b0a);}this['xmin']=_0x5786c0['xmin'],this[_0x1a9889(0x527,0x51d)]=_0x5786c0['xmax'],this['ymin']=_0x5786c0[_0x38b981(0xbc,0x135)],this[_0x38b981(0xb6,0x48)]=_0x5786c0[_0x1a9889(0x56a,0x508)],this[_0x1a9889(0x557,0x551)]=[];const _0x3c18c3=_0x5786c0[_0x38b981(0x77,0xcc)],_0x4989e7=_0x5786c0['vdata'];let _0x4b0725=![];function _0x1a9889(_0x4ae5a7,_0x4158f3){return _0x5deefe(_0x4ae5a7-0x730,_0x4158f3);}_0x3c18c3[_0x38b981(0x95,0x28)]===this[_0x1a9889(0x57c,0x577)]&&_0x3c18c3[0x0][_0x1a9889(0x549,0x53c)]===this['cols']&&(_0x4b0725=!![]);let _0x38ebba=0x0,_0x193826=null,_0x1c9675=null;for(let _0x27434e=0x0;_0x27434e<this['rows'];_0x27434e++){_0x193826=[];for(let _0x402978=0x0;_0x402978<this[_0x38b981(0xef,0xf5)];_0x402978++,_0x38ebba++){_0x4b0725?_0x1c9675=this['_calcUV'](_0x3c18c3[_0x27434e][_0x402978],_0x4989e7[_0x27434e][_0x402978]):_0x1c9675=this['_calcUV'](_0x3c18c3[_0x38ebba],_0x4989e7[_0x38ebba]),_0x193826[_0x38b981(0xda,0x12a)](_0x1c9675);}this['grid']['push'](_0x193826);}!this[_0x38b981(0xd7,0xab)]['flipY']&&this['grid']['reverse']();}['clear'](){delete this['rows'];function _0x337dba(_0x284b4b,_0x41ab9b){return _0x5deefe(_0x41ab9b-0x78c,_0x284b4b);}delete this[_0x337dba(0x681,0x5ff)];function _0x1e1b50(_0x4fbdf6,_0xb07d65){return _0x5deefe(_0xb07d65-0x350,_0x4fbdf6);}delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this['ymax'],delete this[_0x1e1b50(0x1f2,0x177)],delete this['particles'];}['toGridXY'](_0x58c181,_0x2d3d01){const _0x1aca49=(_0x58c181-this['xmin'])/(this['xmax']-this['xmin'])*(this['cols']-0x1);function _0x37f76c(_0x1caf80,_0x58e0d3){return _0x5e9d7c(_0x1caf80- -0x5cb,_0x58e0d3);}const _0xab607a=(this['ymax']-_0x2d3d01)/(this[_0x37f76c(-0x12,-0x96)]-this['ymin'])*(this['rows']-0x1);return[_0x1aca49,_0xab607a];}['getUVByXY'](_0x458fbd,_0x472bb7){if(_0x458fbd<0x0||_0x458fbd>=this[_0x50528d(-0xb8,-0xb7)]||_0x472bb7>=this[_0x50528d(-0xdf,-0xbe)])return[0x0,0x0,0x0];function _0x57bab0(_0x16f235,_0x1a6ad3){return _0x5deefe(_0x16f235-0x6d5,_0x1a6ad3);}const _0x5e0598=Math[_0x50528d(-0x169,-0x10d)](_0x458fbd),_0x569aaa=Math['floor'](_0x472bb7);if(_0x5e0598===_0x458fbd&&_0x569aaa===_0x472bb7)return this[_0x57bab0(0x4fc,0x534)][_0x472bb7][_0x458fbd];const _0x328fdf=_0x5e0598+0x1,_0x3fdcaa=_0x569aaa+0x1,_0x5ca419=this['getUVByXY'](_0x5e0598,_0x569aaa),_0x35c078=this['getUVByXY'](_0x328fdf,_0x569aaa),_0x468824=this['getUVByXY'](_0x5e0598,_0x3fdcaa);function _0x50528d(_0x340695,_0x27ed20){return _0x5deefe(_0x340695-0xd5,_0x27ed20);}const _0xfa7793=this['getUVByXY'](_0x328fdf,_0x3fdcaa);let _0x564ecf=null;try{_0x564ecf=this['_bilinearInterpolation'](_0x458fbd-_0x5e0598,_0x472bb7-_0x569aaa,_0x5ca419,_0x35c078,_0x468824,_0xfa7793);}catch(_0x53a126){console['log'](_0x458fbd,_0x472bb7);}return _0x564ecf;}['_bilinearInterpolation'](_0x4d75f6,_0x4853d4,_0x550e9b,_0x5c772a,_0x4ab408,_0x536156){const _0x27b44a=0x1-_0x4d75f6,_0x29d300=0x1-_0x4853d4,_0x2c4277=_0x27b44a*_0x29d300,_0x6fdbc7=_0x4d75f6*_0x29d300,_0x54889e=_0x27b44a*_0x4853d4,_0x417a1b=_0x4d75f6*_0x4853d4,_0x784d3b=_0x550e9b[0x0]*_0x2c4277+_0x5c772a[0x0]*_0x6fdbc7+_0x4ab408[0x0]*_0x54889e+_0x536156[0x0]*_0x417a1b,_0x4512dc=_0x550e9b[0x1]*_0x2c4277+_0x5c772a[0x1]*_0x6fdbc7+_0x4ab408[0x1]*_0x54889e+_0x536156[0x1]*_0x417a1b;return this['_calcUV'](_0x784d3b,_0x4512dc);}['_calcUV'](_0x2a3895,_0x37e05a){return[+_0x2a3895,+_0x37e05a,Math['sqrt'](_0x2a3895*_0x2a3895+_0x37e05a*_0x37e05a)];}['getUVByPoint'](_0x182df,_0x5c4887){function _0x5b8d2d(_0x347131,_0xa9c763){return _0x5e9d7c(_0x347131- -0x37,_0xa9c763);}if(!this[_0x5b8d2d(0x5df,0x604)](_0x182df,_0x5c4887))return null;const _0x2739ef=this[_0x1b1ca4(0x51f,0x535)](_0x182df,_0x5c4887);function _0x1b1ca4(_0x390822,_0x2bdc01){return _0x5deefe(_0x2bdc01-0x6bb,_0x390822);}const _0x49113c=this[_0x1b1ca4(0x41c,0x49b)](_0x2739ef[0x0],_0x2739ef[0x1]);return _0x49113c;}[_0x5deefe(-0x169,-0xfb)](_0x4297d3,_0x56d42c){function _0x4ce1c1(_0x559026,_0x5d7544){return _0x5e9d7c(_0x559026- -0x591,_0x5d7544);}function _0xea679b(_0x115b04,_0x5383bc){return _0x5e9d7c(_0x5383bc- -0xb7,_0x115b04);}return _0x4297d3>=this['xmin']&&_0x4297d3<=this['xmax']&&_0x56d42c>=this[_0x4ce1c1(0x2e,0x4)]&&_0x56d42c<=this[_0x4ce1c1(0x28,0x44)]?!![]:![];}['getRandomLatLng'](){function _0x1b838a(_0x433aeb,_0x47e156){return _0x5deefe(_0x47e156-0x87,_0x433aeb);}const _0x4e4a63=fRandomByfloat(this[_0x1b838a(-0x62,-0xe8)],this['xmax']),_0x1c71c1=fRandomByfloat(this['ymin'],this[_0x5de209(0x129,0xbc)]),_0x722e9a={};_0x722e9a[_0x5de209(0xed,0xf7)]=_0x1c71c1;function _0x5de209(_0x493acc,_0x5d6b60){return _0x5e9d7c(_0x493acc- -0x490,_0x5d6b60);}return _0x722e9a['lng']=_0x4e4a63,_0x722e9a;}['getParticles'](){function _0x3d30a0(_0x1281e6,_0xb2c261){return _0x5deefe(_0x1281e6-0x17b,_0xb2c261);}function _0x27fc11(_0x533086,_0x2df289){return _0x5e9d7c(_0x533086- -0x5af,_0x2df289);}let _0x370975,_0x500e6a,_0x4e29ba;for(let _0x130600=0x0,_0x2ce042=this['particles'][_0x27fc11(-0x17,0x13)];_0x130600<_0x2ce042;_0x130600++){let _0x2d076d=this['particles'][_0x130600];_0x2d076d['age']<=0x0&&(_0x2d076d=this[_0x3d30a0(-0xaa,-0x100)](_0x2d076d));if(_0x2d076d['age']>0x0){const _0x2a3cca=_0x2d076d['tlng'],_0x4a48af=_0x2d076d[_0x3d30a0(-0x9d,-0x82)];_0x4e29ba=this['getUVByPoint'](_0x2a3cca,_0x4a48af),_0x4e29ba?(_0x370975=_0x2a3cca+this['_calc_speedRate'][0x0]*_0x4e29ba[0x0],_0x500e6a=_0x4a48af+this['_calc_speedRate'][0x1]*_0x4e29ba[0x1],_0x2d076d[_0x3d30a0(-0xa4,-0x122)]=_0x2a3cca,_0x2d076d['lat']=_0x4a48af,_0x2d076d['tlng']=_0x370975,_0x2d076d[_0x27fc11(-0x48,-0x88)]=_0x500e6a,_0x2d076d['speed']=_0x4e29ba[0x2],_0x2d076d[_0x27fc11(0x4b,-0x1)]--):_0x2d076d['age']=0x0;}}return this['particles'];}['_randomParticle'](_0x3c9fd8){let _0x43b3ca,_0x26fe50;for(let _0x5aea79=0x0;_0x5aea79<0x1e;_0x5aea79++){_0x43b3ca=this['getRandomLatLng'](),_0x26fe50=this['getUVByPoint'](_0x43b3ca['lng'],_0x43b3ca['lat']);if(_0x26fe50&&_0x26fe50[0x2]>0x0)break;}if(!_0x26fe50)return _0x3c9fd8;const _0x582d5e=_0x43b3ca['lng']+this['_calc_speedRate'][0x0]*_0x26fe50[0x0],_0x4c4a68=_0x43b3ca['lat']+this['_calc_speedRate'][0x1]*_0x26fe50[0x1];_0x3c9fd8[_0xe10153(0x4b9,0x536)]=_0x43b3ca['lng'],_0x3c9fd8[_0x28d921(0x10,0x2c)]=_0x43b3ca['lat'],_0x3c9fd8[_0x28d921(0xb9,0xc5)]=_0x582d5e;function _0xe10153(_0x3cc99c,_0x39a01d){return _0x5deefe(_0x3cc99c-0x6d8,_0x39a01d);}_0x3c9fd8['tlat']=_0x4c4a68,_0x3c9fd8['age']=Math[_0xe10153(0x4d8,0x4c1)](0xa+Math['random']()*this[_0x28d921(0x49,0x3b)]),_0x3c9fd8['speed']=_0x26fe50[0x2];function _0x28d921(_0x51280a,_0x481768){return _0x5e9d7c(_0x51280a- -0x56d,_0x481768);}return _0x3c9fd8;}['destroy'](){for(const _0x1b95ea in this){delete this[_0x1b95ea];}}}function fRandomByfloat(_0x32754a,_0x5d9a0d){return _0x32754a+Math['random']()*(_0x5d9a0d-_0x32754a);}const Cesium=mars3d__namespace[_0x5e9d7c(0x61e,0x598)],BaseLayer=mars3d__namespace['layer'][_0x5deefe(-0x26d,-0x23b)];function _0x1fe0(){const _0x3404fe=['pickEllipsoid','1576506oskSeq','data','object','defineProperty','ellipsoid','LayerUtil','DEPTH_COMPONENT','pow','canvasWind','CanvasWindField','requestAnimationFrame','_randomParticle','vdata','fromDegrees','_calc_speedRate','magnificationFilter','getUVByXY','lng','bufferUsage','framebuffer','frameState.commandList\x20is\x20undefined','frameRate','drawingBufferWidth','particlesTextureSize','tlat','_tomap','initFrameRate','vertexArray','fromGeometry','fromCache','updateWindData','sqrt','vertexShaderSource','pixelFormat','fillRect','WindUtil','rawRenderState','95JJLILM','interpolated','xmax','getDirection','Math','updateViewerParameters','udata','SceneMode','segments','lat','bounds','round','particlesNumber','canvas','colors','onParticlesTextureSizeChange','windData','removeEventListener','random','updateOptions','pass','FLOAT','bind','CLAMP_TO_EDGE','clientWidth','356836WhgcLk','toDegrees','getSegmentDrawVertexShader','mouseMove','lineWidth','Log','_updateIng','outputTexture','8MaLXGt','max','displayRange','length','Compute','#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','LINEAR','commandType','flatMap','265932FYYZBL','stroke','forEach','_showHook','fragmentShaderSource','MAX_VALUE','domain','useViewerBounds','grid','6089908XStWFm','owner','color','redraw','beginPath','onColorTableChange','latRange','samplingWindow','Cartesian2','style','12326247LVKIbA','frameRateAdjustment','isPointVisible','_mountedHook','uniformMap','maxAge','speedFactor','_onMouseUpEvent','ymax','auto','visible','update','2cKjEKI','_onMouseMoveEvent','ymin','EventType','absolute','toRadians','RGBA','changeOptions','blendEquation','applyViewerParameters','none','viewerParameters','PointTrans','isDynamic','rows','hidden','globe','latitude','lineLength','_addedHook','setData','textures','clearCommand','_onMouseDownEvent','destroy','show','visibility','container','_speedRate','options','Draw','getSegmentDrawFragmentShader','push','layer','normal','9542561EkiXmW','particlesTextures','rgb(206,255,255)','_updateIng2','camera','framebuffers','pixelSize','commandToExecute','primitiveType','pointer-events','FUNC_ADD','setOptions','createCommand','frameRateMonitor','warn','north','colorTable','_onMapWhellEvent','cols','dropRateBump','clientHeight','array','bindEvent','_createCanvas','south','toGridXY','age','setDate','attributeLocations','particlesTextureSize\x20must\x20be\x20greater\x20than\x200','STATIC_DRAW','CanvasWindLayer','flipY','talt','createSegmentsGeometry','colorTextures','10141220GEAiDm','moveTo','persists','commandList','dynamic','speedRate','Rectangle','createWindTextures','updatePosition','createColorTableTexture','sceneMode','positionWC','xmin','atan2','canvasContext','mouse_move','postMessage','context','isInExtent','remove','umax','changed','SCENE3D','globalAlpha','createRenderingFramebuffers','get','Cesium','UNSIGNED_INT','mode','clear','processWindData','2026-01-21\x2013:09','particles','now','tlng','height','BaseLayer','rendering','type','abs','_map','unbindEvent','addEventListener','windField','wrapS','particlesSpeed','shaderProgram','0px','wheel','pointerEvents','wrapT','morphComplete','getSpeed','segmentsDepth','particleSystem','geometry','_setOptionsHook','Unknown\x20command\x20type','width','blue','reCreateWindTextures','mouseUp','getCalculateSpeedShader','postProcessingPosition','componentsPerAttribute','_maxAge','primitives','NEAREST','__proto__','globalCompositeOperation','values','speed','alpha','worker','min','canvasHeight','scene','green','computing','getU','__esModule','off','cartesianToCartographic','floor','destroyParticlesTextures','_animateFrame','fixedHeight','west','mars3d-canvasWind','resize','onmessage','getPostProcessingPositionShader','calculateSpeed','destination-in','_colorRamp','minificationFilter'];_0x1fe0=function(){return _0x3404fe;};return _0x1fe0();}class CanvasWindLayer extends BaseLayer{constructor(_0x2baa41={}){function _0x5425d6(_0x3d182a,_0x5b8b3b){return _0x5deefe(_0x5b8b3b-0x3b7,_0x3d182a);}super(_0x2baa41),this[_0x85e3(-0x212,-0x271)](_0x2baa41);function _0x85e3(_0x258388,_0x35a289){return _0x5e9d7c(_0x35a289- -0x797,_0x258388);}this[_0x85e3(-0x209,-0x216)]=null,_0x2baa41['colors']&&_0x2baa41['steps']&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x2baa41));}['_setOptionsHook'](_0x5d9d48,_0x3bed4f){function _0x4795f7(_0xd53a9d,_0x5229e9){return _0x5e9d7c(_0xd53a9d- -0x492,_0x5229e9);}this['frameTime']=0x3e8/(_0x5d9d48[_0x4795f7(0xd2,0xdb)]||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x5d9d48['color']||'#ffffff',this['lineWidth']=_0x5d9d48[_0x1e9e45(0x27c,0x2ad)]||0x1;function _0x1e9e45(_0x79891d,_0x247b1d){return _0x5e9d7c(_0x247b1d- -0x2e4,_0x79891d);}this['fixedHeight']=_0x5d9d48['fixedHeight']??0x0,this[_0x1e9e45(0x318,0x31c)]=_0x5d9d48['flipY']??![],this['windField']&&this['windField'][_0x1e9e45(0x344,0x307)](_0x5d9d48);}get[_0x5e9d7c(0x5de,0x598)](){function _0x5f4947(_0xf56f67,_0x18da4c){return _0x5deefe(_0x18da4c-0x4a5,_0xf56f67);}return this[_0x5f4947(0x32b,0x2a7)];}get['canvasWidth'](){function _0x593df6(_0x398b68,_0x4a5356){return _0x5deefe(_0x398b68-0x7a7,_0x4a5356);}function _0x5e1028(_0x351638,_0x194b2d){return _0x5deefe(_0x194b2d-0x796,_0x351638);}return this['_map']['scene'][_0x593df6(0x5a9,0x5ce)][_0x5e1028(0x51d,0x5a3)];}get[_0x5deefe(-0x246,-0x22e)](){function _0x58c744(_0x3ab874,_0x34651e){return _0x5deefe(_0x3ab874-0x3f6,_0x34651e);}return this[_0x58c744(0x18d,0x179)]['scene']['canvas']['clientHeight'];}get[_0x5deefe(-0x260,-0x2d1)](){return this['_pointerEvents'];}set['pointerEvents'](_0x1ecbe8){function _0x57c5d2(_0x5c675c,_0x5641cc){return _0x5e9d7c(_0x5641cc- -0x4f5,_0x5c675c);}this['_pointerEvents']=_0x1ecbe8;if(!this['canvas'])return;function _0x19bb67(_0x42ed4e,_0x5cf2e1){return _0x5deefe(_0x5cf2e1-0x420,_0x42ed4e);}_0x1ecbe8?this['canvas']['style']['pointer-events']='all':this[_0x57c5d2(0xb3,0x8c)][_0x57c5d2(0x9a,0xbb)][_0x57c5d2(0x10c,0xf4)]='none';}get['particlesNumber'](){return this['options']['particlesNumber'];}set[_0x5e9d7c(0x580,0x4f7)](_0x6b7075){this[_0x3db1f7(0xe,0x67)]['particlesNumber']=_0x6b7075;function _0x3db1f7(_0x4fe30c,_0x2a6eda){return _0x5e9d7c(_0x2a6eda- -0x573,_0x4fe30c);}clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{function _0x3c6693(_0x435379,_0x5cfe70){return _0x3db1f7(_0x5cfe70,_0x435379-0x4ad);}this[_0x3c6693(0x4e4,0x4dc)]();},0x1f4);}get[_0x5deefe(-0x176,-0x1ab)](){function _0x35d05d(_0xb41c73,_0x4be7f1){return _0x5e9d7c(_0xb41c73- -0xf7,_0x4be7f1);}return this['options'][_0x35d05d(0x512,0x57d)];}set[_0x5e9d7c(0x609,0x673)](_0x46c9b8){function _0x989361(_0x2bd145,_0x524d8c){return _0x5e9d7c(_0x524d8c- -0x511,_0x2bd145);}this[_0x989361(0xa9,0xc9)][_0x989361(0xe2,0xf8)]=_0x46c9b8;function _0x2c8b38(_0x5a6238,_0x23a5f0){return _0x5e9d7c(_0x5a6238- -0x3a2,_0x23a5f0);}this['windField']&&(this['windField']['speedRate']=_0x46c9b8);}get['maxAge'](){function _0x4c67d3(_0x161ec5,_0xc26722){return _0x5deefe(_0xc26722-0x759,_0x161ec5);}return this['options'][_0x4c67d3(0x5aa,0x590)];}set['maxAge'](_0x2ead6e){function _0x37796c(_0x49739e,_0x2f9bd3){return _0x5deefe(_0x49739e-0x8a,_0x2f9bd3);}function _0x37e0fc(_0x49eaad,_0x240632){return _0x5e9d7c(_0x49eaad- -0x280,_0x240632);}this['options'][_0x37796c(-0x13f,-0xdb)]=_0x2ead6e,this[_0x37796c(-0x1dc,-0x1b1)]&&(this[_0x37796c(-0x1dc,-0x16c)]['maxAge']=_0x2ead6e);}get[_0x5e9d7c(0x550,0x58b)](){return this['windData'];}set['data'](_0x1f4bb7){this['setData'](_0x1f4bb7);}get['rectangle'](){function _0x4e9470(_0x2092f4,_0xea8c71){return _0x5e9d7c(_0x2092f4- -0x775,_0xea8c71);}let _0xc27416=this[_0xefdc75(0x3e9,0x3b2)]['xmin'],_0x5f564c=this['windData']['xmax'],_0x199507=this[_0x4e9470(-0x1f1,-0x203)]['ymin'],_0x58d129=this[_0xefdc75(0x346,0x3b2)][_0x4e9470(-0x1bc,-0x142)];_0x5f564c>=0x167&&_0xc27416===0x0&&(_0xc27416=-0xb4,_0x5f564c=0xb4);_0xc27416=Math[_0x4e9470(-0x1df,-0x1cf)](_0xc27416,-0xb4),_0x5f564c=Math['min'](_0x5f564c,0xb4);function _0xefdc75(_0x379b26,_0x55a5df){return _0x5deefe(_0x55a5df-0x5ad,_0x379b26);}return _0x199507=Math['max'](_0x199507,-0x5a),_0x58d129=Math[_0xefdc75(0x360,0x366)](_0x58d129,0x5a),Cesium[_0xefdc75(0x484,0x438)][_0xefdc75(0x3d2,0x38a)](_0xc27416,_0x199507,_0x5f564c,_0x58d129);}[_0x5e9d7c(0x5a1,0x5f6)](_0x5bbfcc){function _0xfd4598(_0x440a38,_0x5b5ab4){return _0x5deefe(_0x5b5ab4-0xa5,_0x440a38);}_0x5bbfcc?this[_0xfd4598(-0x143,-0x10a)]():(this['windData']&&(this['options']['data']=this['windData']),this['_removedHook']());}[_0x5e9d7c(0x5b4,0x635)](){function _0x184576(_0x1ea4c4,_0x527d1c){return _0x5e9d7c(_0x527d1c- -0x748,_0x1ea4c4);}this['options']['worker']?this['initWorker']():this[_0x184576(-0x267,-0x22f)]=new CanvasWindField(this['options']);}['_addedHook'](){this['canvas']=this[_0x242c17(0x471,0x497)]();const _0x180f85={};_0x180f85['willReadFrequently']=!![],this['canvasContext']=this[_0x242c17(0x3be,0x421)]['getContext']('2d',_0x180f85),this['bindEvent']();function _0x242c17(_0x2b9c4e,_0x18b58a){return _0x5e9d7c(_0x18b58a- -0x160,_0x2b9c4e);}function _0x40f31b(_0x2ecb08,_0x2cd06b){return _0x5deefe(_0x2ecb08-0x1f2,_0x2cd06b);}this[_0x40f31b(0x4d,0x91)][_0x242c17(0x448,0x3f0)]&&this[_0x242c17(0x491,0x471)](this['options']['data']);}['_removedHook'](){this['clear']();function _0x27422f(_0x5646dd,_0x33241c){return _0x5deefe(_0x33241c-0x560,_0x5646dd);}function _0x4a354d(_0x4e6d9f,_0x346ac4){return _0x5e9d7c(_0x346ac4- -0xfc,_0x4e6d9f);}this[_0x4a354d(0x425,0x41b)](),this[_0x4a354d(0x496,0x485)]&&(this['_map']['container']['removeChild'](this['canvas']),delete this[_0x4a354d(0x4b7,0x485)]);}['_createCanvas'](){const _0xf7f4d4=mars3d__namespace['DomUtil']['create']('canvas',_0x3fd98e(0x4d6,0x47f),this[_0x3fd98e(0x476,0x44f)][_0x3fd98e(0x53d,0x511)]);function _0x4c73cb(_0x1c3535,_0x16dd0c){return _0x5deefe(_0x16dd0c-0x52b,_0x1c3535);}_0xf7f4d4[_0x3fd98e(0x574,0x4e9)]['position']=_0x4c73cb(0x370,0x36d),_0xf7f4d4[_0x4c73cb(0x3e5,0x35c)]['top']=_0x4c73cb(0x296,0x2c9),_0xf7f4d4['style']['left']='0px',_0xf7f4d4[_0x4c73cb(0x343,0x35c)][_0x3fd98e(0x457,0x461)]=this[_0x4c73cb(0x2db,0x2c2)][_0x4c73cb(0x2c0,0x2e6)][_0x4c73cb(0x393,0x32d)][_0x4c73cb(0x2f8,0x338)]+'px',_0xf7f4d4[_0x3fd98e(0x47d,0x4e9)][_0x4c73cb(0x3f5,0x3d3)]=this['_map'][_0x3fd98e(0x470,0x473)]['canvas']['clientHeight']+'px',_0xf7f4d4['style'][_0x4c73cb(0x29c,0x2cb)]=this['_pointerEvents']?_0x4c73cb(0x316,0x366):_0x4c73cb(0x35c,0x373),_0xf7f4d4['style']['zIndex']=this['options']['zIndex']??0x9;function _0x3fd98e(_0x1b2024,_0x66e506){return _0x5e9d7c(_0x66e506- -0xc7,_0x1b2024);}return _0xf7f4d4[_0x3fd98e(0x465,0x461)]=this['_map'][_0x4c73cb(0x274,0x2e6)][_0x4c73cb(0x383,0x32d)][_0x4c73cb(0x3bc,0x338)],_0xf7f4d4[_0x4c73cb(0x435,0x3d3)]=this[_0x4c73cb(0x302,0x2c2)][_0x3fd98e(0x443,0x473)]['canvas']['clientHeight'],_0xf7f4d4;}[_0x5deefe(-0x238,-0x219)](){function _0x1d1583(_0x46753e,_0x30f80b){return _0x5e9d7c(_0x46753e- -0x42a,_0x30f80b);}function _0x1b7ea5(_0x3fc66d,_0x4d2936){return _0x5deefe(_0x4d2936-0x28a,_0x3fc66d);}this[_0x1d1583(0x157,0x122)]&&(this['canvas']['style'][_0x1d1583(0xfe,0x7c)]=this['_map'][_0x1b7ea5(0xba,0x45)][_0x1b7ea5(0x1e,0x8c)]['clientWidth']+'px',this['canvas']['style'][_0x1d1583(0x1fd,0x221)]=this['_map']['scene'][_0x1b7ea5(0x112,0x8c)][_0x1b7ea5(0xe2,0xff)]+'px',this['canvas'][_0x1d1583(0xfe,0x122)]=this['_map']['scene'][_0x1b7ea5(0x89,0x8c)]['clientWidth'],this['canvas'][_0x1b7ea5(0x101,0x132)]=this[_0x1d1583(0xec,0x15b)][_0x1b7ea5(-0x27,0x45)][_0x1d1583(0x157,0x157)]['clientHeight']);}[_0x5deefe(-0x189,-0x112)](){const _0x30cde5=this;let _0x2616d3=Date['now']();function _0x316eb9(_0x17b721,_0x1a76bb){return _0x5deefe(_0x1a76bb-0x45a,_0x17b721);}(function _0x85f6c(){function _0x140535(_0x3b9341,_0x200e99){return _0x3249(_0x3b9341-0xf9,_0x200e99);}function _0x41ddbc(_0x3225fe,_0xbe825c){return _0x3249(_0x3225fe-0x3bc,_0xbe825c);}if(_0x30cde5['isDestroy'])return;_0x30cde5[_0x140535(0x27f,0x225)]=window[_0x140535(0x295,0x21a)](_0x85f6c);if(_0x30cde5['show']&&_0x30cde5['windField']){const _0x2e5547=Date[_0x41ddbc(0x624,0x69a)](),_0x336fca=_0x2e5547-_0x2616d3;_0x336fca>_0x30cde5['frameTime']&&(_0x2616d3=_0x2e5547-_0x336fca%_0x30cde5['frameTime'],_0x30cde5[_0x41ddbc(0x5bb,0x595)]());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![]);function _0x217f7a(_0x12135e,_0x25e128){return _0x5deefe(_0x12135e-0x2b0,_0x25e128);}this[_0x316eb9(0x328,0x2ee)]=![],this['options']['mouseHidden']&&(this[_0x316eb9(0x192,0x1f1)]['on'](mars3d__namespace['EventType'][_0x217f7a(0x4f,0xd5)],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x316eb9(0x202,0x1f1)]['on'](mars3d__namespace['EventType']['mouseUp'],this[_0x316eb9(0x252,0x293)],this));}[_0x5deefe(-0x268,-0x264)](){window['cancelAnimationFrame'](this['_animateFrame']),delete this[_0x3c1d0a(0x1d7,0x1ff)],window['removeEventListener'](_0x3c1d0a(0x1a9,0x203),this['resize']);function _0x13001e(_0x22b260,_0x309aaf){return _0x5deefe(_0x22b260-0x5ac,_0x309aaf);}function _0x3c1d0a(_0x56ff9a,_0x3d07ac){return _0x5e9d7c(_0x3d07ac- -0x344,_0x56ff9a);}this['options']['mouseHidden']&&(this['_map'][_0x3c1d0a(0x1f9,0x1fb)](mars3d__namespace['EventType'][_0x13001e(0x34b,0x2c0)],this[_0x3c1d0a(0x322,0x2ad)],this),this['_map'][_0x13001e(0x36c,0x37e)](mars3d__namespace[_0x3c1d0a(0x2bf,0x27c)]['mouseDown'],this['_onMouseDownEvent'],this),this[_0x3c1d0a(0x1bf,0x1d2)][_0x3c1d0a(0x21b,0x1fb)](mars3d__namespace['EventType'][_0x13001e(0x358,0x3e3)],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x3c1d0a(0x206,0x24c)],this['_onMouseMoveEvent'],this));}[_0x5deefe(-0x18e,-0x1a9)](_0x41b58a){clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;function _0x23dcab(_0x5b5e63,_0x5d5179){return _0x5deefe(_0x5d5179-0x6c,_0x5b5e63);}this['canvas']['style']['visibility']=_0x23dcab(-0x18e,-0x147),this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;function _0x1346be(_0x20b084,_0x53f195){return _0x23dcab(_0x20b084,_0x53f195-0x646);}function _0x775a4a(_0x125641,_0x30d6dd){return _0x23dcab(_0x125641,_0x30d6dd-0x8f);}this['redraw'](),this['canvas']['style'][_0x775a4a(-0xd0,-0xad)]=_0x1346be(0x474,0x4ee);},0xc8);}[_0x5deefe(-0x1ab,-0x236)](_0x498d26){function _0x3acff1(_0x408c05,_0x585476){return _0x5deefe(_0x408c05-0x12b,_0x585476);}this['mouse_down']=!![],this['_map'][_0x3acff1(-0x115,-0xe6)](mars3d__namespace['EventType'][_0x5464aa(-0x89,-0xb7)],this['_onMouseMoveEvent'],this);function _0x5464aa(_0x5adbb6,_0x3fcf44){return _0x5e9d7c(_0x5adbb6- -0x619,_0x3fcf44);}this['_map']['on'](mars3d__namespace['EventType'][_0x5464aa(-0x89,-0x102)],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x3cf880){if(!this[_0xd11894(-0xbf,-0x96)]||!this['canvas'])return;function _0x29db25(_0x3deff0,_0x4a692b){return _0x5deefe(_0x3deff0-0x6a3,_0x4a692b);}function _0xd11894(_0x4560c9,_0x1241d4){return _0x5deefe(_0x4560c9-0xea,_0x1241d4);}this['mouse_down']&&(this[_0x29db25(0x4a5,0x439)]['style'][_0xd11894(-0xbe,-0xe5)]='hidden',this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x339238){if(!this['show']||!this['canvas'])return;this[_0x326b61(0x33c,0x2c9)]['off'](mars3d__namespace[_0x5457d3(-0x104,-0x93)][_0x5457d3(-0x10e,-0xc3)],this[_0x326b61(0x3c3,0x371)],this);function _0x5457d3(_0x394c00,_0x4e937f){return _0x5deefe(_0x4e937f-0x12c,_0x394c00);}this['mouse_down']&&this['mouse_move']&&this['redraw']();function _0x326b61(_0x2f152b,_0x875ca1){return _0x5deefe(_0x875ca1-0x532,_0x2f152b);}this[_0x326b61(0x37a,0x334)][_0x5457d3(-0x74,-0xa3)][_0x5457d3(-0x1f,-0x7c)]='visible',this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x366de9){function _0xe358bd(_0x3552aa,_0x4ab73f){return _0x5e9d7c(_0x3552aa- -0x550,_0x4ab73f);}this[_0xe358bd(0xd1,0x149)](),this['windData']=_0x366de9,this['windField']['setDate'](_0x366de9),this['redraw']();}['redraw'](){if(!this['show'])return;function _0x5d1950(_0x10e2a5,_0x46809d){return _0x5e9d7c(_0x10e2a5- -0x486,_0x46809d);}this[_0x5d1950(0x93,0x4c)]['setOptions'](this['options']),this['update']();}['update'](){function _0x4d67dd(_0x3b4af1,_0x156cd9){return _0x5e9d7c(_0x156cd9- -0x167,_0x3b4af1);}if(this['_updateIng'])return;function _0x79804(_0x5c4fda,_0x572225){return _0x5deefe(_0x572225-0x13b,_0x5c4fda);}this[_0x4d67dd(0x458,0x42c)]=!![];if(this['worker'])this[_0x4d67dd(0x3c5,0x3b2)]['update']();else{const _0x2677ea=this['windField']['getParticles']();this['_drawLines'](_0x2677ea);}this['_updateIng']=![];}['_drawLines'](_0xaa4911){this['_canvasParticles']=_0xaa4911,this[_0x15488b(-0x4,-0x6c)][_0x15488b(-0xe3,-0xc4)]=_0x15488b(-0xcb,-0x108),this[_0x1865ad(0x4a,0xbc)][_0x1865ad(-0x57,-0x9b)](0x0,0x0,this['canvasWidth'],this[_0x15488b(-0xdd,-0x69)]),this[_0x1865ad(0x4a,-0x35)]['globalCompositeOperation']='lighter',this[_0x1865ad(0x4a,0x16)][_0x15488b(0x5,0x4e)]=0.9;const _0x3d6a67=this[_0x1865ad(-0xb2,-0x131)]['scene']['mode']!==Cesium[_0x15488b(-0x9b,-0x3c)][_0x15488b(0x4,0x19)],_0x227baf=this['canvasWidth']*0.25;function _0x15488b(_0x6ee5e2,_0x100e7b){return _0x5deefe(_0x6ee5e2-0x169,_0x100e7b);}function _0x1865ad(_0x39bf86,_0x50bd5f){return _0x5deefe(_0x39bf86-0x1b7,_0x50bd5f);}if(this[_0x1865ad(-0x7c,-0xd5)])for(let _0x3a57ad=0x0,_0x300eaf=_0xaa4911['length'];_0x3a57ad<_0x300eaf;_0x3a57ad++){const _0x28a434=_0xaa4911[_0x3a57ad],_0x1ddfc9=this[_0x15488b(-0xae,-0x34)](_0x28a434,_0x28a434['lng'],_0x28a434['lat'],_0x28a434['alt']),_0x2fd0fd=this[_0x1865ad(-0x60,0x6)](_0x28a434,_0x28a434[_0x15488b(0x10,-0x42)],_0x28a434['tlat'],_0x28a434['talt']);if(!_0x1ddfc9||!_0x2fd0fd)continue;if(_0x3d6a67&&Math['abs'](_0x1ddfc9[0x0]-_0x2fd0fd[0x0])>=_0x227baf)continue;this['canvasContext']['beginPath'](),this[_0x1865ad(0x4a,0xa6)]['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this['_colorRamp']['getColor'](_0x28a434['speed']),this['canvasContext']['moveTo'](_0x1ddfc9[0x0],_0x1ddfc9[0x1]),this['canvasContext']['lineTo'](_0x2fd0fd[0x0],_0x2fd0fd[0x1]),this[_0x15488b(-0x4,0x2f)][_0x15488b(-0x77,-0x6b)]();}else{this['canvasContext'][_0x1865ad(-0x1d,-0x8)](),this['canvasContext']['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this[_0x15488b(-0x6d,-0xbc)];for(let _0xb1724d=0x0,_0x2d8276=_0xaa4911['length'];_0xb1724d<_0x2d8276;_0xb1724d++){const _0x2e4ebd=_0xaa4911[_0xb1724d],_0x4268b0=this['_tomap'](_0x2e4ebd,_0x2e4ebd[_0x1865ad(-0x68,-0xa5)],_0x2e4ebd[_0x1865ad(-0x4b,-0x9f)],_0x2e4ebd['alt']),_0x41d7c7=this['_tomap'](_0x2e4ebd,_0x2e4ebd['tlng'],_0x2e4ebd['tlat'],_0x2e4ebd[_0x15488b(-0x15,-0x78)]);if(!_0x4268b0||!_0x41d7c7)continue;if(_0x3d6a67&&Math['abs'](_0x4268b0[0x0]-_0x41d7c7[0x0])>=_0x227baf)continue;this['canvasContext'][_0x15488b(-0x11,-0x97)](_0x4268b0[0x0],_0x4268b0[0x1]),this[_0x15488b(-0x4,-0x13)]['lineTo'](_0x41d7c7[0x0],_0x41d7c7[0x1]);}this[_0x1865ad(0x4a,0xab)]['stroke']();}}[_0x5e9d7c(0x568,0x5de)](_0x508e15,_0x5a0233,_0x2c8a46,_0x13973f){const _0x3b056d=Cesium['Cartesian3']['fromDegrees'](_0x5a0233,_0x2c8a46,_0x13973f??this[_0x303128(0x24d,0x27f)]);function _0x303128(_0x241698,_0x141685){return _0x5deefe(_0x241698-0x488,_0x141685);}const _0x2b6eaa=this[_0xb53d5(0x3c9,0x44e)][_0xb53d5(0x44a,0x472)];if(_0x2b6eaa[_0x303128(0x329,0x3b3)]===Cesium['SceneMode'][_0x303128(0x323,0x345)]){const _0x69c593=new Cesium['EllipsoidalOccluder'](_0x2b6eaa['globe']['ellipsoid'],_0x2b6eaa['camera'][_0xb53d5(0x575,0x547)]),_0x409689=_0x69c593[_0xb53d5(0x514,0x4eb)](_0x3b056d);if(!_0x409689)return _0x508e15[_0xb53d5(0x530,0x532)]=0x0,null;}function _0xb53d5(_0x4c9c59,_0x1efa09){return _0x5deefe(_0x1efa09-0x6b7,_0x4c9c59);}const _0x2284f5=mars3d__namespace[_0x303128(0x2d2,0x2e0)]['toWindowCoordinates'](this[_0x303128(0x21f,0x261)]['scene'],_0x3b056d);return _0x2284f5?[_0x2284f5['x'],_0x2284f5['y']]:null;}[_0x5deefe(-0x15e,-0x13b)](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){function _0x26edc(_0xfc4af4,_0x3e72f3){return _0x5deefe(_0x3e72f3-0x759,_0xfc4af4);}function _0x22f568(_0x396e6d,_0x59fcec){return _0x5e9d7c(_0x59fcec- -0x746,_0x396e6d);}this[_0x22f568(-0x273,-0x20f)]=new Worker(this['options']['worker']),this['worker'][_0x26edc(0x571,0x522)]=_0x516548=>{this['_drawLines'](_0x516548['data'][_0x1fd182(0x97,0x67)]);function _0x1fd182(_0x39b2b6,_0x17d75d){return _0x22f568(_0x39b2b6,_0x17d75d-0x189);}this['_updateIng2']=![];},this[_0x26edc(0x52d,0x4f3)]={'init':_0x201cf9=>{const _0x36a6db={};function _0x4923dc(_0x99c31e,_0xc3afd9){return _0x22f568(_0x99c31e,_0xc3afd9-0x4b8);}_0x36a6db[_0x4923dc(0x27b,0x286)]='init';function _0x1af2ee(_0x5cc41c,_0x2439b1){return _0x22f568(_0x5cc41c,_0x2439b1-0x1d0);}_0x36a6db['options']=_0x201cf9,this['worker'][_0x1af2ee(0xb5,0x9e)](_0x36a6db);},'setOptions':_0x26c7fb=>{const _0x282d38={};function _0x94f5c2(_0x18eb7d,_0x579841){return _0x22f568(_0x18eb7d,_0x579841- -0x11);}_0x282d38[_0x94f5c2(-0x285,-0x243)]='setOptions';function _0x59aeee(_0xae88c3,_0x53a4de){return _0x26edc(_0xae88c3,_0x53a4de- -0x287);}_0x282d38[_0x94f5c2(-0x176,-0x17d)]=_0x26c7fb,this['worker'][_0x59aeee(0x314,0x367)](_0x282d38);},'setDate':_0x232ae0=>{const _0x3cddcb={};function _0x51508b(_0x54af99,_0x3feaeb){return _0x26edc(_0x54af99,_0x3feaeb- -0x2be);}_0x3cddcb['type']=_0x51508b(0x372,0x317),_0x3cddcb['data']=_0x232ae0,this['worker']['postMessage'](_0x3cddcb);},'update':()=>{if(this['_updateIng2'])return;this[_0x27d19e(0x4a5,0x41b)]=!![];function _0x27d19e(_0x1c3a1f,_0x16857a){return _0x22f568(_0x16857a,_0x1c3a1f-0x608);}function _0x48a5bb(_0x250638,_0x3b4a52){return _0x22f568(_0x3b4a52,_0x250638-0x584);}const _0x388280={};_0x388280[_0x27d19e(0x3d6,0x3ec)]='update',this['worker'][_0x27d19e(0x4d6,0x4b9)](_0x388280);},'clear':()=>{const _0xb6f623={};function _0x4ecba7(_0x58f0d7,_0x3b3efa){return _0x26edc(_0x3b3efa,_0x58f0d7- -0xfd);}_0xb6f623['type']='clear',this['worker'][_0x4ecba7(0x4f1,0x529)](_0xb6f623);}},this['windField']['init'](this[_0x22f568(-0x12a,-0x16c)]);}}mars3d__namespace['LayerUtil']['register'](_0x5deefe(-0x228,-0x1d9),CanvasWindLayer),mars3d__namespace['layer'][_0x5e9d7c(0x5ff,0x673)]=CanvasWindLayer,mars3d__namespace[_0x5deefe(-0x227,-0x2a6)]=CanvasWindField,mars3d__namespace[_0x5e9d7c(0x592,0x5eb)]['logInfo']('mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:'+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace[_0x5deefe(-0x20d,-0x1ac)]=WindUtil,exports[_0x5e9d7c(0x558,0x5e3)]=CanvasWindField,exports[_0x5deefe(-0x180,-0x1a1)]=CanvasWindLayer;function _0x5e9d7c(_0x2da73e,_0x4f2f7b){return _0x3249(_0x2da73e-0x3bd,_0x4f2f7b);}exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil;function _0x3249(_0x3f3277,_0x2e6f5a){_0x3f3277=_0x3f3277-0x155;const _0x1fe0a7=_0x1fe0();let _0x324927=_0x1fe0a7[_0x3f3277];return _0x324927;}const _0x3ec36a={};_0x3ec36a['value']=!![],Object[_0x5deefe(-0x22d,-0x1df)](exports,_0x5e9d7c(0x53e,0x53d),_0x3ec36a);
|
|
14
|
+
'use strict';function _0x100c(_0x4a1e28,_0x4ca283){const _0x54793c=_0x5479();return _0x100c=function(_0x100cfb,_0x2c2894){_0x100cfb=_0x100cfb-0x1e2;let _0x359193=_0x54793c[_0x100cfb];return _0x359193;},_0x100c(_0x4a1e28,_0x4ca283);}(function(_0x5b64f5,_0xcd4961){function _0x4e7f50(_0x3b9f85,_0x98a55b){return _0x100c(_0x98a55b-0x287,_0x3b9f85);}const _0x5e4c3a=_0x5b64f5();function _0x4d45e6(_0x414c3c,_0x103c3a){return _0x100c(_0x103c3a- -0x2bd,_0x414c3c);}while(!![]){try{const _0x231dc0=-parseInt(_0x4d45e6(0x13,-0x2))/0x1+parseInt(_0x4d45e6(-0x74,-0xb6))/0x2+parseInt(_0x4e7f50(0x4b3,0x507))/0x3+parseInt(_0x4d45e6(-0xc0,-0xd8))/0x4*(parseInt(_0x4e7f50(0x4f5,0x535))/0x5)+-parseInt(_0x4d45e6(-0x61,0x2))/0x6+-parseInt(_0x4e7f50(0x45f,0x4cf))/0x7*(-parseInt(_0x4e7f50(0x4da,0x51a))/0x8)+-parseInt(_0x4d45e6(-0xb9,-0xda))/0x9;if(_0x231dc0===_0xcd4961)break;else _0x5e4c3a['push'](_0x5e4c3a['shift']());}catch(_0x2ae7da){_0x5e4c3a['push'](_0x5e4c3a['shift']());}}}(_0x5479,0xdc917));function _interopNamespace(_0x2bab2d){if(_0x2bab2d&&_0x2bab2d['__esModule'])return _0x2bab2d;var _0x3521cd=Object[_0x2b531b(0x3d5,0x397)](null);_0x2bab2d&&Object['keys'](_0x2bab2d)['forEach'](function(_0x2d4e17){if(_0x2d4e17!=='default'){var _0x8759f8=Object['getOwnPropertyDescriptor'](_0x2bab2d,_0x2d4e17);Object['defineProperty'](_0x3521cd,_0x2d4e17,_0x8759f8['get']?_0x8759f8:{'enumerable':!![],'get':function(){return _0x2bab2d[_0x2d4e17];}});}});function _0x2b531b(_0xa764bf,_0x4ad1a8){return _0x100c(_0x4ad1a8-0x187,_0xa764bf);}return _0x3521cd['default']=_0x2bab2d,_0x3521cd;}function _0x560305(_0x1c836b,_0x548654){return _0x100c(_0x1c836b-0x33a,_0x548654);}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function getU(_0x1b7648,_0x58e9ea){const _0x5a45f3=_0x1b7648*Math['cos'](Cesium$2['Math']['toRadians'](_0x58e9ea));return _0x5a45f3;}function getV(_0x478f69,_0x2d4c3c){function _0x21e066(_0x262117,_0x2c4fc1){return _0x100c(_0x2c4fc1-0x1d5,_0x262117);}const _0x464873=_0x478f69*Math['sin'](Cesium$2[_0x21e066(0x3b1,0x3f2)]['toRadians'](_0x2d4c3c));return _0x464873;}function getSpeed(_0x45e166,_0x3d35cb){function _0x1e02a7(_0x1817b3,_0x56ae11){return _0x100c(_0x1817b3- -0x24a,_0x56ae11);}const _0xbb620e=Math[_0x4adb38(-0x7d,-0x101)](Math['pow'](_0x45e166,0x2)+Math[_0x4adb38(0x4,-0x60)](_0x3d35cb,0x2));function _0x4adb38(_0x1437cf,_0x27e0c3){return _0x100c(_0x27e0c3- -0x32c,_0x1437cf);}return _0xbb620e;}function getDirection(_0x312aa1,_0x3296c4){function _0x225d02(_0x5d8e26,_0x532c55){return _0x100c(_0x532c55-0x2c3,_0x5d8e26);}function _0x406d82(_0x167870,_0x4c4249){return _0x100c(_0x4c4249-0x2a6,_0x167870);}let _0x5c3cf7=Cesium$2[_0x225d02(0x528,0x4e0)]['toDegrees'](Math[_0x406d82(0x4be,0x4a0)](_0x3296c4,_0x312aa1));return _0x5c3cf7+=_0x5c3cf7<0x0?0x168:0x0,_0x5c3cf7;}const _0x373e32={};_0x373e32['__proto__']=null,_0x373e32['getU']=getU,_0x373e32['getV']=getV,_0x373e32[_0x413ef9(-0x10,-0x69)]=getSpeed,_0x373e32[_0x560305(0x5a7,0x59f)]=getDirection;var WindUtil=_0x373e32;const version=_0x560305(0x56b,0x524),buildTime='2026-03-17\x2019:22';var updatePositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20获取当前粒子的位置\x0a\x20\x20vec2\x20currentPos\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20获取粒子的速度\x0a\x20\x20vec2\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20计算下一个位置\x0a\x20\x20vec2\x20nextPos\x20=\x20currentPos\x20+\x20speed;\x0a\x0a\x20\x20\x20\x20//\x20将新的位置写入\x20fragColor\x0a\x20\x20fragColor\x20=\x20vec4(nextPos,\x200.0f,\x201.0f);\x0a}\x0a',calculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec2\x20uRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20vRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20speedRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20dimension;\x20//\x20(lon,\x20lat)\x0auniform\x20vec2\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec2\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0a\x0auniform\x20float\x20speedScaleFactor;\x0auniform\x20float\x20frameRateAdjustment;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20getInterval(vec2\x20maximum,\x20vec2\x20minimum,\x20vec2\x20dimension)\x20{\x0a\x20\x20return\x20(maximum\x20-\x20minimum)\x20/\x20(dimension\x20-\x201.0f);\x0a}\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLat.x\x20=\x20clamp(lonLat.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLat.y\x20=\x20clamp(lonLat.y,\x20minimum.y,\x20maximum.y);\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(0.0f);\x0a\x20\x20index2D.x\x20=\x20(lonLat.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index2D.y\x20=\x20(lonLat.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20dimension.y);\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0avec2\x20getWindComponents(vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20u\x20=\x20texture(U,\x20normalizedIndex2D).r;\x0a\x20\x20float\x20v\x20=\x20texture(V,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20vec2(u,\x20v);\x0a}\x0a\x0avec2\x20bilinearInterpolation(vec2\x20lonLat)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLat.x;\x0a\x20\x20float\x20lat\x20=\x20lonLat.y;\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20grid\x20cell\x20coordinates\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Get\x20wind\x20vectors\x20at\x20four\x20corners\x0a\x20\x20vec2\x20v00\x20=\x20getWindComponents(vec2(lon0,\x20lat0));\x0a\x20\x20vec2\x20v10\x20=\x20getWindComponents(vec2(lon1,\x20lat0));\x0a\x20\x20vec2\x20v01\x20=\x20getWindComponents(vec2(lon0,\x20lat1));\x0a\x20\x20vec2\x20v11\x20=\x20getWindComponents(vec2(lon1,\x20lat1));\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20all\x20wind\x20vectors\x20are\x20zero\x0a\x20\x20if(length(v00)\x20==\x200.0f\x20&&\x20length(v10)\x20==\x200.0f\x20&&\x20length(v01)\x20==\x200.0f\x20&&\x20length(v11)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x200.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20interpolation\x20weights\x0a\x20\x20float\x20s\x20=\x20(lon\x20-\x20lon0)\x20/\x20interval.x;\x0a\x20\x20float\x20t\x20=\x20(lat\x20-\x20lat0)\x20/\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Perform\x20bilinear\x20interpolation\x20on\x20vector\x20components\x0a\x20\x20vec2\x20v0\x20=\x20mix(v00,\x20v10,\x20s);\x0a\x20\x20vec2\x20v1\x20=\x20mix(v01,\x20v11,\x20s);\x0a\x20\x20return\x20mix(v0,\x20v1,\x20t);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec2\x20convertSpeedUnitToLonLat(vec2\x20lonLat,\x20vec2\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLat);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20vec2\x20windVectorInLonLat\x20=\x20vec2(u,\x20v);\x0a\x0a\x20\x20return\x20windVectorInLonLat;\x0a}\x0a\x0avec2\x20calculateSpeedByRungeKutta2(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec2\x20y_n\x20=\x20lonLat;\x0a\x20\x20vec2\x20f_n\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec2\x20speed\x20=\x20h\x20*\x20bilinearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20calculateWindNorm(vec2\x20speed)\x20{\x0a\x20\x20float\x20speedLength\x20=\x20length(speed.xy);\x0a\x20\x20if(speedLength\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Clamp\x20speedLength\x20to\x20range\x0a\x20\x20float\x20clampedSpeed\x20=\x20clamp(speedLength,\x20speedRange.x,\x20speedRange.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(clampedSpeed\x20-\x20speedRange.x)\x20/\x20(speedRange.y\x20-\x20speedRange.x);\x0a\x20\x20return\x20vec2(speedLength,\x20normalizedSpeed);\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec2\x20lonLat\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec2\x20speedOrigin\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLat)\x20*\x20frameRateAdjustment;\x0a\x20\x20vec2\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLat,\x20speed);\x0a\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',postProcessingPositionFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a',renderParticlesFragmentShader='#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=_0x560305(0x53f,0x5b2);const {ShaderSource:ShaderSource$1}=mars3d__namespace['Cesium'];class ShaderManager{static[_0x560305(0x53d,0x5b2)](){const _0x2d7dae={};return _0x2d7dae['sources']=[calculateSpeedShader],new ShaderSource$1(_0x2d7dae);}static['getUpdatePositionShader'](){const _0x400160={};return _0x400160['sources']=[updatePositionShader],new ShaderSource$1(_0x400160);}static['getSegmentDrawVertexShader'](){function _0x577831(_0x1f489e,_0x542957){return _0x413ef9(_0x1f489e-0x39f,_0x542957);}const _0x5726ca={};return _0x5726ca[_0x577831(0x463,0x409)]=[renderParticlesVertexShader],new ShaderSource$1(_0x5726ca);}static[_0x560305(0x5c7,0x58e)](){const _0x48551b={};return _0x48551b['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x48551b);}static[_0x560305(0x5bb,0x5d1)](){const _0x2ba58c={};return _0x2ba58c['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x2ba58c);}}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defined,destroyObject}=mars3d__namespace[_0x560305(0x5e2,0x570)];class CustomPrimitive{constructor(_0x5f153e){function _0x4fc3d3(_0x1bff74,_0x4996f3){return _0x413ef9(_0x1bff74-0x146,_0x4996f3);}this[_0x4965e6(0x59a,0x58d)]=_0x5f153e['commandType'],this['geometry']=_0x5f153e[_0x4fc3d3(0x1b1,0x130)],this['attributeLocations']=_0x5f153e['attributeLocations'],this['primitiveType']=_0x5f153e[_0x4965e6(0x4f9,0x50a)],this['uniformMap']=_0x5f153e[_0x4fc3d3(0x198,0x1b2)]||{},this[_0x4fc3d3(0x226,0x289)]=_0x5f153e['vertexShaderSource'],this['fragmentShaderSource']=_0x5f153e['fragmentShaderSource'],this[_0x4965e6(0x564,0x4ea)]=_0x5f153e['rawRenderState'],this['framebuffer']=_0x5f153e['framebuffer'],this['outputTexture']=_0x5f153e['outputTexture'];function _0x4965e6(_0x35564a,_0xe62360){return _0x413ef9(_0xe62360-0x4ab,_0x35564a);}this['autoClear']=_0x5f153e[_0x4965e6(0x561,0x53c)]??![],this[_0x4965e6(0x498,0x4a1)]=_0x5f153e[_0x4fc3d3(0x13c,0xe9)],this['show']=!![],this['commandToExecute']=undefined,this[_0x4965e6(0x513,0x581)]=undefined,this['isDynamic']=_0x5f153e[_0x4965e6(0x449,0x490)]??(()=>!![]),this[_0x4fc3d3(0x1d7,0x214)]&&(this[_0x4965e6(0x5ed,0x581)]=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Pass$1['OPAQUE']}));}[_0x560305(0x5e9,0x5ce)](_0x2b3dbf){function _0x4d0046(_0x3e5cb8,_0xf79906){return _0x560305(_0x3e5cb8- -0x56e,_0xf79906);}function _0xa5bc6a(_0x3bff85,_0x244205){return _0x413ef9(_0x3bff85- -0x100,_0x244205);}if(this[_0x4d0046(0xb4,0x6e)]===_0xa5bc6a(-0xac,-0x74)){const _0x26599d={};_0x26599d['context']=_0x2b3dbf,_0x26599d['geometry']=this[_0x4d0046(0x3d,0xc1)],_0x26599d[_0x4d0046(0xa9,0x67)]=this[_0x4d0046(0xa9,0xf0)],_0x26599d[_0xa5bc6a(-0x48,-0xb5)]=BufferUsage$1['STATIC_DRAW'];const _0x3d709c=VertexArray$1['fromGeometry'](_0x26599d),_0x508b98={};_0x508b98['context']=_0x2b3dbf,_0x508b98[_0xa5bc6a(-0x20,0x4e)]=this[_0xa5bc6a(-0x20,0xb)],_0x508b98['fragmentShaderSource']=this['fragmentShaderSource'],_0x508b98['attributeLocations']=this['attributeLocations'];const _0x466a20=ShaderProgram['fromCache'](_0x508b98),_0x32b232=RenderState['fromCache'](this['rawRenderState']),_0x443daf={};return _0x443daf[_0x4d0046(-0x4b,0x37)]=this,_0x443daf['vertexArray']=_0x3d709c,_0x443daf[_0x4d0046(0x31,0x64)]=this['primitiveType'],_0x443daf[_0x4d0046(-0x8,0x22)]=Matrix4['IDENTITY'],_0x443daf['renderState']=_0x32b232,_0x443daf[_0xa5bc6a(-0x7a,-0x49)]=_0x466a20,_0x443daf['framebuffer']=this['framebuffer'],_0x443daf['uniformMap']=this[_0x4d0046(0x24,0x8b)],_0x443daf['pass']=Pass$1[_0x4d0046(0x45,0x99)],new DrawCommand(_0x443daf);}else{if(this['commandType']==='Compute'){const _0x3dda65={};return _0x3dda65['owner']=this,_0x3dda65['fragmentShaderSource']=this['fragmentShaderSource'],_0x3dda65[_0xa5bc6a(-0xae,-0xac)]=this['uniformMap'],_0x3dda65['outputTexture']=this[_0x4d0046(0x1c,-0x45)],_0x3dda65[_0xa5bc6a(-0xef,-0xbc)]=!![],new ComputeCommand(_0x3dda65);}else throw new Error(_0x4d0046(0x29,0x9c));}}['setGeometry'](_0x33b121,_0x18b54f){function _0x1c570a(_0x4bfaf0,_0x52ea6d){return _0x413ef9(_0x4bfaf0-0x87,_0x52ea6d);}this['geometry']=_0x18b54f;function _0x3cc99f(_0x41942c,_0x49f6c3){return _0x560305(_0x41942c-0x7a,_0x49f6c3);}defined(this['commandToExecute'])&&(this[_0x3cc99f(0x682,0x696)][_0x1c570a(0xb3,0xec)]=VertexArray$1['fromGeometry']({'context':_0x33b121,'geometry':this[_0x3cc99f(0x625,0x5a2)],'attributeLocations':this[_0x3cc99f(0x691,0x678)],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}[_0x560305(0x583,0x54a)](_0x5ae944){if(!this['isDynamic']())return;if(!this['show']||!defined(_0x5ae944))return;!defined(this[_0x2139f4(0x271,0x1f2)])&&(this['commandToExecute']=this[_0x2139f4(0x213,0x1d3)](_0x5ae944['context']));function _0x2139f4(_0x1befb5,_0x2d0353){return _0x560305(_0x2d0353- -0x416,_0x1befb5);}defined(this['preExecute'])&&this['preExecute']();if(!_0x5ae944['commandList']){console['warn']('frameState.commandList\x20is\x20undefined');return;}function _0x78a427(_0x420512,_0x71c542){return _0x560305(_0x71c542- -0x2f4,_0x420512);}defined(this[_0x78a427(0x304,0x322)])&&_0x5ae944[_0x2139f4(0x162,0x164)]['push'](this['clearCommand']),defined(this[_0x78a427(0x397,0x314)])&&_0x5ae944[_0x2139f4(0x146,0x164)][_0x2139f4(0x194,0x118)](this[_0x2139f4(0x1c8,0x1f2)]);}[_0x560305(0x5a9,0x596)](){return![];}[_0x560305(0x532,0x565)](){function _0x3b5acb(_0x79446d,_0x5cff11){return _0x560305(_0x79446d- -0x54d,_0x5cff11);}function _0x222d67(_0x362a3d,_0x6644f){return _0x560305(_0x362a3d- -0x2cb,_0x6644f);}if(defined(this[_0x222d67(0x33d,0x389)])){var _0x2a6305;(_0x2a6305=this['commandToExecute']['shaderProgram'])===null||_0x2a6305===void 0x0||_0x2a6305['destroy'](),this['commandToExecute'][_0x3b5acb(0x79,0x5c)]=undefined;}return destroyObject(this);}}function deepMerge(_0x53eb46,_0x364c25){if(!_0x53eb46)return _0x364c25;function _0x4e32c1(_0x173f51,_0x11ae2e){return _0x413ef9(_0x11ae2e-0x1f0,_0x173f51);}if(!_0x364c25)return _0x53eb46;const _0x8a91c5={..._0x364c25},_0x49cba8=_0x8a91c5;for(const _0x50adfb in _0x53eb46){if(Object['prototype']['hasOwnProperty'][_0x4e32c1(0x1f2,0x1dd)](_0x53eb46,_0x50adfb)){const _0x1a8aeb=_0x53eb46[_0x50adfb],_0xf1f388=_0x364c25[_0x50adfb];if(Array['isArray'](_0x1a8aeb)){_0x49cba8[_0x50adfb]=_0x1a8aeb[_0x3e5b68(0x18a,0x17e)]();continue;}if(_0x1a8aeb&&typeof _0x1a8aeb==='object'){_0x49cba8[_0x50adfb]=deepMerge(_0x1a8aeb,_0xf1f388||{});continue;}_0x1a8aeb!==undefined&&(_0x49cba8[_0x50adfb]=_0x1a8aeb);}}function _0x3e5b68(_0x330017,_0x1c914c){return _0x413ef9(_0x1c914c-0xe0,_0x330017);}return _0x49cba8;}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(_0x1dabee,_0x37b9f7,_0x51e928,_0x5a6382,_0x3ac779){this[_0x4edbcf(0x531,0x530)]=_0x1dabee,this['options']=_0x51e928,this[_0x4ec95f(0x16e,0x125)]=_0x5a6382,this['windData']=_0x37b9f7,this['frameRate']=0x3c,this['frameRateAdjustment']=0x1;const _0x3b5fd1={};function _0x4edbcf(_0x316049,_0x4a6d03){return _0x560305(_0x4a6d03- -0x3e,_0x316049);}_0x3b5fd1[_0x4edbcf(0x5d6,0x58a)]=_0x3ac779,_0x3b5fd1['samplingWindow']=0x1,_0x3b5fd1[_0x4edbcf(0x4e1,0x52f)]=0x0,this['frameRateMonitor']=new FrameRateMonitor(_0x3b5fd1),this['initFrameRate'](),this['createWindTextures']();function _0x4ec95f(_0x712ed7,_0x433ce6){return _0x413ef9(_0x712ed7-0x170,_0x433ce6);}this[_0x4ec95f(0x21f,0x1d4)](),this[_0x4edbcf(0x547,0x4ec)]();}[_0x560305(0x55a,0x592)](){const _0x4aed8f=()=>{function _0x195882(_0x2583f3,_0x1034c7){return _0x100c(_0x1034c7-0x156,_0x2583f3);}function _0x49b4f8(_0x2236ac,_0x2150f7){return _0x100c(_0x2236ac- -0x86,_0x2150f7);}this['frameRateMonitor'][_0x49b4f8(0x198,0x15f)]>0x14&&(this[_0x195882(0x366,0x38f)]=this[_0x195882(0x41a,0x434)][_0x195882(0x3f4,0x374)],this['frameRateAdjustment']=0x3c/Math['max'](this[_0x195882(0x349,0x38f)],0x1));};_0x4aed8f();const _0x5d6289=setInterval(_0x4aed8f,0x3e8),_0x41d47e=this['destroy']['bind'](this);this['destroy']=()=>{clearInterval(_0x5d6289),_0x41d47e();};}['createWindTextures'](){const _0x5a3493={};function _0x220c4f(_0x3ee433,_0x58b742){return _0x413ef9(_0x3ee433-0x354,_0x58b742);}_0x5a3493['minificationFilter']=TextureMinificationFilter$1[_0x220c4f(0x3b0,0x410)];function _0x3700ca(_0x35f3ca,_0x5b97a5){return _0x560305(_0x5b97a5- -0x5a,_0x35f3ca);}_0x5a3493[_0x220c4f(0x345,0x392)]=TextureMagnificationFilter$1['LINEAR'];const _0x41a976={'context':this[_0x220c4f(0x382,0x34d)],'width':this[_0x3700ca(0x5d4,0x55e)]['width'],'height':this[_0x3700ca(0x54b,0x55e)]['height'],'pixelFormat':PixelFormat$1[_0x220c4f(0x3dd,0x3ee)],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this['options']['flipY']??![],'sampler':new Sampler$1(_0x5a3493)};this['windTextures']={'U':new Texture$1({..._0x41a976,'source':{'arrayBufferView':new Float32Array(this[_0x3700ca(0x56a,0x55e)]['u'][_0x220c4f(0x340,0x2ff)])}}),'V':new Texture$1({..._0x41a976,'source':{'arrayBufferView':new Float32Array(this[_0x220c4f(0x3cc,0x3e9)]['v']['array'])}})};}['createParticlesTextures'](){const _0x4c13e1={};_0x4c13e1['minificationFilter']=TextureMinificationFilter$1[_0x3b14de(0x3b5,0x3c1)],_0x4c13e1['magnificationFilter']=TextureMagnificationFilter$1['NEAREST'];const _0x369eee={'context':this['context'],'width':this['options'][_0x3b14de(0x329,0x2c1)],'height':this[_0x3b14de(0x3a6,0x336)][_0x38d5ec(0x36e,0x3ee)],'pixelFormat':PixelFormat$1[_0x38d5ec(0x3b4,0x424)],'pixelDatatype':PixelDatatype$1[_0x38d5ec(0x494,0x49c)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options']['particlesTextureSize']*this['options'][_0x38d5ec(0x40e,0x3ee)]*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x4c13e1)};function _0x3b14de(_0x31f5e5,_0xa5c90f){return _0x413ef9(_0x31f5e5-0x327,_0xa5c90f);}function _0x38d5ec(_0x48c983,_0x9262fe){return _0x413ef9(_0x9262fe-0x3ec,_0x48c983);}this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0x369eee),'currentParticlesPosition':new Texture$1(_0x369eee),'nextParticlesPosition':new Texture$1(_0x369eee),'postProcessingPosition':new Texture$1(_0x369eee),'particlesSpeed':new Texture$1(_0x369eee)};}['destroyParticlesTextures'](){function _0x2dab4a(_0x4309e7,_0xcf5415){return _0x560305(_0x4309e7- -0x1b6,_0xcf5415);}function _0x45f1ac(_0x58dbf5,_0x249a47){return _0x560305(_0x249a47- -0x6aa,_0x58dbf5);}Object[_0x2dab4a(0x39f,0x38c)](this[_0x45f1ac(-0xaa,-0xa1)])[_0x45f1ac(-0x14e,-0x17f)](_0x3d4fc2=>_0x3d4fc2['destroy']());}[_0x413ef9(-0x16,0x9)](){function _0xd68c53(_0x106f75,_0x563a87){return _0x560305(_0x563a87- -0x4e4,_0x106f75);}function _0xe3fecc(_0x466989,_0x2ba6d8){return _0x413ef9(_0x2ba6d8-0x45a,_0x466989);}this[_0xe3fecc(0x415,0x489)]={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':()=>this[_0xe3fecc(0x464,0x4a9)]['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this['windData']['u'][_0xd68c53(0xf2,0xb9)],this['windData']['u'][_0xe3fecc(0x4bc,0x453)]),'vRange':()=>new Cartesian2$1(this['windData']['v']['min'],this['windData']['v'][_0xe3fecc(0x496,0x453)]),'speedRange':()=>new Cartesian2$1(this[_0xd68c53(0xc8,0xd4)][_0xd68c53(0x14b,0xca)]['min'],this['windData']['speed']['max']),'currentParticlesPosition':()=>this[_0xe3fecc(0x544,0x523)]['currentParticlesPosition'],'speedScaleFactor':()=>{return(this['viewerParameters']['pixelSize']+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this['frameRateAdjustment'],'dimension':()=>new Cartesian2$1(this[_0xe3fecc(0x47c,0x4d2)]['width'],this['windData']['height']),'minimum':()=>new Cartesian2$1(this['windData']['bounds']['west'],this[_0xe3fecc(0x4f6,0x4d2)]['bounds']['south']),'maximum':()=>new Cartesian2$1(this['windData']['bounds']['east'],this[_0xd68c53(0xe5,0xd4)][_0xd68c53(0x15e,0x112)][_0xe3fecc(0x5a3,0x521)])},'fragmentShaderSource':ShaderManager['getCalculateSpeedShader'](),'outputTexture':this['particlesTextures'][_0xe3fecc(0x5a1,0x526)],'preExecute':()=>{const _0xb5bcbb=this['particlesTextures']['previousParticlesPosition'];this[_0x4ccbc4(0x388,0x3da)][_0x3fcd12(0x545,0x532)]=this[_0x3fcd12(0x626,0x657)]['currentParticlesPosition'];function _0x4ccbc4(_0x1853f8,_0x4cd2e4){return _0xd68c53(_0x4cd2e4,_0x1853f8-0x263);}this['particlesTextures']['currentParticlesPosition']=this['particlesTextures']['postProcessingPosition'];function _0x3fcd12(_0x453673,_0x368198){return _0xe3fecc(_0x368198,_0x453673-0x103);}this[_0x3fcd12(0x626,0x5d7)][_0x4ccbc4(0x341,0x2dd)]=_0xb5bcbb,this['primitives']['calculateSpeed']['commandToExecute']&&(this[_0x4ccbc4(0x2ee,0x32a)][_0x4ccbc4(0x2b7,0x2f6)]['commandToExecute'][_0x3fcd12(0x5a7,0x5f5)]=this[_0x4ccbc4(0x388,0x3ee)]['particlesSpeed']);},'isDynamic':()=>this[_0xe3fecc(0x48f,0x4d9)]['dynamic']}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this['particlesTextures'][_0xe3fecc(0x4ca,0x460)],'particlesSpeed':()=>this[_0xd68c53(0xaf,0x125)]['particlesSpeed']},'fragmentShaderSource':ShaderManager['getUpdatePositionShader'](),'outputTexture':this[_0xe3fecc(0x4dc,0x523)]['nextParticlesPosition'],'preExecute':()=>{function _0x330f53(_0x477372,_0x5f28fa){return _0xd68c53(_0x5f28fa,_0x477372-0x150);}function _0xe6abdb(_0x5bbdc2,_0x1b665e){return _0xd68c53(_0x1b665e,_0x5bbdc2-0x57);}this[_0x330f53(0x1db,0x1b3)]['updatePosition']['commandToExecute']&&(this[_0x330f53(0x1db,0x242)]['updatePosition'][_0x330f53(0x274,0x291)][_0x330f53(0x1f6,0x184)]=this['particlesTextures']['nextParticlesPosition']);},'isDynamic':()=>this['options']['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this['particlesTextures']['nextParticlesPosition'],'particlesSpeed':()=>this['particlesTextures'][_0xe3fecc(0x50e,0x526)],'lonRange':()=>this['viewerParameters'][_0xd68c53(0xb7,0xa0)],'latRange':()=>this['viewerParameters']['latRange'],'dataLonRange':()=>new Cartesian2$1(this['windData']['bounds']['west'],this['windData']['bounds']['east']),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0xd68c53(0x192,0x112)][_0xd68c53(0x52,0x78)],this['windData']['bounds'][_0xd68c53(0xce,0x123)]),'randomCoefficient':function(){function _0x1d1c0c(_0x41bffc,_0x3ee12c){return _0xe3fecc(_0x3ee12c,_0x41bffc- -0x396);}return Math[_0x1d1c0c(0x112,0x153)]();},'dropRate':()=>this['options'][_0xd68c53(0xc9,0x100)],'dropRateBump':()=>this[_0xe3fecc(0x538,0x4d9)]['dropRateBump'],'useViewerBounds':()=>this['options'][_0xe3fecc(0x3fd,0x440)]},'fragmentShaderSource':ShaderManager[_0xe3fecc(0x4f6,0x4d5)](),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':()=>{this['primitives']['postProcessingPosition']['commandToExecute']&&(this['primitives']['postProcessingPosition']['commandToExecute']['outputTexture']=this['particlesTextures']['postProcessingPosition']);},'isDynamic':()=>this[_0xe3fecc(0x50f,0x4d9)][_0xd68c53(0x18a,0x107)]})};}[_0x413ef9(0x53,-0xf)](){this[_0x9e97b9(0x280,0x231)]['U']['destroy']();function _0x441b5a(_0x2c3600,_0x2338e0){return _0x560305(_0x2338e0- -0x154,_0x2c3600);}function _0x9e97b9(_0x111ceb,_0x56539d){return _0x560305(_0x56539d- -0x35e,_0x111ceb);}this[_0x441b5a(0x3c8,0x43b)]['V']['destroy'](),this[_0x441b5a(0x4b4,0x488)]();}['updateWindData'](_0xb65e6c){this['windData']=_0xb65e6c;function _0x2d60b8(_0x5291c7,_0x18fbdd){return _0x413ef9(_0x5291c7-0x1ae,_0x18fbdd);}this[_0x2d60b8(0x201,0x1b2)]();}['updateOptions'](_0x247e8c){const _0x114b60=_0x247e8c[_0x3c04f4(-0xed,-0xa8)]!==undefined&&_0x247e8c['flipY']!==this['options']['flipY'];this['options']=deepMerge(_0x247e8c,this[_0x3c04f4(-0xf1,-0x144)]);function _0x3c04f4(_0x25dd5a,_0x25663f){return _0x560305(_0x25dd5a- -0x6b0,_0x25663f);}function _0x1c345c(_0x11f055,_0x22c82c){return _0x413ef9(_0x22c82c-0x24,_0x11f055);}_0x114b60&&this['reCreateWindTextures']();}['processWindData'](_0x3362ed){const {array:_0x134382}=_0x3362ed;let {min:_0x2279ef,max:_0x2b9927}=_0x3362ed;const _0x49e210=new Float32Array(_0x134382['length']);_0x2279ef===undefined&&(console[_0x34c63a(0x157,0x126)](_0x34c63a(0x194,0x10f)),_0x2279ef=Math['min'](..._0x134382));_0x2b9927===undefined&&(console[_0x34c63a(0x194,0x126)](_0x2d5223(-0x136,-0x110)),_0x2b9927=Math[_0x34c63a(0xd5,0x63)](..._0x134382));const _0x18257f=Math['max'](Math[_0x34c63a(0x91,0xc0)](_0x2279ef),Math['abs'](_0x2b9927));function _0x2d5223(_0x547d7e,_0x1a7ca9){return _0x560305(_0x1a7ca9- -0x6f1,_0x547d7e);}for(let _0x7c032b=0x0;_0x7c032b<_0x134382[_0x2d5223(-0xd0,-0x121)];_0x7c032b++){const _0x158bbd=_0x134382[_0x7c032b]/_0x18257f;_0x49e210[_0x7c032b]=_0x158bbd;}function _0x34c63a(_0x5b64e2,_0x57c08f){return _0x560305(_0x57c08f- -0x4d6,_0x5b64e2);}return _0x49e210;}['destroy'](){Object['values'](this['windTextures'])['forEach'](_0x4b023e=>_0x4b023e[_0x12a13e(0x313,0x324)]());function _0xcbb3e3(_0x3dee49,_0x4d8ecb){return _0x560305(_0x4d8ecb- -0xb2,_0x3dee49);}Object[_0x12a13e(0x3be,0x347)](this[_0x12a13e(0x38d,0x3fb)])[_0xcbb3e3(0x45a,0x479)](_0x558ae5=>_0x558ae5['destroy']());function _0x12a13e(_0x320e1a,_0x4b32cc){return _0x413ef9(_0x4b32cc-0x332,_0x320e1a);}Object[_0x12a13e(0x2f2,0x347)](this[_0x12a13e(0x36e,0x361)])['forEach'](_0x5dd1ea=>_0x5dd1ea['destroy']()),this[_0x12a13e(0x421,0x40a)]['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['Cesium'];class WindParticlesRendering{constructor(_0x3bc6b0,_0x412fba,_0x452159,_0x2b88f9){this['context']=_0x3bc6b0,this['options']=_0x412fba;function _0x42ad0b(_0x1a45c,_0x464e9b){return _0x560305(_0x1a45c- -0x5f8,_0x464e9b);}this['viewerParameters']=_0x452159;function _0x1d8eda(_0x450cf5,_0x39440b){return _0x560305(_0x39440b- -0x38a,_0x450cf5);}this['computing']=_0x2b88f9,(typeof this[_0x42ad0b(-0x39,-0x59)][_0x42ad0b(-0xb6,-0x134)]!==_0x42ad0b(0x2c,-0x11)||this[_0x42ad0b(-0x39,0x4b)]['particlesTextureSize']<=0x0)&&(console['error']('Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.'),this[_0x1d8eda(0x24e,0x235)][_0x1d8eda(0x1d1,0x1b8)]=0x100),this[_0x42ad0b(-0xb4,-0xf2)]=this['createColorTableTexture'](),this['textures']=this[_0x1d8eda(0x215,0x25d)](),this['framebuffers']=this['createRenderingFramebuffers'](),this['primitives']=this['createPrimitives']();}['createRenderingTextures'](){const _0x44d8f1={};_0x44d8f1['context']=this['context'];function _0x36b533(_0x157aaa,_0x3d7089){return _0x413ef9(_0x3d7089-0x558,_0x157aaa);}_0x44d8f1['width']=this['context']['drawingBufferWidth'];function _0x52a37e(_0x4f6e4b,_0x3dd107){return _0x413ef9(_0x3dd107-0x4f9,_0x4f6e4b);}_0x44d8f1['height']=this['context'][_0x36b533(0x621,0x5a0)],_0x44d8f1['pixelFormat']=PixelFormat['RGBA'],_0x44d8f1['pixelDatatype']=PixelDatatype[_0x52a37e(0x555,0x572)];const _0x46788c=_0x44d8f1,_0x491a8d={};_0x491a8d['context']=this['context'],_0x491a8d[_0x36b533(0x629,0x622)]=this['context']['drawingBufferWidth'],_0x491a8d['height']=this[_0x36b533(0x5e5,0x586)]['drawingBufferHeight'],_0x491a8d['pixelFormat']=PixelFormat['DEPTH_COMPONENT'],_0x491a8d[_0x52a37e(0x587,0x5ba)]=PixelDatatype['UNSIGNED_INT'];const _0x5f3257=_0x491a8d;return{'segmentsColor':new Texture(_0x46788c),'segmentsDepth':new Texture(_0x5f3257)};}[_0x560305(0x5ad,0x5cf)](){const _0x565a03={};_0x565a03['context']=this[_0x4c33e8(0x188,0x181)],_0x565a03['colorTextures']=[this['textures']['segmentsColor']],_0x565a03['depthTexture']=this['textures']['segmentsDepth'];function _0x4c33e8(_0x27cece,_0x420d48){return _0x560305(_0x420d48- -0x3ed,_0x27cece);}return{'segments':new Framebuffer(_0x565a03)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x1ef83c=>{function _0x4f1d83(_0x7a0578,_0x57c3fc){return _0x100c(_0x7a0578- -0x379,_0x57c3fc);}_0x1ef83c[_0x4f1d83(-0x181,-0x162)]();});}[_0x413ef9(0xcd,0x109)](){const _0x25ee62=new Float32Array(this[_0x52204f(-0x68,-0xd1)]['colors']['flatMap'](_0x3db979=>{function _0x3cb2ab(_0x55413b,_0xd3a132){return _0x52204f(_0xd3a132-0x376,_0x55413b);}const _0x139eaf=Color$1['fromCssColorString'](_0x3db979);return[_0x139eaf['red'],_0x139eaf[_0x3cb2ab(0x29f,0x2c0)],_0x139eaf['blue'],_0x139eaf['alpha']];})),_0x9563e={};function _0x1f09a2(_0x891c37,_0x2680f1){return _0x413ef9(_0x2680f1-0x2d2,_0x891c37);}_0x9563e['minificationFilter']=TextureMinificationFilter[_0x1f09a2(0x2f8,0x32e)];function _0x52204f(_0x26215d,_0x4edb9a){return _0x413ef9(_0x26215d- -0xe7,_0x4edb9a);}return _0x9563e['magnificationFilter']=TextureMagnificationFilter[_0x52204f(-0x8b,-0x86)],_0x9563e['wrapS']=TextureWrap[_0x1f09a2(0x309,0x2f2)],_0x9563e['wrapT']=TextureWrap['CLAMP_TO_EDGE'],new Texture({'context':this['context'],'width':this[_0x52204f(-0x68,-0x8a)]['colors'][_0x52204f(-0x57,-0x8e)],'height':0x1,'pixelFormat':PixelFormat['RGBA'],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x9563e),'source':{'width':this['options'][_0x52204f(-0xb0,-0x38)]['length'],'height':0x1,'arrayBufferView':_0x25ee62}});}['createSegmentsGeometry'](){const _0x1364b7=0x4,_0x20419d=this['options']['particlesTextureSize'];let _0x42f362=[];function _0x396bf5(_0x990e6e,_0x1b663d){return _0x560305(_0x990e6e- -0x1cf,_0x1b663d);}for(let _0xb13388=0x0;_0xb13388<_0x20419d;_0xb13388++){for(let _0x4c8f16=0x0;_0x4c8f16<_0x20419d;_0x4c8f16++){for(let _0xb001c0=0x0;_0xb001c0<_0x1364b7;_0xb001c0++){_0x42f362['push'](_0xb13388/_0x20419d),_0x42f362[_0x396bf5(0x35f,0x2e9)](_0x4c8f16/_0x20419d);}}}_0x42f362=new Float32Array(_0x42f362);const _0x55f56a=this[_0x396bf5(0x3f0,0x3c9)]['particlesTextureSize']**0x2;let _0x1bbc2b=[];for(let _0x52eb46=0x0;_0x52eb46<_0x55f56a;_0x52eb46++){_0x1bbc2b['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x1bbc2b=new Float32Array(_0x1bbc2b);let _0x54670e=[];for(let _0x2db187=0x0,_0x54bad0=0x0;_0x2db187<_0x55f56a;_0x2db187++){_0x54670e['push'](_0x54bad0+0x0,_0x54bad0+0x1,_0x54bad0+0x2,_0x54bad0+0x2,_0x54bad0+0x1,_0x54bad0+0x3),_0x54bad0+=_0x1364b7;}_0x54670e=new Uint32Array(_0x54670e);const _0x4a0102={};_0x4a0102['componentDatatype']=ComponentDatatype[_0x2948ab(0x34f,0x3a3)];function _0x2948ab(_0x38df7f,_0x26ae2d){return _0x413ef9(_0x38df7f-0x29f,_0x26ae2d);}_0x4a0102[_0x2948ab(0x33a,0x36d)]=0x2,_0x4a0102['values']=_0x42f362;const _0x3fd3a5={};_0x3fd3a5['componentDatatype']=ComponentDatatype['FLOAT'],_0x3fd3a5[_0x2948ab(0x33a,0x31b)]=0x3,_0x3fd3a5[_0x396bf5(0x386,0x360)]=_0x1bbc2b;const _0x56d0b1=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x4a0102),'normal':new GeometryAttribute(_0x3fd3a5)}),'indices':_0x54670e});return _0x56d0b1;}['createRawRenderState'](_0x491fd0){const _0x2c6468={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x491fd0};return Appearance['getDefaultRenderState'](!![],![],_0x2c6468);}['createPrimitives'](){const _0x39b6bd={};_0x39b6bd['st']=0x0,_0x39b6bd['normal']=0x1;const _0x4dafa7={};_0x4dafa7[_0x2b7930(-0x7f,-0xf)]=!![];const _0x2f1587={};_0x2f1587['enabled']=!![],_0x2f1587[_0x40dcbc(0x50a,0x589)]=WebGLRenderingContext[_0x40dcbc(0x5ad,0x5d9)],_0x2f1587['blendFuncSource']=WebGLRenderingContext['SRC_ALPHA'];function _0x40dcbc(_0x448451,_0x7a91c4){return _0x560305(_0x7a91c4- -0x19,_0x448451);}function _0x2b7930(_0x4ea53f,_0x4927fb){return _0x413ef9(_0x4927fb- -0xa7,_0x4ea53f);}_0x2f1587['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x5a947d={};_0x5a947d[_0x2b7930(-0x64,-0x1d)]=undefined,_0x5a947d[_0x40dcbc(0x623,0x59e)]=_0x4dafa7,_0x5a947d['depthMask']=!![],_0x5a947d[_0x40dcbc(0x5a6,0x587)]=_0x2f1587;const _0x34c505=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x39b6bd,'geometry':this['createSegmentsGeometry'](),'primitiveType':PrimitiveType['TRIANGLES'],'uniformMap':{'previousParticlesPosition':()=>this['computing']['particlesTextures']['previousParticlesPosition'],'currentParticlesPosition':()=>this['computing']['particlesTextures']['currentParticlesPosition'],'postProcessingPosition':()=>this['computing'][_0x40dcbc(0x5ad,0x5f0)][_0x2b7930(-0x52,-0x25)],'particlesSpeed':()=>this[_0x40dcbc(0x4a6,0x507)]['particlesTextures']['particlesSpeed'],'frameRateAdjustment':()=>this['computing'][_0x2b7930(-0x101,-0xcb)],'colorTable':()=>this['colorTable'],'domain':()=>{function _0x186a36(_0x535fc3,_0x296601){return _0x40dcbc(_0x296601,_0x535fc3- -0x3b2);}var _0x1c4142,_0x365457;const _0x3382e0=new Cartesian2(((_0x1c4142=this['options'][_0x5e944d(0x1b3,0x195)])===null||_0x1c4142===void 0x0?void 0x0:_0x1c4142[_0x5e944d(0x1ba,0x211)])??this['computing'][_0x5e944d(0x271,0x22c)][_0x5e944d(0x204,0x222)]['min'],((_0x365457=this['options']['domain'])===null||_0x365457===void 0x0?void 0x0:_0x365457['max'])??this['computing'][_0x5e944d(0x1d0,0x22c)]['speed'][_0x5e944d(0x171,0x1ad)]);function _0x5e944d(_0x358e60,_0x1e4f38){return _0x40dcbc(_0x358e60,_0x1e4f38- -0x373);}return _0x3382e0;},'displayRange':()=>{var _0x5af4d0,_0x85b4d1;function _0x436cb5(_0x5b61ee,_0x4aec15){return _0x40dcbc(_0x5b61ee,_0x4aec15- -0x553);}function _0x1c8234(_0x3c038f,_0x50991d){return _0x40dcbc(_0x3c038f,_0x50991d- -0xcf);}const _0x58f6e2=new Cartesian2(((_0x5af4d0=this['options']['displayRange'])===null||_0x5af4d0===void 0x0?void 0x0:_0x5af4d0['min'])??this['computing'][_0x436cb5(0xab,0x4c)][_0x1c8234(0x548,0x4c6)]['min'],((_0x85b4d1=this['options']['displayRange'])===null||_0x85b4d1===void 0x0?void 0x0:_0x85b4d1[_0x436cb5(0x28,-0x33)])??this[_0x436cb5(-0x23,-0x4c)]['windData']['speed'][_0x1c8234(0x3cb,0x451)]);return _0x58f6e2;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this['context']['drawingBufferWidth']/this[_0x40dcbc(0x508,0x555)]['drawingBufferHeight'],'pixelSize':()=>this[_0x2b7930(-0x113,-0xa9)]['pixelSize'],'lineWidth':()=>{const _0x105240={};_0x105240[_0x4e9a18(0x626,0x63e)]=0x1,_0x105240['max']=0x2;const _0x43bcb2=this['options']['lineWidth']||_0x105240;function _0x4e9a18(_0x40f8c9,_0x88f83f){return _0x2b7930(_0x88f83f,_0x40f8c9-0x670);}return new Cartesian2(_0x43bcb2['min'],_0x43bcb2['max']);},'lineLength':()=>{function _0x5edd3f(_0x1ef62c,_0xa73bc6){return _0x2b7930(_0xa73bc6,_0x1ef62c- -0x117);}const _0x3691e3={};_0x3691e3[_0x5edd3f(-0x161,-0xf9)]=0x14,_0x3691e3['max']=0x64;const _0x1e31f1=this[_0x5edd3f(-0x13f,-0x18b)]['lineLength']||_0x3691e3;function _0x18691a(_0x450c43,_0x100236){return _0x40dcbc(_0x100236,_0x450c43- -0x31a);}return new Cartesian2(_0x1e31f1[_0x5edd3f(-0x161,-0x108)],_0x1e31f1['max']);},'is3D':()=>this['viewerParameters']['sceneMode']===SceneMode[_0x2b7930(0x55,0x2a)],'segmentsDepthTexture':()=>this['textures']['segmentsDepth']},'vertexShaderSource':ShaderManager[_0x40dcbc(0x595,0x5f7)](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x5a947d)}),_0x3c9cfa={};return _0x3c9cfa['segments']=_0x34c505,_0x3c9cfa;}['onParticlesTextureSizeChange'](){const _0x280e8f=this['createSegmentsGeometry']();this[_0x1b0ae6(0x357,0x2f8)][_0x1b0ae6(0x31b,0x29d)]['geometry']=_0x280e8f;const _0x1b357e={};_0x1b357e['context']=this['context'],_0x1b357e[_0x1b0ae6(0x393,0x40f)]=_0x280e8f,_0x1b357e['attributeLocations']=this['primitives']['segments']['attributeLocations'],_0x1b357e['bufferUsage']=BufferUsage['STATIC_DRAW'];function _0xd431f9(_0x248786,_0x1a2e6c){return _0x560305(_0x1a2e6c- -0xeb,_0x248786);}const _0x41f2be=VertexArray['fromGeometry'](_0x1b357e);function _0x1b0ae6(_0x2a7f4d,_0x4470ec){return _0x413ef9(_0x2a7f4d-0x328,_0x4470ec);}this[_0x1b0ae6(0x357,0x2fa)]['segments']['commandToExecute']&&(this['primitives']['segments']['commandToExecute'][_0x1b0ae6(0x354,0x351)]=_0x41f2be);}['onColorTableChange'](){this[_0x52e46f(0x30b,0x2a2)]['destroy']();function _0x52e46f(_0x10badb,_0x118adc){return _0x413ef9(_0x118adc-0x29e,_0x10badb);}this['colorTable']=this['createColorTableTexture']();}['updateOptions'](_0x2946e2){const _0x117c3c=_0x2946e2[_0x4c8c8d(0x19a,0x20d)]&&JSON[_0x4c8c8d(0x1cb,0x1f7)](_0x2946e2[_0x4c8c8d(0x18f,0x20d)])!==JSON['stringify'](this['options']['colors']);function _0x4c8c8d(_0x2cc6d3,_0x584312){return _0x413ef9(_0x584312-0x1d6,_0x2cc6d3);}function _0x13f298(_0x5cbcfc,_0x5c5b7f){return _0x413ef9(_0x5c5b7f-0x48b,_0x5cbcfc);}this['options']=deepMerge(_0x2946e2,this['options']),_0x117c3c&&this[_0x4c8c8d(0x175,0x1ea)]();}['destroy'](){function _0x3927a6(_0x4fc381,_0x581179){return _0x413ef9(_0x4fc381-0x22c,_0x581179);}function _0x283970(_0x40debf,_0x5c0c54){return _0x413ef9(_0x40debf-0x181,_0x5c0c54);}Object['values'](this['framebuffers'])['forEach'](_0x22ad20=>{function _0xb7af14(_0x498eca,_0x14d6c2){return _0x100c(_0x14d6c2- -0x21c,_0x498eca);}_0x22ad20[_0xb7af14(-0x86,-0x24)]();}),Object['values'](this[_0x3927a6(0x25b,0x263)])[_0x3927a6(0x217,0x1be)](_0x1f6f94=>{_0x1f6f94['destroy']();}),this['colorTable']['destroy']();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0x413ef9(0xa2,0x75)];class WindParticleSystem{constructor(_0xa1e679,_0x2cbb5b,_0x344f47,_0xd9994,_0x50c7e2){function _0x246123(_0x9756ca,_0x531e5a){return _0x413ef9(_0x531e5a- -0x66,_0x9756ca);}this['context']=_0xa1e679;function _0x2f47ae(_0x33882e,_0x5a6e22){return _0x560305(_0x33882e- -0x52b,_0x5a6e22);}this['options']=_0x344f47,this['viewerParameters']=_0xd9994,this[_0x246123(-0x93,-0x86)]=new WindParticlesComputing(_0xa1e679,_0x2cbb5b,_0x344f47,_0xd9994,_0x50c7e2),this[_0x2f47ae(0x76,0x88)]=new WindParticlesRendering(_0xa1e679,_0x344f47,_0xd9994,this['computing']),this['clearFramebuffers']();}[_0x560305(0x548,0x502)](){function _0x4645aa(_0x230d35,_0x427c38){return _0x413ef9(_0x427c38-0x6f,_0x230d35);}const _0x16e339=[this[_0x23128d(0x59b,0x5a3)]['primitives'][_0x23128d(0x625,0x5bb)],this['computing']['primitives']['updatePosition'],this['computing'][_0x4645aa(0xdb,0x9e)]['postProcessingPosition'],this[_0x4645aa(0xb6,0xd0)][_0x23128d(0x5d3,0x5f2)][_0x23128d(0x5c7,0x5b6)]];function _0x23128d(_0x2c7345,_0x3c65a2){return _0x560305(_0x3c65a2-0x83,_0x2c7345);}return _0x16e339;}[_0x560305(0x5a8,0x615)](){function _0x5503ce(_0x321d28,_0x4e043c){return _0x560305(_0x321d28- -0x34a,_0x4e043c);}const _0xcef1c5=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass[_0x402a50(0x49a,0x4e8)]});function _0x402a50(_0x329d44,_0x33fa81){return _0x413ef9(_0x329d44-0x427,_0x33fa81);}Object[_0x402a50(0x464,0x487)](this['rendering']['framebuffers'])['forEach'](_0x52fd4b=>{_0xcef1c5['framebuffer']=this['rendering'][_0x425fca(-0xcc,-0x148)][_0x52fd4b];function _0x4d697d(_0x19d018,_0x5bd512){return _0x402a50(_0x5bd512- -0x54a,_0x19d018);}function _0x425fca(_0x2a5c8d,_0x449385){return _0x402a50(_0x2a5c8d- -0x55d,_0x449385);}_0xcef1c5[_0x425fca(-0x59,-0x8d)](this[_0x425fca(-0x108,-0x12d)]);});}[_0x413ef9(0xbf,0x12d)](_0x3b1145){let _0x3ca1b6=![];function _0x36cd6b(_0x47a431,_0x54fdc6){return _0x560305(_0x47a431- -0x643,_0x54fdc6);}_0x3b1145['particlesTextureSize']&&this[_0x36cd6b(-0x84,-0x6b)]['particlesTextureSize']!==_0x3b1145['particlesTextureSize']&&(_0x3ca1b6=!![]);const _0x155bdc=deepMerge(_0x3b1145,this[_0x36cd6b(-0x84,-0x87)]);if(_0x155bdc['particlesTextureSize']<0x1)throw new Error('particlesTextureSize\x20must\x20be\x20greater\x20than\x200');this[_0x36cd6b(-0x84,-0xbc)]=_0x155bdc,this['rendering'][_0x1c1eb1(0x32,0x7f)](_0x3b1145);function _0x1c1eb1(_0x4e5142,_0x4ed396){return _0x413ef9(_0x4e5142- -0xb3,_0x4ed396);}this['computing'][_0x1c1eb1(0x32,0xa0)](_0x3b1145),_0x3ca1b6&&(this['computing'][_0x36cd6b(-0xb2,-0xb1)](),this['computing']['createParticlesTextures'](),this['rendering']['onParticlesTextureSizeChange']());}['applyViewerParameters'](_0xcb0149){function _0xc5a6e6(_0x36ec5f,_0x22cbfb){return _0x560305(_0x36ec5f- -0x12a,_0x22cbfb);}this[_0xc5a6e6(0x414,0x40c)]=_0xcb0149;function _0x17a026(_0x122a17,_0x30bbec){return _0x560305(_0x30bbec- -0x1a0,_0x122a17);}this[_0xc5a6e6(0x3f6,0x444)]['viewerParameters']=_0xcb0149,this['rendering'][_0xc5a6e6(0x414,0x3dd)]=_0xcb0149;}['destroy'](){function _0x1d4b17(_0x1c7dfa,_0x344f24){return _0x413ef9(_0x1c7dfa- -0x10b,_0x344f24);}this['computing'][_0x1d4b17(-0x119,-0x14b)](),this['rendering']['destroy']();}}const Cesium$1=mars3d__namespace[_0x413ef9(0xa2,0xc4)],BaseLayer$1=mars3d__namespace[_0x560305(0x537,0x599)][_0x413ef9(0x5,0x6c)],_0x31a1b4={};_0x31a1b4['min']=0x1,_0x31a1b4['max']=0x2;const _0x433d75={};function _0x413ef9(_0x2066e6,_0x3a7cf8){return _0x100c(_0x2066e6- -0x206,_0x3a7cf8);}_0x433d75[_0x413ef9(0x5d,-0x1e)]=0x14,_0x433d75['max']=0x64;const _0x1b465f={};_0x1b465f['particlesTextureSize']=0x64,_0x1b465f['fixedHeight']=0x0,_0x1b465f['lineWidth']=_0x31a1b4,_0x1b465f[_0x413ef9(0x50,0x91)]=_0x433d75,_0x1b465f['speedFactor']=0x1,_0x1b465f['dropRate']=0.003,_0x1b465f['dropRateBump']=0.001,_0x1b465f['colors']=[_0x413ef9(0xc5,0x9f)],_0x1b465f['flipY']=![],_0x1b465f['dynamic']=!![];const DEF_OPTIONS=_0x1b465f;class WindLayer extends BaseLayer$1{constructor(_0x97b981={}){_0x97b981={...DEF_OPTIONS,..._0x97b981},super(_0x97b981),this['_setOptionsHook'](_0x97b981,_0x97b981);}get[_0x560305(0x537,0x569)](){return this['primitives'];}get['data'](){function _0x5781c8(_0x55a532,_0x3e9930){return _0x560305(_0x3e9930- -0xa3,_0x55a532);}return this[_0x5781c8(0x49d,0x51c)]['data'];}set['data'](_0x5b07b0){this['options']['data']=_0x5b07b0;function _0x3d5b4(_0x302b69,_0xc9be6a){return _0x413ef9(_0xc9be6a-0xc5,_0x302b69);}this[_0x3d5b4(0x14a,0xcc)](_0x5b07b0);}get['colors'](){function _0x264747(_0x40328a,_0x50091f){return _0x413ef9(_0x50091f-0x2ef,_0x40328a);}function _0x1d4799(_0x29d5d1,_0x2c8b2c){return _0x560305(_0x29d5d1- -0x12,_0x2c8b2c);}return this[_0x1d4799(0x5ad,0x54e)][_0x1d4799(0x565,0x511)];}set['colors'](_0x620a7d){this[_0x26b9f2(0x3dd,0x3de)]['colors']=_0x620a7d;const _0x246499={};function _0x26b9f2(_0x2cc95e,_0x16b5ac){return _0x560305(_0x2cc95e- -0x1e2,_0x16b5ac);}_0x246499['colors']=_0x620a7d,this['_setOptionsHook'](this['options'],_0x246499);}[_0x560305(0x524,0x574)](_0x3a29a1){function _0x2f1468(_0x527a4d,_0x392e4a){return _0x413ef9(_0x392e4a-0x5e6,_0x527a4d);}_0x3a29a1?this[_0x2f1468(0x651,0x6c2)]():this['_removedHook']();}['_mountedHook'](){}[_0x413ef9(0xdc,0xe9)](){function _0x8cfba3(_0x532541,_0x7e66d4){return _0x413ef9(_0x532541-0x3d0,_0x7e66d4);}this['scene']=this['_map'][_0x4b10fd(0x623,0x664)],this[_0x4b10fd(0x69c,0x6bb)]=this['_map'][_0x4b10fd(0x63d,0x6bb)];this[_0x4b10fd(0x661,0x65b)][_0x8cfba3(0x3fa,0x415)]&&this['setData'](this['options'][_0x4b10fd(0x5c7,0x606)]);if(!this[_0x4b10fd(0x621,0x654)]||!this['show'])return;function _0x4b10fd(_0x3cb518,_0x34e1fb){return _0x560305(_0x34e1fb-0x9c,_0x3cb518);}this[_0x4b10fd(0x647,0x5da)]={'lonRange':new Cesium$1['Cartesian2'](-0xb4,0xb4),'latRange':new Cesium$1[(_0x8cfba3(0x3db,0x3e1))](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this[_0x8cfba3(0x458,0x43e)][_0x4b10fd(0x5cd,0x5ef)]},this['updateViewerParameters'](),this['particleSystem']=new WindParticleSystem(this[_0x8cfba3(0x458,0x463)]['context'],this[_0x4b10fd(0x642,0x654)],this['options'],this['viewerParameters'],this[_0x8cfba3(0x458,0x414)]),this[_0x4b10fd(0x5fa,0x60b)]=this['particleSystem'][_0x4b10fd(0x5bf,0x5e4)](),this['primitives']['forEach'](_0x536c22=>{function _0x291755(_0x1d718d,_0x251df6){return _0x4b10fd(_0x251df6,_0x1d718d- -0x661);}this['scene']['primitives'][_0x291755(0x15,0x4c)](_0x536c22);}),this['camera'][_0x4b10fd(0x649,0x67f)]=0.01,this[_0x8cfba3(0x4af,0x495)]['changed'][_0x8cfba3(0x400,0x384)](this[_0x4b10fd(0x70a,0x68f)][_0x4b10fd(0x577,0x5fb)](this)),this[_0x4b10fd(0x668,0x664)]['morphComplete']['addEventListener'](this['updateViewerParameters'][_0x8cfba3(0x3ef,0x3a1)](this)),window['addEventListener'](_0x8cfba3(0x3cb,0x3bf),this['updateViewerParameters'][_0x4b10fd(0x57b,0x5fb)](this));}['_removedHook'](){this[_0x227eb5(0x25a,0x1d7)]['changed'][_0x5e4edc(0x5c7,0x5e7)](this['updateViewerParameters']['bind'](this));function _0x5e4edc(_0x2c5736,_0x529b7c){return _0x413ef9(_0x2c5736-0x543,_0x529b7c);}this['scene']['morphComplete']['removeEventListener'](this['updateViewerParameters']['bind'](this));function _0x227eb5(_0x12aa44,_0x4a4312){return _0x413ef9(_0x12aa44-0x17b,_0x4a4312);}window[_0x5e4edc(0x5c7,0x5cf)]('resize',this[_0x5e4edc(0x5f6,0x5e2)]['bind'](this)),this['primitives']&&(this['primitives']['forEach'](_0x30a915=>{this['scene']['primitives']['remove'](_0x30a915);}),delete this['primitives']),this[_0x227eb5(0x1c8,0x23c)]&&(this['particleSystem']['destroy'](),delete this[_0x227eb5(0x1c8,0x1d8)]);}[_0x413ef9(0x7,0x3f)](_0x13ea9d,_0x3178df){this['windData']=this[_0x54a5b2(0x18c,0x1b1)](_0x13ea9d);function _0x233236(_0x3590b6,_0x32a33f){return _0x413ef9(_0x32a33f- -0x1d9,_0x3590b6);}function _0x54a5b2(_0x1b849a,_0x3482ee){return _0x560305(_0x3482ee- -0x422,_0x1b849a);}if(_0x3178df){this['_removedHook'](),this['_addedHook']();return;}this['particleSystem']?(this['particleSystem']['computing'][_0x54a5b2(0x8d,0x10d)](this['windData']),this['scene'][_0x54a5b2(0x11d,0x13b)]()):this['_addedHook']();}['_setOptionsHook'](_0x3837d5,_0x13ea4c){function _0x1b7ccc(_0x38c850,_0x4cbc0f){return _0x413ef9(_0x4cbc0f-0x1f8,_0x38c850);}this['particleSystem']&&(this['particleSystem'][_0x1b7ccc(0x246,0x2b7)](_0x13ea4c),this['scene']['requestRender']());}['processWindData'](_0x2ab55f){var _0x447990,_0x24946f;const _0xc1971b={..._0x2ab55f},_0x74c2e7=_0xc1971b;!_0x74c2e7['height']&&_0x74c2e7['rows']&&(_0x74c2e7['height']=_0x74c2e7['rows']);function _0x485ab6(_0x1d9753,_0x43af81){return _0x413ef9(_0x1d9753-0x44e,_0x43af81);}!_0x74c2e7[_0x384f27(0x697,0x662)]&&_0x74c2e7['cols']&&(_0x74c2e7['width']=_0x74c2e7['cols']);!_0x74c2e7[_0x485ab6(0x504,0x491)]&&(_0x74c2e7[_0x384f27(0x684,0x64e)]={'west':_0x74c2e7['xmin'],'south':_0x74c2e7['ymin'],'east':_0x74c2e7[_0x384f27(0x606,0x676)],'north':_0x74c2e7['ymax']});if(!_0x74c2e7['u']){const _0x34618e={};_0x34618e[_0x384f27(0x59f,0x584)]=_0x2ab55f['udata'],_0x34618e['min']=_0x2ab55f['umin'],_0x34618e[_0x384f27(0x5c3,0x591)]=_0x2ab55f['umax'],_0x74c2e7['u']=_0x34618e;}function _0x384f27(_0x4bf55f,_0x28a0a7){return _0x560305(_0x28a0a7-0x58,_0x4bf55f);}if(!_0x74c2e7['v']){const _0x42138b={};_0x42138b['array']=_0x2ab55f[_0x485ab6(0x4fc,0x476)],_0x42138b[_0x485ab6(0x4ab,0x476)]=_0x2ab55f['vmin'],_0x42138b[_0x485ab6(0x447,0x4b0)]=_0x2ab55f['vmax'],_0x74c2e7['v']=_0x42138b;}if(((_0x447990=_0x74c2e7[_0x485ab6(0x4bc,0x4de)])===null||_0x447990===void 0x0?void 0x0:_0x447990['min'])===undefined||((_0x24946f=_0x74c2e7['speed'])===null||_0x24946f===void 0x0?void 0x0:_0x24946f['max'])===undefined||_0x74c2e7['speed']['array']===undefined){const _0x3d8e50={'array':new Float32Array(_0x74c2e7['u'][_0x384f27(0x580,0x584)]['length']),'min':Number['MAX_VALUE'],'max':Number['MIN_VALUE']};for(let _0x21ef6c=0x0;_0x21ef6c<_0x74c2e7['u'][_0x384f27(0x5a8,0x584)][_0x384f27(0x61d,0x628)];_0x21ef6c++){_0x3d8e50['array'][_0x21ef6c]=Math[_0x485ab6(0x473,0x483)](_0x74c2e7['u'][_0x384f27(0x5fb,0x584)][_0x21ef6c]*_0x74c2e7['u']['array'][_0x21ef6c]+_0x74c2e7['v'][_0x384f27(0x5c5,0x584)][_0x21ef6c]*_0x74c2e7['v'][_0x485ab6(0x43a,0x40b)][_0x21ef6c]),_0x3d8e50['array'][_0x21ef6c]!==0x0&&(_0x3d8e50[_0x384f27(0x647,0x5f5)]=Math[_0x485ab6(0x4ab,0x452)](_0x3d8e50['min'],_0x3d8e50[_0x485ab6(0x43a,0x4a0)][_0x21ef6c]),_0x3d8e50['max']=Math['max'](_0x3d8e50[_0x384f27(0x516,0x591)],_0x3d8e50[_0x384f27(0x535,0x584)][_0x21ef6c]));}_0x74c2e7['speed']=_0x3d8e50;}return _0x74c2e7;}['updateViewerParameters'](){var _0x1fb740;const _0x88aca5=this[_0x47534c(0x67f,0x633)];if(!_0x88aca5)return;const _0x3b6e96=_0x88aca5[_0x47534c(0x653,0x5eb)],_0x228ec0={};_0x228ec0['x']=0x0,_0x228ec0['y']=0x0;const _0x46a30a={};_0x46a30a['x']=0x0,_0x46a30a['y']=_0x3b6e96[_0x597f04(0x220,0x231)];const _0x44bec2={};_0x44bec2['x']=_0x3b6e96['clientWidth'],_0x44bec2['y']=0x0;const _0xb00f2b={};_0xb00f2b['x']=_0x3b6e96[_0x597f04(0x2ba,0x303)];function _0x47534c(_0x53de00,_0xe6ea42){return _0x560305(_0xe6ea42-0x6b,_0x53de00);}_0xb00f2b['y']=_0x3b6e96[_0x47534c(0x584,0x5bd)];const _0x240795=[_0x228ec0,_0x46a30a,_0x44bec2,_0xb00f2b];let _0x2fbb5e=0xb4,_0x3b3d4a=-0xb4,_0xf26c84=0x5a,_0x540063=-0x5a,_0x5ef309=![];for(const _0x2241d6 of _0x240795){const _0x165ffc=_0x88aca5[_0x597f04(0x2ed,0x277)][_0x597f04(0x284,0x2cb)](new Cesium$1[(_0x47534c(0x5dd,0x5b6))](_0x2241d6['x'],_0x2241d6['y']),_0x88aca5[_0x597f04(0x21e,0x275)]['ellipsoid']);if(!_0x165ffc){_0x5ef309=!![];break;}const _0x327cd0=_0x88aca5['globe'][_0x597f04(0x2c2,0x28a)]['cartesianToCartographic'](_0x165ffc),_0x4fead6=Cesium$1[_0x47534c(0x60b,0x5c2)][_0x47534c(0x65e,0x65c)](_0x327cd0[_0x47534c(0x62b,0x648)]),_0x57555e=Cesium$1[_0x597f04(0x225,0x1db)]['toDegrees'](_0x327cd0[_0x47534c(0x5f1,0x5b9)]);_0x2fbb5e=Math[_0x47534c(0x659,0x608)](_0x2fbb5e,_0x4fead6),_0x3b3d4a=Math[_0x597f04(0x207,0x1ba)](_0x3b3d4a,_0x4fead6),_0xf26c84=Math['min'](_0xf26c84,_0x57555e),_0x540063=Math[_0x597f04(0x207,0x21d)](_0x540063,_0x57555e);}if(!_0x5ef309){const _0x515665=new Cesium$1[(_0x597f04(0x219,0x278))](Math[_0x597f04(0x207,0x1a4)](this['windData']['bounds']['west'],_0x2fbb5e),Math['min'](this[_0x47534c(0x5e5,0x623)][_0x597f04(0x2c4,0x2ff)][_0x47534c(0x57a,0x5e9)],_0x3b3d4a)),_0x2cc2b4=new Cesium$1[(_0x47534c(0x60d,0x5b6))](Math['max'](this[_0x47534c(0x677,0x623)]['bounds'][_0x47534c(0x550,0x5c7)],_0xf26c84),Math['min'](this[_0x597f04(0x286,0x227)][_0x47534c(0x5eb,0x661)]['north'],_0x540063)),_0x34f2a1=(_0x515665['y']-_0x515665['x'])*0.05,_0x3326e4=(_0x2cc2b4['y']-_0x2cc2b4['x'])*0.05;_0x515665['x']=Math[_0x47534c(0x5fa,0x5a4)](this['windData'][_0x47534c(0x617,0x661)]['west'],_0x515665['x']-_0x34f2a1),_0x515665['y']=Math['min'](this['windData']['bounds'][_0x597f04(0x24c,0x222)],_0x515665['y']+_0x34f2a1),_0x2cc2b4['x']=Math['max'](this['windData'][_0x597f04(0x2c4,0x309)][_0x597f04(0x22a,0x1ba)],_0x2cc2b4['x']-_0x3326e4),_0x2cc2b4['y']=Math['min'](this[_0x47534c(0x5e6,0x623)]['bounds']['north'],_0x2cc2b4['y']+_0x3326e4),this['viewerParameters'][_0x597f04(0x252,0x21e)]=_0x515665,this['viewerParameters']['latRange']=_0x2cc2b4;const _0x59a6d0=this['windData'][_0x597f04(0x2c4,0x2d2)][_0x47534c(0x626,0x5e9)]-this['windData']['bounds']['west'],_0x26d2fc=this[_0x597f04(0x286,0x24d)]['bounds']['north']-this['windData']['bounds'][_0x47534c(0x5d4,0x5c7)],_0x5fcbd7=(_0x515665['y']-_0x515665['x'])/_0x59a6d0,_0x10711a=(_0x2cc2b4['y']-_0x2cc2b4['x'])/_0x26d2fc,_0x4b83c7=Math[_0x597f04(0x26b,0x2a9)](_0x5fcbd7,_0x10711a),_0x1fa806=0x3e8*_0x4b83c7;_0x1fa806>0x0&&(this['viewerParameters'][_0x47534c(0x677,0x66e)]=Math[_0x597f04(0x207,0x1ff)](0x0,Math['min'](0x3e8,_0x1fa806)));}this['viewerParameters'][_0x597f04(0x272,0x26b)]=this[_0x47534c(0x63f,0x633)]['mode'];function _0x597f04(_0x249d0d,_0x4b1a0a){return _0x413ef9(_0x249d0d-0x20e,_0x4b1a0a);}(_0x1fb740=this[_0x597f04(0x25b,0x24f)])===null||_0x1fb740===void 0x0||_0x1fb740['applyViewerParameters'](this[_0x597f04(0x20c,0x223)]);}[_0x413ef9(0x7d,-0x8)](_0x3c623b,_0x5d1b65){const {bounds:_0x176005,width:_0xdc0db3,height:_0x3633d5,u:_0x568f5b,v:_0x3ee57f,speed:_0x12c376}=this['windData'],{flipY:_0x2c615d}=this['options'];if(_0x3c623b<_0x176005['west']||_0x3c623b>_0x176005['east']||_0x5d1b65<_0x176005[_0x39f25d(0x527,0x595)]||_0x5d1b65>_0x176005['north'])return null;const _0x1ae9c9=(_0x3c623b-_0x176005['west'])/(_0x176005['east']-_0x176005['west'])*(_0xdc0db3-0x1);let _0x4ab44f=(_0x5d1b65-_0x176005[_0x357018(0x1c2,0x1e9)])/(_0x176005['north']-_0x176005[_0x357018(0x195,0x1e9)])*(_0x3633d5-0x1);_0x2c615d&&(_0x4ab44f=_0x3633d5-0x1-_0x4ab44f);function _0x357018(_0x2b4944,_0x2b5775){return _0x413ef9(_0x2b5775-0x1cd,_0x2b4944);}const _0x2793b1=Math['floor'](_0x1ae9c9),_0x2446cb=Math['floor'](_0x4ab44f),_0x7729cf=Math['floor'](_0x1ae9c9),_0x419a48=Math[_0x39f25d(0x61f,0x5d6)](_0x7729cf+0x1,_0xdc0db3-0x1),_0x1869db=Math['floor'](_0x4ab44f),_0x26ffa9=Math['min'](_0x1869db+0x1,_0x3633d5-0x1),_0x2480f3=_0x1ae9c9-_0x7729cf,_0x588dbd=_0x4ab44f-_0x1869db,_0x2818fe=_0x2446cb*_0xdc0db3+_0x2793b1,_0x2017a3=_0x1869db*_0xdc0db3+_0x7729cf,_0x5ab77b=_0x1869db*_0xdc0db3+_0x419a48,_0x230186=_0x26ffa9*_0xdc0db3+_0x7729cf,_0x35c39c=_0x26ffa9*_0xdc0db3+_0x419a48;function _0x39f25d(_0x2fd41b,_0xd18953){return _0x413ef9(_0xd18953-0x579,_0x2fd41b);}const _0x35b0d5=_0x568f5b['array'][_0x2017a3],_0x508d8b=_0x568f5b[_0x39f25d(0x5a5,0x565)][_0x5ab77b],_0x48320b=_0x568f5b['array'][_0x230186],_0x4c2558=_0x568f5b[_0x39f25d(0x5ba,0x565)][_0x35c39c],_0x339f67=(0x1-_0x2480f3)*(0x1-_0x588dbd)*_0x35b0d5+_0x2480f3*(0x1-_0x588dbd)*_0x508d8b+(0x1-_0x2480f3)*_0x588dbd*_0x48320b+_0x2480f3*_0x588dbd*_0x4c2558,_0x1fc92d=_0x3ee57f[_0x39f25d(0x59d,0x565)][_0x2017a3],_0x3f3c55=_0x3ee57f[_0x357018(0x1ba,0x1b9)][_0x5ab77b],_0x3c696a=_0x3ee57f[_0x357018(0x16d,0x1b9)][_0x230186],_0x3b20df=_0x3ee57f[_0x39f25d(0x570,0x565)][_0x35c39c],_0x14b139=(0x1-_0x2480f3)*(0x1-_0x588dbd)*_0x1fc92d+_0x2480f3*(0x1-_0x588dbd)*_0x3f3c55+(0x1-_0x2480f3)*_0x588dbd*_0x3c696a+_0x2480f3*_0x588dbd*_0x3b20df,_0x2b6880=Math['sqrt'](_0x339f67*_0x339f67+_0x14b139*_0x14b139),_0x2c3be5={};_0x2c3be5['u']=_0x568f5b['array'][_0x2818fe],_0x2c3be5['v']=_0x3ee57f[_0x39f25d(0x59e,0x565)][_0x2818fe],_0x2c3be5[_0x357018(0x1c8,0x23b)]=_0x12c376['array'][_0x2818fe];const _0x11088c={};_0x11088c['u']=_0x339f67,_0x11088c['v']=_0x14b139,_0x11088c['speed']=_0x2b6880;const _0x2e4711={};return _0x2e4711[_0x357018(0x20e,0x1c2)]=_0x2c3be5,_0x2e4711['interpolated']=_0x11088c,_0x2e4711;}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this['lat']=null,this['tlng']=null;function _0x366cfd(_0x14a79e,_0x44b14a){return _0x413ef9(_0x14a79e-0x478,_0x44b14a);}this['tlat']=null,this['age']=null,this[_0x366cfd(0x4e6,0x50f)]=null;}[_0x560305(0x532,0x4f5)](){for(const _0x338799 in this){delete this[_0x338799];}}}class CanvasWindField{constructor(_0x66c227){this['setOptions'](_0x66c227);}get['speedRate'](){return this['_speedRate'];}set[_0x560305(0x562,0x5d3)](_0x1b75b4){this['_speedRate']=(0x64-(_0x1b75b4>0x63?0x63:_0x1b75b4))*0x64;function _0x13ba6c(_0x3d628f,_0x4b936a){return _0x560305(_0x4b936a- -0x245,_0x3d628f);}function _0x5010d5(_0x164dbc,_0x279eda){return _0x560305(_0x164dbc- -0xdb,_0x279eda);}this['_calc_speedRate']=[(this[_0x5010d5(0x543,0x57e)]-this[_0x5010d5(0x4f1,0x510)])/this[_0x5010d5(0x522,0x58e)],(this['ymax']-this[_0x5010d5(0x4c0,0x4d6)])/this[_0x5010d5(0x522,0x58b)]];}get['maxAge'](){return this['_maxAge'];}set['maxAge'](_0xfa9bad){this['_maxAge']=_0xfa9bad;}['setOptions'](_0x543052){this[_0x5a2f64(0x567,0x54c)]=_0x543052,this['maxAge']=_0x543052[_0x538190(0x31a,0x393)]||0x78;function _0x538190(_0x54f72c,_0x79f4b0){return _0x413ef9(_0x54f72c-0x301,_0x79f4b0);}this[_0x5a2f64(0x47a,0x4ef)]=_0x543052['speedRate']||0x32;function _0x5a2f64(_0x3d4cb5,_0x347ea1){return _0x560305(_0x347ea1- -0x73,_0x3d4cb5);}this[_0x538190(0x32a,0x2d1)]=[];const _0x223563=_0x543052[_0x538190(0x3e2,0x3f6)]||0x1000;for(let _0x26c618=0x0;_0x26c618<_0x223563;_0x26c618++){const _0x1c41f5=this[_0x538190(0x3ae,0x3c7)](new CanvasParticle());this['particles']['push'](_0x1c41f5);}}['setDate'](_0x37d0ae){this[_0x3ef1af(0x54d,0x547)]=_0x37d0ae['rows'],this['cols']=_0x37d0ae[_0x3ef1af(0x4f7,0x492)],this[_0x5d5631(0xfb,0x128)]=_0x37d0ae[_0x5d5631(0xeb,0x128)],this[_0x3ef1af(0x5a0,0x5d6)]=_0x37d0ae['xmax'],this['ymin']=_0x37d0ae[_0x3ef1af(0x51d,0x4ba)],this['ymax']=_0x37d0ae['ymax'],this['grid']=[];const _0x21abb6=_0x37d0ae[_0x5d5631(0x15b,0xe3)];function _0x5d5631(_0x584837,_0x440ab9){return _0x560305(_0x440ab9- -0x4a4,_0x584837);}const _0x2b6ad2=_0x37d0ae['vdata'];let _0x1561a7=![];_0x21abb6['length']===this['rows']&&_0x21abb6[0x0]['length']===this['cols']&&(_0x1561a7=!![]);let _0x16d9a2=0x0,_0x7dda2e=null,_0x30f3d3=null;function _0x3ef1af(_0xc20f60,_0x286f50){return _0x413ef9(_0xc20f60-0x4c2,_0x286f50);}for(let _0xdf1e5=0x0;_0xdf1e5<this[_0x5d5631(0xcb,0x127)];_0xdf1e5++){_0x7dda2e=[];for(let _0x487e58=0x0;_0x487e58<this['cols'];_0x487e58++,_0x16d9a2++){_0x1561a7?_0x30f3d3=this[_0x3ef1af(0x59c,0x5ad)](_0x21abb6[_0xdf1e5][_0x487e58],_0x2b6ad2[_0xdf1e5][_0x487e58]):_0x30f3d3=this['_calcUV'](_0x21abb6[_0x16d9a2],_0x2b6ad2[_0x16d9a2]),_0x7dda2e[_0x3ef1af(0x4b0,0x491)](_0x30f3d3);}this['grid'][_0x5d5631(0x9b,0x8a)](_0x7dda2e);}!this[_0x5d5631(0xeb,0x11b)][_0x5d5631(0x121,0x11f)]&&this['grid']['reverse']();}['clear'](){function _0x3e7b56(_0x46ad05,_0x15dda0){return _0x413ef9(_0x46ad05- -0x175,_0x15dda0);}delete this['rows'];function _0x108e1c(_0x31d2dd,_0x4ab7bc){return _0x413ef9(_0x4ab7bc-0x504,_0x31d2dd);}delete this['cols'],delete this[_0x3e7b56(-0xe9,-0x14d)],delete this[_0x3e7b56(-0x97,-0x1c)],delete this['ymin'],delete this['ymax'],delete this['grid'],delete this['particles'];}['toGridXY'](_0x3ebc9b,_0x54691b){function _0x170714(_0x55f228,_0x4c3907){return _0x560305(_0x4c3907- -0x4fc,_0x55f228);}function _0x272a38(_0x3f8ea8,_0x4b8f80){return _0x560305(_0x3f8ea8- -0x1a9,_0x4b8f80);}const _0x45c7d3=(_0x3ebc9b-this['xmin'])/(this['xmax']-this[_0x170714(0x100,0xd0)])*(this['cols']-0x1),_0x488bd9=(this[_0x272a38(0x457,0x442)]-_0x54691b)/(this[_0x170714(0xdc,0x104)]-this['ymin'])*(this['rows']-0x1);return[_0x45c7d3,_0x488bd9];}['getUVByXY'](_0x39a525,_0x1c52e2){if(_0x39a525<0x0||_0x39a525>=this['cols']||_0x1c52e2>=this[_0xfb4e91(0x5c8,0x622)])return[0x0,0x0,0x0];const _0xb234c7=Math[_0xfb4e91(0x6a2,0x655)](_0x39a525),_0x833efe=Math[_0x1f46bf(0xce,0x79)](_0x1c52e2);if(_0xb234c7===_0x39a525&&_0x833efe===_0x1c52e2)return this['grid'][_0x1c52e2][_0x39a525];function _0xfb4e91(_0x553083,_0x16ceb9){return _0x560305(_0x16ceb9-0x57,_0x553083);}const _0x45fbba=_0xb234c7+0x1;function _0x1f46bf(_0x20bdfa,_0x54cebb){return _0x560305(_0x54cebb- -0x585,_0x20bdfa);}const _0x2d71d2=_0x833efe+0x1,_0x806020=this[_0x1f46bf(-0x98,-0x67)](_0xb234c7,_0x833efe),_0x5c315c=this['getUVByXY'](_0x45fbba,_0x833efe),_0x23671b=this['getUVByXY'](_0xb234c7,_0x2d71d2),_0x27e017=this[_0x1f46bf(-0x3c,-0x67)](_0x45fbba,_0x2d71d2);let _0x56d2da=null;try{_0x56d2da=this['_bilinearInterpolation'](_0x39a525-_0xb234c7,_0x1c52e2-_0x833efe,_0x806020,_0x5c315c,_0x23671b,_0x27e017);}catch(_0x1ba588){console[_0xfb4e91(0x5c8,0x5bf)](_0x39a525,_0x1c52e2);}return _0x56d2da;}[_0x560305(0x57b,0x57e)](_0x36ece1,_0x41db7b,_0x380b53,_0x34acf3,_0x25a9b4,_0xb040d1){const _0x23c213=0x1-_0x36ece1,_0x381f3b=0x1-_0x41db7b,_0x12d7a3=_0x23c213*_0x381f3b,_0x57340a=_0x36ece1*_0x381f3b,_0x252c32=_0x23c213*_0x41db7b,_0x2e7c30=_0x36ece1*_0x41db7b;function _0x589f51(_0x3e4be8,_0x56cab3){return _0x560305(_0x3e4be8- -0x5fc,_0x56cab3);}const _0x286f2f=_0x380b53[0x0]*_0x12d7a3+_0x34acf3[0x0]*_0x57340a+_0x25a9b4[0x0]*_0x252c32+_0xb040d1[0x0]*_0x2e7c30,_0xe15838=_0x380b53[0x1]*_0x12d7a3+_0x34acf3[0x1]*_0x57340a+_0x25a9b4[0x1]*_0x252c32+_0xb040d1[0x1]*_0x2e7c30;return this[_0x589f51(0x1e,0x1f)](_0x286f2f,_0xe15838);}[_0x413ef9(0xda,0x139)](_0xd77c6f,_0xa931f1){function _0x345143(_0x4021fd,_0x49bf72){return _0x413ef9(_0x4021fd-0x7d,_0x49bf72);}return[+_0xd77c6f,+_0xa931f1,Math[_0x345143(0xa2,0xea)](_0xd77c6f*_0xd77c6f+_0xa931f1*_0xa931f1)];}[_0x560305(0x5ea,0x63d)](_0x5b374e,_0x3a0c57){function _0x2e9aa8(_0x53f445,_0x235591){return _0x560305(_0x235591- -0x559,_0x53f445);}if(!this['isInExtent'](_0x5b374e,_0x3a0c57))return null;const _0x53267e=this[_0x2e9aa8(0x62,0xc2)](_0x5b374e,_0x3a0c57),_0x3ec863=this['getUVByXY'](_0x53267e[0x0],_0x53267e[0x1]);return _0x3ec863;}['isInExtent'](_0x205406,_0x4164e6){function _0x3d55c6(_0x3d9c21,_0x571494){return _0x560305(_0x571494- -0x4a5,_0x3d9c21);}return _0x205406>=this['xmin']&&_0x205406<=this[_0x3d55c6(0xfe,0x179)]&&_0x4164e6>=this['ymin']&&_0x4164e6<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x2441b8=fRandomByfloat(this['xmin'],this['xmax']),_0x1135c8=fRandomByfloat(this[_0x47c45a(0x58c,0x529)],this['ymax']),_0xe9ef32={};_0xe9ef32['lat']=_0x1135c8;function _0x47c45a(_0x545a07,_0xf27ddc){return _0x413ef9(_0x545a07-0x531,_0xf27ddc);}return _0xe9ef32['lng']=_0x2441b8,_0xe9ef32;}['getParticles'](){function _0x55f6b7(_0x123f8c,_0x123761){return _0x413ef9(_0x123761-0x1a1,_0x123f8c);}let _0x8c8af0,_0x34b283,_0x2198b9;for(let _0x35fd72=0x0,_0x52412b=this['particles']['length'];_0x35fd72<_0x52412b;_0x35fd72++){let _0x405082=this['particles'][_0x35fd72];_0x405082['age']<=0x0&&(_0x405082=this[_0x55f6b7(0x29f,0x24e)](_0x405082));if(_0x405082['age']>0x0){const _0x2550f8=_0x405082['tlng'],_0x32b220=_0x405082[_0x50d04a(-0x45,-0x3e)];_0x2198b9=this[_0x50d04a(0x83,0x83)](_0x2550f8,_0x32b220),_0x2198b9?(_0x8c8af0=_0x2550f8+this[_0x50d04a(0xd1,0x59)][0x0]*_0x2198b9[0x0],_0x34b283=_0x32b220+this[_0x50d04a(0x40,0x59)][0x1]*_0x2198b9[0x1],_0x405082[_0x50d04a(0x3e,-0x1b)]=_0x2550f8,_0x405082['lat']=_0x32b220,_0x405082['tlng']=_0x8c8af0,_0x405082['tlat']=_0x34b283,_0x405082['speed']=_0x2198b9[0x2],_0x405082['age']--):_0x405082['age']=0x0;}}function _0x50d04a(_0x19eee4,_0x65a3e7){return _0x413ef9(_0x65a3e7- -0x27,_0x19eee4);}return this['particles'];}['_randomParticle'](_0x5eb44a){let _0x25ac4c,_0x140e02;for(let _0x387080=0x0;_0x387080<0x1e;_0x387080++){_0x25ac4c=this['getRandomLatLng'](),_0x140e02=this['getUVByPoint'](_0x25ac4c['lng'],_0x25ac4c[_0x4c82d3(0x4c,0x30)]);if(_0x140e02&&_0x140e02[0x2]>0x0)break;}if(!_0x140e02)return _0x5eb44a;const _0x433afb=_0x25ac4c['lng']+this[_0x4c82d3(0x4b,0x3f)][0x0]*_0x140e02[0x0],_0x2200de=_0x25ac4c[_0x1c2daa(0x203,0x261)]+this[_0x1c2daa(0x1f0,0x260)][0x1]*_0x140e02[0x1];_0x5eb44a[_0x4c82d3(-0x29,0x17)]=_0x25ac4c[_0x4c82d3(-0x29,-0x1)],_0x5eb44a[_0x4c82d3(0x4c,0x51)]=_0x25ac4c['lat'],_0x5eb44a['tlng']=_0x433afb,_0x5eb44a['tlat']=_0x2200de,_0x5eb44a['age']=Math[_0x1c2daa(0x1fa,0x216)](0xa+Math[_0x1c2daa(0x1bb,0x22e)]()*this['maxAge']),_0x5eb44a['speed']=_0x140e02[0x2];function _0x4c82d3(_0x46001f,_0x378588){return _0x413ef9(_0x46001f- -0x35,_0x378588);}function _0x1c2daa(_0x35eee6,_0x18e658){return _0x560305(_0x18e658- -0x360,_0x35eee6);}return _0x5eb44a;}['destroy'](){for(const _0x12a1e5 in this){delete this[_0x12a1e5];}}}function _0x5479(){const _0x4023ee=['22868217mWmuVG','getUVByXY','12ZTvflp','computing','domain','tlng','owner','_showHook','isDynamic','useViewerBounds','toWindowCoordinates','previousParticlesPosition','tlat','createComputingPrimitives','forEach','array','call','push','updateWindData','getSpeed','magnificationFilter','destroy','segments','atan2','original','preExecute','layer','calculateSpeed','max','hidden','resize','_map','getCalculateSpeedShader','viewerParameters','#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','isPointVisible','2676848oBEODM','particlesTextureSize','_removedHook','colorTable','BaseLayer','currentParticlesPosition','setData','getPrimitives','mouseMove','create','Cartesian2','lng','zIndex','latitude','mouseHidden','globe','persists','clientHeight','mode','onColorTableChange','values','visible','Math','lastFramesPerSecond','maxAge','initFrameRate','redraw','south','requestRender','mouseUp','bind','CLAMP_TO_EDGE','stringify','speedRate','alt','all','sqrt','modelMatrix','EventType','log','particles','data','3.11.1','vertexArray','quietPeriod','context','primitives','addEventListener','green','lineWidth','frameRate','0px','cols','round','colors','RGBA','fixedHeight','commandList','_bilinearInterpolation','bindEvent','keys','east','rawRenderState','canvas','canvasWind','21ptdRiv','update','lonRange','strokeStyle','requestAnimationFrame','udata','drawingBufferHeight','moveTo','outputTexture','pointer-events','_onMouseUpEvent','particleSystem','random','windTextures','lineLength','destroyParticlesTextures','uniformMap','reCreateWindTextures','Draw','stroke','abs','Unknown\x20command\x20type','top','_animateFrame','postMessage','ymin','LINEAR','min','SceneMode','primitiveType','blending','rendering','blendEquation','show','sceneMode','PointTrans','fillRect','getDirection','clearFramebuffers','isDestroyed','framebuffers','geometry','_tomap','createRenderingFramebuffers','speed','talt','mouse_move','globalAlpha','canvasContext','OPAQUE','windField','register','pickEllipsoid','depthTest','windData','UNSIGNED_BYTE','3442077nDgvjU','getPostProcessingPositionShader','_colorRamp','getDataAtLonLat','style','options','_calc_speedRate','lat','postProcessingPosition','flipY','removeEventListener','#ffffff','shaderProgram','getSegmentDrawFragmentShader','scene','RED','viewport','rows','xmin','3693464BHEbcv','NEAREST','isDestroy','length','autoClear','setOptions','processWindData','canvasWidth','initWorker','container','type','enabled','mouse_down','add','componentsPerAttribute','createWindTextures','longitude','slice','worker','pointerEvents','max\x20is\x20undefined,\x20calculate\x20max','Cesium','percentageChanged','dropRate','min\x20is\x20undefined,\x20calculate\x20min','logInfo','createRenderingTextures','2885180mFOUnA','createCommand','getUVByPoint','dynamic','clientWidth','_randomParticle','vdata','createParticlesTextures','FLOAT','toDegrees','FUNC_ADD','updateViewerParameters','ellipsoid','1388818QPHRrg','bounds','init','bufferUsage','4612572aZtdRi','clear','CanvasWindLayer','warn','_speedRate','floor','changeOptions','ymax','pixelDatatype','visibility','pixelSize','sources','rgb(206,255,255)','pow','north','commandToExecute','particlesTextures','width','_updateIng2','particlesSpeed','createColorTableTexture','canvasHeight','now','getSegmentDrawVertexShader','SCENE3D','off','setDate','WindUtil','WindLayer','clearCommand','attributeLocations','frameRateMonitor','_onMouseMoveEvent','_calcUV','toGridXY','_addedHook','execute','xmax','camera','vertexShaderSource','particlesNumber','commandType','unbindEvent','number','updateOptions','_pointerEvents','cancelAnimationFrame','frameRateAdjustment'];_0x5479=function(){return _0x4023ee;};return _0x5479();}function fRandomByfloat(_0x133228,_0x3289c5){function _0x4c0fcd(_0x304caf,_0x29487a){return _0x560305(_0x29487a- -0x46c,_0x304caf);}return _0x133228+Math[_0x4c0fcd(0x18c,0x122)]()*(_0x3289c5-_0x133228);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x560305(0x537,0x5a4)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x43d4={}){super(_0x43d4);function _0xca0ffc(_0x5d726a,_0x403a6b){return _0x560305(_0x403a6b- -0x4b1,_0x5d726a);}this['_setOptionsHook'](_0x43d4),this['canvas']=null,_0x43d4['colors']&&_0x43d4['steps']&&(this[_0xca0ffc(0x10d,0x10b)]=new mars3d__namespace['ColorRamp'](_0x43d4));}['_setOptionsHook'](_0x5c0733,_0x23a946){this['frameTime']=0x3e8/(_0x5c0733['frameRate']||0xa);function _0x18f739(_0x2e555c,_0x567f21){return _0x413ef9(_0x567f21-0x5b6,_0x2e555c);}this['_pointerEvents']=this['options']['pointerEvents']??![];function _0x13f483(_0x591379,_0x64ad86){return _0x560305(_0x591379- -0x463,_0x64ad86);}this['color']=_0x5c0733['color']||_0x18f739(0x6a5,0x63b),this['lineWidth']=_0x5c0733['lineWidth']||0x1,this['fixedHeight']=_0x5c0733['fixedHeight']??0x0,this[_0x13f483(0x160,0x16d)]=_0x5c0733[_0x18f739(0x653,0x639)]??![],this['windField']&&this['windField']['setOptions'](_0x5c0733);}get['layer'](){function _0x27f648(_0x22840e,_0x2a82de){return _0x560305(_0x22840e- -0x4b,_0x2a82de);}return this[_0x27f648(0x535,0x524)];}get['canvasWidth'](){function _0x4121a6(_0x4db482,_0x34eea8){return _0x413ef9(_0x4db482-0xb9,_0x34eea8);}return this['_map']['scene'][_0x4121a6(0xf9,0x78)]['clientWidth'];}get[_0x413ef9(0xce,0x7b)](){function _0xda0c92(_0x2ffe33,_0x19e380){return _0x413ef9(_0x2ffe33-0x5bb,_0x19e380);}function _0x25c8c0(_0x1f92ad,_0x583d3e){return _0x560305(_0x583d3e- -0x2f4,_0x1f92ad);}return this['_map'][_0x25c8c0(0x34d,0x2d4)]['canvas'][_0xda0c92(0x5cd,0x614)];}get[_0x560305(0x5e0,0x57f)](){return this['_pointerEvents'];}set[_0x413ef9(0xa0,0x65)](_0x1551f9){function _0x3ea570(_0x40c86e,_0x1c93e2){return _0x413ef9(_0x40c86e-0x5c8,_0x1c93e2);}this[_0x3ea570(0x6ae,0x662)]=_0x1551f9;function _0x330649(_0x3ba127,_0x267c7b){return _0x560305(_0x267c7b- -0x593,_0x3ba127);}if(!this['canvas'])return;_0x1551f9?this['canvas'][_0x3ea570(0x646,0x631)]['pointer-events']=_0x3ea570(0x5ec,0x61c):this[_0x330649(-0x39,-0x13)]['style'][_0x3ea570(0x613,0x646)]='none';}get[_0x560305(0x621,0x5b2)](){function _0x59f13a(_0x5071b1,_0x335608){return _0x560305(_0x335608- -0x1e5,_0x5071b1);}function _0x9de6e9(_0x39124e,_0x4ea956){return _0x413ef9(_0x4ea956-0x581,_0x39124e);}return this[_0x59f13a(0x44b,0x3da)][_0x9de6e9(0x612,0x662)];}set['particlesNumber'](_0x32d1ad){this[_0x2376f6(0x35c,0x3d2)]['particlesNumber']=_0x32d1ad;function _0x2376f6(_0x4b140c,_0x4a645c){return _0x413ef9(_0x4b140c-0x2dd,_0x4a645c);}clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{function _0x21c972(_0x51cdd0,_0x1b5309){return _0x2376f6(_0x51cdd0-0x15a,_0x1b5309);}this[_0x21c972(0x452,0x412)]();},0x1f4);}get[_0x560305(0x562,0x502)](){return this['options']['speedRate'];}set['speedRate'](_0x48df2a){this['options'][_0x108a6f(0x439,0x3ca)]=_0x48df2a;function _0x108a6f(_0x4d4426,_0x205390){return _0x413ef9(_0x4d4426-0x417,_0x205390);}this['windField']&&(this['windField']['speedRate']=_0x48df2a);}get['maxAge'](){return this['options']['maxAge'];}set['maxAge'](_0x751427){this['options'][_0x3b0865(0x1f6,0x1fe)]=_0x751427;function _0x3b0865(_0x8d95d,_0x3f77a2){return _0x560305(_0x3f77a2- -0x35b,_0x8d95d);}this['windField']&&(this['windField']['maxAge']=_0x751427);}get[_0x560305(0x56a,0x5c6)](){return this['windData'];}set[_0x560305(0x56a,0x561)](_0xd0f66b){this['setData'](_0xd0f66b);}get['rectangle'](){let _0x2cc459=this['windData']['xmin'],_0x1980a=this[_0x6042df(-0xff,-0x176)][_0x6042df(-0x99,-0xc7)],_0x5810e8=this['windData']['ymin'],_0x4f907f=this['windData'][_0x6042df(-0xb7,-0x109)];_0x1980a>=0x167&&_0x2cc459===0x0&&(_0x2cc459=-0xb4,_0x1980a=0xb4);function _0x3865e2(_0x445450,_0x18cc3d){return _0x413ef9(_0x18cc3d-0x1d7,_0x445450);}_0x2cc459=Math['max'](_0x2cc459,-0xb4);function _0x6042df(_0x46e8a0,_0x42c204){return _0x560305(_0x46e8a0- -0x6b7,_0x42c204);}return _0x1980a=Math[_0x6042df(-0x11a,-0xf3)](_0x1980a,0xb4),_0x5810e8=Math['max'](_0x5810e8,-0x5a),_0x4f907f=Math[_0x6042df(-0x11a,-0xbe)](_0x4f907f,0x5a),Cesium['Rectangle']['fromDegrees'](_0x2cc459,_0x5810e8,_0x1980a,_0x4f907f);}['_showHook'](_0x3d42b7){function _0x2d5526(_0x3a3a44,_0x65d7b9){return _0x413ef9(_0x65d7b9-0x30b,_0x3a3a44);}_0x3d42b7?this['_addedHook']():(this['windData']&&(this['options']['data']=this['windData']),this[_0x2d5526(0x38f,0x30e)]());}['_mountedHook'](){function _0x416174(_0x3b14e4,_0x3ce4b6){return _0x560305(_0x3b14e4- -0x40e,_0x3ce4b6);}this['options']['worker']?this[_0x416174(0x1c7,0x201)]():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){function _0xd83f18(_0xee2517,_0x311ce1){return _0x560305(_0xee2517- -0x3b8,_0x311ce1);}this[_0xd83f18(0x1c8,0x1dc)]=this['_createCanvas']();const _0x47106d={};_0x47106d['willReadFrequently']=!![];function _0x1ed717(_0x261339,_0x2b79ab){return _0x413ef9(_0x2b79ab-0x54a,_0x261339);}this[_0x1ed717(0x59c,0x5bc)]=this['canvas']['getContext']('2d',_0x47106d),this['bindEvent'](),this['options']['data']&&this['setData'](this[_0x1ed717(0x5e4,0x5c9)][_0x1ed717(0x5df,0x574)]);}[_0x560305(0x543,0x4e2)](){function _0x537ac2(_0x53abf2,_0x71685f){return _0x413ef9(_0x71685f-0x55a,_0x53abf2);}this[_0x184e0d(0x36f,0x2ee)]();function _0x184e0d(_0x4ab290,_0x5a05f8){return _0x413ef9(_0x4ab290-0x2b5,_0x5a05f8);}this['unbindEvent'](),this[_0x184e0d(0x2f5,0x2d2)]&&(this['_map'][_0x537ac2(0x5f0,0x5f0)]['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x204920=mars3d__namespace['DomUtil'][_0x472f8a(0x53e,0x536)](_0x472f8a(0x5d2,0x56c),'mars3d-canvasWind',this['_map'][_0x38052b(0x4b0,0x469)]);_0x204920[_0x38052b(0x4a5,0x451)]['position']='absolute';function _0x472f8a(_0x4a8b2c,_0x32a980){return _0x560305(_0x32a980- -0x14,_0x4a8b2c);}_0x204920['style'][_0x472f8a(0x556,0x584)]='0px',_0x204920[_0x38052b(0x444,0x451)]['left']=_0x38052b(0x387,0x407),_0x204920['style']['width']=this['_map'][_0x472f8a(0x585,0x5b4)]['canvas'][_0x472f8a(0x5e7,0x5d8)]+'px',_0x204920[_0x38052b(0x46b,0x451)]['height']=this[_0x472f8a(0x570,0x528)]['scene']['canvas'][_0x38052b(0x452,0x3e5)]+'px';function _0x38052b(_0x57d36d,_0x1dc035){return _0x413ef9(_0x1dc035-0x3d3,_0x57d36d);}return _0x204920[_0x38052b(0x4d6,0x451)]['pointerEvents']=this['_pointerEvents']?'auto':'none',_0x204920[_0x38052b(0x3de,0x451)]['zIndex']=this['options'][_0x472f8a(0x4c1,0x539)]??0x9,_0x204920['width']=this['_map']['scene']['canvas'][_0x38052b(0x4dc,0x47f)],_0x204920['height']=this[_0x472f8a(0x4d9,0x528)][_0x38052b(0x48e,0x45b)][_0x472f8a(0x529,0x56c)]['clientHeight'],_0x204920;}['resize'](){function _0x325035(_0x8ce61b,_0x405ca7){return _0x560305(_0x8ce61b- -0x3a7,_0x405ca7);}function _0x2512e3(_0x152072,_0x41589e){return _0x560305(_0x41589e- -0xa4,_0x152072);}this[_0x2512e3(0x4aa,0x4dc)]&&(this[_0x2512e3(0x486,0x4dc)]['style'][_0x2512e3(0x59d,0x566)]=this[_0x2512e3(0x4b2,0x498)][_0x325035(0x221,0x1b4)][_0x325035(0x1d9,0x174)]['clientWidth']+'px',this['canvas']['style']['height']=this[_0x325035(0x195,0x13b)][_0x2512e3(0x556,0x524)][_0x2512e3(0x4ec,0x4dc)]['clientHeight']+'px',this[_0x2512e3(0x4d3,0x4dc)]['width']=this['_map'][_0x325035(0x221,0x1b8)][_0x325035(0x1d9,0x1fa)][_0x325035(0x245,0x1e5)],this['canvas']['height']=this[_0x2512e3(0x4ee,0x498)][_0x2512e3(0x52c,0x524)]['canvas']['clientHeight']);}[_0x560305(0x57c,0x4f9)](){const _0x2edfad=this;let _0x452d8e=Date['now']();(function _0x4243da(){if(_0x2edfad[_0x16e346(0x28c,0x2fc)])return;function _0x16e346(_0xd296df,_0xc63233){return _0x100c(_0xc63233-0x67,_0xd296df);}function _0x30ecfb(_0x196fd2,_0x1106fa){return _0x100c(_0x196fd2- -0x5e,_0x1106fa);}_0x2edfad['_animateFrame']=window[_0x16e346(0x254,0x2b3)](_0x4243da);if(_0x2edfad[_0x16e346(0x325,0x2d0)]&&_0x2edfad[_0x16e346(0x2e0,0x2e1)]){const _0xcc5c28=Date[_0x16e346(0x372,0x33c)](),_0x8dc97a=_0xcc5c28-_0x452d8e;_0x8dc97a>_0x2edfad['frameTime']&&(_0x452d8e=_0xcc5c28-_0x8dc97a%_0x2edfad['frameTime'],_0x2edfad['update']());}}(),window[_0x4f5d42(0x1b5,0x187)]('resize',this['resize']['bind'](this),![]));function _0x4f5d42(_0xa192cd,_0x187a08){return _0x413ef9(_0x187a08-0x157,_0xa192cd);}function _0x420053(_0x4a007e,_0x5198e6){return _0x560305(_0x5198e6- -0x46d,_0x4a007e);}this[_0x4f5d42(0x1e1,0x1f0)]=![],this[_0x4f5d42(0x1ee,0x1c7)]=![],this[_0x4f5d42(0x199,0x1d6)][_0x4f5d42(0x16a,0x166)]&&(this['_map']['on'](mars3d__namespace[_0x4f5d42(0x12e,0x17e)]['wheel'],this['_onMapWhellEvent'],this),this[_0x420053(0x78,0xcf)]['on'](mars3d__namespace[_0x420053(0x145,0xfa)]['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x420053(0x79,0xfa)][_0x420053(0x9d,0xf1)],this[_0x420053(0x162,0x11f)],this));}[_0x560305(0x623,0x615)](){function _0x51e495(_0x1151ea,_0x1c2aeb){return _0x560305(_0x1c2aeb- -0x66c,_0x1151ea);}window[_0x12c240(0x119,0x19d)](this['_animateFrame']);function _0x12c240(_0x3edaf4,_0x2408b9){return _0x560305(_0x3edaf4- -0x50e,_0x2408b9);}delete this[_0x51e495(-0x84,-0xd3)],window['removeEventListener'](_0x51e495(-0x105,-0x131),this['resize']),this['options'][_0x51e495(-0xc0,-0x11d)]&&(this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x12c240(0x2e,0x17)][_0x12c240(0x104,0x182)](mars3d__namespace[_0x51e495(-0x172,-0x105)]['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x12c240(0x50,0xbe)],this['_onMouseUpEvent'],this),this[_0x51e495(-0x184,-0x130)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x48356d){function _0x43f846(_0x4cc849,_0x1af27d){return _0x413ef9(_0x4cc849-0x532,_0x1af27d);}function _0x14155e(_0x3d2147,_0x3df612){return _0x413ef9(_0x3d2147-0x3ca,_0x3df612);}clearTimeout(this['refreshTimer']);if(!this[_0x14155e(0x42d,0x430)]||!this['canvas'])return;this['canvas'][_0x43f846(0x5b0,0x59c)]['visibility']=_0x14155e(0x3c4,0x3ce),this['refreshTimer']=setTimeout(()=>{function _0x236b8a(_0x27e5c9,_0x39a8f5){return _0x14155e(_0x39a8f5- -0x3e9,_0x27e5c9);}if(!this['show'])return;this['redraw'](),this['canvas']['style']['visibility']=_0x236b8a(0x5f,-0x9);},0xc8);}['_onMouseDownEvent'](_0x32c2e6){function _0x1c5632(_0xdc4651,_0x583010){return _0x560305(_0xdc4651- -0x3a2,_0x583010);}this[_0x255308(0x167,0x174)]=!![];function _0x255308(_0xd046d3,_0x2f0052){return _0x560305(_0xd046d3- -0x472,_0x2f0052);}this[_0x1c5632(0x19a,0x19d)]['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x255308(0x1a7,0x158)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x1c5632(0x277,0x212)],this);}[_0x560305(0x619,0x5b5)](_0x59ab41){function _0x1d03d6(_0x16f20d,_0x11e167){return _0x413ef9(_0x11e167- -0xb0,_0x16f20d);}function _0x301ff8(_0x147f0a,_0x54c17a){return _0x413ef9(_0x147f0a-0x114,_0x54c17a);}if(!this['show']||!this['canvas'])return;this[_0x1d03d6(-0x52,-0x17)]&&(this['canvas']['style'][_0x301ff8(0x1d6,0x15b)]='hidden',this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x4709d4){if(!this[_0x93e544(-0x121,-0xd4)]||!this['canvas'])return;this['_map'][_0x93e544(-0xb2,-0xd6)](mars3d__namespace['EventType'][_0x93e544(-0x17b,-0x11c)],this[_0x93e544(-0xab,-0x4f)],this);function _0x288322(_0x56d60e,_0x2879b2){return _0x560305(_0x56d60e- -0x6f9,_0x2879b2);}this['mouse_down']&&this['mouse_move']&&this[_0x93e544(-0x169,-0x103)]();this[_0x93e544(-0x144,-0xdb)]['style']['visibility']='visible';function _0x93e544(_0x10e408,_0x308174){return _0x413ef9(_0x10e408- -0x184,_0x308174);}this['mouse_down']=![],this[_0x93e544(-0x114,-0x12c)]=![];}[_0x413ef9(0x7,0x26)](_0x2b3a3b){this[_0x2027e4(0x64b,0x678)](),this['windData']=_0x2b3a3b;function _0x1fc780(_0x1cc5fa,_0x3974da){return _0x560305(_0x3974da- -0x6ec,_0x1cc5fa);}this['windField'][_0x2027e4(0x6de,0x691)](_0x2b3a3b);function _0x2027e4(_0x460908,_0x33ee60){return _0x560305(_0x33ee60-0x7e,_0x460908);}this['redraw']();}['redraw'](){if(!this['show'])return;this['windField'][_0x578e34(0x586,0x543)](this[_0x4b01f7(0x455,0x48a)]);function _0x4b01f7(_0x257593,_0xaeba3d){return _0x560305(_0xaeba3d- -0x135,_0x257593);}function _0x578e34(_0x120413,_0x5c866a){return _0x560305(_0x120413- -0x4c,_0x5c866a);}this['update']();}['update'](){function _0xa816f6(_0x4913b7,_0x5ad61c){return _0x560305(_0x4913b7-0x13,_0x5ad61c);}if(this['_updateIng'])return;function _0x4bda21(_0x5315c9,_0x1f64dc){return _0x413ef9(_0x1f64dc-0x15,_0x5315c9);}this['_updateIng']=!![];if(this['worker'])this[_0xa816f6(0x5c7,0x5e2)][_0x4bda21(0x6c,0x58)]();else{const _0x13ddc3=this['windField']['getParticles']();this['_drawLines'](_0x13ddc3);}this['_updateIng']=![];}['_drawLines'](_0x504834){function _0x29082f(_0x333a89,_0x717102){return _0x560305(_0x333a89- -0x63a,_0x717102);}function _0x39b7f0(_0x11a511,_0x162579){return _0x560305(_0x11a511- -0x3ae,_0x162579);}this['_canvasParticles']=_0x504834,this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext'][_0x39b7f0(0x1f8,0x1de)](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter',this['canvasContext'][_0x29082f(-0x89,-0x99)]=0.9;const _0xebcfd9=this['_map'][_0x39b7f0(0x21a,0x28d)]['mode']!==Cesium[_0x29082f(-0x9c,-0x41)][_0x39b7f0(0x263,0x238)],_0x1e6556=this[_0x29082f(-0x66,-0xc2)]*0.25;if(this['_colorRamp'])for(let _0x46666b=0x0,_0x351493=_0x504834['length'];_0x46666b<_0x351493;_0x46666b++){const _0x45128c=_0x504834[_0x46666b],_0xc437f6=this[_0x39b7f0(0x1fe,0x233)](_0x45128c,_0x45128c[_0x29082f(-0xee,-0x8f)],_0x45128c[_0x29082f(-0x79,-0x8c)],_0x45128c[_0x29082f(-0xd7,-0x75)]),_0x48abd7=this['_tomap'](_0x45128c,_0x45128c[_0x39b7f0(0x174,0x1d7)],_0x45128c['tlat'],_0x45128c['talt']);if(!_0xc437f6||!_0x48abd7)continue;if(_0xebcfd9&&Math['abs'](_0xc437f6[0x0]-_0x48abd7[0x0])>=_0x1e6556)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x39b7f0(0x1c4,0x195)],this[_0x39b7f0(0x204,0x20f)][_0x39b7f0(0x1d7,0x22e)]=this[_0x29082f(-0x7e,-0x76)]['getColor'](_0x45128c[_0x29082f(-0x8c,-0xfa)]),this[_0x29082f(-0x88,-0xa4)][_0x29082f(-0xb1,-0x52)](_0xc437f6[0x0],_0xc437f6[0x1]),this['canvasContext']['lineTo'](_0x48abd7[0x0],_0x48abd7[0x1]),this['canvasContext'][_0x29082f(-0xa5,-0x6c)]();}else{this[_0x29082f(-0x88,-0xf8)]['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this['canvasContext'][_0x39b7f0(0x1d7,0x158)]=this['color'];for(let _0x3341d9=0x0,_0x366814=_0x504834['length'];_0x3341d9<_0x366814;_0x3341d9++){const _0xc6ed61=_0x504834[_0x3341d9],_0x5efe03=this[_0x29082f(-0x8e,-0xc1)](_0xc6ed61,_0xc6ed61['lng'],_0xc6ed61['lat'],_0xc6ed61['alt']),_0x546bb1=this['_tomap'](_0xc6ed61,_0xc6ed61['tlng'],_0xc6ed61['tlat'],_0xc6ed61[_0x29082f(-0x8b,-0x1e)]);if(!_0x5efe03||!_0x546bb1)continue;if(_0xebcfd9&&Math[_0x39b7f0(0x1e8,0x218)](_0x5efe03[0x0]-_0x546bb1[0x0])>=_0x1e6556)continue;this[_0x29082f(-0x88,-0x2e)][_0x29082f(-0xb1,-0x8a)](_0x5efe03[0x0],_0x5efe03[0x1]),this['canvasContext']['lineTo'](_0x546bb1[0x0],_0x546bb1[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x3dbeab,_0x3accfb,_0x380782,_0x3815f1){function _0x22476a(_0x2b416c,_0x5dc046){return _0x413ef9(_0x5dc046-0x24,_0x2b416c);}const _0x30974c=Cesium['Cartesian3']['fromDegrees'](_0x3accfb,_0x380782,_0x3815f1??this[_0x22476a(0x61,0x5d)]),_0x5151=this[_0x22476a(0x1c,0x20)][_0x22476a(0x132,0xac)];if(_0x5151['mode']===Cesium[_0x4b0f3e(0x1de,0x17f)]['SCENE3D']){const _0xe185b3=new Cesium['EllipsoidalOccluder'](_0x5151['globe'][_0x22476a(0xee,0xd8)],_0x5151['camera']['positionWC']),_0x36ee33=_0xe185b3[_0x22476a(0x49,0x24)](_0x30974c);if(!_0x36ee33)return _0x3dbeab['age']=0x0,null;}const _0x5167cc=mars3d__namespace[_0x4b0f3e(0x1e5,0x193)][_0x4b0f3e(0x167,0x11f)](this['_map'][_0x4b0f3e(0x208,0x1c1)],_0x30974c);function _0x4b0f3e(_0x1b0372,_0x257970){return _0x560305(_0x1b0372- -0x3c0,_0x257970);}return _0x5167cc?[_0x5167cc['x'],_0x5167cc['y']]:null;}['clear'](){function _0x1d41df(_0x28dcc0,_0x2d62a3){return _0x560305(_0x2d62a3- -0x21f,_0x28dcc0);}function _0x28aeb4(_0x321b27,_0x2bc9e5){return _0x413ef9(_0x321b27- -0x79,_0x2bc9e5);}this[_0x28aeb4(-0x5,-0x78)]['clear'](),delete this[_0x28aeb4(-0x1,0x3b)];}['initWorker'](){this[_0x51bcd8(0x617,0x62f)]=new Worker(this[_0x51bcd8(0x5aa,0x60f)]['worker']);function _0x51bcd8(_0x1633e7,_0x1e0334){return _0x560305(_0x1e0334-0x50,_0x1633e7);}this['worker']['onmessage']=_0x1e17c0=>{this['_drawLines'](_0x1e17c0['data']['particles']);function _0x1ced0c(_0x4d023b,_0x9fefcd){return _0x1bf92c(_0x4d023b,_0x9fefcd- -0xf1);}this[_0x1ced0c(-0x13c,-0xf0)]=![];};function _0x1bf92c(_0x4dc550,_0x5911a0){return _0x560305(_0x5911a0- -0x60a,_0x4dc550);}this['windField']={'init':_0x59d62b=>{function _0x3f83c2(_0x4b7c47,_0x16e172){return _0x51bcd8(_0x16e172,_0x4b7c47- -0x2b8);}function _0x4a3aff(_0x578fe6,_0x5cdb6d){return _0x51bcd8(_0x578fe6,_0x5cdb6d- -0x5df);}const _0x493cff={};_0x493cff[_0x4a3aff(0x20,0x48)]=_0x3f83c2(0x38f,0x30c),_0x493cff['options']=_0x59d62b,this[_0x4a3aff(0xb0,0x50)]['postMessage'](_0x493cff);},'setOptions':_0x1db167=>{const _0xa5955a={};function _0x249683(_0x48bf1a,_0x1b3c6d){return _0x51bcd8(_0x1b3c6d,_0x48bf1a- -0x454);}_0xa5955a['type']=_0x2623d4(0x5c4,0x59c),_0xa5955a[_0x2623d4(0x540,0x589)]=_0x1db167;function _0x2623d4(_0x17a792,_0xf8b4fb){return _0x51bcd8(_0x17a792,_0xf8b4fb- -0x86);}this['worker']['postMessage'](_0xa5955a);},'setDate':_0x3c9d2c=>{function _0x1044cd(_0x45d24f,_0x1c40f3){return _0x51bcd8(_0x45d24f,_0x1c40f3- -0x3ac);}const _0x256edb={};_0x256edb['type']=_0x1044cd(0x26f,0x2b7);function _0x4d01cf(_0x5b423a,_0x29eef3){return _0x1bf92c(_0x5b423a,_0x29eef3- -0xa5);}_0x256edb['data']=_0x3c9d2c,this[_0x1044cd(0x2df,0x283)]['postMessage'](_0x256edb);},'update':()=>{if(this[_0x328d7c(0x43f,0x3f6)])return;this[_0x5754d2(0x406,0x410)]=!![];function _0x328d7c(_0x1c70a3,_0x12aa90){return _0x1bf92c(_0x1c70a3,_0x12aa90-0x3f5);}const _0x16f393={};function _0x5754d2(_0x29c68c,_0x31a1d3){return _0x51bcd8(_0x31a1d3,_0x29c68c- -0x255);}_0x16f393['type']='update',this['worker']['postMessage'](_0x16f393);},'clear':()=>{function _0x50c912(_0x5657a6,_0x3a6ede){return _0x1bf92c(_0x5657a6,_0x3a6ede-0x39a);}const _0x438be6={};_0x438be6['type']=_0x50c912(0x341,0x38a);function _0x4555bd(_0x500a12,_0x3c03f7){return _0x51bcd8(_0x3c03f7,_0x500a12- -0x447);}this[_0x4555bd(0x1e8,0x184)][_0x4555bd(0x1a3,0x148)](_0x438be6);}},this['windField'][_0x1bf92c(0x5,-0x13)](this['options']);}}mars3d__namespace['LayerUtil'][_0x413ef9(0x75,0xec)](_0x560305(0x581,0x5a6),CanvasWindLayer),mars3d__namespace['layer'][_0x413ef9(0xbb,0xfa)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['Log'][_0x413ef9(0xa6,0x72)]('mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:'+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports[_0x560305(0x615,0x663)]=WindLayer,exports[_0x560305(0x614,0x672)]=WindUtil;const _0x2d7119={};_0x2d7119['value']=!![],Object['defineProperty'](exports,'__esModule',_0x2d7119);
|
|
15
15
|
}));
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mars3d-wind",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.1",
|
|
4
4
|
"description": "Mars3D平台插件,支持气象 风向图 功能插件",
|
|
5
5
|
"main": "./mars3d-wind.js",
|
|
6
6
|
"peerDependencies": {},
|
|
7
7
|
"devDependencies": {
|
|
8
|
-
"mars3d": "~3.
|
|
8
|
+
"mars3d": "~3.11.1"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"lint": "eslint ./src/**/*.{js,ts} --fix"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"webgis",
|
|
29
29
|
"wind"
|
|
30
30
|
],
|
|
31
|
-
"author": "
|
|
31
|
+
"author": "mars3d团队",
|
|
32
32
|
"license": "Apache-2.0",
|
|
33
33
|
"homepage": "http://mars3d.cn",
|
|
34
34
|
"build": {
|