mars3d-wind 3.10.11 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/mars3d-wind.js +4 -4
- package/package.json +2 -2
package/mars3d-wind.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
|
|
3
3
|
*
|
|
4
|
-
* 版本信息:v3.
|
|
5
|
-
* 编译日期:
|
|
4
|
+
* 版本信息:v3.11.0
|
|
5
|
+
* 编译日期:2026-02-14 19:29
|
|
6
6
|
* 版权所有:Copyright by 火星科技 http://mars3d.cn
|
|
7
|
-
* 使用单位:火星科技免费公开版 ,
|
|
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(_0x3f66c4,_0x21a907){const _0x11ef6d=_0x3f66c4();function _0x36aa49(_0x9fcb8b,_0x558792){return _0x270b(_0x9fcb8b-0x271,_0x558792);}function _0x7056f0(_0x2bfc2d,_0x3976e1){return _0x270b(_0x2bfc2d-0x69,_0x3976e1);}while(!![]){try{const _0x588d71=parseInt(_0x7056f0(0x18b,0x14e))/0x1+-parseInt(_0x7056f0(0x25a,0x1f2))/0x2+-parseInt(_0x7056f0(0x220,0x28a))/0x3*(parseInt(_0x7056f0(0x1e0,0x182))/0x4)+parseInt(_0x7056f0(0x1b5,0x1e3))/0x5+parseInt(_0x7056f0(0x215,0x24c))/0x6+parseInt(_0x7056f0(0x27a,0x294))/0x7*(-parseInt(_0x36aa49(0x459,0x4a2))/0x8)+parseInt(_0x7056f0(0x241,0x217))/0x9;if(_0x588d71===_0x21a907)break;else _0x11ef6d['push'](_0x11ef6d['shift']());}catch(_0x3a457b){_0x11ef6d['push'](_0x11ef6d['shift']());}}}(_0x3596,0x4beba));function _interopNamespace(_0x3086f1){if(_0x3086f1&&_0x3086f1['__esModule'])return _0x3086f1;var _0x46bcef=Object['create'](null);return _0x3086f1&&Object['keys'](_0x3086f1)['forEach'](function(_0x48f3da){function _0x325ae7(_0x30a0b2,_0x6a25cf){return _0x270b(_0x30a0b2- -0x340,_0x6a25cf);}if(_0x48f3da!=='default'){var _0x235bc4=Object['getOwnPropertyDescriptor'](_0x3086f1,_0x48f3da);Object[_0x325ae7(-0x13a,-0x17b)](_0x46bcef,_0x48f3da,_0x235bc4['get']?_0x235bc4:{'enumerable':!![],'get':function(){return _0x3086f1[_0x48f3da];}});}}),_0x46bcef['default']=_0x3086f1,_0x46bcef;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace[_0x52dd5f(0x27c,0x251)];function getU(_0x446d32,_0x12ab09){const _0x175b25=_0x446d32*Math['cos'](Cesium$2['Math']['toRadians'](_0x12ab09));return _0x175b25;}function getV(_0x10df75,_0x5ca34d){const _0x258b35=_0x10df75*Math['sin'](Cesium$2['Math'][_0x2c993d(0x6d,0x1d)](_0x5ca34d));function _0x2c993d(_0x3ab120,_0x18b6f1){return _0x52dd5f(_0x3ab120- -0x2a4,_0x18b6f1);}return _0x258b35;}function getSpeed(_0x2062f1,_0x5f0b94){function _0x3f406e(_0x52556a,_0x32a689){return _0x52dd5f(_0x52556a- -0x149,_0x32a689);}const _0x649c55=Math['sqrt'](Math['pow'](_0x2062f1,0x2)+Math[_0x3f406e(0x171,0x19d)](_0x5f0b94,0x2));return _0x649c55;}function getDirection(_0x2c96aa,_0x4a2943){let _0x4ddf97=Cesium$2['Math']['toDegrees'](Math[_0x3dd2fa(0x2d9,0x2b0)](_0x4a2943,_0x2c96aa));_0x4ddf97+=_0x4ddf97<0x0?0x168:0x0;function _0x3dd2fa(_0x123458,_0xb159d8){return _0x52dd5f(_0xb159d8-0x4c,_0x123458);}return _0x4ddf97;}const _0x4d2d4b={};_0x4d2d4b['__proto__']=null,_0x4d2d4b[_0x5e9725(0x467,0x46d)]=getU,_0x4d2d4b['getV']=getV,_0x4d2d4b['getSpeed']=getSpeed,_0x4d2d4b[_0x5e9725(0x3b5,0x35c)]=getDirection;var WindUtil=_0x4d2d4b;const version='3.10.11',buildTime=_0x5e9725(0x39c,0x367);var updatePositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20获取当前粒子的位置\x0a\x20\x20vec2\x20currentPos\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20获取粒子的速度\x0a\x20\x20vec2\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20计算下一个位置\x0a\x20\x20vec2\x20nextPos\x20=\x20currentPos\x20+\x20speed;\x0a\x0a\x20\x20\x20\x20//\x20将新的位置写入\x20fragColor\x0a\x20\x20fragColor\x20=\x20vec4(nextPos,\x200.0f,\x201.0f);\x0a}\x0a',calculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec2\x20uRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20vRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20speedRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20dimension;\x20//\x20(lon,\x20lat)\x0auniform\x20vec2\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec2\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0a\x0auniform\x20float\x20speedScaleFactor;\x0auniform\x20float\x20frameRateAdjustment;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20getInterval(vec2\x20maximum,\x20vec2\x20minimum,\x20vec2\x20dimension)\x20{\x0a\x20\x20return\x20(maximum\x20-\x20minimum)\x20/\x20(dimension\x20-\x201.0f);\x0a}\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLat.x\x20=\x20clamp(lonLat.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLat.y\x20=\x20clamp(lonLat.y,\x20minimum.y,\x20maximum.y);\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(0.0f);\x0a\x20\x20index2D.x\x20=\x20(lonLat.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index2D.y\x20=\x20(lonLat.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20dimension.y);\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0avec2\x20getWindComponents(vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20u\x20=\x20texture(U,\x20normalizedIndex2D).r;\x0a\x20\x20float\x20v\x20=\x20texture(V,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20vec2(u,\x20v);\x0a}\x0a\x0avec2\x20bilinearInterpolation(vec2\x20lonLat)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLat.x;\x0a\x20\x20float\x20lat\x20=\x20lonLat.y;\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20grid\x20cell\x20coordinates\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Get\x20wind\x20vectors\x20at\x20four\x20corners\x0a\x20\x20vec2\x20v00\x20=\x20getWindComponents(vec2(lon0,\x20lat0));\x0a\x20\x20vec2\x20v10\x20=\x20getWindComponents(vec2(lon1,\x20lat0));\x0a\x20\x20vec2\x20v01\x20=\x20getWindComponents(vec2(lon0,\x20lat1));\x0a\x20\x20vec2\x20v11\x20=\x20getWindComponents(vec2(lon1,\x20lat1));\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20all\x20wind\x20vectors\x20are\x20zero\x0a\x20\x20if(length(v00)\x20==\x200.0f\x20&&\x20length(v10)\x20==\x200.0f\x20&&\x20length(v01)\x20==\x200.0f\x20&&\x20length(v11)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x200.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20interpolation\x20weights\x0a\x20\x20float\x20s\x20=\x20(lon\x20-\x20lon0)\x20/\x20interval.x;\x0a\x20\x20float\x20t\x20=\x20(lat\x20-\x20lat0)\x20/\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Perform\x20bilinear\x20interpolation\x20on\x20vector\x20components\x0a\x20\x20vec2\x20v0\x20=\x20mix(v00,\x20v10,\x20s);\x0a\x20\x20vec2\x20v1\x20=\x20mix(v01,\x20v11,\x20s);\x0a\x20\x20return\x20mix(v0,\x20v1,\x20t);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec2\x20convertSpeedUnitToLonLat(vec2\x20lonLat,\x20vec2\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLat);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20vec2\x20windVectorInLonLat\x20=\x20vec2(u,\x20v);\x0a\x0a\x20\x20return\x20windVectorInLonLat;\x0a}\x0a\x0avec2\x20calculateSpeedByRungeKutta2(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec2\x20y_n\x20=\x20lonLat;\x0a\x20\x20vec2\x20f_n\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec2\x20speed\x20=\x20h\x20*\x20bilinearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20calculateWindNorm(vec2\x20speed)\x20{\x0a\x20\x20float\x20speedLength\x20=\x20length(speed.xy);\x0a\x20\x20if(speedLength\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Clamp\x20speedLength\x20to\x20range\x0a\x20\x20float\x20clampedSpeed\x20=\x20clamp(speedLength,\x20speedRange.x,\x20speedRange.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(clampedSpeed\x20-\x20speedRange.x)\x20/\x20(speedRange.y\x20-\x20speedRange.x);\x0a\x20\x20return\x20vec2(speedLength,\x20normalizedSpeed);\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec2\x20lonLat\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec2\x20speedOrigin\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLat)\x20*\x20frameRateAdjustment;\x0a\x20\x20vec2\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLat,\x20speed);\x0a\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',postProcessingPositionFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a',renderParticlesFragmentShader=_0x5e9725(0x46c,0x43c),renderParticlesVertexShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0ain\x20vec3\x20normal;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20frameRateAdjustment;\x0auniform\x20float\x20particleHeight;\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20vec2\x20lineWidth;\x0auniform\x20vec2\x20lineLength;\x0auniform\x20vec2\x20domain;\x0auniform\x20bool\x20is3D;\x0a\x0a//\x20添加输出变量传递给片元着色器\x0aout\x20vec4\x20speed;\x0aout\x20float\x20v_segmentPosition;\x0aout\x20vec2\x20textureCoordinate;\x0a\x0a//\x20添加结构体定义\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0avec3\x20convertCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLat.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20if(is3D)\x20{\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLat);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用\x20modelViewProjection\x20矩阵进行投影变换\x0a\x20\x20\x20\x20vec4\x20projectedPosition\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20\x20\x20return\x20projectedPosition;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20vec3\x20position2D\x20=\x20vec3(radians(lonLat.x),\x20radians(lonLat.y),\x200.0f);\x0a\x20\x20\x20\x20return\x20czm_modelViewProjection\x20*\x20vec4(position2D,\x201.0f);\x0a\x20\x20}\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign,\x20float\x20widthFactor)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20//\x20计算方向向量\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x0a\x20\x20\x20\x20//\x20计算法向量\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x0a\x20\x20\x20\x20//\x20使用\x20widthFactor\x20调整宽度\x0a\x20\x20float\x20offsetLength\x20=\x20widthFactor\x20*\x20lineWidth.y;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20翻转\x20Y\x20轴坐标\x0a\x20\x20vec2\x20flippedIndex\x20=\x20vec2(st.x,\x201.0f\x20-\x20st.y);\x0a\x0a\x20\x20vec2\x20particleIndex\x20=\x20flippedIndex;\x0a\x20\x20speed\x20=\x20texture(particlesSpeed,\x20particleIndex);\x0a\x0a\x20\x20vec2\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rg;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x0a\x20\x20\x20\x20//\x20计算速度相关的宽度和长度因子\x0a\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x0a\x20\x20\x20\x20//\x20根据速度计算宽度\x0a\x20\x20float\x20widthFactor\x20=\x20mix(lineWidth.x,\x20lineWidth.y,\x20normalizedSpeed);\x0a\x20\x20widthFactor\x20*=\x20(pointToUse\x20<\x200\x20?\x201.0f\x20:\x200.5f);\x20//\x20头部更宽,尾部更窄\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20length\x20based\x20on\x20speed\x0a\x20\x20float\x20lengthFactor\x20=\x20mix(lineLength.x,\x20lineLength.y,\x20normalizedSpeed)\x20*\x20pixelSize;\x0a\x0a\x20\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20头部位置\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x200.0f;\x20//\x20头部\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Get\x20direction\x20and\x20normalize\x20it\x20to\x20length\x201.0\x0a\x20\x20\x20\x20vec4\x20direction\x20=\x20normalize(projectedCoordinates.next\x20-\x20projectedCoordinates.current);\x0a\x20\x20\x20\x20vec4\x20extendedPosition\x20=\x20projectedCoordinates.current\x20+\x20direction\x20*\x20lengthFactor;\x0a\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20extendedPosition,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20extendedPosition\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x201.0f;\x20//\x20尾部\x0a\x20\x20}\x0a\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a}\x0a';const {ShaderSource:ShaderSource$1}=mars3d__namespace[_0x5e9725(0x3cf,0x3d8)];class ShaderManager{static[_0x52dd5f(0x322,0x2f1)](){const _0x2c8386={};return _0x2c8386['sources']=[calculateSpeedShader],new ShaderSource$1(_0x2c8386);}static['getUpdatePositionShader'](){const _0x54a5e3={};return _0x54a5e3['sources']=[updatePositionShader],new ShaderSource$1(_0x54a5e3);}static[_0x52dd5f(0x316,0x394)](){const _0x3c6d39={};return _0x3c6d39['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x3c6d39);}static['getSegmentDrawFragmentShader'](){const _0x2fa62d={};return _0x2fa62d['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x2fa62d);}static[_0x5e9725(0x3d5,0x3b4)](){const _0x1c0d50={};return _0x1c0d50['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x1c0d50);}}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defined,destroyObject}=mars3d__namespace[_0x5e9725(0x3cf,0x451)];class CustomPrimitive{constructor(_0xa2f134){function _0x53b5c8(_0x206fee,_0xdec18a){return _0x5e9725(_0xdec18a-0x16c,_0x206fee);}this[_0x1874c1(0x434,0x464)]=_0xa2f134['commandType'],this['geometry']=_0xa2f134[_0x53b5c8(0x58b,0x5b4)],this['attributeLocations']=_0xa2f134['attributeLocations'],this['primitiveType']=_0xa2f134['primitiveType'],this[_0x53b5c8(0x5b0,0x57e)]=_0xa2f134['uniformMap']||{},this[_0x1874c1(0x433,0x48e)]=_0xa2f134[_0x53b5c8(0x4b1,0x4f8)];function _0x1874c1(_0xa3d59e,_0x4a3f4a){return _0x52dd5f(_0xa3d59e-0x1fa,_0x4a3f4a);}this['fragmentShaderSource']=_0xa2f134[_0x1874c1(0x4c9,0x4bd)],this[_0x53b5c8(0x5b0,0x536)]=_0xa2f134[_0x1874c1(0x471,0x4dd)],this['framebuffer']=_0xa2f134['framebuffer'],this[_0x53b5c8(0x53e,0x53f)]=_0xa2f134[_0x53b5c8(0x4f3,0x53f)],this['autoClear']=_0xa2f134['autoClear']??![],this['preExecute']=_0xa2f134[_0x1874c1(0x4f8,0x50f)],this[_0x1874c1(0x508,0x541)]=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this[_0x1874c1(0x42a,0x488)]=_0xa2f134[_0x1874c1(0x42a,0x473)]??(()=>!![]),this['autoClear']&&(this[_0x53b5c8(0x536,0x58a)]=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Pass$1['OPAQUE']}));}['createCommand'](_0x6ae10d){function _0x3a87cc(_0xab5727,_0x159a3e){return _0x5e9725(_0xab5727- -0x491,_0x159a3e);}function _0x2821c8(_0x15f774,_0x20dace){return _0x5e9725(_0x15f774- -0x61,_0x20dace);}if(this['commandType']==='Draw'){const _0x36dde6={};_0x36dde6['context']=_0x6ae10d,_0x36dde6[_0x2821c8(0x3e7,0x3b9)]=this[_0x2821c8(0x3e7,0x417)],_0x36dde6['attributeLocations']=this['attributeLocations'],_0x36dde6['bufferUsage']=BufferUsage$1[_0x3a87cc(-0x61,-0x16)];const _0x548e69=VertexArray$1[_0x2821c8(0x3ae,0x3bd)](_0x36dde6),_0xf5d16c={};_0xf5d16c['context']=_0x6ae10d,_0xf5d16c['vertexShaderSource']=this['vertexShaderSource'],_0xf5d16c[_0x2821c8(0x3c1,0x387)]=this['fragmentShaderSource'],_0xf5d16c['attributeLocations']=this[_0x2821c8(0x390,0x315)];const _0x4a1fff=ShaderProgram['fromCache'](_0xf5d16c),_0x450b67=RenderState['fromCache'](this['rawRenderState']),_0x15deb0={};return _0x15deb0[_0x3a87cc(-0x44,-0x8a)]=this,_0x15deb0[_0x3a87cc(-0x18,-0xa)]=_0x548e69,_0x15deb0[_0x2821c8(0x32d,0x2ba)]=this['primitiveType'],_0x15deb0['modelMatrix']=Matrix4['IDENTITY'],_0x15deb0[_0x2821c8(0x378,0x30d)]=_0x450b67,_0x15deb0['shaderProgram']=_0x4a1fff,_0x15deb0[_0x2821c8(0x36d,0x35d)]=this['framebuffer'],_0x15deb0['uniformMap']=this[_0x3a87cc(-0x7f,-0xbc)],_0x15deb0['pass']=Pass$1[_0x3a87cc(-0x21,0x5a)],new DrawCommand(_0x15deb0);}else{if(this['commandType']==='Compute'){const _0x35c7f5={};return _0x35c7f5[_0x2821c8(0x3ec,0x446)]=this,_0x35c7f5['fragmentShaderSource']=this['fragmentShaderSource'],_0x35c7f5['uniformMap']=this['uniformMap'],_0x35c7f5[_0x2821c8(0x372,0x38a)]=this['outputTexture'],_0x35c7f5['persists']=!![],new ComputeCommand(_0x35c7f5);}else throw new Error(_0x3a87cc(-0x15,-0x45));}}['setGeometry'](_0x459f7d,_0xfc1b21){this['geometry']=_0xfc1b21;function _0x1e7709(_0x43cd0c,_0x4e8691){return _0x5e9725(_0x4e8691- -0x4f5,_0x43cd0c);}function _0x4efc9b(_0x26fb50,_0x43e635){return _0x5e9725(_0x43e635- -0x53d,_0x26fb50);}defined(this['commandToExecute'])&&(this[_0x4efc9b(-0x110,-0xff)][_0x1e7709(-0x58,-0x7c)]=VertexArray$1[_0x1e7709(-0x159,-0xe6)]({'context':_0x459f7d,'geometry':this['geometry'],'attributeLocations':this[_0x4efc9b(-0x10b,-0x14c)],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}['update'](_0x2a4c34){function _0x2e2aa4(_0x359385,_0x4380a3){return _0x5e9725(_0x4380a3- -0x391,_0x359385);}if(!this['isDynamic']())return;if(!this[_0x2e2aa4(0x86,0xd0)]||!defined(_0x2a4c34))return;!defined(this['commandToExecute'])&&(this[_0x2e2aa4(0x110,0xad)]=this[_0x2b668b(0x435,0x497)](_0x2a4c34['context']));defined(this['preExecute'])&&this['preExecute']();if(!_0x2a4c34[_0x2b668b(0x479,0x496)]){console[_0x2e2aa4(-0x25,-0x2)]('frameState.commandList\x20is\x20undefined');return;}function _0x2b668b(_0x150494,_0x4857c5){return _0x52dd5f(_0x4857c5-0x1ef,_0x150494);}defined(this['clearCommand'])&&_0x2a4c34[_0x2b668b(0x45f,0x496)]['push'](this['clearCommand']),defined(this[_0x2e2aa4(0x7d,0xad)])&&_0x2a4c34['commandList'][_0x2b668b(0x3f9,0x427)](this[_0x2e2aa4(0x69,0xad)]);}[_0x5e9725(0x452,0x3df)](){return![];}[_0x52dd5f(0x25b,0x216)](){if(defined(this['commandToExecute'])){var _0x4eb9a9;(_0x4eb9a9=this['commandToExecute']['shaderProgram'])===null||_0x4eb9a9===void 0x0||_0x4eb9a9['destroy'](),this['commandToExecute']['shaderProgram']=undefined;}return destroyObject(this);}}function deepMerge(_0x5467b5,_0x4c5b90){if(!_0x5467b5)return _0x4c5b90;if(!_0x4c5b90)return _0x5467b5;const _0x26f92c={..._0x4c5b90},_0x2b5ceb=_0x26f92c;for(const _0x1f6444 in _0x5467b5){if(Object[_0x41b63b(0x266,0x1f5)]['hasOwnProperty']['call'](_0x5467b5,_0x1f6444)){const _0x9a0531=_0x5467b5[_0x1f6444],_0xa332fd=_0x4c5b90[_0x1f6444];if(Array['isArray'](_0x9a0531)){_0x2b5ceb[_0x1f6444]=_0x9a0531['slice']();continue;}if(_0x9a0531&&typeof _0x9a0531==='object'){_0x2b5ceb[_0x1f6444]=deepMerge(_0x9a0531,_0xa332fd||{});continue;}_0x9a0531!==undefined&&(_0x2b5ceb[_0x1f6444]=_0x9a0531);}}function _0x41b63b(_0x4d31e2,_0x34cd3e){return _0x52dd5f(_0x4d31e2- -0x6d,_0x34cd3e);}return _0x2b5ceb;}const {Cartesian2:Cartesian2$1,FrameRateMonitor,PixelDatatype:PixelDatatype$1,PixelFormat:PixelFormat$1,Sampler:Sampler$1,Texture:Texture$1,TextureMagnificationFilter:TextureMagnificationFilter$1,TextureMinificationFilter:TextureMinificationFilter$1}=mars3d__namespace[_0x5e9725(0x3cf,0x452)];class WindParticlesComputing{constructor(_0x192af5,_0x21dbe3,_0x1126e0,_0x445821,_0x1d5b93){this['context']=_0x192af5,this['options']=_0x1126e0,this[_0x36ba58(0x483,0x498)]=_0x445821,this[_0x36ba58(0x490,0x4f9)]=_0x21dbe3,this[_0x36ba58(0x469,0x436)]=0x3c,this[_0x36ba58(0x4ad,0x4ce)]=0x1;const _0x553a9d={};_0x553a9d[_0x3ef82f(0x281,0x26e)]=_0x1d5b93,_0x553a9d['samplingWindow']=0x1;function _0x3ef82f(_0x405c45,_0x1e1541){return _0x5e9725(_0x1e1541- -0x166,_0x405c45);}function _0x36ba58(_0x1cf1cc,_0x58b022){return _0x52dd5f(_0x1cf1cc-0x223,_0x58b022);}_0x553a9d[_0x36ba58(0x4e9,0x4a6)]=0x0,this[_0x3ef82f(0x1b7,0x223)]=new FrameRateMonitor(_0x553a9d),this['initFrameRate'](),this['createWindTextures'](),this[_0x36ba58(0x501,0x557)](),this['createComputingPrimitives']();}['initFrameRate'](){const _0x2da60c=()=>{function _0x548f51(_0x2261b0,_0x175a65){return _0x270b(_0x2261b0-0x3c5,_0x175a65);}function _0xfd925d(_0x253c70,_0x57ed8a){return _0x270b(_0x253c70-0x255,_0x57ed8a);}this['frameRateMonitor']['lastFramesPerSecond']>0x14&&(this['frameRate']=this['frameRateMonitor'][_0x548f51(0x58b,0x5b1)],this['frameRateAdjustment']=0x3c/Math['max'](this[_0x548f51(0x4ed,0x4b8)],0x1));};_0x2da60c();const _0xa52ee7=setInterval(_0x2da60c,0x3e8);function _0x3f5968(_0x71eb5,_0x24e0c1){return _0x52dd5f(_0x71eb5- -0x167,_0x24e0c1);}const _0xa9bd1d=this[_0x3f5968(0xf4,0xe2)][_0x3f5968(0x18d,0x173)](this);function _0x19738d(_0x16178e,_0x34089e){return _0x5e9725(_0x34089e-0x76,_0x16178e);}this['destroy']=()=>{clearInterval(_0xa52ee7),_0xa9bd1d();};}[_0x52dd5f(0x2c0,0x2ef)](){function _0x47fd27(_0x55ab2c,_0x5cfa3b){return _0x52dd5f(_0x55ab2c- -0x1f0,_0x5cfa3b);}const _0x3a0d77={};_0x3a0d77['minificationFilter']=TextureMinificationFilter$1['LINEAR'],_0x3a0d77[_0x47fd27(0x51,0xa2)]=TextureMagnificationFilter$1[_0x47fd27(0xf8,0xd4)];const _0x17fe73={'context':this[_0x47fd27(0xe8,0x166)],'width':this[_0x47fd27(0x7d,0xd0)]['width'],'height':this[_0x47fd27(0x7d,0xd6)]['height'],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this['options'][_0x47fd27(0xce,0xf8)]??![],'sampler':new Sampler$1(_0x3a0d77)};function _0x216e3f(_0x239918,_0x57c865){return _0x52dd5f(_0x239918-0x12c,_0x57c865);}this[_0x47fd27(0x142,0x1ad)]={'U':new Texture$1({..._0x17fe73,'source':{'arrayBufferView':new Float32Array(this[_0x47fd27(0x7d,0x62)]['u']['array'])}}),'V':new Texture$1({..._0x17fe73,'source':{'arrayBufferView':new Float32Array(this['windData']['v'][_0x47fd27(0xc5,0x69)])}})};}[_0x52dd5f(0x2de,0x280)](){const _0x32b2b9={};_0x32b2b9[_0x25767d(0xcc,0x9d)]=TextureMinificationFilter$1['NEAREST'];function _0x25767d(_0x5de83c,_0x345a2c){return _0x52dd5f(_0x345a2c- -0x25f,_0x5de83c);}_0x32b2b9[_0x25767d(-0xa3,-0x1e)]=TextureMagnificationFilter$1['NEAREST'];const _0xfefff1={'context':this['context'],'width':this['options']['particlesTextureSize'],'height':this[_0x2abd27(0xd1,0x4f)][_0x2abd27(0x63,0x5)],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1[_0x2abd27(0xa2,0x50)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this[_0x2abd27(0x56,0x4f)][_0x2abd27(-0x3b,0x5)]*this[_0x25767d(0xab,0x90)]['particlesTextureSize']*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x32b2b9)};function _0x2abd27(_0x120940,_0x11011c){return _0x5e9725(_0x11011c- -0x3f3,_0x120940);}this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0xfefff1),'currentParticlesPosition':new Texture$1(_0xfefff1),'nextParticlesPosition':new Texture$1(_0xfefff1),'postProcessingPosition':new Texture$1(_0xfefff1),'particlesSpeed':new Texture$1(_0xfefff1)};}[_0x5e9725(0x390,0x385)](){function _0x1a827d(_0x1cb30e,_0xbdd471){return _0x52dd5f(_0xbdd471-0x1bf,_0x1cb30e);}function _0x494efd(_0x1a71d0,_0x5a84dd){return _0x52dd5f(_0x1a71d0- -0x21c,_0x5a84dd);}Object[_0x1a827d(0x4ec,0x4b7)](this[_0x494efd(0xbf,0x13b)])[_0x494efd(0x10b,0x13c)](_0x1706f3=>_0x1706f3[_0x494efd(0x3f,0x9d)]());}['createComputingPrimitives'](){function _0x4588f9(_0x395ab1,_0x484baa){return _0x52dd5f(_0x484baa-0x1,_0x395ab1);}function _0x3c356f(_0x39e75a,_0x66965){return _0x5e9725(_0x66965- -0x5be,_0x39e75a);}this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this['windData']['u']['min'],this['windData']['u']['max']),'vRange':()=>new Cartesian2$1(this[_0x3c356f(-0x1e1,-0x1fe)]['v']['min'],this['windData']['v'][_0x4588f9(0x316,0x329)]),'speedRange':()=>new Cartesian2$1(this[_0x3c356f(-0x204,-0x1fe)]['speed']['min'],this['windData']['speed']['max']),'currentParticlesPosition':()=>this[_0x4588f9(0x295,0x2dc)][_0x4588f9(0x227,0x27b)],'speedScaleFactor':()=>{return(this['viewerParameters']['pixelSize']+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this['frameRateAdjustment'],'dimension':()=>new Cartesian2$1(this['windData'][_0x4588f9(0x1d0,0x253)],this[_0x3c356f(-0x1bf,-0x1fe)]['height']),'minimum':()=>new Cartesian2$1(this[_0x4588f9(0x2c6,0x26e)][_0x4588f9(0x348,0x32d)][_0x3c356f(-0x202,-0x1a4)],this[_0x4588f9(0x25e,0x26e)]['bounds'][_0x3c356f(-0x14e,-0x19b)]),'maximum':()=>new Cartesian2$1(this['windData']['bounds']['east'],this[_0x4588f9(0x25f,0x26e)][_0x4588f9(0x329,0x32d)]['north'])},'fragmentShaderSource':ShaderManager[_0x3c356f(-0xcc,-0x149)](),'outputTexture':this[_0x4588f9(0x2fd,0x2dc)]['particlesSpeed'],'preExecute':()=>{const _0x2e55ce=this['particlesTextures']['previousParticlesPosition'];function _0xd0b05b(_0x16ec61,_0x37381f){return _0x4588f9(_0x16ec61,_0x37381f- -0x4f);}function _0x496d59(_0x33f3b9,_0x57e7c3){return _0x4588f9(_0x57e7c3,_0x33f3b9- -0x35b);}this[_0xd0b05b(0x2d9,0x28d)][_0x496d59(-0x61,0x7)]=this[_0xd0b05b(0x2e3,0x28d)][_0x496d59(-0xe0,-0xed)],this['particlesTextures']['currentParticlesPosition']=this['particlesTextures'][_0xd0b05b(0x226,0x253)],this['particlesTextures']['postProcessingPosition']=_0x2e55ce,this['primitives']['calculateSpeed']['commandToExecute']&&(this['primitives'][_0x496d59(-0x45,-0xc1)]['commandToExecute']['outputTexture']=this[_0xd0b05b(0x228,0x28d)]['particlesSpeed']);},'isDynamic':()=>this[_0x4588f9(0x28d,0x2f0)][_0x3c356f(-0x1ac,-0x151)]}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this[_0x4588f9(0x2f1,0x2dc)][_0x4588f9(0x1fb,0x27b)],'particlesSpeed':()=>this['particlesTextures']['particlesSpeed']},'fragmentShaderSource':ShaderManager[_0x4588f9(0x342,0x2f8)](),'outputTexture':this[_0x3c356f(-0x171,-0x190)][_0x4588f9(0x282,0x2fc)],'preExecute':()=>{function _0x4455f8(_0x269e4d,_0x10d823){return _0x4588f9(_0x10d823,_0x269e4d-0x287);}function _0x884070(_0x4aa651,_0x195d6d){return _0x3c356f(_0x4aa651,_0x195d6d-0x526);}this[_0x884070(0x40e,0x38d)]['updatePosition']['commandToExecute']&&(this[_0x4455f8(0x55a,0x530)][_0x4455f8(0x4f4,0x575)]['commandToExecute']['outputTexture']=this[_0x4455f8(0x563,0x5a6)]['nextParticlesPosition']);},'isDynamic':()=>this['options'][_0x3c356f(-0x154,-0x151)]}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this['particlesTextures'][_0x3c356f(-0x1b2,-0x170)],'particlesSpeed':()=>this['particlesTextures'][_0x3c356f(-0x1cd,-0x21d)],'lonRange':()=>this['viewerParameters']['lonRange'],'latRange':()=>this['viewerParameters']['latRange'],'dataLonRange':()=>new Cartesian2$1(this[_0x3c356f(-0x1c5,-0x1fe)]['bounds']['west'],this[_0x3c356f(-0x279,-0x1fe)]['bounds']['east']),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0x4588f9(0x2e9,0x32d)]['south'],this['windData'][_0x4588f9(0x312,0x32d)]['north']),'randomCoefficient':function(){return Math['random']();},'dropRate':()=>this[_0x4588f9(0x2e5,0x2f0)]['dropRate'],'dropRateBump':()=>this['options']['dropRateBump'],'useViewerBounds':()=>this['options'][_0x3c356f(-0x18a,-0x179)]},'fragmentShaderSource':ShaderManager[_0x3c356f(-0x23f,-0x1e9)](),'outputTexture':this[_0x4588f9(0x2f0,0x2dc)][_0x3c356f(-0x1e2,-0x1ca)],'preExecute':()=>{function _0x30eb68(_0x79f7e2,_0x5ba1ad){return _0x4588f9(_0x5ba1ad,_0x79f7e2- -0x462);}function _0x350ed6(_0x5d5844,_0x35cf0d){return _0x3c356f(_0x5d5844,_0x35cf0d-0x595);}this['primitives'][_0x30eb68(-0x1c0,-0x217)][_0x30eb68(-0x176,-0x1cd)]&&(this[_0x30eb68(-0x18f,-0x128)]['postProcessingPosition'][_0x30eb68(-0x176,-0x15d)]['outputTexture']=this['particlesTextures'][_0x30eb68(-0x1c0,-0x226)]);},'isDynamic':()=>this['options']['dynamic']})};}['reCreateWindTextures'](){this['windTextures']['U'][_0x47f6b2(-0x16a,-0x19f)](),this[_0x47f6b2(-0x93,-0xd3)]['V'][_0x47f6b2(-0x16a,-0x1ba)]();function _0x47f6b2(_0x26d389,_0x41d6d2){return _0x52dd5f(_0x26d389- -0x3c5,_0x41d6d2);}function _0x154b22(_0xaa82cd,_0x2e3a03){return _0x5e9725(_0xaa82cd- -0x309,_0x2e3a03);}this[_0x154b22(0x10a,0x10d)]();}['updateWindData'](_0x33976e){this['windData']=_0x33976e,this['reCreateWindTextures']();}[_0x52dd5f(0x287,0x2f0)](_0x3c994c){const _0x2b2e60=_0x3c994c[_0x413ede(-0x8d,-0x10b)]!==undefined&&_0x3c994c[_0x2c3fc6(0x51,0xc5)]!==this[_0x2c3fc6(0x14c,0xf6)]['flipY'];function _0x2c3fc6(_0x13b20c,_0x4b9caf){return _0x52dd5f(_0x4b9caf- -0x1f9,_0x13b20c);}this['options']=deepMerge(_0x3c994c,this['options']);function _0x413ede(_0x4c7eab,_0x83822b){return _0x52dd5f(_0x4c7eab- -0x34b,_0x83822b);}_0x2b2e60&&this[_0x413ede(-0xed,-0x12c)]();}[_0x5e9725(0x3b0,0x3cc)](_0x169c9d){const {array:_0x1a3844}=_0x169c9d;function _0x2a5198(_0x133c81,_0x67acaf){return _0x52dd5f(_0x67acaf- -0x14b,_0x133c81);}function _0x18e338(_0xa94d13,_0x2623f4){return _0x52dd5f(_0xa94d13- -0xa7,_0x2623f4);}let {min:_0x177cda,max:_0x25d1f5}=_0x169c9d;const _0x1acb2b=new Float32Array(_0x1a3844['length']);_0x177cda===undefined&&(console[_0x18e338(0x195,0x211)]('min\x20is\x20undefined,\x20calculate\x20min'),_0x177cda=Math[_0x2a5198(0x17a,0x141)](..._0x1a3844));_0x25d1f5===undefined&&(console[_0x2a5198(0xbe,0xf1)]('max\x20is\x20undefined,\x20calculate\x20max'),_0x25d1f5=Math['max'](..._0x1a3844));const _0xa3e11b=Math['max'](Math['abs'](_0x177cda),Math[_0x18e338(0x27e,0x212)](_0x25d1f5));for(let _0x582124=0x0;_0x582124<_0x1a3844['length'];_0x582124++){const _0x4a41fd=_0x1a3844[_0x582124]/_0xa3e11b;_0x1acb2b[_0x582124]=_0x4a41fd;}return _0x1acb2b;}[_0x52dd5f(0x25b,0x299)](){function _0x454f4f(_0x4aa53c,_0x24c211){return _0x52dd5f(_0x4aa53c- -0x19,_0x24c211);}Object[_0x454f4f(0x2df,0x2b3)](this['windTextures'])['forEach'](_0x3ce132=>_0x3ce132[_0x454f4f(0x242,0x1d6)]()),Object[_0x454f4f(0x2df,0x282)](this['particlesTextures'])[_0x454f4f(0x30e,0x389)](_0x3f8dee=>_0x3f8dee[_0x454f4f(0x242,0x239)]()),Object['values'](this['primitives'])[_0x2a6418(0xd3,0x148)](_0x5a7d40=>_0x5a7d40['destroy']());function _0x2a6418(_0x156bb2,_0x355f9d){return _0x52dd5f(_0x156bb2- -0x254,_0x355f9d);}this['frameRateMonitor'][_0x454f4f(0x242,0x279)]();}}function _0x3596(){const _0x7903d2=['particlesTextureSize\x20must\x20be\x20greater\x20than\x200','particles','updateViewerParameters','getUVByXY','createRenderingFramebuffers','748zKfnud','getUVByPoint','_removedHook','mouseHidden','postMessage','segmentsDepth','length','cols','container','attributeLocations','CanvasWindLayer','DEPTH_COMPONENT','postProcessingPosition','_onMouseDownEvent','FUNC_ADD','_tomap','particlesTextureSize','all','commandList','createCommand','visible','mouse_down','Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.','requestRender','_pointerEvents','createRenderingTextures','RGBA','register','zIndex','red','clientWidth','fixedHeight','array','fromDegrees','willReadFrequently','ymax','EventType','pow','update','fromGeometry','position','flipY','uniformMap','createWindTextures','clear','mouseUp','xmax','talt','green','quietPeriod','west','_addedHook','destination-in','2538186HlAvWe','clearCommand','onmessage','lng','mouseMove','fragmentShaderSource','south','_onMouseUpEvent','primitives','prototype','redraw','1053uoMhct','Math','pointer-events','context','_onMapWhellEvent','_updateIng','particlesTextures','north','STATIC_DRAW','createParticlesTextures','vmax','mouse_move','isDestroy','alt','isInExtent','lastFramesPerSecond','ymin','sceneMode','_animateFrame','LINEAR','onParticlesTextureSizeChange','_calc_speedRate','commandToExecute','windField','create','getRandomLatLng','options','FLOAT','strokeStyle','useViewerBounds','segmentsColor','bind','geometry','109674AesxLe','getUpdatePositionShader','values','previousParticlesPosition','owner','nextParticlesPosition','minificationFilter','lineTo','preExecute','isDestroyed','positionWC','domain','tlng','speedRate','addEventListener','changeOptions','8itzMsg','none','toWindowCoordinates','blendEquation','_randomParticle','_updateIng2','_map','CanvasWindField','show','779640osQhlb','pixelFormat','toRadians','particlesNumber','UNSIGNED_INT','getU','calculateSpeed','getSegmentDrawVertexShader','_colorRamp','setDate','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec4\x20speed;\x0ain\x20float\x20v_segmentPosition;\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20vec2\x20domain;\x0auniform\x20vec2\x20displayRange;\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speed.a\x20>\x20zero\x20&&\x20speed.b\x20>\x20displayRange.x\x20&&\x20speed.b\x20<\x20displayRange.y)\x20{\x0a\x20\x20\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x20\x20\x20\x20vec4\x20baseColor\x20=\x20texture(colorTable,\x20vec2(normalizedSpeed,\x20zero));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用更平滑的渐变效果\x0a\x20\x20\x20\x20float\x20alpha\x20=\x20smoothstep(0.0f,\x201.0f,\x20v_segmentPosition);\x0a\x20\x20\x20\x20alpha\x20=\x20pow(alpha,\x201.5f);\x20//\x20调整透明度渐变曲线\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20根据速度调整透明度\x0a\x20\x20\x20\x20float\x20speedAlpha\x20=\x20mix(0.3f,\x201.0f,\x20speed.a);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20组合颜色和透明度\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(baseColor.rgb,\x20baseColor.a\x20*\x20alpha\x20*\x20speedAlpha);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a\x0a\x20\x20float\x20segmentsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20if(segmentsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a','dynamic','stroke','ellipsoid','OPAQUE','style','canvas','grid','Cartesian2','getCalculateSpeedShader','canvasContext','defineProperty','abs','vertexArray','forEach','max','Unknown\x20command\x20type','enabled','isPointVisible','bounds','getPrimitives','round','1048243nEMcqd','_speedRate','logInfo','windTextures','canvasWidth','bindEvent','rows','lat','getDataAtLonLat','computing','_calcUV','isDynamic','frameTime','colorTable','__esModule','floor','setOptions','frameRateMonitor','age','push','vertexShaderSource','commandType','primitiveType','warn','destroyParticlesTextures','data','WindLayer','22888XqLaRE','magnificationFilter','rendering','latRange','LayerUtil','SceneMode','frameRate','error','moveTo','2025-12-31\x2016:25','layer','createPrimitives','clearFramebuffers','east','particlesSpeed','framebuffers','height','canvasWind','width','setData','PointTrans','globalAlpha','speed','wrapT','toGridXY','componentDatatype','CLAMP_TO_EDGE','destroy','SCENE3D','processWindData','reCreateWindTextures','BaseLayer','viewerParameters','segments','getDirection','_onMouseMoveEvent','atan2','maxAge','globe','random','displayRange','init','2290355FjogbS','clientHeight','updatePosition','windData','resize','visibility','reverse','particleSystem','xmin','_setOptionsHook','TRIANGLES','colors','unbindEvent','rawRenderState','MAX_VALUE','worker','currentParticlesPosition','framebuffer','Cesium','tlat','0px','mode','outputTexture','scene','getPostProcessingPositionShader','morphComplete','applyViewerParameters','percentageChanged','renderState','updateOptions','top','type','frameRateAdjustment','_drawLines','min','lineWidth','removeEventListener','refreshTimer'];_0x3596=function(){return _0x7903d2;};return _0x3596();}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace[_0x5e9725(0x3cf,0x3bd)];class WindParticlesRendering{constructor(_0x4d5d6f,_0x2423b8,_0x37447b,_0x3534c7){this[_0x5314dd(0x311,0x2a0)]=_0x4d5d6f,this['options']=_0x2423b8,this['viewerParameters']=_0x37447b;function _0x5314dd(_0x540afc,_0x3804e9){return _0x52dd5f(_0x3804e9- -0x38,_0x540afc);}this['computing']=_0x3534c7;function _0x8ba8dd(_0x100287,_0x3102c4){return _0x52dd5f(_0x100287- -0x3e9,_0x3102c4);}(typeof this['options']['particlesTextureSize']!=='number'||this['options']['particlesTextureSize']<=0x0)&&(console[_0x5314dd(0x1fa,0x20f)](_0x5314dd(0x226,0x273)),this['options']['particlesTextureSize']=0x100),this['colorTable']=this['createColorTableTexture'](),this['textures']=this[_0x8ba8dd(-0x13b,-0xba)](),this['framebuffers']=this['createRenderingFramebuffers'](),this[_0x8ba8dd(-0x117,-0x98)]=this[_0x8ba8dd(-0x19e,-0x206)]();}['createRenderingTextures'](){const _0x3799a2={};_0x3799a2[_0x5d609a(-0x1fd,-0x241)]=this['context'],_0x3799a2[_0x475bc2(0x202,0x20d)]=this['context']['drawingBufferWidth'],_0x3799a2['height']=this[_0x475bc2(0x290,0x293)]['drawingBufferHeight'],_0x3799a2[_0x475bc2(0x248,0x2cb)]=PixelFormat[_0x5d609a(-0x226,-0x256)],_0x3799a2['pixelDatatype']=PixelDatatype['UNSIGNED_BYTE'];function _0x475bc2(_0x364113,_0x2c82d6){return _0x52dd5f(_0x2c82d6- -0x45,_0x364113);}const _0x404caf=_0x3799a2,_0x2c275f={};function _0x5d609a(_0x430b47,_0x53559c){return _0x5e9725(_0x430b47- -0x628,_0x53559c);}_0x2c275f['context']=this['context'],_0x2c275f[_0x475bc2(0x193,0x20d)]=this['context']['drawingBufferWidth'],_0x2c275f['height']=this['context']['drawingBufferHeight'],_0x2c275f['pixelFormat']=PixelFormat[_0x5d609a(-0x235,-0x24c)],_0x2c275f['pixelDatatype']=PixelDatatype[_0x5d609a(-0x1c2,-0x1ec)];const _0x1dd894=_0x2c275f;return{'segmentsColor':new Texture(_0x404caf),'segmentsDepth':new Texture(_0x1dd894)};}[_0x5e9725(0x3e7,0x385)](){function _0x947f71(_0x34585b,_0x1a923a){return _0x5e9725(_0x34585b- -0x5ae,_0x1a923a);}const _0x3788a3={};_0x3788a3['context']=this[_0x947f71(-0x183,-0x175)];function _0x569065(_0x2c140c,_0xefc70a){return _0x52dd5f(_0xefc70a-0xe4,_0x2c140c);}return _0x3788a3['colorTextures']=[this['textures'][_0x569065(0x3e6,0x3d7)]],_0x3788a3['depthTexture']=this['textures'][_0x947f71(-0x1c1,-0x1f9)],{'segments':new Framebuffer(_0x3788a3)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x4d157f=>{function _0x3e2839(_0x2b9dfd,_0x11f5cb){return _0x270b(_0x11f5cb- -0x34b,_0x2b9dfd);}_0x4d157f[_0x3e2839(-0x1bf,-0x20e)]();});}['createColorTableTexture'](){const _0x1ae089=new Float32Array(this['options']['colors']['flatMap'](_0x5f1244=>{function _0x3afcb9(_0x3e20a6,_0x729307){return _0x270b(_0x729307-0x346,_0x3e20a6);}function _0x45b29e(_0x417aff,_0x4e368b){return _0x270b(_0x4e368b- -0x1b,_0x417aff);}const _0x5b6aba=Color$1['fromCssColorString'](_0x5f1244);return[_0x5b6aba[_0x45b29e(0x1c2,0x179)],_0x5b6aba[_0x45b29e(0x1e7,0x18c)],_0x5b6aba['blue'],_0x5b6aba['alpha']];})),_0x5f2631={};function _0x58657b(_0x57d64b,_0x52fbc2){return _0x52dd5f(_0x57d64b- -0x5c,_0x52fbc2);}_0x5f2631['minificationFilter']=TextureMinificationFilter[_0x4f4300(0x3c,-0x2f)],_0x5f2631[_0x4f4300(-0xfa,-0xd6)]=TextureMagnificationFilter['LINEAR'],_0x5f2631['wrapS']=TextureWrap['CLAMP_TO_EDGE'],_0x5f2631[_0x4f4300(-0x139,-0xc0)]=TextureWrap[_0x58657b(0x1fe,0x263)];function _0x4f4300(_0x457458,_0xe0dbbc){return _0x5e9725(_0xe0dbbc- -0x46a,_0x457458);}return new Texture({'context':this[_0x58657b(0x27c,0x2bc)],'width':this[_0x4f4300(-0x6a,-0x28)][_0x4f4300(-0x122,-0xa2)]['length'],'height':0x1,'pixelFormat':PixelFormat[_0x58657b(0x253,0x2c3)],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x5f2631),'source':{'width':this[_0x4f4300(0x7,-0x28)]['colors']['length'],'height':0x1,'arrayBufferView':_0x1ae089}});}['createSegmentsGeometry'](){const _0x3b6898=0x4,_0x1f7646=this[_0x7e388e(0x36e,0x36e)][_0x7e388e(0x324,0x350)];let _0x4a5e36=[];for(let _0x1a5a77=0x0;_0x1a5a77<_0x1f7646;_0x1a5a77++){for(let _0x3e5862=0x0;_0x3e5862<_0x1f7646;_0x3e5862++){for(let _0xec51d8=0x0;_0xec51d8<_0x3b6898;_0xec51d8++){_0x4a5e36[_0x7e388e(0x2b7,0x331)](_0x1a5a77/_0x1f7646),_0x4a5e36[_0x7e388e(0x2b7,0x32a)](_0x3e5862/_0x1f7646);}}}function _0x7e388e(_0x17ab2c,_0x2ac6de){return _0x5e9725(_0x17ab2c- -0xd4,_0x2ac6de);}_0x4a5e36=new Float32Array(_0x4a5e36);const _0x1c317a=this[_0x7e388e(0x36e,0x3ce)][_0x7e388e(0x324,0x303)]**0x2;let _0x241f65=[];for(let _0x6be542=0x0;_0x6be542<_0x1c317a;_0x6be542++){_0x241f65['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x241f65=new Float32Array(_0x241f65);let _0x1ccc59=[];for(let _0x2166ba=0x0,_0x588200=0x0;_0x2166ba<_0x1c317a;_0x2166ba++){_0x1ccc59['push'](_0x588200+0x0,_0x588200+0x1,_0x588200+0x2,_0x588200+0x2,_0x588200+0x1,_0x588200+0x3),_0x588200+=_0x3b6898;}function _0x168c76(_0x336204,_0x39001f){return _0x5e9725(_0x336204- -0x3af,_0x39001f);}_0x1ccc59=new Uint32Array(_0x1ccc59);const _0x455756={};_0x455756[_0x7e388e(0x2d8,0x2a4)]=ComponentDatatype['FLOAT'],_0x455756['componentsPerAttribute']=0x2,_0x455756['values']=_0x4a5e36;const _0xd74eb0={};_0xd74eb0[_0x168c76(-0x3,-0x33)]=ComponentDatatype[_0x168c76(0x94,0xcd)],_0xd74eb0['componentsPerAttribute']=0x3,_0xd74eb0['values']=_0x241f65;const _0x3c18d8=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x455756),'normal':new GeometryAttribute(_0xd74eb0)}),'indices':_0x1ccc59});return _0x3c18d8;}['createRawRenderState'](_0x285e0d){const _0x450a9c={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x285e0d};return Appearance['getDefaultRenderState'](!![],![],_0x450a9c);}['createPrimitives'](){const _0x1976a9={};_0x1976a9['st']=0x0;function _0x37947a(_0x4595f3,_0x44df23){return _0x52dd5f(_0x4595f3- -0x11c,_0x44df23);}_0x1976a9['normal']=0x1;const _0x88520a={};_0x88520a['enabled']=!![];const _0x459dd8={};_0x459dd8[_0x37947a(0x20e,0x1a3)]=!![],_0x459dd8[_0x194133(-0x15c,-0xda)]=WebGLRenderingContext[_0x194133(-0x175,-0x140)],_0x459dd8['blendFuncSource']=WebGLRenderingContext['SRC_ALPHA'];function _0x194133(_0x1cb2e1,_0x19891f){return _0x5e9725(_0x19891f- -0x536,_0x1cb2e1);}_0x459dd8['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x1cbfa8={};_0x1cbfa8['viewport']=undefined,_0x1cbfa8['depthTest']=_0x88520a,_0x1cbfa8['depthMask']=!![],_0x1cbfa8['blending']=_0x459dd8;const _0x1c6ce3=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x1976a9,'geometry':this['createSegmentsGeometry'](),'primitiveType':PrimitiveType[_0x37947a(0x158,0x157)],'uniformMap':{'previousParticlesPosition':()=>this[_0x194133(-0x14c,-0x1b5)][_0x194133(-0x12d,-0x108)][_0x194133(-0x110,-0xea)],'currentParticlesPosition':()=>this['computing'][_0x37947a(0x1bf,0x1a1)][_0x37947a(0x15e,0x174)],'postProcessingPosition':()=>this[_0x37947a(0x112,0x105)][_0x37947a(0x1bf,0x171)]['postProcessingPosition'],'particlesSpeed':()=>this[_0x37947a(0x112,0x98)]['particlesTextures']['particlesSpeed'],'frameRateAdjustment':()=>this[_0x194133(-0x210,-0x1b5)]['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{var _0x516ea0,_0x20f6bd;function _0x26a91f(_0x4e83b4,_0x71c772){return _0x194133(_0x4e83b4,_0x71c772-0x1c7);}function _0xb9916d(_0x4cafeb,_0x33e359){return _0x194133(_0x33e359,_0x4cafeb-0x453);}const _0x1b1335=new Cartesian2(((_0x516ea0=this[_0xb9916d(0x35f,0x310)]['domain'])===null||_0x516ea0===void 0x0?void 0x0:_0x516ea0['min'])??this['computing']['windData'][_0x26a91f(0x41,0x3a)][_0x26a91f(-0x3,0x70)],((_0x20f6bd=this['options'][_0x26a91f(0xce,0xe5)])===null||_0x20f6bd===void 0x0?void 0x0:_0x20f6bd[_0x26a91f(0xf5,0x10c)])??this[_0xb9916d(0x29e,0x231)]['windData']['speed'][_0x26a91f(0xf0,0x10c)]);return _0x1b1335;},'displayRange':()=>{var _0x515ee4,_0x332c77;function _0xe0c8c2(_0x3026ac,_0xffc3c9){return _0x194133(_0xffc3c9,_0x3026ac-0x234);}const _0x4c3bf0=new Cartesian2(((_0x515ee4=this['options']['displayRange'])===null||_0x515ee4===void 0x0?void 0x0:_0x515ee4['min'])??this['computing']['windData']['speed']['min'],((_0x332c77=this['options'][_0x7e8326(0x479,0x4b5)])===null||_0x332c77===void 0x0?void 0x0:_0x332c77['max'])??this['computing'][_0xe0c8c2(0xbe,0x63)]['speed']['max']);function _0x7e8326(_0x50da3a,_0x10cdb3){return _0x194133(_0x50da3a,_0x10cdb3-0x630);}return _0x4c3bf0;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x37947a(0x1bc,0x1b8)]['drawingBufferWidth']/this['context']['drawingBufferHeight'],'pixelSize':()=>this[_0x37947a(0x144,0x16a)]['pixelSize'],'lineWidth':()=>{const _0x5be17d={};function _0x47e27d(_0x12ff6d,_0x58b43a){return _0x194133(_0x58b43a,_0x12ff6d-0x335);}_0x5be17d['min']=0x1,_0x5be17d['max']=0x2;const _0x78e721=this[_0x47e27d(0x241,0x29b)]['lineWidth']||_0x5be17d;function _0x43e4fe(_0x491073,_0xa8abd1){return _0x194133(_0xa8abd1,_0x491073-0x3f);}return new Cartesian2(_0x78e721[_0x47e27d(0x1de,0x1ce)],_0x78e721['max']);},'lineLength':()=>{const _0x3ffd30={};function _0x5920a4(_0xf10d2d,_0x57e7d9){return _0x37947a(_0x57e7d9-0x22e,_0xf10d2d);}function _0x5b3fe3(_0x9dd36c,_0x42262e){return _0x37947a(_0x9dd36c- -0x13d,_0x42262e);}_0x3ffd30['min']=0x14,_0x3ffd30[_0x5b3fe3(0xcf,0x12a)]=0x64;const _0x288b06=this['options']['lineLength']||_0x3ffd30;return new Cartesian2(_0x288b06['min'],_0x288b06[_0x5920a4(0x3ea,0x43a)]);},'is3D':()=>this['viewerParameters'][_0x194133(-0x16d,-0xfd)]===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this['textures']['segmentsDepth']},'vertexShaderSource':ShaderManager['getSegmentDrawVertexShader'](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x1cbfa8)}),_0x386098={};return _0x386098['segments']=_0x1c6ce3,_0x386098;}[_0x5e9725(0x43c,0x3f8)](){const _0x37e05b=this['createSegmentsGeometry']();this[_0x55972d(0x14b,0x130)][_0x55972d(0xda,0x124)]['geometry']=_0x37e05b;const _0x2ce9c8={};_0x2ce9c8['context']=this[_0x336f1a(0x226,0x26f)],_0x2ce9c8['geometry']=_0x37e05b;function _0x55972d(_0xc4a1ad,_0x4ccd14){return _0x52dd5f(_0xc4a1ad- -0x187,_0x4ccd14);}_0x2ce9c8['attributeLocations']=this['primitives'][_0x55972d(0xda,0x85)][_0x55972d(0x117,0x175)],_0x2ce9c8['bufferUsage']=BufferUsage[_0x336f1a(0x2f6,0x274)];const _0x499f31=VertexArray[_0x336f1a(0x23e,0x253)](_0x2ce9c8);function _0x336f1a(_0x4953bc,_0x24f599){return _0x5e9725(_0x24f599- -0x1bc,_0x4953bc);}this['primitives']['segments'][_0x336f1a(0x20f,0x282)]&&(this[_0x55972d(0x14b,0x1b6)]['segments'][_0x336f1a(0x22d,0x282)][_0x55972d(0x19f,0x1a6)]=_0x499f31);}['onColorTableChange'](){this[_0x8cf62a(-0x9b,-0x2a)]['destroy']();function _0x4c04c7(_0x326e37,_0x30e5e5){return _0x5e9725(_0x326e37- -0x574,_0x30e5e5);}function _0x8cf62a(_0x5bbb85,_0x435337){return _0x52dd5f(_0x435337- -0x25c,_0x5bbb85);}this[_0x8cf62a(-0x19,-0x2a)]=this['createColorTableTexture']();}[_0x52dd5f(0x287,0x287)](_0xe3b4ff){function _0x55dfd7(_0x4da0c3,_0x1a511e){return _0x5e9725(_0x4da0c3- -0x95,_0x1a511e);}const _0xfde589=_0xe3b4ff[_0x2739bc(0x2d5,0x2b7)]&&JSON['stringify'](_0xe3b4ff[_0x2739bc(0x2d5,0x313)])!==JSON['stringify'](this['options']['colors']);this['options']=deepMerge(_0xe3b4ff,this['options']);function _0x2739bc(_0x20cf86,_0x1f3a6d){return _0x52dd5f(_0x20cf86-0x60,_0x1f3a6d);}_0xfde589&&this['onColorTableChange']();}['destroy'](){Object['values'](this[_0x518694(0x554,0x513)])[_0x518694(0x669,0x5eb)](_0xa1dc09=>{function _0x531d5f(_0x12477c,_0x26bc97){return _0x518694(_0x12477c,_0x26bc97- -0x652);}_0xa1dc09[_0x531d5f(-0xc5,-0x133)]();});function _0x412dcf(_0x2c6b0,_0x29895a){return _0x5e9725(_0x29895a- -0x348,_0x2c6b0);}function _0x518694(_0x2962a8,_0x52f28c){return _0x5e9725(_0x52f28c-0x171,_0x2962a8);}Object[_0x518694(0x5f2,0x5bc)](this[_0x518694(0x5ad,0x596)])['forEach'](_0x1fa2be=>{function _0x263400(_0x15ba15,_0x102713){return _0x518694(_0x15ba15,_0x102713- -0x75c);}_0x1fa2be[_0x263400(-0x220,-0x23d)]();}),this[_0x412dcf(-0xb,0x3d)]['destroy']();}}const {ClearCommand,Color,Pass}=mars3d__namespace['Cesium'];class WindParticleSystem{constructor(_0x4f013f,_0x5d2d71,_0x4a3301,_0x42b9c6,_0x108f68){this['context']=_0x4f013f;function _0x14ccad(_0x305bb8,_0x34ab6d){return _0x52dd5f(_0x305bb8- -0x227,_0x34ab6d);}this['options']=_0x4a3301,this['viewerParameters']=_0x42b9c6,this['computing']=new WindParticlesComputing(_0x4f013f,_0x5d2d71,_0x4a3301,_0x42b9c6,_0x108f68),this['rendering']=new WindParticlesRendering(_0x4f013f,_0x4a3301,_0x42b9c6,this['computing']),this[_0x14ccad(0x25,0x6c)]();}['getPrimitives'](){const _0x1ddd7e=[this[_0x4d0fcc(0x163,0x1b6)][_0x1fd3ef(0x383,0x3be)]['calculateSpeed'],this[_0x1fd3ef(0x35f,0x31a)]['primitives']['updatePosition'],this[_0x1fd3ef(0x371,0x31a)]['primitives'][_0x1fd3ef(0x3bf,0x38d)],this['rendering'][_0x1fd3ef(0x394,0x3be)]['segments']];function _0x4d0fcc(_0x56b612,_0x3f24ea){return _0x5e9725(_0x3f24ea- -0x1cb,_0x56b612);}function _0x1fd3ef(_0x20b82b,_0x5cf540){return _0x52dd5f(_0x5cf540-0xec,_0x20b82b);}return _0x1ddd7e;}[_0x5e9725(0x39f,0x36c)](){const _0x3ccbcb=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});function _0x4f490f(_0xbf09e,_0x21c288){return _0x5e9725(_0x21c288-0x6c,_0xbf09e);}function _0x233406(_0x2a164b,_0x1a528b){return _0x52dd5f(_0x1a528b- -0x374,_0x2a164b);}Object['keys'](this[_0x233406(-0x169,-0x132)]['framebuffers'])[_0x233406(-0x48,-0x4d)](_0xefa33e=>{function _0x33827e(_0x1ee7ae,_0x57a391){return _0x233406(_0x57a391,_0x1ee7ae-0x60);}function _0xa18502(_0x5f53fd,_0xe4fab1){return _0x233406(_0x5f53fd,_0xe4fab1-0x16f);}_0x3ccbcb[_0xa18502(0x67,0x76)]=this['rendering']['framebuffers'][_0xefa33e],_0x3ccbcb['execute'](this[_0xa18502(0xa6,0xd3)]);});}['changeOptions'](_0x346995){let _0x3aaddd=![];_0x346995['particlesTextureSize']&&this[_0x1af975(0x3d8,0x3fb)]['particlesTextureSize']!==_0x346995['particlesTextureSize']&&(_0x3aaddd=!![]);function _0x1af975(_0x1f8c0f,_0x492526){return _0x52dd5f(_0x492526-0x10c,_0x1f8c0f);}const _0x42f74c=deepMerge(_0x346995,this[_0x1af975(0x473,0x3fb)]);if(_0x42f74c[_0x1af975(0x376,0x3b1)]<0x1)throw new Error(_0x18adc3(0x487,0x418));function _0x18adc3(_0x28bfd7,_0x48925b){return _0x52dd5f(_0x48925b-0x188,_0x28bfd7);}this[_0x1af975(0x408,0x3fb)]=_0x42f74c,this['rendering']['updateOptions'](_0x346995),this[_0x1af975(0x36d,0x33a)]['updateOptions'](_0x346995),_0x3aaddd&&(this['computing']['destroyParticlesTextures'](),this['computing'][_0x1af975(0x366,0x3ea)](),this[_0x1af975(0x2d4,0x34e)]['onParticlesTextureSizeChange']());}['applyViewerParameters'](_0x196c32){this['viewerParameters']=_0x196c32;function _0x1ecbdb(_0x4b60a7,_0x10f898){return _0x52dd5f(_0x10f898- -0x45a,_0x4b60a7);}function _0x2a1ecf(_0x230247,_0x137ea7){return _0x5e9725(_0x230247- -0x4a1,_0x137ea7);}this[_0x2a1ecf(-0x120,-0x190)][_0x1ecbdb(-0x23d,-0x1fa)]=_0x196c32,this['rendering']['viewerParameters']=_0x196c32;}['destroy'](){this['computing']['destroy']();function _0x2f230e(_0xa141e6,_0x2c5d2b){return _0x52dd5f(_0x2c5d2b-0x274,_0xa141e6);}this[_0x2f230e(0x4b5,0x4b6)]['destroy']();}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x5e9725(0x39d,0x391)][_0x5e9725(0x3b2,0x343)],_0x28b9aa={};_0x28b9aa[_0x52dd5f(0x28c,0x275)]=0x1,_0x28b9aa['max']=0x2;function _0x5e9725(_0x5bad40,_0x415fd9){return _0x270b(_0x5bad40-0x271,_0x415fd9);}const _0x28220c={};_0x28220c[_0x5e9725(0x3df,0x440)]=0x14,_0x28220c['max']=0x64;const _0x171521={};_0x171521['particlesTextureSize']=0x64,_0x171521[_0x5e9725(0x407,0x469)]=0x0,_0x171521[_0x5e9725(0x3e0,0x373)]=_0x28b9aa,_0x171521['lineLength']=_0x28220c,_0x171521['speedFactor']=0x1,_0x171521['dropRate']=0.003,_0x171521['dropRateBump']=0.001,_0x171521[_0x5e9725(0x3c8,0x3a9)]=['rgb(206,255,255)'],_0x171521['flipY']=![],_0x171521[_0x52dd5f(0x31a,0x34a)]=!![];const DEF_OPTIONS=_0x171521;class WindLayer extends BaseLayer$1{constructor(_0x32afe1={}){_0x32afe1={...DEF_OPTIONS,..._0x32afe1},super(_0x32afe1),this['_setOptionsHook'](_0x32afe1,_0x32afe1);}get['layer'](){return this['primitives'];}get['data'](){function _0x9eadd5(_0x14515f,_0x3db980){return _0x52dd5f(_0x3db980-0x166,_0x14515f);}function _0x8f0d2a(_0x49a1db,_0x20304e){return _0x5e9725(_0x49a1db- -0x4,_0x20304e);}return this[_0x9eadd5(0x3e1,0x455)][_0x8f0d2a(0x38d,0x3ff)];}set[_0x5e9725(0x391,0x37b)](_0x365000){function _0x22f03b(_0x3bad98,_0x1327f4){return _0x5e9725(_0x1327f4- -0xdb,_0x3bad98);}this[_0x22f03b(0x32e,0x367)][_0x22f03b(0x294,0x2b6)]=_0x365000;function _0x3f4bf4(_0x3b607b,_0x202928){return _0x5e9725(_0x202928- -0x47d,_0x3b607b);}this['setData'](_0x365000);}get['colors'](){return this['options']['colors'];}set['colors'](_0x1c801e){this['options']['colors']=_0x1c801e;const _0x25096e={};function _0x4485f1(_0x30a804,_0x39c872){return _0x5e9725(_0x30a804-0x5f,_0x39c872);}_0x25096e['colors']=_0x1c801e;function _0x2c178d(_0x451033,_0x421281){return _0x52dd5f(_0x451033-0x210,_0x421281);}this[_0x4485f1(0x425,0x3c8)](this[_0x2c178d(0x4ff,0x56e)],_0x25096e);}['_showHook'](_0x38be55){function _0x4e6712(_0x3b6181,_0x669135){return _0x52dd5f(_0x3b6181-0x3,_0x669135);}_0x38be55?this['_addedHook']():this[_0x4e6712(0x29a,0x27d)]();}['_mountedHook'](){}[_0x52dd5f(0x2c8,0x2df)](){this[_0x5d04da(-0x12f,-0x11d)]=this['_map']['scene'],this['camera']=this['_map']['camera'];function _0x5d04da(_0x184ab7,_0x381789){return _0x5e9725(_0x184ab7- -0x503,_0x381789);}this['options']['data']&&this[_0x3ccd46(-0x117,-0x193)](this['options'][_0x5d04da(-0x172,-0x1e4)]);if(!this[_0x3ccd46(-0x1bc,-0x179)]||!this['show'])return;this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](-0xb4,0xb4),'latRange':new Cesium$1[(_0x5d04da(-0x8f,-0x44))](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this[_0x5d04da(-0x12f,-0x13c)][_0x3ccd46(-0x13d,-0x167)]},this['updateViewerParameters'](),this['particleSystem']=new WindParticleSystem(this[_0x3ccd46(-0x1d7,-0x165)]['context'],this['windData'],this['options'],this['viewerParameters'],this['scene']),this['primitives']=this['particleSystem'][_0x5d04da(-0x83,-0xa7)]();function _0x3ccd46(_0x533640,_0x14d249){return _0x52dd5f(_0x14d249- -0x3e6,_0x533640);}this['primitives'][_0x5d04da(-0x89,-0x7b)](_0x66ee0a=>{function _0x10d18e(_0x2e2e8e,_0x22fd71){return _0x3ccd46(_0x2e2e8e,_0x22fd71-0x5e7);}this[_0x10d18e(0x4fa,0x482)]['primitives']['add'](_0x66ee0a);}),this['camera'][_0x5d04da(-0x12b,-0xa8)]=0.01,this['camera']['changed']['addEventListener'](this['updateViewerParameters'][_0x3ccd46(-0x176,-0xf2)](this)),this['scene'][_0x5d04da(-0x12d,-0x1a4)]['addEventListener'](this[_0x3ccd46(-0x10f,-0x154)][_0x3ccd46(-0x8a,-0xf2)](this)),window[_0x3ccd46(-0x109,-0xe2)]('resize',this['updateViewerParameters']['bind'](this));}['_removedHook'](){this['camera']['changed'][_0x889a4(0x269,0x2e0)](this[_0xb1ead(0x2c3,0x26b)]['bind'](this)),this[_0x889a4(0x2ce,0x2d3)]['morphComplete']['removeEventListener'](this[_0xb1ead(0x2c3,0x28c)][_0xb1ead(0x325,0x352)](this)),window['removeEventListener']('resize',this['updateViewerParameters'][_0xb1ead(0x325,0x31c)](this));function _0x889a4(_0x2484f1,_0xeefa27){return _0x5e9725(_0xeefa27- -0x101,_0x2484f1);}function _0xb1ead(_0x550917,_0x3f5b70){return _0x5e9725(_0x550917- -0x122,_0x3f5b70);}this['primitives']&&(this[_0xb1ead(0x303,0x2e9)]['forEach'](_0x118621=>{this['scene']['primitives']['remove'](_0x118621);}),delete this['primitives']),this[_0x889a4(0x246,0x2c3)]&&(this['particleSystem']['destroy'](),delete this[_0xb1ead(0x2a2,0x2c4)]);}['setData'](_0x591729,_0x99010a){function _0x4a1193(_0x1051d7,_0x4c4ddd){return _0x5e9725(_0x4c4ddd- -0x255,_0x1051d7);}this['windData']=this['processWindData'](_0x591729);if(_0x99010a){this['_removedHook'](),this[_0x4a1193(0x1e0,0x1c6)]();return;}function _0x43e3f7(_0x5e1c22,_0x2b0b7f){return _0x5e9725(_0x2b0b7f- -0x46b,_0x5e1c22);}this['particleSystem']?(this['particleSystem'][_0x43e3f7(-0x6a,-0xea)]['updateWindData'](this[_0x4a1193(0x141,0x16b)]),this[_0x43e3f7(-0xe9,-0x97)]['requestRender']()):this[_0x43e3f7(-0x4a,-0x50)]();}['_setOptionsHook'](_0x5d52ba,_0x5a1076){function _0x3e5da8(_0x2e4267,_0x53e6bd){return _0x5e9725(_0x2e4267- -0x16c,_0x53e6bd);}function _0x286169(_0xa0335a,_0x3e1eab){return _0x5e9725(_0xa0335a- -0x64e,_0x3e1eab);}this[_0x286169(-0x28a,-0x28a)]&&(this['particleSystem'][_0x3e5da8(0x2ec,0x359)](_0x5a1076),this['scene'][_0x286169(-0x24f,-0x262)]());}[_0x5e9725(0x3b0,0x407)](_0x415621){function _0x2ab71c(_0xa85174,_0x24b101){return _0x52dd5f(_0xa85174- -0x34d,_0x24b101);}var _0x2ad9c2,_0x50937a;const _0x2d9808={..._0x415621},_0x5acd50=_0x2d9808;!_0x5acd50['height']&&_0x5acd50['rows']&&(_0x5acd50['height']=_0x5acd50['rows']);function _0x3bd1a3(_0x142590,_0x3becaf){return _0x52dd5f(_0x3becaf-0x101,_0x142590);}!_0x5acd50['width']&&_0x5acd50['cols']&&(_0x5acd50['width']=_0x5acd50['cols']);!_0x5acd50['bounds']&&(_0x5acd50['bounds']={'west':_0x5acd50[_0x2ab71c(-0xdb,-0x95)],'south':_0x5acd50['ymin'],'east':_0x5acd50['xmax'],'north':_0x5acd50[_0x3bd1a3(0x3be,0x3b9)]});if(!_0x5acd50['u']){const _0x477bab={};_0x477bab['array']=_0x415621['udata'],_0x477bab[_0x2ab71c(-0xc1,-0x134)]=_0x415621['umin'],_0x477bab[_0x2ab71c(-0x25,-0x56)]=_0x415621['umax'],_0x5acd50['u']=_0x477bab;}if(!_0x5acd50['v']){const _0x554cac={};_0x554cac[_0x2ab71c(-0x98,-0xe8)]=_0x415621['vdata'],_0x554cac[_0x2ab71c(-0xc1,-0xce)]=_0x415621['vmin'],_0x554cac['max']=_0x415621[_0x2ab71c(-0x6e,-0xb0)],_0x5acd50['v']=_0x554cac;}if(((_0x2ad9c2=_0x5acd50['speed'])===null||_0x2ad9c2===void 0x0?void 0x0:_0x2ad9c2[_0x2ab71c(-0xc1,-0x68)])===undefined||((_0x50937a=_0x5acd50['speed'])===null||_0x50937a===void 0x0?void 0x0:_0x50937a[_0x2ab71c(-0x25,0x28)])===undefined||_0x5acd50[_0x2ab71c(-0xf7,-0xf7)]['array']===undefined){const _0x47f550={'array':new Float32Array(_0x5acd50['u']['array']['length']),'min':Number[_0x2ab71c(-0xd5,-0xf3)],'max':Number['MIN_VALUE']};for(let _0x2632b2=0x0;_0x2632b2<_0x5acd50['u'][_0x2ab71c(-0x98,-0xfe)]['length'];_0x2632b2++){_0x47f550['array'][_0x2632b2]=Math['sqrt'](_0x5acd50['u'][_0x3bd1a3(0x339,0x3b6)][_0x2632b2]*_0x5acd50['u']['array'][_0x2632b2]+_0x5acd50['v'][_0x3bd1a3(0x423,0x3b6)][_0x2632b2]*_0x5acd50['v']['array'][_0x2632b2]),_0x47f550[_0x3bd1a3(0x3b1,0x3b6)][_0x2632b2]!==0x0&&(_0x47f550[_0x2ab71c(-0xc1,-0x12a)]=Math['min'](_0x47f550['min'],_0x47f550['array'][_0x2632b2]),_0x47f550[_0x3bd1a3(0x434,0x429)]=Math['max'](_0x47f550[_0x3bd1a3(0x475,0x429)],_0x47f550['array'][_0x2632b2]));}_0x5acd50[_0x2ab71c(-0xf7,-0x154)]=_0x47f550;}return _0x5acd50;}[_0x52dd5f(0x292,0x270)](){var _0x5355e9;const _0x383128=this[_0x420a91(0x183,0x12a)];if(!_0x383128)return;const _0xa48bc2=_0x383128['canvas'],_0x35ee8a={};_0x35ee8a['x']=0x0,_0x35ee8a['y']=0x0;const _0x294a0a={};_0x294a0a['x']=0x0;function _0x53f909(_0x4da036,_0x2faf09){return _0x5e9725(_0x2faf09-0x113,_0x4da036);}_0x294a0a['y']=_0xa48bc2['clientHeight'];const _0x26f3eb={};_0x26f3eb['x']=_0xa48bc2[_0x420a91(0x13f,0x15c)],_0x26f3eb['y']=0x0;const _0x29cffc={};_0x29cffc['x']=_0xa48bc2[_0x420a91(0x17a,0x15c)],_0x29cffc['y']=_0xa48bc2[_0x53f909(0x485,0x4d1)];function _0x420a91(_0x29f00d,_0xf53e4b){return _0x5e9725(_0xf53e4b- -0x2aa,_0x29f00d);}const _0x51dd3e=[_0x35ee8a,_0x294a0a,_0x26f3eb,_0x29cffc];let _0x11cdfa=0xb4,_0x2f993d=-0xb4,_0x434605=0x5a,_0x5e2879=-0x5a,_0x30361c=![];for(const _0xf3b721 of _0x51dd3e){const _0x320d67=_0x383128['camera']['pickEllipsoid'](new Cesium$1['Cartesian2'](_0xf3b721['x'],_0xf3b721['y']),_0x383128['globe'][_0x420a91(0x215,0x1c5)]);if(!_0x320d67){_0x30361c=!![];break;}const _0x48f914=_0x383128['globe']['ellipsoid']['cartesianToCartographic'](_0x320d67),_0x2f0c69=Cesium$1[_0x420a91(0x16f,0x17f)]['toDegrees'](_0x48f914['longitude']),_0xad534b=Cesium$1['Math']['toDegrees'](_0x48f914['latitude']);_0x11cdfa=Math[_0x53f909(0x4a7,0x4f2)](_0x11cdfa,_0x2f0c69),_0x2f993d=Math['max'](_0x2f993d,_0x2f0c69),_0x434605=Math[_0x53f909(0x55c,0x4f2)](_0x434605,_0xad534b),_0x5e2879=Math['max'](_0x5e2879,_0xad534b);}if(!_0x30361c){const _0x5eb976=new Cesium$1['Cartesian2'](Math['max'](this[_0x420a91(0x184,0x116)][_0x420a91(0x184,0x1d5)][_0x53f909(0x4e9,0x52d)],_0x11cdfa),Math[_0x53f909(0x490,0x4f2)](this['windData'][_0x420a91(0x188,0x1d5)]['east'],_0x2f993d)),_0x3fda32=new Cesium$1['Cartesian2'](Math[_0x53f909(0x572,0x58e)](this['windData'][_0x53f909(0x56b,0x592)]['south'],_0x434605),Math[_0x53f909(0x50f,0x4f2)](this[_0x420a91(0x11e,0x116)]['bounds']['north'],_0x5e2879)),_0x4ffbfb=(_0x5eb976['y']-_0x5eb976['x'])*0.05,_0xea7754=(_0x3fda32['y']-_0x3fda32['x'])*0.05;_0x5eb976['x']=Math['max'](this['windData']['bounds']['west'],_0x5eb976['x']-_0x4ffbfb),_0x5eb976['y']=Math[_0x420a91(0x189,0x135)](this[_0x53f909(0x477,0x4d3)]['bounds'][_0x420a91(0x14a,0xf6)],_0x5eb976['y']+_0x4ffbfb),_0x3fda32['x']=Math['max'](this[_0x53f909(0x457,0x4d3)]['bounds'][_0x53f909(0x509,0x536)],_0x3fda32['x']-_0xea7754),_0x3fda32['y']=Math[_0x420a91(0x1af,0x135)](this['windData']['bounds']['north'],_0x3fda32['y']+_0xea7754),this['viewerParameters']['lonRange']=_0x5eb976,this[_0x420a91(0xc1,0x109)][_0x53f909(0x443,0x4a9)]=_0x3fda32;const _0x116c0a=this['windData']['bounds']['east']-this['windData'][_0x420a91(0x1da,0x1d5)][_0x53f909(0x518,0x52d)],_0x48ad4f=this[_0x53f909(0x4a9,0x4d3)][_0x420a91(0x181,0x1d5)]['north']-this['windData']['bounds'][_0x420a91(0x187,0x179)],_0x4af120=(_0x5eb976['y']-_0x5eb976['x'])/_0x116c0a,_0x14cbd6=(_0x3fda32['y']-_0x3fda32['x'])/_0x48ad4f,_0x5619e6=Math['min'](_0x4af120,_0x14cbd6),_0x4a3c5a=0x3e8*_0x5619e6;_0x4a3c5a>0x0&&(this[_0x420a91(0xbb,0x109)]['pixelSize']=Math[_0x53f909(0x53f,0x58e)](0x0,Math[_0x420a91(0xbe,0x135)](0x3e8,_0x4a3c5a)));}this['viewerParameters']['sceneMode']=this[_0x420a91(0x100,0x12a)][_0x53f909(0x4ba,0x4e5)],(_0x5355e9=this['particleSystem'])===null||_0x5355e9===void 0x0||_0x5355e9[_0x420a91(0xdd,0x12d)](this['viewerParameters']);}[_0x5e9725(0x48a,0x50a)](_0x4a6244,_0x9c2ac9){const {bounds:_0x220a75,width:_0x579c2d,height:_0x4a01ab,u:_0x283859,v:_0x19acb1,speed:_0x47072f}=this['windData'];function _0x331e09(_0x26d84d,_0x3b5fa8){return _0x52dd5f(_0x3b5fa8- -0xef,_0x26d84d);}const {flipY:_0x249925}=this['options'];if(_0x4a6244<_0x220a75[_0x5ac9d0(0x109,0x161)]||_0x4a6244>_0x220a75['east']||_0x9c2ac9<_0x220a75['south']||_0x9c2ac9>_0x220a75['north'])return null;const _0x504964=(_0x4a6244-_0x220a75['west'])/(_0x220a75['east']-_0x220a75['west'])*(_0x579c2d-0x1);let _0x33a2f9=(_0x9c2ac9-_0x220a75['south'])/(_0x220a75[_0x331e09(0x1c9,0x1ed)]-_0x220a75['south'])*(_0x4a01ab-0x1);_0x249925&&(_0x33a2f9=_0x4a01ab-0x1-_0x33a2f9);const _0x1b3d8f=Math['floor'](_0x504964),_0x31dc0b=Math[_0x5ac9d0(0x150,0xce)](_0x33a2f9),_0x1192e5=Math[_0x331e09(0x106,0x145)](_0x504964),_0x44ea42=Math['min'](_0x1192e5+0x1,_0x579c2d-0x1),_0x3af51f=Math['floor'](_0x33a2f9),_0xf4ccb2=Math['min'](_0x3af51f+0x1,_0x4a01ab-0x1),_0x4959f4=_0x504964-_0x1192e5,_0x52650b=_0x33a2f9-_0x3af51f,_0x181ceb=_0x31dc0b*_0x579c2d+_0x1b3d8f,_0x40386d=_0x3af51f*_0x579c2d+_0x1192e5,_0x12436b=_0x3af51f*_0x579c2d+_0x44ea42,_0x447e60=_0xf4ccb2*_0x579c2d+_0x1192e5,_0x5caa67=_0xf4ccb2*_0x579c2d+_0x44ea42,_0x109922=_0x283859['array'][_0x40386d],_0x5ef0af=_0x283859[_0x331e09(0x1a8,0x1c6)][_0x12436b],_0xfe6820=_0x283859['array'][_0x447e60],_0x4dccf7=_0x283859['array'][_0x5caa67],_0x31a740=(0x1-_0x4959f4)*(0x1-_0x52650b)*_0x109922+_0x4959f4*(0x1-_0x52650b)*_0x5ef0af+(0x1-_0x4959f4)*_0x52650b*_0xfe6820+_0x4959f4*_0x52650b*_0x4dccf7,_0x2d9bac=_0x19acb1[_0x5ac9d0(0x1a0,0x14f)][_0x40386d];function _0x5ac9d0(_0x342f47,_0x5c57ee){return _0x52dd5f(_0x5c57ee- -0x166,_0x342f47);}const _0xb42d7=_0x19acb1['array'][_0x12436b],_0x4d4a25=_0x19acb1['array'][_0x447e60],_0x273f36=_0x19acb1['array'][_0x5caa67],_0xede8d5=(0x1-_0x4959f4)*(0x1-_0x52650b)*_0x2d9bac+_0x4959f4*(0x1-_0x52650b)*_0xb42d7+(0x1-_0x4959f4)*_0x52650b*_0x4d4a25+_0x4959f4*_0x52650b*_0x273f36,_0x17f78e=Math['sqrt'](_0x31a740*_0x31a740+_0xede8d5*_0xede8d5),_0x166b2c={};_0x166b2c['u']=_0x283859['array'][_0x181ceb],_0x166b2c['v']=_0x19acb1[_0x5ac9d0(0x13d,0x14f)][_0x181ceb],_0x166b2c[_0x331e09(0x1a6,0x167)]=_0x47072f[_0x5ac9d0(0x173,0x14f)][_0x181ceb];const _0x1199cd={};_0x1199cd['u']=_0x31a740,_0x1199cd['v']=_0xede8d5,_0x1199cd['speed']=_0x17f78e;const _0x1ae72f={};return _0x1ae72f['original']=_0x166b2c,_0x1ae72f['interpolated']=_0x1199cd,_0x1ae72f;}}mars3d__namespace['LayerUtil'][_0x52dd5f(0x2b0,0x301)]('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this[_0x31a719(-0x1ad,-0x20a)]=null;function _0x31a719(_0x189175,_0x2ae268){return _0x52dd5f(_0x189175- -0x4e3,_0x2ae268);}function _0x151688(_0x589d80,_0x16fdb8){return _0x5e9725(_0x589d80- -0x459,_0x16fdb8);}this['tlng']=null,this['tlat']=null,this[_0x31a719(-0x2ac,-0x314)]=null,this['speed']=null;}['destroy'](){for(const _0x1c51db in this){delete this[_0x1c51db];}}}class CanvasWindField{constructor(_0x4d273a){this['setOptions'](_0x4d273a);}get['speedRate'](){function _0x1c207a(_0x1f9acf,_0x34a6b9){return _0x5e9725(_0x1f9acf- -0x1f8,_0x34a6b9);}return this[_0x1c207a(0x28b,0x301)];}set[_0x52dd5f(0x303,0x2f8)](_0x31e863){function _0x3c2b4c(_0x951b65,_0x1f1146){return _0x52dd5f(_0x951b65- -0x2af,_0x1f1146);}function _0x241e09(_0x1981bd,_0xc1f5c9){return _0x52dd5f(_0x1981bd- -0x3c7,_0xc1f5c9);}this['_speedRate']=(0x64-(_0x31e863>0x63?0x63:_0x31e863))*0x64,this[_0x241e09(-0xdd,-0x8c)]=[(this[_0x241e09(-0x104,-0x167)]-this[_0x241e09(-0x155,-0xdd)])/this[_0x3c2b4c(0x81,0x17)],(this[_0x241e09(-0x10f,-0x194)]-this[_0x3c2b4c(0x36,0x22)])/this['_speedRate']];}get[_0x5e9725(0x3b8,0x42a)](){return this['_maxAge'];}set['maxAge'](_0xf316ab){this['_maxAge']=_0xf316ab;}[_0x52dd5f(0x235,0x2a5)](_0x1f11bf){this['options']=_0x1f11bf,this[_0x2bc2a2(0x417,0x48f)]=_0x1f11bf['maxAge']||0x78;function _0x2bc2a2(_0x1c5c57,_0x5e1699){return _0x52dd5f(_0x1c5c57-0x1b2,_0x5e1699);}function _0x133b7e(_0x1dfb81,_0x3b146a){return _0x5e9725(_0x3b146a- -0x17d,_0x1dfb81);}this['speedRate']=_0x1f11bf['speedRate']||0x32,this[_0x2bc2a2(0x443,0x493)]=[];const _0x5d4add=_0x1f11bf['particlesNumber']||0x1000;for(let _0x3d8428=0x0;_0x3d8428<_0x5d4add;_0x3d8428++){const _0x3bfbd0=this['_randomParticle'](new CanvasParticle());this['particles'][_0x133b7e(0x1f3,0x20e)](_0x3bfbd0);}}[_0x5e9725(0x46b,0x4eb)](_0x4c6eeb){this['rows']=_0x4c6eeb['rows'],this[_0x56f2b1(-0xff,-0x174)]=_0x4c6eeb[_0x56f2b1(-0xff,-0x170)],this[_0x56f2b1(-0x129,-0x112)]=_0x4c6eeb[_0x56f2b1(-0x129,-0x14b)],this['xmax']=_0x4c6eeb['xmax'],this[_0x336ec0(-0x148,-0x15e)]=_0x4c6eeb['ymin'];function _0x336ec0(_0x48d1e3,_0x367847){return _0x52dd5f(_0x367847- -0x443,_0x48d1e3);}this[_0x336ec0(-0x1b7,-0x18b)]=_0x4c6eeb[_0x336ec0(-0x172,-0x18b)],this['grid']=[];const _0x2268d2=_0x4c6eeb['udata'],_0x5a65b4=_0x4c6eeb['vdata'];let _0x5ddd53=![];_0x2268d2['length']===this['rows']&&_0x2268d2[0x0]['length']===this['cols']&&(_0x5ddd53=!![]);function _0x56f2b1(_0x3ee0cb,_0x5a79fe){return _0x52dd5f(_0x3ee0cb- -0x39b,_0x5a79fe);}let _0x2cb897=0x0,_0x3927a8=null,_0x3f30db=null;for(let _0x58e816=0x0;_0x58e816<this['rows'];_0x58e816++){_0x3927a8=[];for(let _0x282533=0x0;_0x282533<this['cols'];_0x282533++,_0x2cb897++){_0x5ddd53?_0x3f30db=this[_0x56f2b1(-0x16c,-0x138)](_0x2268d2[_0x58e816][_0x282533],_0x5a65b4[_0x58e816][_0x282533]):_0x3f30db=this['_calcUV'](_0x2268d2[_0x2cb897],_0x5a65b4[_0x2cb897]),_0x3927a8[_0x56f2b1(-0x163,-0x15f)](_0x3f30db);}this[_0x336ec0(-0xfa,-0x123)]['push'](_0x3927a8);}!this['options'][_0x56f2b1(-0xdd,-0x7b)]&&this[_0x56f2b1(-0x7b,-0x2d)][_0x56f2b1(-0x12b,-0xac)]();}['clear'](){delete this['rows'],delete this[_0x42a100(0x3d9,0x369)],delete this['xmin'],delete this['xmax'],delete this['ymin'];function _0x42a100(_0x54b6a1,_0x67fec4){return _0x5e9725(_0x67fec4- -0x86,_0x54b6a1);}function _0x382a36(_0x241e42,_0xebddd3){return _0x52dd5f(_0x241e42- -0x1d1,_0xebddd3);}delete this[_0x42a100(0x3a3,0x385)],delete this['grid'],delete this[_0x42a100(0x3d3,0x35e)];}[_0x5e9725(0x3ab,0x35a)](_0x847d40,_0x2a128f){const _0x2e4fc1=(_0x847d40-this[_0xfb0d11(-0x1ff,-0x276)])/(this['xmax']-this['xmin'])*(this['cols']-0x1),_0x2757b9=(this[_0xfb0d11(-0x1b9,-0x170)]-_0x2a128f)/(this[_0x402b4f(0x29,-0xa)]-this[_0xfb0d11(-0x18c,-0x144)])*(this['rows']-0x1);function _0xfb0d11(_0x254c9c,_0x154696){return _0x5e9725(_0x254c9c- -0x5c4,_0x154696);}function _0x402b4f(_0x15f790,_0xe27e13){return _0x52dd5f(_0x15f790- -0x28f,_0xe27e13);}return[_0x2e4fc1,_0x2757b9];}['getUVByXY'](_0x11fb25,_0x26a519){if(_0x11fb25<0x0||_0x11fb25>=this[_0x4327a2(0x2b5,0x2ce)]||_0x26a519>=this[_0x163820(0x267,0x236)])return[0x0,0x0,0x0];function _0x163820(_0x4b30f1,_0x89d060){return _0x52dd5f(_0x4b30f1- -0xce,_0x89d060);}const _0x5987ac=Math[_0x4327a2(0x24d,0x245)](_0x11fb25),_0x52a2f8=Math['floor'](_0x26a519);if(_0x5987ac===_0x11fb25&&_0x52a2f8===_0x26a519)return this[_0x163820(0x252,0x255)][_0x26a519][_0x11fb25];const _0x190664=_0x5987ac+0x1,_0x519c60=_0x52a2f8+0x1,_0x188f91=this['getUVByXY'](_0x5987ac,_0x52a2f8),_0x1b621f=this['getUVByXY'](_0x190664,_0x52a2f8),_0x486fb3=this[_0x4327a2(0x2ac,0x30f)](_0x5987ac,_0x519c60),_0x3b2e60=this['getUVByXY'](_0x190664,_0x519c60);function _0x4327a2(_0x19a667,_0x53b2ea){return _0x52dd5f(_0x19a667-0x19,_0x53b2ea);}let _0x3db9cf=null;try{_0x3db9cf=this['_bilinearInterpolation'](_0x11fb25-_0x5987ac,_0x26a519-_0x52a2f8,_0x188f91,_0x1b621f,_0x486fb3,_0x3b2e60);}catch(_0x2a4a58){console['log'](_0x11fb25,_0x26a519);}return _0x3db9cf;}['_bilinearInterpolation'](_0x56e5bc,_0x38799a,_0x8c4095,_0x407074,_0x1333d1,_0x33b9ce){const _0x1a16fb=0x1-_0x56e5bc,_0x269f20=0x1-_0x38799a,_0xf0bd22=_0x1a16fb*_0x269f20,_0x257a86=_0x56e5bc*_0x269f20,_0x5b3bc6=_0x1a16fb*_0x38799a,_0x1a0b15=_0x56e5bc*_0x38799a,_0x7c6d8=_0x8c4095[0x0]*_0xf0bd22+_0x407074[0x0]*_0x257a86+_0x1333d1[0x0]*_0x5b3bc6+_0x33b9ce[0x0]*_0x1a0b15;function _0x164eca(_0x47b762,_0xbae83a){return _0x52dd5f(_0xbae83a- -0x338,_0x47b762);}const _0x5df5fa=_0x8c4095[0x1]*_0xf0bd22+_0x407074[0x1]*_0x257a86+_0x1333d1[0x1]*_0x5b3bc6+_0x33b9ce[0x1]*_0x1a0b15;return this[_0x164eca(-0x99,-0x109)](_0x7c6d8,_0x5df5fa);}['_calcUV'](_0x1bebed,_0x448bc7){return[+_0x1bebed,+_0x448bc7,Math['sqrt'](_0x1bebed*_0x1bebed+_0x448bc7*_0x448bc7)];}[_0x5e9725(0x3e9,0x39c)](_0x1fa8ce,_0x4583f0){if(!this['isInExtent'](_0x1fa8ce,_0x4583f0))return null;function _0x19505d(_0x4b6565,_0x4001bb){return _0x5e9725(_0x4b6565- -0x64d,_0x4001bb);}const _0x404c94=this[_0x19505d(-0x2a2,-0x2fd)](_0x1fa8ce,_0x4583f0),_0x516b8c=this['getUVByXY'](_0x404c94[0x0],_0x404c94[0x1]);return _0x516b8c;}[_0x52dd5f(0x2e3,0x338)](_0x574925,_0x13ab97){return _0x574925>=this['xmin']&&_0x574925<=this['xmax']&&_0x13ab97>=this['ymin']&&_0x13ab97<=this['ymax']?!![]:![];}[_0x52dd5f(0x2ee,0x354)](){function _0x4e99d7(_0x3fcac5,_0x47ec4d){return _0x5e9725(_0x47ec4d- -0x541,_0x3fcac5);}const _0x45d2f9=fRandomByfloat(this[_0x7b22a0(0x405,0x3ef)],this[_0x4e99d7(-0x192,-0x12b)]),_0x5d8369=fRandomByfloat(this['ymin'],this[_0x7b22a0(0x47c,0x435)]),_0x4bce5f={};function _0x7b22a0(_0x3cd138,_0x17b5a7){return _0x5e9725(_0x17b5a7-0x2a,_0x3cd138);}return _0x4bce5f[_0x7b22a0(0x439,0x4b3)]=_0x5d8369,_0x4bce5f[_0x7b22a0(0x3dd,0x44a)]=_0x45d2f9,_0x4bce5f;}['getParticles'](){let _0x1abd1a,_0x22b648,_0x2e4b8b;function _0x2da5d8(_0x349b52,_0x39e384){return _0x5e9725(_0x349b52- -0x47e,_0x39e384);}for(let _0x1bdf23=0x0,_0x537949=this[_0x2ae846(0x13f,0x147)]['length'];_0x1bdf23<_0x537949;_0x1bdf23++){let _0x2f21cf=this[_0x2da5d8(-0x9a,-0xc3)][_0x1bdf23];_0x2f21cf['age']<=0x0&&(_0x2f21cf=this[_0x2da5d8(-0x21,0x3d)](_0x2f21cf));if(_0x2f21cf[_0x2da5d8(-0xf4,-0x101)]>0x0){const _0x479c9f=_0x2f21cf[_0x2da5d8(-0x29,-0xa9)],_0x5ed485=_0x2f21cf['tlat'];_0x2e4b8b=this['getUVByPoint'](_0x479c9f,_0x5ed485),_0x2e4b8b?(_0x1abd1a=_0x479c9f+this['_calc_speedRate'][0x0]*_0x2e4b8b[0x0],_0x22b648=_0x5ed485+this['_calc_speedRate'][0x1]*_0x2e4b8b[0x1],_0x2f21cf['lng']=_0x479c9f,_0x2f21cf['lat']=_0x5ed485,_0x2f21cf['tlng']=_0x1abd1a,_0x2f21cf[_0x2da5d8(-0xae,-0xc6)]=_0x22b648,_0x2f21cf['speed']=_0x2e4b8b[0x2],_0x2f21cf['age']--):_0x2f21cf['age']=0x0;}}function _0x2ae846(_0x15c1de,_0x1c7fac){return _0x52dd5f(_0x15c1de- -0x152,_0x1c7fac);}return this['particles'];}['_randomParticle'](_0x3c6c8a){let _0x49d5ca,_0x434a2b;for(let _0x1d05e6=0x0;_0x1d05e6<0x1e;_0x1d05e6++){_0x49d5ca=this['getRandomLatLng'](),_0x434a2b=this['getUVByPoint'](_0x49d5ca[_0x51316f(-0x115,-0x162)],_0x49d5ca['lat']);if(_0x434a2b&&_0x434a2b[0x2]>0x0)break;}if(!_0x434a2b)return _0x3c6c8a;function _0x1b5bd6(_0x19f5c6,_0x111d8a){return _0x5e9725(_0x19f5c6- -0x8,_0x111d8a);}const _0x5b911c=_0x49d5ca[_0x1b5bd6(0x418,0x48a)]+this['_calc_speedRate'][0x0]*_0x434a2b[0x0],_0x59581b=_0x49d5ca[_0x1b5bd6(0x481,0x42e)]+this['_calc_speedRate'][0x1]*_0x434a2b[0x1];_0x3c6c8a[_0x51316f(-0x11b,-0x162)]=_0x49d5ca['lng'],_0x3c6c8a['lat']=_0x49d5ca['lat'],_0x3c6c8a['tlng']=_0x5b911c;function _0x51316f(_0x31b5b7,_0x1a6c41){return _0x5e9725(_0x1a6c41- -0x582,_0x31b5b7);}return _0x3c6c8a[_0x51316f(-0x1f2,-0x1b2)]=_0x59581b,_0x3c6c8a['age']=Math[_0x51316f(-0xb4,-0x101)](0xa+Math['random']()*this['maxAge']),_0x3c6c8a['speed']=_0x434a2b[0x2],_0x3c6c8a;}[_0x52dd5f(0x25b,0x2a5)](){for(const _0xc57600 in this){delete this[_0xc57600];}}}function fRandomByfloat(_0x515a03,_0x1eeda6){function _0x2b8c15(_0x67e787,_0x312860){return _0x52dd5f(_0x312860-0x29e,_0x67e787);}return _0x515a03+Math[_0x2b8c15(0x4af,0x505)]()*(_0x1eeda6-_0x515a03);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x52dd5f(0x24a,0x215)][_0x52dd5f(0x25f,0x243)];class CanvasWindLayer extends BaseLayer{constructor(_0x11c581={}){super(_0x11c581),this['_setOptionsHook'](_0x11c581);function _0x9d0384(_0x42e1b0,_0xbe80ad){return _0x5e9725(_0xbe80ad- -0x3f6,_0x42e1b0);}function _0x5a9fd8(_0x2c7a16,_0x4c7112){return _0x52dd5f(_0x2c7a16- -0x120,_0x4c7112);}this[_0x5a9fd8(0x1ff,0x22d)]=null,_0x11c581['colors']&&_0x11c581['steps']&&(this[_0x9d0384(0x6,0x74)]=new mars3d__namespace['ColorRamp'](_0x11c581));}[_0x5e9725(0x3c6,0x407)](_0x4faeef,_0x29b4d6){this[_0x289e2d(0x123,0xdb)]=0x3e8/(_0x4faeef[_0x4a8587(0x206,0x27c)]||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x4faeef['color']||'#ffffff',this[_0x4a8587(0x2ef,0x2c3)]=_0x4faeef['lineWidth']||0x1,this['fixedHeight']=_0x4faeef['fixedHeight']??0x0;function _0x289e2d(_0x16fc58,_0x292f86){return _0x52dd5f(_0x16fc58- -0x10e,_0x292f86);}this['flipY']=_0x4faeef[_0x4a8587(0x332,0x2f4)]??![];function _0x4a8587(_0x4734e5,_0x460d13){return _0x5e9725(_0x460d13- -0x11d,_0x4734e5);}this['windField']&&this[_0x4a8587(0x347,0x322)]['setOptions'](_0x4faeef);}get[_0x52dd5f(0x24a,0x1e2)](){function _0x2a10c3(_0x1e82c6,_0x31e0d0){return _0x52dd5f(_0x31e0d0- -0x1af,_0x1e82c6);}return this[_0x2a10c3(0x1a2,0x170)];}get['canvasWidth'](){return this['_map']['scene']['canvas']['clientWidth'];}get['canvasHeight'](){function _0x4d2fce(_0x51e0ce,_0x11064c){return _0x52dd5f(_0x51e0ce- -0x350,_0x11064c);}return this['_map'][_0x4d2fce(-0xcf,-0xba)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x5dc2b6){this['_pointerEvents']=_0x5dc2b6;function _0x5f10fb(_0x5664b4,_0x147c6a){return _0x5e9725(_0x5664b4- -0x2c5,_0x147c6a);}function _0x28dd34(_0x425281,_0x1ffdd5){return _0x52dd5f(_0x1ffdd5-0x1c6,_0x425281);}if(!this[_0x28dd34(0x492,0x4e5)])return;_0x5dc2b6?this[_0x5f10fb(0x1ad,0x232)]['style'][_0x28dd34(0x47c,0x49d)]=_0x28dd34(0x4b2,0x46c):this['canvas'][_0x28dd34(0x4b9,0x4e4)]['pointer-events']='none';}get[_0x52dd5f(0x312,0x2e7)](){function _0x37742c(_0x339736,_0x5c7c79){return _0x5e9725(_0x5c7c79- -0x57c,_0x339736);}return this['options'][_0x37742c(-0x97,-0x117)];}set['particlesNumber'](_0x417f39){this[_0x48e7ae(0x338,0x35b)]['particlesNumber']=_0x417f39;function _0x48e7ae(_0x3e15a9,_0x4b1895){return _0x52dd5f(_0x4b1895-0x6c,_0x3e15a9);}clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{function _0x7cb984(_0x53fdad,_0x44afd3){return _0x48e7ae(_0x44afd3,_0x53fdad- -0x211);}this[_0x7cb984(0x12f,0x144)]();},0x1f4);}get['speedRate'](){function _0x25d863(_0x462f1b,_0x15fc3c){return _0x5e9725(_0x462f1b- -0x514,_0x15fc3c);}return this[_0x25d863(-0xd2,-0x59)]['speedRate'];}set['speedRate'](_0x58fb5d){function _0x57f60f(_0x1f3d9f,_0x521c95){return _0x5e9725(_0x521c95- -0x657,_0x1f3d9f);}this[_0x57f60f(-0x201,-0x215)]['speedRate']=_0x58fb5d;function _0x1abdc6(_0x25e11e,_0x46770c){return _0x52dd5f(_0x25e11e- -0x9e,_0x46770c);}this['windField']&&(this[_0x1abdc6(0x24e,0x21c)][_0x57f60f(-0x278,-0x201)]=_0x58fb5d);}get['maxAge'](){function _0xd7b9f(_0x10586f,_0x4e5c1a){return _0x5e9725(_0x10586f- -0x243,_0x4e5c1a);}function _0x1c24ce(_0x1b7e0a,_0x5ac557){return _0x5e9725(_0x5ac557-0x2a,_0x1b7e0a);}return this[_0x1c24ce(0x480,0x46c)][_0xd7b9f(0x175,0x19c)];}set[_0x5e9725(0x3b8,0x3f2)](_0x2e2105){function _0x5c66a0(_0x2a400e,_0x503ce7){return _0x52dd5f(_0x2a400e- -0x126,_0x503ce7);}this[_0x5c66a0(0x1c9,0x244)]['maxAge']=_0x2e2105;function _0x127af6(_0x436a2a,_0x27b5bd){return _0x52dd5f(_0x436a2a-0xfb,_0x27b5bd);}this[_0x5c66a0(0x1c6,0x17b)]&&(this[_0x127af6(0x3e7,0x45c)]['maxAge']=_0x2e2105);}get[_0x52dd5f(0x23e,0x247)](){function _0xfb9b94(_0x4136e2,_0x55285e){return _0x52dd5f(_0x55285e-0xc3,_0x4136e2);}return this[_0xfb9b94(0x34a,0x330)];}set[_0x5e9725(0x391,0x39c)](_0x40258c){function _0x5b6538(_0x2d7687,_0x1b7d8c){return _0x52dd5f(_0x1b7d8c- -0x302,_0x2d7687);}this[_0x5b6538(-0xf8,-0xaf)](_0x40258c);}get['rectangle'](){let _0x11d5b1=this['windData']['xmin'],_0x89f975=this[_0x25e0b5(0xee,0x170)][_0x1356e9(0x182,0x1e8)],_0x16bb93=this['windData'][_0x1356e9(0x1e5,0x20a)];function _0x25e0b5(_0x57fa0f,_0x4bd616){return _0x52dd5f(_0x4bd616- -0xfd,_0x57fa0f);}let _0x2a77d7=this['windData'][_0x25e0b5(0x153,0x1bb)];_0x89f975>=0x167&&_0x11d5b1===0x0&&(_0x11d5b1=-0xb4,_0x89f975=0xb4);_0x11d5b1=Math['max'](_0x11d5b1,-0xb4),_0x89f975=Math[_0x1356e9(0x22f,0x1b1)](_0x89f975,0xb4),_0x16bb93=Math[_0x1356e9(0x1de,0x24d)](_0x16bb93,-0x5a);function _0x1356e9(_0x589fc8,_0x54e46b){return _0x52dd5f(_0x54e46b- -0xdb,_0x589fc8);}return _0x2a77d7=Math['min'](_0x2a77d7,0x5a),Cesium['Rectangle'][_0x1356e9(0x175,0x1db)](_0x11d5b1,_0x16bb93,_0x89f975,_0x2a77d7);}['_showHook'](_0x15ba0d){function _0x580c00(_0x418172,_0x220733){return _0x5e9725(_0x220733- -0x16f,_0x418172);}function _0x4b63ed(_0x42931f,_0x19c74e){return _0x52dd5f(_0x19c74e-0x7d,_0x42931f);}_0x15ba0d?this[_0x580c00(0x2d5,0x2ac)]():(this[_0x580c00(0x27d,0x251)]&&(this['options']['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){function _0x37a5e4(_0x133fe7,_0x1c890c){return _0x52dd5f(_0x1c890c- -0x7a,_0x133fe7);}this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this[_0x37a5e4(0x2bd,0x275)]);}['_addedHook'](){this['canvas']=this['_createCanvas']();const _0xe2501f={};_0xe2501f[_0x253505(0x28c,0x258)]=!![],this['canvasContext']=this[_0x29d937(0x24b,0x2a7)]['getContext']('2d',_0xe2501f),this[_0x253505(0x2b1,0x2d5)]();function _0x253505(_0x15b126,_0x47609c){return _0x5e9725(_0x47609c- -0x1b2,_0x15b126);}function _0x29d937(_0x409d9f,_0x5b9a34){return _0x5e9725(_0x409d9f- -0x227,_0x5b9a34);}this[_0x253505(0x20f,0x290)]['data']&&this[_0x253505(0x243,0x1f4)](this[_0x253505(0x281,0x290)]['data']);}['_removedHook'](){function _0x4b134b(_0x23b605,_0xa7cfe6){return _0x52dd5f(_0x23b605-0x20a,_0xa7cfe6);}function _0x3216a0(_0x508f39,_0x176040){return _0x52dd5f(_0x508f39- -0xb8,_0x176040);}this[_0x3216a0(0x209,0x20f)](),this[_0x4b134b(0x480,0x475)](),this['canvas']&&(this[_0x3216a0(0x254,0x219)]['container']['removeChild'](this[_0x3216a0(0x267,0x24f)]),delete this[_0x3216a0(0x267,0x235)]);}['_createCanvas'](){const _0x3b8193=mars3d__namespace['DomUtil'][_0x365a11(-0x20d,-0x1eb)](_0x365a11(-0x1db,-0x223),'mars3d-canvasWind',this['_map'][_0x365a11(-0x25d,-0x1e2)]);_0x3b8193['style'][_0x12917d(0x481,0x420)]='absolute',_0x3b8193[_0x12917d(0x40e,0x481)][_0x365a11(-0x272,-0x260)]=_0x12917d(0x3c7,0x3e1),_0x3b8193[_0x12917d(0x40e,0x481)]['left']='0px',_0x3b8193['style']['width']=this[_0x365a11(-0x1ee,-0x25d)]['scene'][_0x12917d(0x484,0x482)][_0x12917d(0x43f,0x416)]+'px',_0x3b8193[_0x12917d(0x493,0x481)]['height']=this['_map']['scene']['canvas']['clientHeight']+'px';function _0x365a11(_0x353687,_0x1dadbd){return _0x5e9725(_0x353687- -0x64d,_0x1dadbd);}_0x3b8193['style']['pointerEvents']=this[_0x365a11(-0x24d,-0x1e2)]?'auto':_0x12917d(0x46c,0x46a),_0x3b8193['style']['zIndex']=this['options'][_0x12917d(0x48e,0x414)]??0x9,_0x3b8193['width']=this[_0x12917d(0x441,0x46f)]['scene'][_0x12917d(0x4b1,0x482)]['clientWidth'];function _0x12917d(_0x2ea2da,_0x319064){return _0x52dd5f(_0x319064-0x163,_0x2ea2da);}return _0x3b8193[_0x365a11(-0x2aa,-0x28c)]=this['_map']['scene'][_0x12917d(0x484,0x482)]['clientHeight'],_0x3b8193;}[_0x52dd5f(0x26e,0x29d)](){function _0xcbe7f9(_0x43812f,_0x44697b){return _0x5e9725(_0x44697b- -0x307,_0x43812f);}function _0x20e5b3(_0x297f57,_0x277b3e){return _0x5e9725(_0x277b3e-0xaa,_0x297f57);}this['canvas']&&(this['canvas']['style']['width']=this['_map'][_0xcbe7f9(0xfa,0xcd)][_0x20e5b3(0x582,0x51c)][_0x20e5b3(0x518,0x4b0)]+'px',this['canvas']['style'][_0xcbe7f9(0x73,0x9c)]=this[_0xcbe7f9(0x1d1,0x158)]['scene']['canvas'][_0xcbe7f9(0x134,0xb7)]+'px',this['canvas'][_0xcbe7f9(0xf4,0x9e)]=this['_map'][_0xcbe7f9(0xa0,0xcd)]['canvas'][_0x20e5b3(0x45b,0x4b0)],this['canvas']['height']=this['_map']['scene']['canvas']['clientHeight']);}[_0x5e9725(0x487,0x4dd)](){const _0x377640=this;function _0x46e0f9(_0x143315,_0x3146ac){return _0x5e9725(_0x3146ac-0x10f,_0x143315);}function _0x4ec994(_0x554458,_0x27166c){return _0x52dd5f(_0x27166c- -0x3d1,_0x554458);}let _0x1a1ae1=Date['now']();(function _0x3a0623(){function _0x28397f(_0x2bd0d4,_0x7d797d){return _0x270b(_0x7d797d-0x207,_0x2bd0d4);}if(_0x377640[_0x28397f(0x3fd,0x3ca)])return;function _0x42c77b(_0x5b25f9,_0x4110a1){return _0x270b(_0x4110a1-0x363,_0x5b25f9);}_0x377640[_0x28397f(0x373,0x3d0)]=window['requestAnimationFrame'](_0x3a0623);if(_0x377640[_0x28397f(0x42a,0x3f7)]&&_0x377640['windField']){const _0x570012=Date['now'](),_0x34d207=_0x570012-_0x1a1ae1;_0x34d207>_0x377640[_0x28397f(0x334,0x31a)]&&(_0x1a1ae1=_0x570012-_0x34d207%_0x377640[_0x42c77b(0x4f4,0x476)],_0x377640[_0x28397f(0x373,0x3a4)]());}}(),window[_0x46e0f9(0x522,0x566)]('resize',this['resize']['bind'](this),![]),this[_0x4ec994(-0x1aa,-0x127)]=![],this[_0x46e0f9(0x538,0x542)]=![],this[_0x4ec994(-0xa9,-0xe2)]['mouseHidden']&&(this[_0x46e0f9(0x566,0x56e)]['on'](mars3d__namespace['EventType']['wheel'],this[_0x4ec994(-0x12a,-0xf8)],this),this['_map']['on'](mars3d__namespace[_0x4ec994(-0xca,-0x118)]['mouseDown'],this[_0x46e0f9(0x565,0x504)],this),this['_map']['on'](mars3d__namespace['EventType'][_0x4ec994(-0xf6,-0x10f)],this[_0x4ec994(-0x11e,-0x100)],this)));}['unbindEvent'](){function _0x876515(_0x8b2b53,_0x1b3ee9){return _0x52dd5f(_0x8b2b53- -0x403,_0x1b3ee9);}window['cancelAnimationFrame'](this['_animateFrame']),delete this['_animateFrame'];function _0x14aadd(_0x2d8f5a,_0x1440cf){return _0x5e9725(_0x1440cf-0xe1,_0x2d8f5a);}window[_0x14aadd(0x4ed,0x4c2)](_0x14aadd(0x4a9,0x4a2),this['resize']),this[_0x14aadd(0x4bb,0x523)][_0x876515(-0x16b,-0x1a5)]&&(this[_0x876515(-0xf7,-0x156)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace[_0x876515(-0x14a,-0x127)]['mouseUp'],this[_0x876515(-0x132,-0xce)],this),this[_0x14aadd(0x522,0x540)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0xb4a907){clearTimeout(this[_0x262925(0x427,0x41b)]);if(!this['show']||!this['canvas'])return;this['canvas']['style']['visibility']='hidden';function _0x262925(_0x1aee40,_0x4843ea){return _0x52dd5f(_0x4843ea-0x18c,_0x1aee40);}function _0x405224(_0x3ad222,_0x5d33d6){return _0x52dd5f(_0x5d33d6- -0x20d,_0x3ad222);}this[_0x405224(0xd,0x82)]=setTimeout(()=>{function _0x2713f8(_0x728562,_0x43684e){return _0x262925(_0x43684e,_0x728562- -0x1c2);}function _0x9486e(_0x183612,_0x1cedd2){return _0x405224(_0x183612,_0x1cedd2- -0x1ae);}if(!this['show'])return;this[_0x9486e(-0x14c,-0xe7)](),this[_0x2713f8(0x2e9,0x31c)]['style']['visibility']=_0x9486e(-0x10f,-0x112);},0xc8);}['_onMouseDownEvent'](_0x498b7b){this[_0x33ec12(0x421,0x3d4)]=!![],this[_0x33ec12(0x3b3,0x436)]['off'](mars3d__namespace[_0x33ec12(0x38c,0x3e3)]['mouseMove'],this['_onMouseMoveEvent'],this);function _0x33ec12(_0xf295e6,_0x33b09b){return _0x5e9725(_0x33b09b- -0x29,_0xf295e6);}function _0x37c04b(_0x40cb45,_0x3356b6){return _0x5e9725(_0x40cb45- -0x33a,_0x3356b6);}this['_map']['on'](mars3d__namespace[_0x33ec12(0x425,0x3e3)]['mouseMove'],this['_onMouseMoveEvent'],this);}[_0x5e9725(0x3b6,0x3d9)](_0x5d0484){if(!this[_0x1502c4(0x27c,0x2fc)]||!this[_0x4bc882(0x409,0x45d)])return;function _0x4bc882(_0x4ff450,_0x22f2b3){return _0x52dd5f(_0x22f2b3-0x13e,_0x4ff450);}function _0x1502c4(_0x1932de,_0x3dca26){return _0x52dd5f(_0x3dca26- -0x12,_0x1932de);}this[_0x4bc882(0x450,0x3e8)]&&(this['canvas']['style']['visibility']='hidden',this[_0x1502c4(0x2db,0x2ce)]=!![]);}[_0x5e9725(0x424,0x407)](_0x26912e){function _0x182704(_0x15fa6e,_0x10e0e8){return _0x52dd5f(_0x10e0e8-0x149,_0x15fa6e);}if(!this['show']||!this['canvas'])return;this[_0x182704(0x488,0x455)]['off'](mars3d__namespace['EventType'][_0x50cfa4(0x310,0x2e4)],this[_0x182704(0x394,0x3ac)],this);this['mouse_down']&&this[_0x50cfa4(0x35e,0x2f6)]&&this['redraw']();this[_0x50cfa4(0x34e,0x335)]['style'][_0x182704(0x430,0x3b8)]=_0x182704(0x46c,0x3f2);function _0x50cfa4(_0x9931bc,_0x1c647e){return _0x5e9725(_0x1c647e- -0x13d,_0x9931bc);}this[_0x50cfa4(0x334,0x2c0)]=![],this['mouse_move']=![];}['setData'](_0x549ecb){this['clear'](),this[_0x41e5af(0x2a0,0x319)]=_0x549ecb,this[_0x41e5af(0x31f,0x2b2)]['setDate'](_0x549ecb);function _0xb206e0(_0x522c33,_0xdaf32){return _0x52dd5f(_0x522c33- -0x21f,_0xdaf32);}function _0x41e5af(_0x57669f,_0x2517c6){return _0x5e9725(_0x57669f- -0x120,_0x2517c6);}this[_0x41e5af(0x307,0x2b3)]();}[_0x5e9725(0x427,0x440)](){function _0x54984d(_0x5e0a5f,_0x1a6d76){return _0x5e9725(_0x5e0a5f- -0x659,_0x1a6d76);}if(!this[_0x1237b6(0x20,0x74)])return;this['windField'][_0x54984d(-0x2d1,-0x2c4)](this[_0x1237b6(0x42,0x55)]);function _0x1237b6(_0x5ee6c0,_0x463086){return _0x52dd5f(_0x463086- -0x29a,_0x5ee6c0);}this['update']();}[_0x5e9725(0x40e,0x3fa)](){function _0xb98b24(_0x44f6b7,_0x1978d6){return _0x52dd5f(_0x44f6b7-0x254,_0x1978d6);}if(this['_updateIng'])return;this[_0xb98b24(0x52e,0x584)]=!![];function _0x3ed059(_0x14cd18,_0xa9012a){return _0x52dd5f(_0x14cd18- -0x69,_0xa9012a);}if(this[_0xb98b24(0x4cd,0x52f)])this['windField']['update']();else{const _0x5316f8=this[_0x3ed059(0x283,0x232)]['getParticles']();this[_0x3ed059(0x222,0x283)](_0x5316f8);}this['_updateIng']=![];}[_0x52dd5f(0x28b,0x236)](_0x8383ba){this['_canvasParticles']=_0x8383ba,this[_0x439709(0x5ae,0x596)]['globalCompositeOperation']=_0x173265(0x2a0,0x2d8);function _0x439709(_0xe8abe2,_0x49c46a){return _0x52dd5f(_0x49c46a-0x273,_0xe8abe2);}this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this[_0x173265(0x2fa,0x32d)]['globalCompositeOperation']='lighter';function _0x173265(_0xe83308,_0x1926c7){return _0x52dd5f(_0xe83308- -0x29,_0x1926c7);}this[_0x173265(0x2fa,0x2b8)][_0x439709(0x53f,0x4c8)]=0.9;const _0x496446=this['_map']['scene'][_0x439709(0x4da,0x4f2)]!==Cesium['SceneMode'][_0x439709(0x527,0x4cf)],_0x374e1d=this[_0x173265(0x30a,0x2c4)]*0.25;if(this['_colorRamp'])for(let _0x59755e=0x0,_0x26c102=_0x8383ba['length'];_0x59755e<_0x26c102;_0x59755e++){const _0x92040b=_0x8383ba[_0x59755e],_0x358b57=this['_tomap'](_0x92040b,_0x92040b['lng'],_0x92040b[_0x439709(0x5c8,0x5a9)],_0x92040b['alt']),_0x1697ee=this['_tomap'](_0x92040b,_0x92040b[_0x173265(0x2d9,0x2ab)],_0x92040b['tlat'],_0x92040b[_0x173265(0x29b,0x23a)]);if(!_0x358b57||!_0x1697ee)continue;if(_0x496446&&Math['abs'](_0x358b57[0x0]-_0x1697ee[0x0])>=_0x374e1d)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x439709(0x549,0x500)],this[_0x173265(0x2fa,0x2b0)][_0x439709(0x51b,0x564)]=this[_0x173265(0x2ee,0x2a1)]['getColor'](_0x92040b['speed']),this['canvasContext']['moveTo'](_0x358b57[0x0],_0x358b57[0x1]),this['canvasContext'][_0x439709(0x573,0x570)](_0x1697ee[0x0],_0x1697ee[0x1]),this['canvasContext'][_0x439709(0x5a6,0x58e)]();}else{this[_0x173265(0x2fa,0x379)]['beginPath'](),this['canvasContext'][_0x173265(0x264,0x1f0)]=this[_0x173265(0x264,0x294)],this[_0x173265(0x2fa,0x33a)][_0x439709(0x598,0x564)]=this['color'];for(let _0x4b9450=0x0,_0x1e036d=_0x8383ba[_0x173265(0x272,0x2e8)];_0x4b9450<_0x1e036d;_0x4b9450++){const _0x346297=_0x8383ba[_0x4b9450],_0x19e1b1=this['_tomap'](_0x346297,_0x346297['lng'],_0x346297['lat'],_0x346297[_0x173265(0x2b9,0x2c5)]),_0x1bb0d8=this['_tomap'](_0x346297,_0x346297[_0x439709(0x559,0x575)],_0x346297['tlat'],_0x346297['talt']);if(!_0x19e1b1||!_0x1bb0d8)continue;if(_0x496446&&Math['abs'](_0x19e1b1[0x0]-_0x1bb0d8[0x0])>=_0x374e1d)continue;this['canvasContext'][_0x173265(0x21f,0x28a)](_0x19e1b1[0x0],_0x19e1b1[0x1]),this[_0x173265(0x2fa,0x2f9)]['lineTo'](_0x1bb0d8[0x0],_0x1bb0d8[0x1]);}this[_0x173265(0x2fa,0x373)][_0x439709(0x514,0x58e)]();}}[_0x52dd5f(0x2a4,0x320)](_0x2ee4a4,_0x37b5d4,_0x567351,_0x1db57f){function _0x18371e(_0x4fbf68,_0xdbdb6e){return _0x5e9725(_0x4fbf68- -0x21f,_0xdbdb6e);}const _0x18472b=Cesium['Cartesian3'][_0x18371e(0x1ea,0x1f3)](_0x37b5d4,_0x567351,_0x1db57f??this[_0x18371e(0x1e8,0x180)]);function _0x1cfb61(_0x4d76d1,_0x21d4f6){return _0x5e9725(_0x4d76d1- -0xe7,_0x21d4f6);}const _0x1c667f=this['_map']['scene'];if(_0x1c667f['mode']===Cesium[_0x1cfb61(0x2b1,0x2ab)]['SCENE3D']){const _0x3052c1=new Cesium['EllipsoidalOccluder'](_0x1c667f[_0x1cfb61(0x2d2,0x2c5)][_0x18371e(0x250,0x299)],_0x1c667f['camera'][_0x1cfb61(0x36c,0x3ed)]),_0x590545=_0x3052c1[_0x1cfb61(0x397,0x31f)](_0x18472b);if(!_0x590545)return _0x2ee4a4[_0x18371e(0x16b,0xee)]=0x0,null;}const _0xbde00e=mars3d__namespace[_0x1cfb61(0x2c0,0x2a3)][_0x18371e(0x23c,0x1f7)](this[_0x18371e(0x240,0x295)][_0x1cfb61(0x2ed,0x355)],_0x18472b);return _0xbde00e?[_0xbde00e['x'],_0xbde00e['y']]:null;}['clear'](){function _0x1499a1(_0x715164,_0x2f0738){return _0x52dd5f(_0x2f0738- -0x484,_0x715164);}this['windField'][_0xada522(0x306,0x2f6)]();function _0xada522(_0x1fa019,_0x2057f2){return _0x52dd5f(_0x1fa019-0x45,_0x2057f2);}delete this[_0x1499a1(-0x287,-0x217)];}['initWorker'](){this['worker']=new Worker(this['options']['worker']),this['worker'][_0x207018(-0x6e,-0x95)]=_0x51348a=>{function _0x2b45c9(_0x1bc92e,_0x2ccbe7){return _0x207018(_0x2ccbe7-0x37,_0x1bc92e);}function _0x4d5442(_0x5a4d43,_0x44ebaf){return _0x207018(_0x44ebaf- -0x2f,_0x5a4d43);}this[_0x4d5442(-0x114,-0xde)](_0x51348a['data']['particles']),this[_0x2b45c9(-0x5d,0x8)]=![];},this[_0x36e495(0x162,0x125)]={'init':_0x48ff10=>{const _0x209c33={};function _0x3968e5(_0x34eaa7,_0x1bd1dc){return _0x36e495(_0x1bd1dc,_0x34eaa7- -0x199);}function _0x3c0f68(_0x11de8f,_0x2effdb){return _0x207018(_0x11de8f-0x27a,_0x2effdb);}_0x209c33['type']=_0x3968e5(-0xf7,-0x159),_0x209c33[_0x3c0f68(0x22f,0x1d4)]=_0x48ff10,this['worker']['postMessage'](_0x209c33);},'setOptions':_0x19151b=>{const _0x137d67={};function _0xb770b3(_0x22da96,_0x2553d5){return _0x207018(_0x22da96- -0x189,_0x2553d5);}_0x137d67['type']='setOptions',_0x137d67['options']=_0x19151b,this['worker'][_0xb770b3(-0x22a,-0x1e7)](_0x137d67);},'setDate':_0x4345f2=>{const _0x3ea5ca={};function _0x367d25(_0x4a63ae,_0x495e62){return _0x36e495(_0x495e62,_0x4a63ae- -0x2c0);}function _0x8eb105(_0x2fb1ac,_0x3c3239){return _0x36e495(_0x2fb1ac,_0x3c3239-0x47a);}_0x3ea5ca['type']=_0x8eb105(0x5c8,0x5cb),_0x3ea5ca['data']=_0x4345f2,this[_0x367d25(-0x20e,-0x258)][_0x8eb105(0x56b,0x54c)](_0x3ea5ca);},'update':()=>{if(this[_0x4acf91(-0x102,-0xb5)])return;this[_0x516da5(0x205,0x22d)]=!![];const _0x3fb33d={};function _0x4acf91(_0xb2a72a,_0x2d8c39){return _0x207018(_0x2d8c39- -0x86,_0xb2a72a);}function _0x516da5(_0x197f3f,_0x49c3c1){return _0x207018(_0x49c3c1-0x25c,_0x197f3f);}_0x3fb33d[_0x516da5(0x145,0x1ab)]='update',this[_0x516da5(0x14c,0x19b)]['postMessage'](_0x3fb33d);},'clear':()=>{const _0x3a9e7e={};function _0x5ca713(_0x2575ef,_0xf5c29f){return _0x207018(_0x2575ef-0x3c,_0xf5c29f);}_0x3a9e7e[_0x55d38d(-0x239,-0x20c)]=_0x55d38d(-0x201,-0x1ff);function _0x55d38d(_0x1f5e6c,_0x5ba942){return _0x36e495(_0x5ba942,_0x1f5e6c- -0x2fb);}this[_0x55d38d(-0x249,-0x1f0)][_0x55d38d(-0x229,-0x246)](_0x3a9e7e);}};function _0x207018(_0x315d98,_0x67c8a3){return _0x5e9725(_0x315d98- -0x48d,_0x67c8a3);}function _0x36e495(_0x4b085f,_0x2da6a0){return _0x52dd5f(_0x2da6a0- -0x1c7,_0x4b085f);}this['windField']['init'](this[_0x36e495(0x162,0x128)]);}}function _0x52dd5f(_0x3c287d,_0x48eee5){return _0x270b(_0x3c287d-0x11e,_0x48eee5);}mars3d__namespace[_0x52dd5f(0x244,0x1f7)][_0x52dd5f(0x2b0,0x2f8)](_0x52dd5f(0x251,0x22e),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['Log'][_0x52dd5f(0x331,0x397)]('mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:'+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace['WindUtil']=WindUtil,exports[_0x5e9725(0x460,0x3fd)]=CanvasWindField,exports[_0x5e9725(0x3f2,0x3e2)]=CanvasWindLayer,exports[_0x52dd5f(0x23f,0x1de)]=WindLayer,exports['WindUtil']=WindUtil;const _0x76123c={};function _0x270b(_0x5e46fa,_0x457e2f){const _0x359695=_0x3596();return _0x270b=function(_0x270b5c,_0x4db163){_0x270b5c=_0x270b5c-0x110;let _0x2c0108=_0x359695[_0x270b5c];return _0x2c0108;},_0x270b(_0x5e46fa,_0x457e2f);}_0x76123c['value']=!![],Object['defineProperty'](exports,_0x52dd5f(0x233,0x22a),_0x76123c);
|
|
14
|
+
'use strict';(function(_0x1d6cb2,_0x45dafb){const _0x3e661d=_0x1d6cb2();function _0x16e8a1(_0x1bb3a5,_0x56024b){return _0x17b6(_0x1bb3a5-0x3b9,_0x56024b);}function _0x320676(_0x2c62bb,_0xcc7b48){return _0x17b6(_0xcc7b48-0x49,_0x2c62bb);}while(!![]){try{const _0x5db7f6=parseInt(_0x320676(0x172,0x15d))/0x1+parseInt(_0x16e8a1(0x5a2,0x54e))/0x2+parseInt(_0x320676(0x1dd,0x175))/0x3*(-parseInt(_0x16e8a1(0x53b,0x54d))/0x4)+-parseInt(_0x16e8a1(0x57e,0x551))/0x5+parseInt(_0x16e8a1(0x4d2,0x49f))/0x6+-parseInt(_0x320676(0x23f,0x1d6))/0x7+-parseInt(_0x320676(0x1bc,0x19a))/0x8*(-parseInt(_0x320676(0xfc,0x13c))/0x9);if(_0x5db7f6===_0x45dafb)break;else _0x3e661d['push'](_0x3e661d['shift']());}catch(_0x2fd198){_0x3e661d['push'](_0x3e661d['shift']());}}}(_0x42eb,0x55b46));function _interopNamespace(_0x43092e){function _0xb24a1b(_0x3bf27f,_0x17308f){return _0x17b6(_0x17308f-0x102,_0x3bf27f);}if(_0x43092e&&_0x43092e[_0xb24a1b(0x2c4,0x2a1)])return _0x43092e;var _0x3253ad=Object['create'](null);return _0x43092e&&Object['keys'](_0x43092e)['forEach'](function(_0x567f65){function _0x17316a(_0x578b2e,_0x523d9a){return _0xb24a1b(_0x578b2e,_0x523d9a- -0x1a8);}if(_0x567f65!==_0x17316a(0x124,0x121)){var _0x52907a=Object['getOwnPropertyDescriptor'](_0x43092e,_0x567f65);Object['defineProperty'](_0x3253ad,_0x567f65,_0x52907a['get']?_0x52907a:{'enumerable':!![],'get':function(){return _0x43092e[_0x567f65];}});}}),_0x3253ad['default']=_0x43092e,_0x3253ad;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace[_0x259635(0x512,0x52b)];function getU(_0x131425,_0x2be87c){const _0x4d1bd8=_0x131425*Math['cos'](Cesium$2[_0x8bfdea(0x311,0x310)][_0x8bfdea(0x2af,0x228)](_0x2be87c));function _0x4f8b2e(_0x43c509,_0x58a3d9){return _0x259635(_0x58a3d9,_0x43c509- -0x561);}function _0x8bfdea(_0x5dcece,_0x5a38e3){return _0x259635(_0x5a38e3,_0x5dcece- -0x20e);}return _0x4d1bd8;}function getV(_0x3a8e7f,_0x439c31){function _0x5b9ea6(_0x131ab0,_0x35cfdd){return _0x259635(_0x35cfdd,_0x131ab0- -0x404);}const _0x79176f=_0x3a8e7f*Math[_0x5b9ea6(0x16c,0x161)](Cesium$2['Math']['toRadians'](_0x439c31));return _0x79176f;}function getSpeed(_0x15b721,_0x4544c6){const _0x4444a2=Math[_0x30141f(0x2a4,0x320)](Math['pow'](_0x15b721,0x2)+Math[_0x30141f(0x29c,0x2b7)](_0x4544c6,0x2));function _0x30141f(_0x3d4f56,_0x56404f){return _0x259635(_0x56404f,_0x3d4f56- -0x21b);}function _0x29e58f(_0x57cf08,_0x32cfa9){return _0x259635(_0x32cfa9,_0x57cf08- -0x2b);}return _0x4444a2;}function getDirection(_0x1c6999,_0x513c9d){function _0x157528(_0x1fa0c1,_0x586c26){return _0x259635(_0x1fa0c1,_0x586c26- -0x1f7);}function _0x1456e6(_0x23b516,_0x5ad822){return _0x259635(_0x23b516,_0x5ad822- -0x3d7);}let _0x4b29b0=Cesium$2[_0x1456e6(0x165,0x148)]['toDegrees'](Math[_0x157528(0x2ca,0x31c)](_0x513c9d,_0x1c6999));return _0x4b29b0+=_0x4b29b0<0x0?0x168:0x0,_0x4b29b0;}const _0x58719a={};_0x58719a['__proto__']=null,_0x58719a['getU']=getU,_0x58719a['getV']=getV,_0x58719a['getSpeed']=getSpeed,_0x58719a['getDirection']=getDirection;var WindUtil=_0x58719a;const version='3.11.0',buildTime='2026-02-14\x2019:28';var updatePositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20获取当前粒子的位置\x0a\x20\x20vec2\x20currentPos\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20获取粒子的速度\x0a\x20\x20vec2\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rg;\x0a\x20\x20\x20\x20//\x20计算下一个位置\x0a\x20\x20vec2\x20nextPos\x20=\x20currentPos\x20+\x20speed;\x0a\x0a\x20\x20\x20\x20//\x20将新的位置写入\x20fragColor\x0a\x20\x20fragColor\x20=\x20vec4(nextPos,\x200.0f,\x201.0f);\x0a}\x0a',calculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec2\x20uRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20vRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20speedRange;\x20//\x20(min,\x20max)\x0auniform\x20vec2\x20dimension;\x20//\x20(lon,\x20lat)\x0auniform\x20vec2\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec2\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0a\x0auniform\x20float\x20speedScaleFactor;\x0auniform\x20float\x20frameRateAdjustment;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20getInterval(vec2\x20maximum,\x20vec2\x20minimum,\x20vec2\x20dimension)\x20{\x0a\x20\x20return\x20(maximum\x20-\x20minimum)\x20/\x20(dimension\x20-\x201.0f);\x0a}\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLat.x\x20=\x20clamp(lonLat.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLat.y\x20=\x20clamp(lonLat.y,\x20minimum.y,\x20maximum.y);\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(0.0f);\x0a\x20\x20index2D.x\x20=\x20(lonLat.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index2D.y\x20=\x20(lonLat.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20dimension.y);\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0avec2\x20getWindComponents(vec2\x20lonLat)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLat);\x0a\x20\x20float\x20u\x20=\x20texture(U,\x20normalizedIndex2D).r;\x0a\x20\x20float\x20v\x20=\x20texture(V,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20vec2(u,\x20v);\x0a}\x0a\x0avec2\x20bilinearInterpolation(vec2\x20lonLat)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLat.x;\x0a\x20\x20float\x20lat\x20=\x20lonLat.y;\x0a\x0a\x20\x20vec2\x20interval\x20=\x20getInterval(maximum,\x20minimum,\x20dimension);\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20grid\x20cell\x20coordinates\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Get\x20wind\x20vectors\x20at\x20four\x20corners\x0a\x20\x20vec2\x20v00\x20=\x20getWindComponents(vec2(lon0,\x20lat0));\x0a\x20\x20vec2\x20v10\x20=\x20getWindComponents(vec2(lon1,\x20lat0));\x0a\x20\x20vec2\x20v01\x20=\x20getWindComponents(vec2(lon0,\x20lat1));\x0a\x20\x20vec2\x20v11\x20=\x20getWindComponents(vec2(lon1,\x20lat1));\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20all\x20wind\x20vectors\x20are\x20zero\x0a\x20\x20if(length(v00)\x20==\x200.0f\x20&&\x20length(v10)\x20==\x200.0f\x20&&\x20length(v01)\x20==\x200.0f\x20&&\x20length(v11)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x200.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20interpolation\x20weights\x0a\x20\x20float\x20s\x20=\x20(lon\x20-\x20lon0)\x20/\x20interval.x;\x0a\x20\x20float\x20t\x20=\x20(lat\x20-\x20lat0)\x20/\x20interval.y;\x0a\x0a\x20\x20\x20\x20//\x20Perform\x20bilinear\x20interpolation\x20on\x20vector\x20components\x0a\x20\x20vec2\x20v0\x20=\x20mix(v00,\x20v10,\x20s);\x0a\x20\x20vec2\x20v1\x20=\x20mix(v01,\x20v11,\x20s);\x0a\x20\x20return\x20mix(v0,\x20v1,\x20t);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec2\x20convertSpeedUnitToLonLat(vec2\x20lonLat,\x20vec2\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLat);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20vec2\x20windVectorInLonLat\x20=\x20vec2(u,\x20v);\x0a\x0a\x20\x20return\x20windVectorInLonLat;\x0a}\x0a\x0avec2\x20calculateSpeedByRungeKutta2(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec2\x20y_n\x20=\x20lonLat;\x0a\x20\x20vec2\x20f_n\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec2\x20speed\x20=\x20h\x20*\x20bilinearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20calculateWindNorm(vec2\x20speed)\x20{\x0a\x20\x20float\x20speedLength\x20=\x20length(speed.xy);\x0a\x20\x20if(speedLength\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f);\x0a\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Clamp\x20speedLength\x20to\x20range\x0a\x20\x20float\x20clampedSpeed\x20=\x20clamp(speedLength,\x20speedRange.x,\x20speedRange.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(clampedSpeed\x20-\x20speedRange.x)\x20/\x20(speedRange.y\x20-\x20speedRange.x);\x0a\x20\x20return\x20vec2(speedLength,\x20normalizedSpeed);\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec2\x20lonLat\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec2\x20speedOrigin\x20=\x20bilinearInterpolation(lonLat);\x0a\x20\x20vec2\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLat)\x20*\x20frameRateAdjustment;\x0a\x20\x20vec2\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLat,\x20speed);\x0a\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',postProcessingPositionFragmentShader=_0x5ba876(0x212,0x1e3),renderParticlesFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec4\x20speed;\x0ain\x20float\x20v_segmentPosition;\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20vec2\x20domain;\x0auniform\x20vec2\x20displayRange;\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speed.a\x20>\x20zero\x20&&\x20speed.b\x20>\x20displayRange.x\x20&&\x20speed.b\x20<\x20displayRange.y)\x20{\x0a\x20\x20\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x20\x20\x20\x20vec4\x20baseColor\x20=\x20texture(colorTable,\x20vec2(normalizedSpeed,\x20zero));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用更平滑的渐变效果\x0a\x20\x20\x20\x20float\x20alpha\x20=\x20smoothstep(0.0f,\x201.0f,\x20v_segmentPosition);\x0a\x20\x20\x20\x20alpha\x20=\x20pow(alpha,\x201.5f);\x20//\x20调整透明度渐变曲线\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20根据速度调整透明度\x0a\x20\x20\x20\x20float\x20speedAlpha\x20=\x20mix(0.3f,\x201.0f,\x20speed.a);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20组合颜色和透明度\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(baseColor.rgb,\x20baseColor.a\x20*\x20alpha\x20*\x20speedAlpha);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a\x0a\x20\x20float\x20segmentsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20if(segmentsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',renderParticlesVertexShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0ain\x20vec3\x20normal;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20frameRateAdjustment;\x0auniform\x20float\x20particleHeight;\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20vec2\x20lineWidth;\x0auniform\x20vec2\x20lineLength;\x0auniform\x20vec2\x20domain;\x0auniform\x20bool\x20is3D;\x0a\x0a//\x20添加输出变量传递给片元着色器\x0aout\x20vec4\x20speed;\x0aout\x20float\x20v_segmentPosition;\x0aout\x20vec2\x20textureCoordinate;\x0a\x0a//\x20添加结构体定义\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0avec3\x20convertCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLat.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20if(is3D)\x20{\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLat);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用\x20modelViewProjection\x20矩阵进行投影变换\x0a\x20\x20\x20\x20vec4\x20projectedPosition\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20\x20\x20return\x20projectedPosition;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20vec3\x20position2D\x20=\x20vec3(radians(lonLat.x),\x20radians(lonLat.y),\x200.0f);\x0a\x20\x20\x20\x20return\x20czm_modelViewProjection\x20*\x20vec4(position2D,\x201.0f);\x0a\x20\x20}\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign,\x20float\x20widthFactor)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20//\x20计算方向向量\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x0a\x20\x20\x20\x20//\x20计算法向量\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x0a\x20\x20\x20\x20//\x20使用\x20widthFactor\x20调整宽度\x0a\x20\x20float\x20offsetLength\x20=\x20widthFactor\x20*\x20lineWidth.y;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20翻转\x20Y\x20轴坐标\x0a\x20\x20vec2\x20flippedIndex\x20=\x20vec2(st.x,\x201.0f\x20-\x20st.y);\x0a\x0a\x20\x20vec2\x20particleIndex\x20=\x20flippedIndex;\x0a\x20\x20speed\x20=\x20texture(particlesSpeed,\x20particleIndex);\x0a\x0a\x20\x20vec2\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rg;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x0a\x20\x20\x20\x20//\x20计算速度相关的宽度和长度因子\x0a\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x0a\x20\x20\x20\x20//\x20根据速度计算宽度\x0a\x20\x20float\x20widthFactor\x20=\x20mix(lineWidth.x,\x20lineWidth.y,\x20normalizedSpeed);\x0a\x20\x20widthFactor\x20*=\x20(pointToUse\x20<\x200\x20?\x201.0f\x20:\x200.5f);\x20//\x20头部更宽,尾部更窄\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20length\x20based\x20on\x20speed\x0a\x20\x20float\x20lengthFactor\x20=\x20mix(lineLength.x,\x20lineLength.y,\x20normalizedSpeed)\x20*\x20pixelSize;\x0a\x0a\x20\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20头部位置\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x200.0f;\x20//\x20头部\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Get\x20direction\x20and\x20normalize\x20it\x20to\x20length\x201.0\x0a\x20\x20\x20\x20vec4\x20direction\x20=\x20normalize(projectedCoordinates.next\x20-\x20projectedCoordinates.current);\x0a\x20\x20\x20\x20vec4\x20extendedPosition\x20=\x20projectedCoordinates.current\x20+\x20direction\x20*\x20lengthFactor;\x0a\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20extendedPosition,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20extendedPosition\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x201.0f;\x20//\x20尾部\x0a\x20\x20}\x0a\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a}\x0a';function _0x259635(_0x42e4f4,_0x49aafb){return _0x17b6(_0x49aafb-0x3de,_0x42e4f4);}const {ShaderSource:ShaderSource$1}=mars3d__namespace[_0x5ba876(0x172,0x15d)];class ShaderManager{static[_0x259635(0x52b,0x5a9)](){function _0x4a6fd2(_0x3ba9f1,_0x462950){return _0x259635(_0x3ba9f1,_0x462950- -0x582);}const _0xde47a9={};return _0xde47a9[_0x4a6fd2(-0x3b,-0x5a)]=[calculateSpeedShader],new ShaderSource$1(_0xde47a9);}static['getUpdatePositionShader'](){const _0x1aa668={};return _0x1aa668['sources']=[updatePositionShader],new ShaderSource$1(_0x1aa668);}static['getSegmentDrawVertexShader'](){const _0x12078c={};return _0x12078c['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x12078c);}static[_0x5ba876(0x1a5,0x189)](){const _0x4512f1={};return _0x4512f1['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x4512f1);}static[_0x5ba876(0x1ad,0x153)](){const _0x3b8530={};_0x3b8530[_0x5b7cae(-0x12,0x65)]=[postProcessingPositionFragmentShader];function _0x5b7cae(_0x12d322,_0x190f6b){return _0x259635(_0x12d322,_0x190f6b- -0x4c3);}return new ShaderSource$1(_0x3b8530);}}const {BufferUsage:BufferUsage$1,ClearCommand:ClearCommand$1,Color:Color$2,ComputeCommand,DrawCommand,Geometry:Geometry$1,Matrix4,Pass:Pass$1,PrimitiveType:PrimitiveType$1,RenderState,ShaderProgram,ShaderSource,VertexArray:VertexArray$1,defined,destroyObject}=mars3d__namespace[_0x259635(0x4b7,0x52b)];class CustomPrimitive{constructor(_0x150b6e){this['commandType']=_0x150b6e['commandType'],this['geometry']=_0x150b6e['geometry'],this['attributeLocations']=_0x150b6e[_0x4564a7(-0x168,-0x168)],this[_0x5d05bc(0x453,0x4cd)]=_0x150b6e['primitiveType'],this[_0x4564a7(-0xc0,-0xb0)]=_0x150b6e['uniformMap']||{},this[_0x5d05bc(0x4ab,0x52d)]=_0x150b6e[_0x5d05bc(0x564,0x52d)],this[_0x5d05bc(0x491,0x4dc)]=_0x150b6e['fragmentShaderSource'];function _0x4564a7(_0xdd94e9,_0x27bbd2){return _0x259635(_0x27bbd2,_0xdd94e9- -0x671);}this['rawRenderState']=_0x150b6e['rawRenderState'],this[_0x5d05bc(0x57f,0x536)]=_0x150b6e['framebuffer'],this['outputTexture']=_0x150b6e['outputTexture'],this['autoClear']=_0x150b6e['autoClear']??![],this['preExecute']=_0x150b6e['preExecute'],this['show']=!![],this['commandToExecute']=undefined;function _0x5d05bc(_0x76dea5,_0x4fb1d7){return _0x259635(_0x76dea5,_0x4fb1d7- -0x41);}this['clearCommand']=undefined,this['isDynamic']=_0x150b6e['isDynamic']??(()=>!![]),this['autoClear']&&(this['clearCommand']=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Pass$1[_0x5d05bc(0x461,0x4a5)]}));}[_0x5ba876(0x192,0x214)](_0x18308c){function _0x1ad979(_0x3cd636,_0x55267e){return _0x259635(_0x3cd636,_0x55267e- -0xd2);}function _0x1e6609(_0x4fbba4,_0x3d8be4){return _0x5ba876(_0x4fbba4- -0x9e,_0x3d8be4);}if(this['commandType']==='Draw'){const _0x3caafd={};_0x3caafd['context']=_0x18308c,_0x3caafd['geometry']=this[_0x1e6609(0xb5,0x10c)],_0x3caafd[_0x1ad979(0x480,0x437)]=this['attributeLocations'],_0x3caafd['bufferUsage']=BufferUsage$1[_0x1ad979(0x493,0x4e8)];const _0x699e18=VertexArray$1['fromGeometry'](_0x3caafd),_0x80dda2={};_0x80dda2[_0x1ad979(0x443,0x492)]=_0x18308c,_0x80dda2[_0x1e6609(0x117,0x12c)]=this['vertexShaderSource'],_0x80dda2['fragmentShaderSource']=this[_0x1e6609(0xc6,0x137)],_0x80dda2[_0x1ad979(0x45b,0x437)]=this['attributeLocations'];const _0x400140=ShaderProgram['fromCache'](_0x80dda2),_0x2129c1=RenderState['fromCache'](this[_0x1e6609(0x16c,0x129)]),_0x33132a={};return _0x33132a['owner']=this,_0x33132a['vertexArray']=_0x699e18,_0x33132a[_0x1e6609(0xb7,0x8d)]=this[_0x1e6609(0xb7,0x114)],_0x33132a['modelMatrix']=Matrix4['IDENTITY'],_0x33132a['renderState']=_0x2129c1,_0x33132a['shaderProgram']=_0x400140,_0x33132a['framebuffer']=this['framebuffer'],_0x33132a['uniformMap']=this[_0x1ad979(0x50f,0x4df)],_0x33132a[_0x1ad979(0x507,0x4d4)]=Pass$1[_0x1e6609(0x8f,0xd1)],new DrawCommand(_0x33132a);}else{if(this['commandType']==='Compute'){const _0x122654={};return _0x122654[_0x1ad979(0x435,0x4a0)]=this,_0x122654['fragmentShaderSource']=this['fragmentShaderSource'],_0x122654['uniformMap']=this[_0x1ad979(0x4e3,0x4df)],_0x122654['outputTexture']=this['outputTexture'],_0x122654[_0x1ad979(0x433,0x49a)]=!![],new ComputeCommand(_0x122654);}else throw new Error('Unknown\x20command\x20type');}}['setGeometry'](_0x125c47,_0x5bf1bf){function _0x25e174(_0x326722,_0x12897a){return _0x5ba876(_0x326722- -0x109,_0x12897a);}this['geometry']=_0x5bf1bf;function _0x38f482(_0x13efed,_0xb8f00f){return _0x259635(_0x13efed,_0xb8f00f- -0x1c1);}defined(this['commandToExecute'])&&(this[_0x38f482(0x392,0x3d8)][_0x25e174(0x25,0x40)]=VertexArray$1[_0x38f482(0x2ed,0x307)]({'context':_0x125c47,'geometry':this[_0x25e174(0x4a,0x3a)],'attributeLocations':this[_0x25e174(0x47,0x11)],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}['update'](_0x23d51d){if(!this[_0x1fe000(0x412,0x3f0)]())return;if(!this['show']||!defined(_0x23d51d))return;!defined(this[_0x5e4459(-0x12f,-0xc2)])&&(this[_0x5e4459(-0x96,-0xc2)]=this['createCommand'](_0x23d51d[_0x5e4459(-0x113,-0xf7)]));defined(this[_0x5e4459(-0x10,-0x92)])&&this['preExecute']();function _0x5e4459(_0x271fea,_0x2db79a){return _0x259635(_0x271fea,_0x2db79a- -0x65b);}function _0x1fe000(_0x182077,_0x35bca7){return _0x259635(_0x182077,_0x35bca7- -0x175);}if(!_0x23d51d[_0x1fe000(0x3fc,0x3c0)]){console['warn']('frameState.commandList\x20is\x20undefined');return;}defined(this[_0x5e4459(-0x16f,-0x172)])&&_0x23d51d[_0x1fe000(0x3ae,0x3c0)]['push'](this[_0x5e4459(-0x18e,-0x172)]),defined(this[_0x1fe000(0x486,0x424)])&&_0x23d51d['commandList'][_0x1fe000(0x42a,0x443)](this[_0x5e4459(-0x125,-0xc2)]);}['isDestroyed'](){return![];}[_0x259635(0x4f1,0x518)](){function _0x304e58(_0x3c6bb7,_0x2313fa){return _0x259635(_0x2313fa,_0x3c6bb7- -0x158);}if(defined(this['commandToExecute'])){var _0x19b6f6;(_0x19b6f6=this['commandToExecute']['shaderProgram'])===null||_0x19b6f6===void 0x0||_0x19b6f6[_0x304e58(0x3c0,0x3e1)](),this['commandToExecute'][_0x13f497(-0x175,-0x1b2)]=undefined;}function _0x13f497(_0x5c74e3,_0x188e25){return _0x5ba876(_0x5c74e3- -0x2c0,_0x188e25);}return destroyObject(this);}}function deepMerge(_0x401e83,_0x3be610){function _0x42a3de(_0x18612a,_0xa7e5d2){return _0x5ba876(_0x18612a- -0xf3,_0xa7e5d2);}if(!_0x401e83)return _0x3be610;if(!_0x3be610)return _0x401e83;const _0x42076e={..._0x3be610};function _0x1e4754(_0x505ff0,_0x2f2905){return _0x259635(_0x505ff0,_0x2f2905- -0x7bd);}const _0xd0d696=_0x42076e;for(const _0x309c6a in _0x401e83){if(Object[_0x1e4754(-0x278,-0x266)]['hasOwnProperty'][_0x1e4754(-0x205,-0x1fe)](_0x401e83,_0x309c6a)){const _0x1c552f=_0x401e83[_0x309c6a],_0x2bf7f3=_0x3be610[_0x309c6a];if(Array['isArray'](_0x1c552f)){_0xd0d696[_0x309c6a]=_0x1c552f['slice']();continue;}if(_0x1c552f&&typeof _0x1c552f==='object'){_0xd0d696[_0x309c6a]=deepMerge(_0x1c552f,_0x2bf7f3||{});continue;}_0x1c552f!==undefined&&(_0xd0d696[_0x309c6a]=_0x1c552f);}}return _0xd0d696;}const {Cartesian2:Cartesian2$1,FrameRateMonitor,PixelDatatype:PixelDatatype$1,PixelFormat:PixelFormat$1,Sampler:Sampler$1,Texture:Texture$1,TextureMagnificationFilter:TextureMagnificationFilter$1,TextureMinificationFilter:TextureMinificationFilter$1}=mars3d__namespace['Cesium'];class WindParticlesComputing{constructor(_0x382e7e,_0x5c1cfa,_0x129293,_0x1e387c,_0x1de6de){this[_0x36a4ff(-0x1ce,-0x216)]=_0x382e7e,this['options']=_0x129293,this[_0x36a4ff(-0x1ea,-0x1fc)]=_0x1e387c;function _0x380cc5(_0x418082,_0x4a2cb4){return _0x5ba876(_0x418082- -0xee,_0x4a2cb4);}this['windData']=_0x5c1cfa,this['frameRate']=0x3c,this['frameRateAdjustment']=0x1;const _0x2020ae={};_0x2020ae['scene']=_0x1de6de;function _0x36a4ff(_0x24487b,_0x4b0f56){return _0x259635(_0x4b0f56,_0x24487b- -0x732);}_0x2020ae[_0x36a4ff(-0x1a9,-0x1ff)]=0x1,_0x2020ae['quietPeriod']=0x0,this['frameRateMonitor']=new FrameRateMonitor(_0x2020ae),this[_0x36a4ff(-0x26b,-0x241)](),this['createWindTextures'](),this[_0x380cc5(0x72,0xee)](),this[_0x36a4ff(-0x230,-0x28d)]();}[_0x5ba876(0x10e,0x167)](){const _0x380e6d=()=>{function _0x58457b(_0x526a27,_0x20ca7e){return _0x17b6(_0x526a27-0x373,_0x20ca7e);}function _0x116076(_0x387c06,_0x4b0e45){return _0x17b6(_0x387c06- -0x187,_0x4b0e45);}this[_0x116076(0x20,-0x63)]['lastFramesPerSecond']>0x14&&(this[_0x58457b(0x4c9,0x554)]=this[_0x116076(0x20,-0xe)]['lastFramesPerSecond'],this[_0x116076(-0x8f,-0x119)]=0x3c/Math['max'](this['frameRate'],0x1));};_0x380e6d();function _0x474eb5(_0x1d8649,_0x3025aa){return _0x259635(_0x1d8649,_0x3025aa- -0x612);}const _0x108754=setInterval(_0x380e6d,0x3e8),_0x432bd0=this['destroy']['bind'](this);this[_0x474eb5(-0x14e,-0xfa)]=()=>{clearInterval(_0x108754),_0x432bd0();};}['createWindTextures'](){const _0x1c3ab6={};function _0xc8670e(_0x3c52c3,_0x31ee9e){return _0x5ba876(_0x3c52c3- -0x3e4,_0x31ee9e);}_0x1c3ab6['minificationFilter']=TextureMinificationFilter$1['LINEAR'],_0x1c3ab6['magnificationFilter']=TextureMagnificationFilter$1['LINEAR'];const _0x469bbf={'context':this[_0xc8670e(-0x239,-0x23f)],'width':this['windData']['width'],'height':this['windData']['height'],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1[_0xc8670e(-0x2a9,-0x311)],'flipY':this[_0xc8670e(-0x1e4,-0x245)]['flipY']??![],'sampler':new Sampler$1(_0x1c3ab6)};function _0x3c6f3a(_0x3f6ccb,_0x2195c4){return _0x5ba876(_0x3f6ccb- -0xa5,_0x2195c4);}this[_0xc8670e(-0x2b1,-0x25a)]={'U':new Texture$1({..._0x469bbf,'source':{'arrayBufferView':new Float32Array(this['windData']['u'][_0xc8670e(-0x2c6,-0x300)])}}),'V':new Texture$1({..._0x469bbf,'source':{'arrayBufferView':new Float32Array(this['windData']['v']['array'])}})};}['createParticlesTextures'](){const _0x3b7546={};_0x3b7546['minificationFilter']=TextureMinificationFilter$1[_0x3eb3c1(0x18b,0x14e)],_0x3b7546['magnificationFilter']=TextureMagnificationFilter$1['NEAREST'];function _0x51db7f(_0x1fcf9c,_0x50b32f){return _0x5ba876(_0x50b32f- -0x269,_0x1fcf9c);}function _0x3eb3c1(_0x1bff71,_0x3e345a){return _0x259635(_0x1bff71,_0x3e345a- -0x3f0);}const _0x5d3892={'context':this[_0x3eb3c1(0x18b,0x174)],'width':this[_0x51db7f(-0xa,-0x69)][_0x51db7f(-0x164,-0x16a)],'height':this['options'][_0x3eb3c1(0xcf,0xc8)],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options']['particlesTextureSize']*this[_0x3eb3c1(0x14d,0x1c9)][_0x51db7f(-0x1a7,-0x16a)]*0x4)[_0x51db7f(-0x5f,-0xd2)](0x0)},'sampler':new Sampler$1(_0x3b7546)};this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0x5d3892),'currentParticlesPosition':new Texture$1(_0x5d3892),'nextParticlesPosition':new Texture$1(_0x5d3892),'postProcessingPosition':new Texture$1(_0x5d3892),'particlesSpeed':new Texture$1(_0x5d3892)};}[_0x5ba876(0x1df,0x197)](){function _0x4ae1ff(_0x5590bf,_0x744ad8){return _0x259635(_0x5590bf,_0x744ad8- -0x726);}function _0x434c8a(_0x5d9d2e,_0x449aa9){return _0x5ba876(_0x449aa9-0xee,_0x5d9d2e);}Object['values'](this[_0x4ae1ff(-0x178,-0x191)])[_0x434c8a(0x27c,0x22a)](_0x45ecd4=>_0x45ecd4['destroy']());}['createComputingPrimitives'](){function _0x1262ab(_0x58d423,_0x5cb0ae){return _0x259635(_0x58d423,_0x5cb0ae- -0x670);}function _0x4728a0(_0x3e1314,_0x4e1ae0){return _0x259635(_0x3e1314,_0x4e1ae0- -0x534);}this[_0x1262ab(-0xe7,-0x127)]={'calculateSpeed':new CustomPrimitive({'commandType':_0x4728a0(-0x33,0x1b),'uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this[_0x4728a0(-0x9a,-0x48)]['V'],'uRange':()=>new Cartesian2$1(this[_0x4728a0(0x7e,0x68)]['u'][_0x1262ab(-0x151,-0xc9)],this['windData']['u']['max']),'vRange':()=>new Cartesian2$1(this['windData']['v']['min'],this['windData']['v']['max']),'speedRange':()=>new Cartesian2$1(this[_0x1262ab(-0x151,-0xd4)]['speed']['min'],this['windData']['speed']['max']),'currentParticlesPosition':()=>this['particlesTextures'][_0x1262ab(-0x18c,-0x144)],'speedScaleFactor':()=>{function _0x5579d9(_0x5a372f,_0x5349b1){return _0x1262ab(_0x5a372f,_0x5349b1- -0x45);}return(this[_0x5579d9(-0x154,-0x16d)]['pixelSize']+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this['frameRateAdjustment'],'dimension':()=>new Cartesian2$1(this['windData']['width'],this[_0x1262ab(-0x154,-0xd4)][_0x4728a0(-0xa3,-0x50)]),'minimum':()=>new Cartesian2$1(this['windData']['bounds'][_0x1262ab(-0xab,-0x101)],this[_0x4728a0(0xb2,0x68)]['bounds']['south']),'maximum':()=>new Cartesian2$1(this[_0x4728a0(0xaa,0x68)]['bounds']['east'],this[_0x1262ab(-0xa7,-0xd4)]['bounds'][_0x1262ab(-0xe6,-0x10e)])},'fragmentShaderSource':ShaderManager[_0x1262ab(-0x7d,-0xc7)](),'outputTexture':this['particlesTextures']['particlesSpeed'],'preExecute':()=>{const _0x3e4c50=this['particlesTextures']['previousParticlesPosition'];function _0x57bd55(_0x58893e,_0x5078e){return _0x1262ab(_0x58893e,_0x5078e-0x126);}function _0x3b5ea0(_0x41b165,_0x428fa7){return _0x1262ab(_0x428fa7,_0x41b165-0x4d7);}this['particlesTextures'][_0x57bd55(0x67,0x0)]=this[_0x57bd55(0x3d,0x4b)][_0x3b5ea0(0x393,0x41d)],this[_0x3b5ea0(0x3fc,0x448)]['currentParticlesPosition']=this['particlesTextures'][_0x57bd55(0x54,-0x23)],this['particlesTextures']['postProcessingPosition']=_0x3e4c50,this['primitives']['calculateSpeed']['commandToExecute']&&(this['primitives']['calculateSpeed']['commandToExecute'][_0x57bd55(0x85,0x66)]=this['particlesTextures'][_0x3b5ea0(0x363,0x2fc)]);},'isDynamic':()=>this[_0x1262ab(-0x4c,-0xb7)]['dynamic']}),'updatePosition':new CustomPrimitive({'commandType':_0x1262ab(-0x115,-0x121),'uniformMap':{'currentParticlesPosition':()=>this['particlesTextures'][_0x1262ab(-0x19f,-0x144)],'particlesSpeed':()=>this['particlesTextures'][_0x4728a0(-0x8f,-0x38)]},'fragmentShaderSource':ShaderManager['getUpdatePositionShader'](),'outputTexture':this[_0x4728a0(0x24,0x61)]['nextParticlesPosition'],'preExecute':()=>{function _0x336927(_0x47a58a,_0x41d2f7){return _0x1262ab(_0x41d2f7,_0x47a58a-0xfb);}function _0x25c64b(_0x1f6648,_0x563eeb){return _0x1262ab(_0x563eeb,_0x1f6648- -0x4);}this[_0x336927(-0x2c,-0x7b)][_0x25c64b(-0x11a,-0x9d)]['commandToExecute']&&(this['primitives']['updatePosition']['commandToExecute'][_0x25c64b(-0xc4,-0x4f)]=this[_0x25c64b(-0xdf,-0x77)][_0x25c64b(-0x169,-0x1bd)]);},'isDynamic':()=>this['options']['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':()=>this[_0x1262ab(-0x8d,-0xdb)]['nextParticlesPosition'],'particlesSpeed':()=>this['particlesTextures'][_0x4728a0(-0x8f,-0x38)],'lonRange':()=>this[_0x1262ab(-0x108,-0x128)]['lonRange'],'latRange':()=>this[_0x1262ab(-0x18f,-0x128)][_0x4728a0(-0x2b,-0x55)],'dataLonRange':()=>new Cartesian2$1(this['windData']['bounds']['west'],this['windData'][_0x4728a0(0x7d,-0x7)][_0x1262ab(-0x10a,-0xea)]),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0x1262ab(-0x16f,-0x143)]['south'],this['windData']['bounds'][_0x4728a0(-0x3b,0x2e)]),'randomCoefficient':function(){return Math['random']();},'dropRate':()=>this['options'][_0x4728a0(0x12,-0x4)],'dropRateBump':()=>this[_0x1262ab(-0x44,-0xb7)]['dropRateBump'],'useViewerBounds':()=>this[_0x4728a0(0x81,0x85)]['useViewerBounds']},'fragmentShaderSource':ShaderManager[_0x1262ab(-0x12f,-0x10a)](),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':()=>{function _0x263841(_0x237cdc,_0x5c09e1){return _0x1262ab(_0x5c09e1,_0x237cdc-0x5a1);}function _0x1361f3(_0x1fe7ad,_0x4c7e9b){return _0x4728a0(_0x1fe7ad,_0x4c7e9b-0x8d);}this['primitives']['postProcessingPosition'][_0x1361f3(0x13a,0xf2)]&&(this['primitives'][_0x1361f3(0xc,0x80)]['commandToExecute'][_0x263841(0x4e1,0x522)]=this['particlesTextures']['postProcessingPosition']);},'isDynamic':()=>this[_0x1262ab(-0xcf,-0xb7)]['dynamic']})};}['reCreateWindTextures'](){this[_0x5a29f3(-0x2b9,-0x258)]['U'][_0x4a771a(-0x52,-0xb1)]();function _0x4a771a(_0x3ab4f2,_0x2e2367){return _0x5ba876(_0x2e2367- -0x210,_0x3ab4f2);}function _0x5a29f3(_0x218c0e,_0x3f1553){return _0x5ba876(_0x218c0e- -0x3ec,_0x3f1553);}this[_0x4a771a(-0x9a,-0xdd)]['V']['destroy'](),this['createWindTextures']();}['updateWindData'](_0x277fc6){this['windData']=_0x277fc6,this['reCreateWindTextures']();}['updateOptions'](_0x378d4b){function _0xefc8ed(_0x1a8e86,_0x36f8ce){return _0x5ba876(_0x36f8ce-0x223,_0x1a8e86);}const _0xaba564=_0x378d4b['flipY']!==undefined&&_0x378d4b[_0x3a06bf(-0x11a,-0x140)]!==this['options']['flipY'];function _0x3a06bf(_0x43d321,_0x508cbe){return _0x259635(_0x43d321,_0x508cbe- -0x6a7);}this[_0x3a06bf(-0x71,-0xee)]=deepMerge(_0x378d4b,this['options']),_0xaba564&&this['reCreateWindTextures']();}['processWindData'](_0x24273d){const {array:_0x4b51af}=_0x24273d;let {min:_0x3c36a8,max:_0x24a6b0}=_0x24273d;const _0x5595f8=new Float32Array(_0x4b51af[_0x97161(-0x2c4,-0x253)]);_0x3c36a8===undefined&&(console['warn'](_0x50a378(0x532,0x53b)),_0x3c36a8=Math[_0x97161(-0x151,-0x1aa)](..._0x4b51af));_0x24a6b0===undefined&&(console[_0x97161(-0x238,-0x1b2)]('max\x20is\x20undefined,\x20calculate\x20max'),_0x24a6b0=Math['max'](..._0x4b51af));const _0x5c272f=Math['max'](Math[_0x97161(-0x225,-0x21b)](_0x3c36a8),Math['abs'](_0x24a6b0));for(let _0x345ce0=0x0;_0x345ce0<_0x4b51af[_0x50a378(0x46b,0x4dc)];_0x345ce0++){const _0x4095ee=_0x4b51af[_0x345ce0]/_0x5c272f;_0x5595f8[_0x345ce0]=_0x4095ee;}function _0x50a378(_0x5da71a,_0x4e9bf4){return _0x259635(_0x5da71a,_0x4e9bf4- -0x22);}function _0x97161(_0x14bba0,_0x4b5f35){return _0x5ba876(_0x4b5f35- -0x398,_0x14bba0);}return _0x5595f8;}['destroy'](){function _0x9af3a5(_0x4186c7,_0x5cebbf){return _0x259635(_0x4186c7,_0x5cebbf- -0x388);}function _0x24e231(_0x3fcf9b,_0x594771){return _0x259635(_0x3fcf9b,_0x594771- -0x781);}Object[_0x9af3a5(0x243,0x227)](this[_0x24e231(-0x2ea,-0x295)])['forEach'](_0x507cea=>_0x507cea['destroy']()),Object['values'](this['particlesTextures'])[_0x24e231(-0x22a,-0x28c)](_0x3f61c1=>_0x3f61c1['destroy']()),Object['values'](this['primitives'])[_0x24e231(-0x22e,-0x28c)](_0x30be14=>_0x30be14[_0x9af3a5(0x1d0,0x190)]()),this['frameRateMonitor'][_0x9af3a5(0x127,0x190)]();}}function _0x42eb(){const _0x8fba67=['speedRate','1151508rSQjFN','bind','preExecute','remove','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a','pow','particlesTextureSize','Cartesian2','ONE_MINUS_SRC_ALPHA','frameTime','EventType','toRadians','max','sqrt','getUVByXY','processWindData','grid','defineProperty','Log','requestAnimationFrame','enabled','initFrameRate','fromGeometry','floor','_showHook','_randomParticle','_speedRate','canvas','visibility','lat','mode','873MvNVca','postMessage','changed','_mountedHook','fixedHeight','frameRateAdjustment','array','tlat','UNSIGNED_INT','blending','_removedHook','lineWidth','south','viewport','latRange','lighter','segments','_updateIng','_bilinearInterpolation','height','addEventListener','OPAQUE','vertexArray','MAX_VALUE','clearCommand','_pointerEvents','rows','windTextures','clientWidth','clearFramebuffers','speed','colors','lonRange','40035eqyAEc','width','FLOAT','forEach','show','127722WplVmg','blendFuncSource','colorTable','worker','createRawRenderState','particlesSpeed','DomUtil','length','segmentsColor','segmentsDepth','moveTo','createComputingPrimitives','setDate','shaderProgram','vmax','createRenderingTextures','textures','dynamic','attributeLocations','21cfWnbG','nextParticlesPosition','geometry','getDefaultRenderState','primitiveType','SRC_ALPHA','tlng','green','update','atan2','umin','createColorTableTexture','_map','value','destroy','createParticlesTextures','Rectangle','cancelAnimationFrame','mars3d-canvasWind','fragmentShaderSource','onParticlesTextureSizeChange','Math','scene','getDataAtLonLat','alt','updateOptions','_onMouseDownEvent','createPrimitives','layer','postProcessingPosition','sources','_calc_speedRate','xmax','Cesium','currentParticlesPosition','bounds','getSegmentDrawVertexShader','24872ufNQDu','dropRate','beginPath','create','_updateIng2','frameRate','commandList','abs','clientHeight','type','windField','updateViewerParameters','UNSIGNED_BYTE','off','_drawLines','NEAREST','morphComplete','componentsPerAttribute','globalAlpha','container','cols','maxAge','pixelSize','_setOptionsHook','canvasWidth','viewerParameters','primitives','previousParticlesPosition','createCommand','computing','strokeStyle','particles','Compute','fill','mouse_down','_animateFrame','ymax','requestRender','_createCanvas','LayerUtil','prototype','pixelFormat','createRenderingFramebuffers','updatePosition','udata','lng','min\x20is\x20undefined,\x20calculate\x20min','getSegmentDrawFragmentShader','color','80452pxbzxx','rendering','north','LINEAR','context','isDynamic','getPostProcessingPositionShader','flipY','keys','age','lineLength','172641QpHKGy','persists','logInfo','vertexShaderSource','west','sin','cartesianToCartographic','owner','normal','mouseDown','mouseHidden','data','framebuffer','style','canvasContext','depthTest','_maxAge','ymin','__esModule','createSegmentsGeometry','applyViewerParameters','none','setData','fromDegrees','willReadFrequently','ellipsoid','frameRateMonitor','east','_onMapWhellEvent','pointerEvents','samplingWindow','round','zIndex','xmin','_calcUV','left','CLAMP_TO_EDGE','rectangle','SceneMode','minificationFilter','_onMouseUpEvent','isPointVisible','particlesTextures','_tomap','blue','destroyParticlesTextures','commandToExecute','particlesNumber','positionWC','windData','vmin','globe','warn','_canvasParticles','stroke','mouse_move','2110745qnidZq','refreshTimer','default','pass','min','bindEvent','getCalculateSpeedShader','RGBA','clear','log','stringify','wrapS','values','outputTexture','uniformMap','getUVByPoint','_addedHook','changeOptions','_onMouseMoveEvent','latitude','drawingBufferHeight','push','options','STATIC_DRAW','particleSystem','resize','ColorRamp','framebuffers','call','add','mouseMove','fromCssColorString','rawRenderState','camera','_colorRamp'];_0x42eb=function(){return _0x8fba67;};return _0x42eb();}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace['Cesium'];class WindParticlesRendering{constructor(_0x4ea07e,_0x1d0507,_0x43c416,_0x468341){this['context']=_0x4ea07e,this[_0x5c2cba(-0x188,-0x1f7)]=_0x1d0507,this[_0x5b4113(-0x2de,-0x27e)]=_0x43c416;function _0x5c2cba(_0x43670f,_0x49c9d6){return _0x259635(_0x43670f,_0x49c9d6- -0x7b0);}this['computing']=_0x468341;(typeof this['options']['particlesTextureSize']!=='number'||this['options']['particlesTextureSize']<=0x0)&&(console['error']('Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.'),this['options'][_0x5c2cba(-0x319,-0x2f8)]=0x100);function _0x5b4113(_0x35d7ca,_0x2c36ee){return _0x259635(_0x35d7ca,_0x2c36ee- -0x7c6);}this['colorTable']=this['createColorTableTexture'](),this[_0x5c2cba(-0x2c0,-0x2a9)]=this[_0x5b4113(-0x2a7,-0x2c0)](),this['framebuffers']=this[_0x5b4113(-0x219,-0x26d)](),this['primitives']=this[_0x5c2cba(-0x23a,-0x28b)]();}[_0x259635(0x512,0x506)](){const _0x42ba3c={};_0x42ba3c['context']=this['context'],_0x42ba3c['width']=this[_0x1fdfb4(0x2d2,0x2fe)]['drawingBufferWidth'],_0x42ba3c[_0x32d320(-0x61,-0xb7)]=this[_0x1fdfb4(0x384,0x2fe)][_0x1fdfb4(0x307,0x351)],_0x42ba3c[_0x32d320(0x13,0x7d)]=PixelFormat['RGBA'];function _0x32d320(_0x31de9e,_0x333676){return _0x5ba876(_0x31de9e- -0x18c,_0x333676);}_0x42ba3c['pixelDatatype']=PixelDatatype[_0x1fdfb4(0x31f,0x2d5)];const _0x57d6ba=_0x42ba3c,_0x350afd={};_0x350afd['context']=this['context'],_0x350afd[_0x1fdfb4(0x293,0x28d)]=this['context']['drawingBufferWidth'];function _0x1fdfb4(_0x44f366,_0x38a1b4){return _0x259635(_0x44f366,_0x38a1b4- -0x266);}_0x350afd['height']=this[_0x1fdfb4(0x349,0x2fe)][_0x1fdfb4(0x36b,0x351)],_0x350afd['pixelFormat']=PixelFormat['DEPTH_COMPONENT'],_0x350afd['pixelDatatype']=PixelDatatype[_0x32d320(-0x6c,-0xef)];const _0x2b8c26=_0x350afd;return{'segmentsColor':new Texture(_0x57d6ba),'segmentsDepth':new Texture(_0x2b8c26)};}['createRenderingFramebuffers'](){const _0x552ab9={};_0x552ab9['context']=this[_0xdb588e(0x142,0x112)];function _0x5e7b44(_0x1ffcdf,_0x551812){return _0x259635(_0x1ffcdf,_0x551812- -0x26f);}_0x552ab9['colorTextures']=[this['textures'][_0x5e7b44(0x315,0x290)]];function _0xdb588e(_0x2601fb,_0x23783e){return _0x5ba876(_0x2601fb- -0x69,_0x23783e);}return _0x552ab9['depthTexture']=this[_0x5e7b44(0x2bd,0x298)][_0x5e7b44(0x28a,0x291)],{'segments':new Framebuffer(_0x552ab9)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x148a26=>{_0x148a26['destroy']();});}[_0x259635(0x506,0x515)](){const _0x400b53=new Float32Array(this[_0x3be0e1(-0x113,-0x13c)]['colors']['flatMap'](_0x1df3d4=>{function _0x5d6840(_0x3541e8,_0x45fed6){return _0x3be0e1(_0x45fed6-0x4b2,_0x3541e8);}const _0x5bfa6d=Color$1[_0x5d6840(0x339,0x3a8)](_0x1df3d4);function _0x496779(_0x28e3a7,_0x103f02){return _0x3be0e1(_0x28e3a7-0x2e7,_0x103f02);}return[_0x5bfa6d['red'],_0x5bfa6d[_0x5d6840(0x2d5,0x2f7)],_0x5bfa6d[_0x496779(0x1b2,0x197)],_0x5bfa6d['alpha']];}));function _0x3b69b7(_0x5ed4c7,_0x4dacc0){return _0x259635(_0x4dacc0,_0x5ed4c7- -0x54b);}function _0x3be0e1(_0x56b03a,_0x3fdc6e){return _0x259635(_0x3fdc6e,_0x56b03a- -0x6cc);}const _0xefa5e1={};return _0xefa5e1[_0x3be0e1(-0x13a,-0xe7)]=TextureMinificationFilter[_0x3be0e1(-0x169,-0xfe)],_0xefa5e1['magnificationFilter']=TextureMagnificationFilter['LINEAR'],_0xefa5e1[_0x3b69b7(0x63,0x18)]=TextureWrap[_0x3be0e1(-0x13d,-0x180)],_0xefa5e1['wrapT']=TextureWrap['CLAMP_TO_EDGE'],new Texture({'context':this[_0x3be0e1(-0x168,-0x1b0)],'width':this['options']['colors']['length'],'height':0x1,'pixelFormat':PixelFormat[_0x3b69b7(0x5f,-0x10)],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0xefa5e1),'source':{'width':this[_0x3b69b7(0x6e,0x46)][_0x3be0e1(-0x1dc,-0x15c)]['length'],'height':0x1,'arrayBufferView':_0x400b53}});}['createSegmentsGeometry'](){const _0x2b67ee=0x4,_0x113b44=this['options']['particlesTextureSize'];let _0x363389=[];for(let _0x2d2c1d=0x0;_0x2d2c1d<_0x113b44;_0x2d2c1d++){for(let _0x4d290e=0x0;_0x4d290e<_0x113b44;_0x4d290e++){for(let _0x7e711b=0x0;_0x7e711b<_0x2b67ee;_0x7e711b++){_0x363389['push'](_0x2d2c1d/_0x113b44),_0x363389['push'](_0x4d290e/_0x113b44);}}}_0x363389=new Float32Array(_0x363389);const _0x11e4e1=this['options'][_0x425a3a(0x4c7,0x4ae)]**0x2;let _0x54e592=[];for(let _0x272755=0x0;_0x272755<_0x11e4e1;_0x272755++){_0x54e592['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x54e592=new Float32Array(_0x54e592);let _0x95855b=[];for(let _0xde36ec=0x0,_0x577dbe=0x0;_0xde36ec<_0x11e4e1;_0xde36ec++){_0x95855b['push'](_0x577dbe+0x0,_0x577dbe+0x1,_0x577dbe+0x2,_0x577dbe+0x2,_0x577dbe+0x1,_0x577dbe+0x3),_0x577dbe+=_0x2b67ee;}_0x95855b=new Uint32Array(_0x95855b);const _0x5dc57f={};_0x5dc57f['componentDatatype']=ComponentDatatype['FLOAT'],_0x5dc57f[_0x42fd17(0x6a,0xeb)]=0x2,_0x5dc57f['values']=_0x363389;const _0x1db07d={};_0x1db07d['componentDatatype']=ComponentDatatype[_0x42fd17(0x1e,0x6d)],_0x1db07d['componentsPerAttribute']=0x3;function _0x425a3a(_0x58e84c,_0x26c81f){return _0x259635(_0x58e84c,_0x26c81f- -0xa);}function _0x42fd17(_0x3b0a18,_0x38bf6f){return _0x5ba876(_0x3b0a18- -0x11d,_0x38bf6f);}_0x1db07d['values']=_0x54e592;const _0x507225=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x5dc57f),'normal':new GeometryAttribute(_0x1db07d)}),'indices':_0x95855b});return _0x507225;}['createRawRenderState'](_0x39182a){const _0x134de7={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x39182a};function _0x3d0b71(_0x34ce1c,_0x2d13a7){return _0x259635(_0x34ce1c,_0x2d13a7- -0x313);}return Appearance[_0x3d0b71(0x1bc,0x1fa)](!![],![],_0x134de7);}['createPrimitives'](){const _0x1ad51f={};_0x1ad51f['st']=0x0,_0x1ad51f[_0x4ae1f4(0x14d,0xe5)]=0x1;const _0x51c570={};_0x51c570['enabled']=!![];function _0x5ba460(_0x5c6631,_0x59c86a){return _0x259635(_0x59c86a,_0x5c6631- -0x19c);}const _0x524e4e={};_0x524e4e[_0x5ba460(0x32a,0x2ce)]=!![],_0x524e4e['blendEquation']=WebGLRenderingContext['FUNC_ADD'],_0x524e4e[_0x5ba460(0x35c,0x3da)]=WebGLRenderingContext[_0x4ae1f4(0xe9,0x13f)],_0x524e4e['blendFuncDestination']=WebGLRenderingContext[_0x4ae1f4(0x94,0x18)];const _0x5ccddc={};function _0x4ae1f4(_0x37aeb4,_0x2ce09a){return _0x5ba876(_0x37aeb4- -0x6d,_0x2ce09a);}_0x5ccddc[_0x5ba460(0x342,0x36b)]=undefined,_0x5ccddc[_0x4ae1f4(0x154,0x175)]=_0x51c570,_0x5ccddc['depthMask']=!![],_0x5ccddc[_0x5ba460(0x33e,0x3be)]=_0x524e4e;const _0x15eadc=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x1ad51f,'geometry':this[_0x4ae1f4(0x158,0x12b)](),'primitiveType':PrimitiveType['TRIANGLES'],'uniformMap':{'previousParticlesPosition':()=>this[_0x5ba460(0x3b0,0x3a0)]['particlesTextures'][_0x5ba460(0x3ae,0x3a4)],'currentParticlesPosition':()=>this['computing'][_0x4ae1f4(0x16f,0xe8)][_0x5ba460(0x390,0x340)],'postProcessingPosition':()=>this['computing'][_0x5ba460(0x3f9,0x43c)]['postProcessingPosition'],'particlesSpeed':()=>this['computing']['particlesTextures']['particlesSpeed'],'frameRateAdjustment':()=>this['computing']['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{function _0x3bf7e5(_0xa90fe7,_0xdfbd52){return _0x4ae1f4(_0xa90fe7- -0x63,_0xdfbd52);}function _0x42086d(_0x5475fb,_0x2b84fd){return _0x4ae1f4(_0x5475fb-0x82,_0x2b84fd);}var _0x135a83,_0x2cb7ee;const _0x4cb380=new Cartesian2(((_0x135a83=this[_0x3bf7e5(0x130,0x1b5)]['domain'])===null||_0x135a83===void 0x0?void 0x0:_0x135a83['min'])??this['computing']['windData']['speed']['min'],((_0x2cb7ee=this[_0x42086d(0x215,0x1b8)]['domain'])===null||_0x2cb7ee===void 0x0?void 0x0:_0x2cb7ee['max'])??this[_0x42086d(0x1a8,0x20e)]['windData'][_0x42086d(0x14b,0x131)][_0x3bf7e5(0x35,0x4f)]);return _0x4cb380;},'displayRange':()=>{var _0x1e5ec2,_0x511d23;function _0x30202f(_0x3572a4,_0x238908){return _0x5ba460(_0x238908- -0x351,_0x3572a4);}function _0x311cad(_0x454097,_0x5500db){return _0x4ae1f4(_0x5500db-0x3e3,_0x454097);}const _0x33318f=new Cartesian2(((_0x1e5ec2=this['options']['displayRange'])===null||_0x1e5ec2===void 0x0?void 0x0:_0x1e5ec2['min'])??this['computing'][_0x30202f(0x52,0xaf)]['speed'][_0x30202f(0xd9,0xba)],((_0x511d23=this['options']['displayRange'])===null||_0x511d23===void 0x0?void 0x0:_0x511d23[_0x30202f(-0x2e,-0x2f)])??this['computing'][_0x30202f(0x125,0xaf)]['speed']['max']);return _0x33318f;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x4ae1f4(0x13e,0x17b)]['drawingBufferWidth']/this[_0x4ae1f4(0x13e,0x197)][_0x4ae1f4(0x191,0x112)],'pixelSize':()=>this[_0x5ba460(0x3ac,0x409)][_0x5ba460(0x3a9,0x417)],'lineWidth':()=>{function _0x5704db(_0x47b0e2,_0x3c551c){return _0x5ba460(_0x47b0e2- -0x342,_0x3c551c);}const _0x1db54d={};_0x1db54d[_0x31df9a(-0x1c8,-0x167)]=0x1,_0x1db54d['max']=0x2;function _0x31df9a(_0x2897a9,_0x33d610){return _0x4ae1f4(_0x33d610- -0x2e8,_0x2897a9);}const _0xae1389=this['options'][_0x31df9a(-0x202,-0x232)]||_0x1db54d;return new Cartesian2(_0xae1389['min'],_0xae1389[_0x5704db(-0x20,-0x3a)]);},'lineLength':()=>{const _0x15c00c={};_0x15c00c[_0xd629b5(-0x54,-0xbc)]=0x14,_0x15c00c[_0xd629b5(-0x13d,-0x109)]=0x64;function _0xd629b5(_0x27bfd8,_0xca2217){return _0x4ae1f4(_0x27bfd8- -0x1d5,_0xca2217);}function _0x584b66(_0x17f18b,_0x3d06f6){return _0x5ba460(_0x17f18b- -0x61c,_0x3d06f6);}const _0x3afd4f=this[_0x584b66(-0x1ff,-0x17e)][_0xd629b5(-0x91,-0xeb)]||_0x15c00c;return new Cartesian2(_0x3afd4f['min'],_0x3afd4f['max']);},'is3D':()=>this[_0x5ba460(0x3ac,0x3d2)]['sceneMode']===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this[_0x4ae1f4(0xe1,0x152)][_0x4ae1f4(0xda,0xae)]},'vertexShaderSource':ShaderManager[_0x4ae1f4(0x108,0x8c)](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this[_0x4ae1f4(0xd5,0x106)](_0x5ccddc)}),_0x4f67ea={};return _0x4f67ea['segments']=_0x15eadc,_0x4f67ea;}[_0x259635(0x55c,0x51e)](){const _0x5ab643=this['createSegmentsGeometry']();this['primitives'][_0x4dbbec(-0x19a,-0x1a7)][_0x5e9eb9(0x3a4,0x364)]=_0x5ab643;const _0x499599={};_0x499599[_0x5e9eb9(0x3ff,0x3bc)]=this[_0x4dbbec(-0x117,-0x133)];function _0x5e9eb9(_0x28a398,_0x20304b){return _0x5ba876(_0x20304b-0x211,_0x28a398);}_0x499599[_0x5e9eb9(0x3dc,0x364)]=_0x5ab643;function _0x4dbbec(_0x47fe85,_0x49ea84){return _0x5ba876(_0x47fe85- -0x2c2,_0x49ea84);}_0x499599[_0x4dbbec(-0x172,-0x106)]=this[_0x5e9eb9(0x426,0x3a1)][_0x4dbbec(-0x19a,-0x163)][_0x4dbbec(-0x172,-0x15f)],_0x499599['bufferUsage']=BufferUsage['STATIC_DRAW'];const _0x2cee5a=VertexArray[_0x5e9eb9(0x311,0x320)](_0x499599);this['primitives'][_0x5e9eb9(0x308,0x339)]['commandToExecute']&&(this['primitives']['segments']['commandToExecute']['vertexArray']=_0x2cee5a);}['onColorTableChange'](){this[_0x467391(-0x24a,-0x2ae)]['destroy']();function _0x467391(_0x1788cf,_0x2c2ae8){return _0x5ba876(_0x2c2ae8- -0x3ee,_0x1788cf);}function _0xe83e03(_0x328db2,_0x4db9ba){return _0x259635(_0x328db2,_0x4db9ba- -0x182);}this[_0x467391(-0x2ee,-0x2ae)]=this[_0xe83e03(0x333,0x393)]();}[_0x5ba876(0x16a,0x1e8)](_0x42b751){function _0x430d2e(_0x70f130,_0x2313e0){return _0x259635(_0x70f130,_0x2313e0- -0x56);}const _0xadd656=_0x42b751['colors']&&JSON['stringify'](_0x42b751[_0x430d2e(0x46c,0x49a)])!==JSON[_0x4082c6(0xee,0x9e)](this['options'][_0x4082c6(0x45,-0x1f)]);this[_0x4082c6(0xc0,0xaa)]=deepMerge(_0x42b751,this['options']);function _0x4082c6(_0x475704,_0xc4de5f){return _0x5ba876(_0xc4de5f- -0x156,_0x475704);}_0xadd656&&this['onColorTableChange']();}['destroy'](){Object['values'](this[_0x4ab28b(-0xfd,-0x177)])[_0x4ab28b(-0x27f,-0x240)](_0x220c70=>{_0x220c70['destroy']();});function _0xf9753c(_0x18f09b,_0x3e53ee){return _0x5ba876(_0x3e53ee-0x20,_0x18f09b);}Object['values'](this[_0xf9753c(0x18e,0x1b0)])[_0xf9753c(0x1b7,0x15c)](_0x49f69a=>{_0x49f69a['destroy']();});function _0x4ab28b(_0x278129,_0x569776){return _0x259635(_0x278129,_0x569776- -0x735);}this['colorTable'][_0x4ab28b(-0x1f3,-0x21d)]();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0x5ba876(0x172,0x139)];class WindParticleSystem{constructor(_0x3a1349,_0x329a77,_0x493699,_0x2fdd24,_0x5b4ab7){function _0x4a19f9(_0x2b6c68,_0x356860){return _0x5ba876(_0x2b6c68- -0x3d0,_0x356860);}this['context']=_0x3a1349;function _0x358e07(_0x15de93,_0x2ee9a8){return _0x5ba876(_0x2ee9a8-0x249,_0x15de93);}this['options']=_0x493699,this[_0x358e07(0x402,0x3d8)]=_0x2fdd24,this['computing']=new WindParticlesComputing(_0x3a1349,_0x329a77,_0x493699,_0x2fdd24,_0x5b4ab7),this[_0x4a19f9(-0x228,-0x293)]=new WindParticlesRendering(_0x3a1349,_0x493699,_0x2fdd24,this['computing']),this['clearFramebuffers']();}['getPrimitives'](){function _0xc1fe62(_0x37c2fe,_0x16612a){return _0x259635(_0x16612a,_0x37c2fe- -0x6ca);}function _0x350e4e(_0x39ab50,_0x256658){return _0x5ba876(_0x39ab50- -0x139,_0x256658);}const _0x24ad2c=[this['computing'][_0x350e4e(0x57,0x4f)]['calculateSpeed'],this[_0xc1fe62(-0x17e,-0x146)]['primitives'][_0xc1fe62(-0x170,-0x15b)],this['computing']['primitives']['postProcessingPosition'],this['rendering'][_0x350e4e(0x57,0x86)]['segments']];return _0x24ad2c;}[_0x259635(0x545,0x4ee)](){function _0x41a3d8(_0x55ce8,_0x32f9a8){return _0x5ba876(_0x55ce8-0x12c,_0x32f9a8);}const _0x4ec1ab=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass[_0x41a3d8(0x259,0x20b)]});function _0x58144b(_0x4cd07e,_0x591d46){return _0x5ba876(_0x4cd07e-0x2c3,_0x591d46);}Object[_0x41a3d8(0x2db,0x35f)](this[_0x58144b(0x46b,0x4ad)]['framebuffers'])['forEach'](_0x5915d3=>{_0x4ec1ab['framebuffer']=this['rendering']['framebuffers'][_0x5915d3],_0x4ec1ab['execute'](this['context']);});}[_0x5ba876(0x1fb,0x17c)](_0x4ae9e5){let _0x25edf6=![];function _0x109ad7(_0x2da48b,_0x9dc77a){return _0x5ba876(_0x9dc77a-0x3ac,_0x2da48b);}_0x4ae9e5[_0x39993a(0x23f,0x255)]&&this['options'][_0x109ad7(0x45f,0x4ab)]!==_0x4ae9e5['particlesTextureSize']&&(_0x25edf6=!![]);const _0x380505=deepMerge(_0x4ae9e5,this['options']);if(_0x380505['particlesTextureSize']<0x1)throw new Error('particlesTextureSize\x20must\x20be\x20greater\x20than\x200');function _0x39993a(_0x1f2ee2,_0x31122d){return _0x5ba876(_0x31122d-0x156,_0x1f2ee2);}this['options']=_0x380505,this['rendering']['updateOptions'](_0x4ae9e5),this['computing']['updateOptions'](_0x4ae9e5),_0x25edf6&&(this['computing']['destroyParticlesTextures'](),this['computing'][_0x39993a(0x26f,0x2b6)](),this['rendering']['onParticlesTextureSizeChange']());}[_0x259635(0x5fe,0x57f)](_0x2cb207){function _0xc896db(_0x3e68d7,_0x5372b4){return _0x259635(_0x3e68d7,_0x5372b4- -0xe5);}this[_0x2c37eb(0x32,-0x29)]=_0x2cb207,this[_0xc896db(0x4ca,0x467)]['viewerParameters']=_0x2cb207;function _0x2c37eb(_0x4a43d6,_0x52d5e9){return _0x5ba876(_0x52d5e9- -0x1b8,_0x4a43d6);}this['rendering']['viewerParameters']=_0x2cb207;}['destroy'](){this[_0x47b953(-0xe5,-0x81)]['destroy']();function _0x5e31f1(_0x47b9ac,_0x469546){return _0x5ba876(_0x469546- -0xeb,_0x47b9ac);}function _0x47b953(_0x5be734,_0x1dbf41){return _0x5ba876(_0x5be734- -0x278,_0x1dbf41);}this[_0x5e31f1(0x80,0xbd)][_0x5e31f1(0x43,0x74)]();}}const Cesium$1=mars3d__namespace[_0x5ba876(0x172,0x1c0)],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],_0x1c4f26={};_0x1c4f26['min']=0x1,_0x1c4f26['max']=0x2;const _0x490a47={};_0x490a47['min']=0x14,_0x490a47['max']=0x64;const _0x409da0={};_0x409da0['particlesTextureSize']=0x64,_0x409da0['fixedHeight']=0x0,_0x409da0[_0x5ba876(0x123,0x1a5)]=_0x1c4f26,_0x409da0['lineLength']=_0x490a47,_0x409da0['speedFactor']=0x1,_0x409da0['dropRate']=0.003,_0x409da0['dropRateBump']=0.001;function _0x5ba876(_0x59b3fe,_0x131f18){return _0x17b6(_0x59b3fe-0x25,_0x131f18);}_0x409da0['colors']=['rgb(206,255,255)'],_0x409da0['flipY']=![],_0x409da0[_0x5ba876(0x14f,0x1d8)]=!![];function _0x17b6(_0x292342,_0x5a694a){const _0x42eb16=_0x42eb();return _0x17b6=function(_0x17b61f,_0x3e9ed0){_0x17b61f=_0x17b61f-0xd9;let _0x5a0b1c=_0x42eb16[_0x17b61f];return _0x5a0b1c;},_0x17b6(_0x292342,_0x5a694a);}const DEF_OPTIONS=_0x409da0;class WindLayer extends BaseLayer$1{constructor(_0x54b600={}){_0x54b600={...DEF_OPTIONS,..._0x54b600},super(_0x54b600),this['_setOptionsHook'](_0x54b600,_0x54b600);}get[_0x259635(0x4bd,0x526)](){return this['primitives'];}get[_0x5ba876(0x1bd,0x13d)](){function _0xa18af7(_0x586452,_0x5b58f7){return _0x259635(_0x5b58f7,_0x586452- -0x75e);}function _0x158cf1(_0x32b9b0,_0x2cc7d3){return _0x259635(_0x2cc7d3,_0x32b9b0- -0x3bf);}return this[_0x158cf1(0x1fa,0x181)][_0xa18af7(-0x1e8,-0x17d)];}set['data'](_0x51a088){this['options'][_0x30c431(0x4e5,0x4ce)]=_0x51a088;function _0x30c431(_0x458332,_0x5cac48){return _0x259635(_0x5cac48,_0x458332- -0x91);}function _0x33c5a4(_0x3de7b6,_0x3e7aa3){return _0x259635(_0x3de7b6,_0x3e7aa3- -0x67c);}this[_0x30c431(0x4f0,0x53f)](_0x51a088);}get['colors'](){function _0x19ea73(_0x36c14f,_0x4be91f){return _0x5ba876(_0x4be91f-0x361,_0x36c14f);}return this[_0x19ea73(0x5b2,0x561)]['colors'];}set[_0x5ba876(0x137,0x109)](_0x437f5b){function _0x7138f3(_0x53f10a,_0x1b013a){return _0x259635(_0x53f10a,_0x1b013a- -0x372);}this[_0x7138f3(0x20e,0x247)]['colors']=_0x437f5b;function _0x198364(_0x20a920,_0x26466e){return _0x259635(_0x20a920,_0x26466e- -0x457);}const _0x388dc0={};_0x388dc0[_0x198364(0x10d,0x99)]=_0x437f5b,this['_setOptionsHook'](this['options'],_0x388dc0);}[_0x5ba876(0x111,0x132)](_0x29f7ae){function _0x44176b(_0x1efd60,_0x43f766){return _0x259635(_0x43f766,_0x1efd60- -0x676);}_0x29f7ae?this['_addedHook']():this[_0x44176b(-0x19b,-0x128)]();}[_0x259635(0x489,0x4d4)](){}['_addedHook'](){this[_0x2f8923(0x3d1,0x390)]=this['_map']['scene'],this[_0x2f8923(0x475,0x495)]=this[_0xbf03e1(0x210,0x18f)]['camera'];function _0xbf03e1(_0x58af41,_0x2dd492){return _0x259635(_0x2dd492,_0x58af41- -0x306);}this[_0xbf03e1(0x2b3,0x2f6)][_0x2f8923(0x427,0x42f)]&&this[_0x2f8923(0x432,0x4b2)](this['options'][_0xbf03e1(0x270,0x2a7)]);if(!this['windData']||!this[_0x2f8923(0x3a7,0x33e)])return;this['viewerParameters']={'lonRange':new Cesium$1[(_0xbf03e1(0x1b3,0x14c))](-0xb4,0xb4),'latRange':new Cesium$1['Cartesian2'](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this['scene']['mode']},this['updateViewerParameters'](),this[_0xbf03e1(0x2b5,0x2f8)]=new WindParticleSystem(this[_0x2f8923(0x3d1,0x3ab)]['context'],this[_0xbf03e1(0x296,0x2a9)],this['options'],this['viewerParameters'],this[_0x2f8923(0x3d1,0x3ad)]),this[_0x2f8923(0x3fa,0x421)]=this[_0x2f8923(0x46c,0x3fa)]['getPrimitives'](),this['primitives']['forEach'](_0x519329=>{function _0xba55ee(_0x133704,_0x5d6914){return _0x2f8923(_0x133704- -0x40,_0x5d6914);}function _0x3f1ecf(_0x22da30,_0x3f02ec){return _0xbf03e1(_0x22da30- -0x4be,_0x3f02ec);}this[_0x3f1ecf(-0x2a4,-0x29c)][_0x3f1ecf(-0x27b,-0x29f)][_0x3f1ecf(-0x204,-0x183)](_0x519329);}),this['camera']['percentageChanged']=0.01,this['camera'][_0xbf03e1(0x1cd,0x23c)][_0xbf03e1(0x1df,0x189)](this[_0xbf03e1(0x234,0x1fd)]['bind'](this));function _0x2f8923(_0x5c8abe,_0x82710b){return _0x259635(_0x82710b,_0x5c8abe- -0x14f);}this['scene'][_0xbf03e1(0x239,0x29f)][_0xbf03e1(0x1df,0x22f)](this[_0xbf03e1(0x234,0x285)]['bind'](this)),window['addEventListener']('resize',this['updateViewerParameters'][_0xbf03e1(0x2c2,0x250)](this));}['_removedHook'](){function _0x32c756(_0x4cad63,_0x38cdee){return _0x259635(_0x4cad63,_0x38cdee- -0x61c);}function _0x60515e(_0x210ce1,_0x55636e){return _0x259635(_0x210ce1,_0x55636e- -0x33b);}this['camera'][_0x60515e(0x1e5,0x198)]['removeEventListener'](this['updateViewerParameters']['bind'](this)),this['scene'][_0x60515e(0x24f,0x204)]['removeEventListener'](this[_0x32c756(-0xbd,-0xe2)]['bind'](this)),window['removeEventListener'](_0x60515e(0x243,0x281),this['updateViewerParameters']['bind'](this)),this['primitives']&&(this['primitives']['forEach'](_0x324722=>{function _0x11cf44(_0x1bb997,_0x5966d3){return _0x32c756(_0x5966d3,_0x1bb997-0x1eb);}function _0x133f59(_0x2d38e5,_0x34d04a){return _0x60515e(_0x34d04a,_0x2d38e5- -0x215);}this['scene'][_0x11cf44(0x118,0x16e)][_0x11cf44(0x199,0x175)](_0x324722);}),delete this['primitives']),this[_0x32c756(-0x48,-0x61)]&&(this[_0x32c756(-0xaf,-0x61)]['destroy'](),delete this['particleSystem']);}['setData'](_0x51ed13,_0x349941){this['windData']=this['processWindData'](_0x51ed13);if(_0x349941){this['_removedHook'](),this[_0x4088ab(0x394,0x385)]();return;}function _0x4088ab(_0x25bb96,_0x2100db){return _0x259635(_0x25bb96,_0x2100db- -0x22e);}function _0x37ba76(_0x47347b,_0x12d014){return _0x259635(_0x47347b,_0x12d014- -0x15a);}this[_0x37ba76(0x409,0x461)]?(this[_0x4088ab(0x3ab,0x38d)]['computing']['updateWindData'](this['windData']),this['scene'][_0x37ba76(0x3cc,0x3fa)]()):this['_addedHook']();}['_setOptionsHook'](_0x1e75f9,_0x3af7b4){this['particleSystem']&&(this['particleSystem']['changeOptions'](_0x3af7b4),this['scene']['requestRender']());}[_0x259635(0x472,0x4c1)](_0x369a44){var _0x5a91c2,_0x2c7a49;const _0x22ca8a={..._0x369a44};function _0x189e71(_0x444ee0,_0x20bb5d){return _0x259635(_0x444ee0,_0x20bb5d- -0x3f9);}const _0x2e3b22=_0x22ca8a;!_0x2e3b22['height']&&_0x2e3b22['rows']&&(_0x2e3b22[_0x189e71(0x76,0xeb)]=_0x2e3b22[_0x189e71(0xb6,0xf2)]);function _0x6344be(_0x510869,_0x5e6866){return _0x5ba876(_0x5e6866-0x27,_0x510869);}!_0x2e3b22['width']&&_0x2e3b22['cols']&&(_0x2e3b22['width']=_0x2e3b22[_0x6344be(0x126,0x1b1)]);!_0x2e3b22[_0x189e71(0x165,0x134)]&&(_0x2e3b22['bounds']={'west':_0x2e3b22['xmin'],'south':_0x2e3b22['ymin'],'east':_0x2e3b22[_0x6344be(0x1fd,0x198)],'north':_0x2e3b22['ymax']});if(!_0x2e3b22['u']){const _0x27a6c3={};_0x27a6c3[_0x6344be(0xd8,0x145)]=_0x369a44[_0x189e71(0x148,0x162)],_0x27a6c3[_0x189e71(0x178,0x1ae)]=_0x369a44[_0x6344be(0x1d2,0x182)],_0x27a6c3[_0x6344be(0x186,0x12c)]=_0x369a44['umax'],_0x2e3b22['u']=_0x27a6c3;}if(!_0x2e3b22['v']){const _0x43e250={};_0x43e250[_0x6344be(0x15b,0x145)]=_0x369a44['vdata'],_0x43e250[_0x6344be(0x19c,0x215)]=_0x369a44[_0x189e71(0x120,0x1a4)],_0x43e250[_0x189e71(0x9e,0xc5)]=_0x369a44[_0x189e71(0x134,0x10c)],_0x2e3b22['v']=_0x43e250;}if(((_0x5a91c2=_0x2e3b22[_0x189e71(0x120,0xf6)])===null||_0x5a91c2===void 0x0?void 0x0:_0x5a91c2['min'])===undefined||((_0x2c7a49=_0x2e3b22['speed'])===null||_0x2c7a49===void 0x0?void 0x0:_0x2c7a49['max'])===undefined||_0x2e3b22[_0x189e71(0x8f,0xf6)]['array']===undefined){const _0x56f030={'array':new Float32Array(_0x2e3b22['u'][_0x6344be(0xd9,0x145)]['length']),'min':Number[_0x189e71(0xd5,0xef)],'max':Number['MIN_VALUE']};for(let _0x7b654e=0x0;_0x7b654e<_0x2e3b22['u'][_0x189e71(0x13e,0xde)][_0x189e71(0xa3,0x105)];_0x7b654e++){_0x56f030['array'][_0x7b654e]=Math['sqrt'](_0x2e3b22['u'][_0x6344be(0x128,0x145)][_0x7b654e]*_0x2e3b22['u'][_0x189e71(0xd4,0xde)][_0x7b654e]+_0x2e3b22['v']['array'][_0x7b654e]*_0x2e3b22['v']['array'][_0x7b654e]),_0x56f030[_0x6344be(0x1a4,0x145)][_0x7b654e]!==0x0&&(_0x56f030[_0x6344be(0x20c,0x215)]=Math['min'](_0x56f030[_0x6344be(0x1eb,0x215)],_0x56f030['array'][_0x7b654e]),_0x56f030['max']=Math['max'](_0x56f030['max'],_0x56f030['array'][_0x7b654e]));}_0x2e3b22['speed']=_0x56f030;}return _0x2e3b22;}['updateViewerParameters'](){var _0xbbd40;const _0x1c40c1=this[_0x36f9bb(0x3a2,0x317)];if(!_0x1c40c1)return;function _0x36f9bb(_0x13b5ab,_0x33dc38){return _0x5ba876(_0x13b5ab-0x23b,_0x33dc38);}const _0x20584b=_0x1c40c1['canvas'],_0x528832={};_0x528832['x']=0x0,_0x528832['y']=0x0;const _0x1ba87c={};function _0x42d717(_0xd1cda0,_0x58d04f){return _0x259635(_0x58d04f,_0xd1cda0- -0x610);}_0x1ba87c['x']=0x0,_0x1ba87c['y']=_0x20584b['clientHeight'];const _0x2563f9={};_0x2563f9['x']=_0x20584b['clientWidth'],_0x2563f9['y']=0x0;const _0x400964={};_0x400964['x']=_0x20584b[_0x42d717(-0x123,-0x104)],_0x400964['y']=_0x20584b['clientHeight'];const _0x470ca4=[_0x528832,_0x1ba87c,_0x2563f9,_0x400964];let _0x5b98f9=0xb4,_0x3f957f=-0xb4,_0x5244f4=0x5a,_0x3b300b=-0x5a,_0x4f11b4=![];for(const _0x412d0f of _0x470ca4){const _0x138d6a=_0x1c40c1['camera']['pickEllipsoid'](new Cesium$1['Cartesian2'](_0x412d0f['x'],_0x412d0f['y']),_0x1c40c1['globe'][_0x36f9bb(0x406,0x46d)]);if(!_0x138d6a){_0x4f11b4=!![];break;}const _0x11412f=_0x1c40c1[_0x36f9bb(0x420,0x3d5)]['ellipsoid'][_0x42d717(-0x9f,-0xcf)](_0x138d6a),_0x309f7b=Cesium$1['Math']['toDegrees'](_0x11412f['longitude']),_0x118314=Cesium$1['Math']['toDegrees'](_0x11412f[_0x42d717(-0x5a,-0x83)]);_0x5b98f9=Math['min'](_0x5b98f9,_0x309f7b),_0x3f957f=Math['max'](_0x3f957f,_0x309f7b),_0x5244f4=Math['min'](_0x5244f4,_0x118314),_0x3b300b=Math['max'](_0x3b300b,_0x118314);}if(!_0x4f11b4){const _0x56ba8e=new Cesium$1[(_0x42d717(-0x157,-0x1db))](Math['max'](this['windData'][_0x42d717(-0xe3,-0x124)]['west'],_0x5b98f9),Math['min'](this[_0x36f9bb(0x41e,0x471)]['bounds'][_0x36f9bb(0x408,0x389)],_0x3f957f)),_0x1d8ddf=new Cesium$1['Cartesian2'](Math[_0x36f9bb(0x340,0x300)](this['windData'][_0x42d717(-0xe3,-0xdf)]['south'],_0x5244f4),Math['min'](this['windData']['bounds'][_0x42d717(-0xae,-0x35)],_0x3b300b)),_0x402bd2=(_0x56ba8e['y']-_0x56ba8e['x'])*0.05,_0x233a67=(_0x1d8ddf['y']-_0x1d8ddf['x'])*0.05;_0x56ba8e['x']=Math[_0x36f9bb(0x340,0x2f0)](this[_0x42d717(-0x74,-0xaa)]['bounds'][_0x42d717(-0xa1,-0x56)],_0x56ba8e['x']-_0x402bd2),_0x56ba8e['y']=Math[_0x36f9bb(0x429,0x449)](this[_0x42d717(-0x74,-0xb2)]['bounds']['east'],_0x56ba8e['y']+_0x402bd2),_0x1d8ddf['x']=Math['max'](this[_0x42d717(-0x74,-0xde)][_0x36f9bb(0x3af,0x38b)][_0x42d717(-0x133,-0x1a1)],_0x1d8ddf['x']-_0x233a67),_0x1d8ddf['y']=Math['min'](this['windData']['bounds']['north'],_0x1d8ddf['y']+_0x233a67),this['viewerParameters'][_0x42d717(-0x11f,-0x19e)]=_0x56ba8e,this['viewerParameters']['latRange']=_0x1d8ddf;const _0x26b184=this['windData']['bounds']['east']-this[_0x42d717(-0x74,-0x54)][_0x42d717(-0xe3,-0x93)]['west'],_0x4318b2=this[_0x42d717(-0x74,-0x59)][_0x36f9bb(0x3af,0x3ea)]['north']-this[_0x42d717(-0x74,-0x4b)][_0x36f9bb(0x3af,0x347)]['south'],_0x37d77c=(_0x56ba8e['y']-_0x56ba8e['x'])/_0x26b184,_0x56af0c=(_0x1d8ddf['y']-_0x1d8ddf['x'])/_0x4318b2,_0x55a6ae=Math['min'](_0x37d77c,_0x56af0c),_0x22c52f=0x3e8*_0x55a6ae;_0x22c52f>0x0&&(this[_0x42d717(-0xc8,-0x103)]['pixelSize']=Math[_0x42d717(-0x152,-0x171)](0x0,Math['min'](0x3e8,_0x22c52f)));}this['viewerParameters']['sceneMode']=this['scene'][_0x42d717(-0x140,-0x150)],(_0xbbd40=this[_0x42d717(-0x55,-0x84)])===null||_0xbbd40===void 0x0||_0xbbd40[_0x42d717(-0x91,-0x5b)](this['viewerParameters']);}[_0x5ba876(0x168,0xf1)](_0x122ddb,_0x471c1b){const {bounds:_0x173105,width:_0x2ab400,height:_0x3ad637,u:_0x2d711f,v:_0x4cd318,speed:_0x5a9995}=this[_0x2e0021(0x51b,0x492)],{flipY:_0x2483d4}=this['options'];if(_0x122ddb<_0x173105['west']||_0x122ddb>_0x173105[_0x220942(0x17e,0x164)]||_0x471c1b<_0x173105['south']||_0x471c1b>_0x173105[_0x2e0021(0x46e,0x458)])return null;const _0x12fd7a=(_0x122ddb-_0x173105['west'])/(_0x173105['east']-_0x173105[_0x220942(0x173,0x14d)])*(_0x2ab400-0x1);let _0x4ab612=(_0x471c1b-_0x173105[_0x2e0021(0x399,0x3d3)])/(_0x173105['north']-_0x173105['south'])*(_0x3ad637-0x1);_0x2483d4&&(_0x4ab612=_0x3ad637-0x1-_0x4ab612);const _0x4945ff=Math['floor'](_0x12fd7a),_0x38d0b3=Math['floor'](_0x4ab612);function _0x220942(_0x5d747b,_0x443a33){return _0x5ba876(_0x443a33- -0x69,_0x5d747b);}const _0x540a9b=Math[_0x2e0021(0x355,0x3bf)](_0x12fd7a),_0x3b07db=Math[_0x2e0021(0x489,0x49d)](_0x540a9b+0x1,_0x2ab400-0x1),_0x6b36fb=Math['floor'](_0x4ab612),_0x2093aa=Math[_0x220942(0x19a,0x185)](_0x6b36fb+0x1,_0x3ad637-0x1),_0x3e8544=_0x12fd7a-_0x540a9b,_0x22f481=_0x4ab612-_0x6b36fb,_0x3176e7=_0x38d0b3*_0x2ab400+_0x4945ff,_0x4e523c=_0x6b36fb*_0x2ab400+_0x540a9b,_0x6e8b87=_0x6b36fb*_0x2ab400+_0x3b07db,_0x4aef87=_0x2093aa*_0x2ab400+_0x540a9b,_0x41d25b=_0x2093aa*_0x2ab400+_0x3b07db,_0x44259e=_0x2d711f['array'][_0x4e523c],_0x2b18c7=_0x2d711f['array'][_0x6e8b87],_0x873bb7=_0x2d711f[_0x2e0021(0x442,0x3cd)][_0x4aef87],_0x1a2737=_0x2d711f['array'][_0x41d25b],_0x14e5d6=(0x1-_0x3e8544)*(0x1-_0x22f481)*_0x44259e+_0x3e8544*(0x1-_0x22f481)*_0x2b18c7+(0x1-_0x3e8544)*_0x22f481*_0x873bb7+_0x3e8544*_0x22f481*_0x1a2737,_0x58a5cb=_0x4cd318[_0x2e0021(0x42d,0x3cd)][_0x4e523c],_0x248279=_0x4cd318[_0x220942(0xa8,0xb5)][_0x6e8b87],_0x47acf5=_0x4cd318['array'][_0x4aef87],_0x4c728e=_0x4cd318[_0x220942(0xe0,0xb5)][_0x41d25b],_0x49164a=(0x1-_0x3e8544)*(0x1-_0x22f481)*_0x58a5cb+_0x3e8544*(0x1-_0x22f481)*_0x248279+(0x1-_0x3e8544)*_0x22f481*_0x47acf5+_0x3e8544*_0x22f481*_0x4c728e,_0x2e046d=Math['sqrt'](_0x14e5d6*_0x14e5d6+_0x49164a*_0x49164a),_0x43461e={};_0x43461e['u']=_0x2d711f[_0x2e0021(0x442,0x3cd)][_0x3176e7],_0x43461e['v']=_0x4cd318['array'][_0x3176e7],_0x43461e['speed']=_0x5a9995['array'][_0x3176e7];const _0x1cd010={};_0x1cd010['u']=_0x14e5d6;function _0x2e0021(_0x2b51d2,_0x3eef3d){return _0x259635(_0x2b51d2,_0x3eef3d- -0x10a);}_0x1cd010['v']=_0x49164a,_0x1cd010['speed']=_0x2e046d;const _0x27f535={};return _0x27f535['original']=_0x43461e,_0x27f535['interpolated']=_0x1cd010,_0x27f535;}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this[_0x11811d(0x23b,0x1f1)]=null,this[_0x2e6262(-0x3,0x75)]=null,this[_0x11811d(0x1ef,0x174)]=null;function _0x11811d(_0x3fda90,_0xb527c0){return _0x259635(_0xb527c0,_0x3fda90- -0x321);}this['tlat']=null,this['age']=null;function _0x2e6262(_0x335163,_0x5b9e23){return _0x259635(_0x335163,_0x5b9e23- -0x45a);}this['speed']=null;}['destroy'](){for(const _0x3394e7 in this){delete this[_0x3394e7];}}}class CanvasWindField{constructor(_0x2ab94f){this['setOptions'](_0x2ab94f);}get['speedRate'](){return this['_speedRate'];}set[_0x5ba876(0x20d,0x288)](_0x50e5d0){function _0x3758f2(_0x53c065,_0x4fd2da){return _0x259635(_0x53c065,_0x4fd2da- -0x193);}this[_0x3758f2(0x35e,0x339)]=(0x64-(_0x50e5d0>0x63?0x63:_0x50e5d0))*0x64;function _0x59d798(_0x163a1a,_0x51098a){return _0x259635(_0x163a1a,_0x51098a- -0xa1);}this['_calc_speedRate']=[(this[_0x59d798(0x4f3,0x489)]-this['xmin'])/this[_0x3758f2(0x356,0x339)],(this['ymax']-this[_0x3758f2(0x3e9,0x3e9)])/this[_0x59d798(0x3a2,0x42b)]];}get[_0x5ba876(0x18b,0x193)](){function _0x437174(_0x84791,_0x12bf55){return _0x259635(_0x84791,_0x12bf55- -0x397);}return this[_0x437174(0x208,0x1e4)];}set[_0x5ba876(0x18b,0x1a7)](_0x16cc91){function _0x1da867(_0x52dd0d,_0x422a11){return _0x5ba876(_0x422a11- -0x132,_0x52dd0d);}this[_0x1da867(0xd0,0x90)]=_0x16cc91;}['setOptions'](_0x1540c5){this[_0x5b5237(-0x6f,0x13)]=_0x1540c5;function _0x3d2808(_0x3ad53e,_0x45d0da){return _0x5ba876(_0x3ad53e-0x36f,_0x45d0da);}this[_0x3d2808(0x4fa,0x47a)]=_0x1540c5['maxAge']||0x78,this['speedRate']=_0x1540c5[_0x5b5237(-0x11,0x20)]||0x32;function _0x5b5237(_0x390876,_0x26ad2c){return _0x259635(_0x390876,_0x26ad2c- -0x5a6);}this['particles']=[];const _0x53f157=_0x1540c5[_0x3d2808(0x550,0x4fe)]||0x1000;for(let _0x413bad=0x0;_0x413bad<_0x53f157;_0x413bad++){const _0xe0f1e0=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0xe0f1e0);}}['setDate'](_0x38de7c){this['rows']=_0x38de7c['rows'],this['cols']=_0x38de7c['cols'],this[_0xbd3912(0x8f,0x87)]=_0x38de7c['xmin'],this['xmax']=_0x38de7c['xmax'],this[_0x8e2639(-0x125,-0x132)]=_0x38de7c[_0x8e2639(-0xbc,-0x132)],this[_0xbd3912(0x2,0x4e)]=_0x38de7c[_0xbd3912(0x1e,0x4e)],this[_0x8e2639(-0x1c1,-0x1ec)]=[];const _0xabd4c8=_0x38de7c['udata'],_0x153950=_0x38de7c['vdata'];function _0x8e2639(_0x366dfb,_0x19c5c2){return _0x259635(_0x366dfb,_0x19c5c2- -0x6ae);}function _0xbd3912(_0x3bc9f9,_0x4f8bd8){return _0x259635(_0x3bc9f9,_0x4f8bd8- -0x505);}let _0x240114=![];_0xabd4c8[_0x8e2639(-0x1df,-0x1b0)]===this['rows']&&_0xabd4c8[0x0]['length']===this['cols']&&(_0x240114=!![]);let _0x2ae4d7=0x0,_0x571e32=null,_0x1e660f=null;for(let _0x438e1f=0x0;_0x438e1f<this[_0x8e2639(-0x1ad,-0x1c3)];_0x438e1f++){_0x571e32=[];for(let _0x52c261=0x0;_0x52c261<this['cols'];_0x52c261++,_0x2ae4d7++){_0x240114?_0x1e660f=this['_calcUV'](_0xabd4c8[_0x438e1f][_0x52c261],_0x153950[_0x438e1f][_0x52c261]):_0x1e660f=this['_calcUV'](_0xabd4c8[_0x2ae4d7],_0x153950[_0x2ae4d7]),_0x571e32[_0x8e2639(-0xca,-0xf6)](_0x1e660f);}this[_0xbd3912(-0xcd,-0x43)]['push'](_0x571e32);}!this['options'][_0xbd3912(0xa,0x62)]&&this[_0xbd3912(-0x30,-0x43)]['reverse']();}['clear'](){delete this['rows'],delete this['cols'],delete this[_0x48308f(0xc2,0x12a)],delete this[_0x48308f(0x10c,0xc8)],delete this[_0x1983f7(0x8c,0x9b)];function _0x1983f7(_0x2bc7a3,_0x2a9f24){return _0x5ba876(_0x2a9f24- -0x128,_0x2bc7a3);}function _0x48308f(_0x18e120,_0xd08bf9){return _0x5ba876(_0xd08bf9- -0xa9,_0x18e120);}delete this['ymax'],delete this[_0x48308f(-0x2a,0x60)],delete this['particles'];}['toGridXY'](_0xe515c8,_0x513161){const _0x28cd3f=(_0xe515c8-this['xmin'])/(this[_0x29bca7(-0xa7,-0x95)]-this[_0x29bca7(0x48,-0x33)])*(this['cols']-0x1),_0x2edce6=(this[_0x29bca7(-0x1,-0x6c)]-_0x513161)/(this[_0x29bca7(-0xab,-0x6c)]-this['ymin'])*(this['rows']-0x1);function _0x2144c6(_0x50f0f6,_0x3829f2){return _0x5ba876(_0x50f0f6-0x287,_0x3829f2);}function _0x29bca7(_0x227d7f,_0x27f4d0){return _0x259635(_0x227d7f,_0x27f4d0- -0x5bf);}return[_0x28cd3f,_0x2edce6];}['getUVByXY'](_0x2561d7,_0x59cc08){if(_0x2561d7<0x0||_0x2561d7>=this['cols']||_0x59cc08>=this[_0x2aa2af(-0x2d7,-0x29c)])return[0x0,0x0,0x0];const _0x13c1cc=Math[_0x3b0c1c(0x432,0x4af)](_0x2561d7),_0x1225a1=Math['floor'](_0x59cc08);if(_0x13c1cc===_0x2561d7&&_0x1225a1===_0x59cc08)return this[_0x2aa2af(-0x300,-0x2f4)][_0x59cc08][_0x2561d7];const _0x37608d=_0x13c1cc+0x1,_0x336b70=_0x1225a1+0x1;function _0x3b0c1c(_0x3bd8b7,_0x42cebb){return _0x5ba876(_0x3bd8b7-0x322,_0x42cebb);}function _0x2aa2af(_0x4fc8cb,_0xc83522){return _0x259635(_0xc83522,_0x4fc8cb- -0x7c2);}const _0x1203dc=this[_0x3b0c1c(0x429,0x415)](_0x13c1cc,_0x1225a1),_0x1d8c1a=this[_0x2aa2af(-0x302,-0x285)](_0x37608d,_0x1225a1),_0x14c8b4=this[_0x3b0c1c(0x429,0x47b)](_0x13c1cc,_0x336b70),_0x3f15cd=this['getUVByXY'](_0x37608d,_0x336b70);let _0x3ed1c3=null;try{_0x3ed1c3=this[_0x2aa2af(-0x2df,-0x348)](_0x2561d7-_0x13c1cc,_0x59cc08-_0x1225a1,_0x1203dc,_0x1d8c1a,_0x14c8b4,_0x3f15cd);}catch(_0x1f6319){console[_0x2aa2af(-0x216,-0x262)](_0x2561d7,_0x59cc08);}return _0x3ed1c3;}['_bilinearInterpolation'](_0x536799,_0xf9c378,_0x39da3f,_0x15ff94,_0x45a852,_0x2bfee1){const _0x1694c9=0x1-_0x536799,_0x210fe7=0x1-_0xf9c378,_0xb6fa53=_0x1694c9*_0x210fe7,_0x18359f=_0x536799*_0x210fe7,_0x4d6870=_0x1694c9*_0xf9c378,_0x368378=_0x536799*_0xf9c378,_0x27615e=_0x39da3f[0x0]*_0xb6fa53+_0x15ff94[0x0]*_0x18359f+_0x45a852[0x0]*_0x4d6870+_0x2bfee1[0x0]*_0x368378,_0xaa68a9=_0x39da3f[0x1]*_0xb6fa53+_0x15ff94[0x1]*_0x18359f+_0x45a852[0x1]*_0x4d6870+_0x2bfee1[0x1]*_0x368378;return this['_calcUV'](_0x27615e,_0xaa68a9);}[_0x259635(0x608,0x58d)](_0x2681df,_0x66ef59){return[+_0x2681df,+_0x66ef59,Math['sqrt'](_0x2681df*_0x2681df+_0x66ef59*_0x66ef59)];}[_0x5ba876(0x1f9,0x1d4)](_0x9a194,_0x38538d){if(!this['isInExtent'](_0x9a194,_0x38538d))return null;const _0xf05e29=this['toGridXY'](_0x9a194,_0x38538d),_0x4185b7=this['getUVByXY'](_0xf05e29[0x0],_0xf05e29[0x1]);return _0x4185b7;}['isInExtent'](_0x10eed9,_0x19f1b6){function _0xc98a12(_0x2dbcd2,_0x148eb4){return _0x259635(_0x2dbcd2,_0x148eb4- -0x3ea);}function _0x284267(_0x1093b2,_0x529b79){return _0x5ba876(_0x529b79-0x175,_0x1093b2);}return _0x10eed9>=this['xmin']&&_0x10eed9<=this[_0x284267(0x27f,0x2e6)]&&_0x19f1b6>=this['ymin']&&_0x19f1b6<=this[_0x284267(0x2dc,0x30f)]?!![]:![];}['getRandomLatLng'](){function _0x3a4300(_0x3ee7de,_0x13cd0a){return _0x259635(_0x13cd0a,_0x3ee7de- -0x514);}const _0x2df264=fRandomByfloat(this['xmin'],this['xmax']),_0x354954=fRandomByfloat(this['ymin'],this['ymax']),_0x31a97f={};return _0x31a97f['lat']=_0x354954,_0x31a97f[_0x3a4300(0x48,0x8a)]=_0x2df264,_0x31a97f;}['getParticles'](){let _0x34cd7e,_0x179f40,_0x46d900;function _0x2185c(_0x485902,_0x44ba85){return _0x5ba876(_0x44ba85- -0x2f7,_0x485902);}for(let _0x1850da=0x0,_0x3b4fc7=this['particles']['length'];_0x1850da<_0x3b4fc7;_0x1850da++){let _0x3dbe6c=this['particles'][_0x1850da];_0x3dbe6c[_0x5a3779(-0xf,0x51)]<=0x0&&(_0x3dbe6c=this[_0x5a3779(-0xad,-0x84)](_0x3dbe6c));if(_0x3dbe6c['age']>0x0){const _0x54604e=_0x3dbe6c[_0x2185c(-0x14d,-0x1a0)],_0x5727e5=_0x3dbe6c[_0x2185c(-0x21e,-0x1d8)];_0x46d900=this[_0x5a3779(0x3a,0x42)](_0x54604e,_0x5727e5),_0x46d900?(_0x34cd7e=_0x54604e+this[_0x5a3779(-0x4f,-0x8b)][0x0]*_0x46d900[0x0],_0x179f40=_0x5727e5+this['_calc_speedRate'][0x1]*_0x46d900[0x1],_0x3dbe6c['lng']=_0x54604e,_0x3dbe6c[_0x5a3779(-0xa9,-0x6b)]=_0x5727e5,_0x3dbe6c[_0x2185c(-0x1d7,-0x1a0)]=_0x34cd7e,_0x3dbe6c['tlat']=_0x179f40,_0x3dbe6c['speed']=_0x46d900[0x2],_0x3dbe6c[_0x5a3779(-0xf,0x6c)]--):_0x3dbe6c[_0x2185c(-0x1c0,-0x147)]=0x0;}}function _0x5a3779(_0xd0d52b,_0x409d0d){return _0x259635(_0x409d0d,_0xd0d52b- -0x578);}return this[_0x2185c(-0x166,-0x162)];}['_randomParticle'](_0x2675b5){let _0x296c64,_0x3dd6b4;for(let _0x526f18=0x0;_0x526f18<0x1e;_0x526f18++){_0x296c64=this['getRandomLatLng'](),_0x3dd6b4=this['getUVByPoint'](_0x296c64['lng'],_0x296c64['lat']);if(_0x3dd6b4&&_0x3dd6b4[0x2]>0x0)break;}if(!_0x3dd6b4)return _0x2675b5;function _0x560d3b(_0x3c6cc5,_0x45856e){return _0x5ba876(_0x3c6cc5-0x30f,_0x45856e);}const _0x27207d=_0x296c64['lng']+this['_calc_speedRate'][0x0]*_0x3dd6b4[0x0],_0x535118=_0x296c64['lat']+this[_0x29f55e(-0x253,-0x2d3)][0x1]*_0x3dd6b4[0x1];_0x2675b5['lng']=_0x296c64['lng'],_0x2675b5[_0x29f55e(-0x2ad,-0x296)]=_0x296c64[_0x29f55e(-0x2ad,-0x314)],_0x2675b5['tlng']=_0x27207d,_0x2675b5['tlat']=_0x535118,_0x2675b5[_0x560d3b(0x4bf,0x45f)]=Math[_0x29f55e(-0x1f2,-0x175)](0xa+Math['random']()*this[_0x29f55e(-0x238,-0x21f)]),_0x2675b5[_0x560d3b(0x445,0x4a1)]=_0x3dd6b4[0x2];function _0x29f55e(_0x3a8587,_0x12712a){return _0x5ba876(_0x3a8587- -0x3c3,_0x12712a);}return _0x2675b5;}[_0x5ba876(0x15f,0x1bd)](){for(const _0x48853a in this){delete this[_0x48853a];}}}function fRandomByfloat(_0x30cbbb,_0x4ab87c){return _0x30cbbb+Math['random']()*(_0x4ab87c-_0x30cbbb);}const Cesium=mars3d__namespace[_0x5ba876(0x172,0x1ad)],BaseLayer=mars3d__namespace[_0x259635(0x4d0,0x526)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x44140e={}){super(_0x44140e),this['_setOptionsHook'](_0x44140e),this[_0x5a1c71(0x3ac,0x326)]=null;function _0x5a1c71(_0x3acd36,_0x28cb2e){return _0x259635(_0x3acd36,_0x28cb2e- -0x1a7);}function _0x53bb48(_0xd8d2e2,_0x335c98){return _0x5ba876(_0xd8d2e2-0x36f,_0x335c98);}_0x44140e['colors']&&_0x44140e['steps']&&(this['_colorRamp']=new mars3d__namespace[(_0x53bb48(0x573,0x5b3))](_0x44140e));}[_0x259635(0x4dd,0x546)](_0x51cb01,_0x35b6e8){this['frameTime']=0x3e8/(_0x51cb01[_0x18a98b(-0x203,-0x266)]||0xa),this[_0x18a98b(-0x24d,-0x23b)]=this[_0x377ef0(0x27a,0x1f8)][_0x377ef0(0x249,0x24b)]??![],this[_0x377ef0(0x220,0x1a4)]=_0x51cb01['color']||'#ffffff',this['lineWidth']=_0x51cb01[_0x377ef0(0x19d,0x1b0)]||0x1,this['fixedHeight']=_0x51cb01['fixedHeight']??0x0,this[_0x18a98b(-0x1d0,-0x1cc)]=_0x51cb01['flipY']??![];function _0x18a98b(_0xd766a2,_0x3203ef){return _0x5ba876(_0xd766a2- -0x37e,_0x3203ef);}function _0x377ef0(_0x4c5b74,_0x884504){return _0x5ba876(_0x4c5b74-0x7a,_0x884504);}this['windField']&&this['windField']['setOptions'](_0x51cb01);}get['layer'](){function _0x24306f(_0x5199d4,_0x188c43){return _0x5ba876(_0x188c43-0x23d,_0x5199d4);}return this[_0x24306f(0x377,0x351)];}get[_0x5ba876(0x18e,0x17b)](){function _0x22fea0(_0x56df4e,_0x419d4b){return _0x259635(_0x419d4b,_0x56df4e- -0x207);}function _0x8110e(_0x5877e4,_0x5622bc){return _0x259635(_0x5622bc,_0x5877e4- -0x799);}return this[_0x8110e(-0x283,-0x309)]['scene'][_0x8110e(-0x2cc,-0x34c)]['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){function _0x274510(_0x2f9905,_0x4884ef){return _0x259635(_0x2f9905,_0x4884ef- -0x35f);}return this[_0x274510(0x160,0x18b)];}set['pointerEvents'](_0x20a75c){function _0xe5c658(_0x42f828,_0x613a27){return _0x5ba876(_0x42f828- -0x171,_0x613a27);}function _0x18b510(_0x5b6dc0,_0x44036a){return _0x5ba876(_0x44036a-0x37d,_0x5b6dc0);}this['_pointerEvents']=_0x20a75c;if(!this['canvas'])return;_0x20a75c?this[_0x18b510(0x519,0x491)]['style']['pointer-events']='all':this['canvas']['style']['pointer-events']=_0xe5c658(0x56,0x77);}get['particlesNumber'](){return this['options']['particlesNumber'];}set['particlesNumber'](_0x392fd1){this['options']['particlesNumber']=_0x392fd1,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x5ba876(0x20d,0x1fa)](){function _0xde4666(_0x1b4d9f,_0x287195){return _0x259635(_0x287195,_0x1b4d9f- -0x6da);}function _0x820936(_0x42bce5,_0x4013e3){return _0x259635(_0x42bce5,_0x4013e3- -0x237);}return this[_0xde4666(-0x121,-0x164)][_0xde4666(-0x114,-0xc6)];}set[_0x5ba876(0x20d,0x227)](_0x2ef52c){this[_0x51d617(0x472,0x4d1)]['speedRate']=_0x2ef52c;function _0x16b8e5(_0x42f3d4,_0x4b280e){return _0x259635(_0x42f3d4,_0x4b280e- -0x88);}function _0x51d617(_0x5954a5,_0x581de9){return _0x259635(_0x5954a5,_0x581de9- -0xe8);}this[_0x16b8e5(0x483,0x4b1)]&&(this['windField'][_0x16b8e5(0x5b1,0x53e)]=_0x2ef52c);}get['maxAge'](){return this['options']['maxAge'];}set['maxAge'](_0x308e1e){function _0x1d7948(_0x4a337f,_0x4d419a){return _0x259635(_0x4a337f,_0x4d419a- -0x128);}function _0x1575c9(_0x324d42,_0x239d7f){return _0x5ba876(_0x324d42- -0x95,_0x239d7f);}this[_0x1d7948(0x4e9,0x491)]['maxAge']=_0x308e1e,this[_0x1d7948(0x48d,0x411)]&&(this[_0x1d7948(0x440,0x411)][_0x1575c9(0xf6,0x15f)]=_0x308e1e);}get[_0x259635(0x56b,0x576)](){return this['windData'];}set['data'](_0x5dd27c){this['setData'](_0x5dd27c);}get[_0x259635(0x5c5,0x590)](){let _0x42781d=this['windData'][_0x263caa(0x489,0x4be)],_0x3983d1=this['windData']['xmax'],_0x565d77=this[_0x567550(0x30d,0x384)][_0x567550(0x2ed,0x2a4)],_0x1e1037=this[_0x567550(0x30d,0x2c1)]['ymax'];_0x3983d1>=0x167&&_0x42781d===0x0&&(_0x42781d=-0xb4,_0x3983d1=0xb4);_0x42781d=Math['max'](_0x42781d,-0xb4);function _0x567550(_0x2b51f7,_0x1e22ff){return _0x5ba876(_0x2b51f7-0x12a,_0x1e22ff);}_0x3983d1=Math['min'](_0x3983d1,0xb4),_0x565d77=Math['max'](_0x565d77,-0x5a);function _0x263caa(_0x511e85,_0x33efc2){return _0x259635(_0x33efc2,_0x511e85- -0x103);}return _0x1e1037=Math[_0x263caa(0x4a4,0x4c5)](_0x1e1037,0x5a),Cesium[_0x567550(0x28b,0x2d5)][_0x567550(0x2f3,0x33e)](_0x42781d,_0x565d77,_0x3983d1,_0x1e1037);}['_showHook'](_0x119c86){function _0xd514fc(_0x1bc641,_0x3b1570){return _0x259635(_0x3b1570,_0x1bc641- -0x77f);}function _0x5f185f(_0x323c21,_0x12084c){return _0x259635(_0x323c21,_0x12084c- -0x1f0);}_0x119c86?this[_0x5f185f(0x3fd,0x3c3)]():(this[_0x5f185f(0x427,0x3ac)]&&(this[_0x5f185f(0x3db,0x3c9)][_0x5f185f(0x300,0x386)]=this['windData']),this[_0xd514fc(-0x2a4,-0x285)]());}['_mountedHook'](){function _0x50ab03(_0x24f015,_0x4b39f2){return _0x259635(_0x4b39f2,_0x24f015- -0x6c6);}function _0x2a5d0f(_0x54553e,_0x210f31){return _0x5ba876(_0x54553e-0x42,_0x210f31);}this['options'][_0x50ab03(-0x1cc,-0x19a)]?this['initWorker']():this[_0x2a5d0f(0x1c2,0x178)]=new CanvasWindField(this[_0x50ab03(-0x10d,-0x196)]);}[_0x5ba876(0x1fa,0x1da)](){function _0x59fbe4(_0x2aa4ba,_0x5d08e7){return _0x5ba876(_0x2aa4ba- -0x9c,_0x5d08e7);}this[_0x59fbe4(0x78,0xbe)]=this['_createCanvas']();const _0x4a4a54={};_0x4a4a54[_0x3b0a35(-0x1c9,-0x148)]=!![];function _0x3b0a35(_0x25aa70,_0x53bdef){return _0x259635(_0x25aa70,_0x53bdef- -0x6cb);}this['canvasContext']=this['canvas']['getContext']('2d',_0x4a4a54),this[_0x3b0a35(-0xee,-0x123)](),this[_0x59fbe4(0x164,0x1bf)][_0x59fbe4(0x121,0xb6)]&&this[_0x59fbe4(0x12c,0x13f)](this['options']['data']);}[_0x5ba876(0x122,0x124)](){function _0x32063c(_0x44afa5,_0x2d4201){return _0x5ba876(_0x44afa5- -0x2ec,_0x2d4201);}this[_0x29a2fc(0x36,0x42)](),this['unbindEvent']();function _0x29a2fc(_0x296d1a,_0x1ef811){return _0x5ba876(_0x296d1a- -0x1bc,_0x1ef811);}this['canvas']&&(this[_0x29a2fc(-0x5f,-0xdb)][_0x32063c(-0x163,-0x1b8)]['removeChild'](this['canvas']),delete this[_0x29a2fc(-0xa8,-0x109)]);}[_0x259635(0x555,0x555)](){const _0x458d12=mars3d__namespace[_0x516b06(0x47f,0x439)][_0x516b06(0x4b4,0x42a)](_0xe7abad(0x3c8,0x430),_0x516b06(0x49e,0x461),this['_map'][_0x516b06(0x4c4,0x4e6)]);_0x458d12[_0xe7abad(0x473,0x4da)]['position']='absolute',_0x458d12['style']['top']='0px';function _0x516b06(_0x1cee05,_0xd634ce){return _0x5ba876(_0x1cee05-0x33b,_0xd634ce);}_0x458d12[_0x516b06(0x4fa,0x4e8)][_0xe7abad(0x489,0x42b)]='0px',_0x458d12[_0x516b06(0x4fa,0x540)]['width']=this['_map'][_0xe7abad(0x41b,0x3c9)]['canvas'][_0x516b06(0x46f,0x4b4)]+'px';function _0xe7abad(_0x5f05f6,_0x28aabe){return _0x5ba876(_0x5f05f6-0x2b4,_0x28aabe);}return _0x458d12['style']['height']=this[_0xe7abad(0x411,0x405)]['scene'][_0x516b06(0x44f,0x41b)]['clientHeight']+'px',_0x458d12[_0x516b06(0x4fa,0x4c0)]['pointerEvents']=this[_0xe7abad(0x3e5,0x41d)]?'auto':'none',_0x458d12[_0x516b06(0x4fa,0x47d)][_0xe7abad(0x486,0x4c4)]=this['options'][_0x516b06(0x50d,0x4a2)]??0x9,_0x458d12[_0x516b06(0x475,0x444)]=this[_0x516b06(0x498,0x47c)]['scene']['canvas'][_0x516b06(0x46f,0x497)],_0x458d12['height']=this['_map'][_0xe7abad(0x41b,0x400)]['canvas'][_0xe7abad(0x432,0x464)],_0x458d12;}[_0x5ba876(0x203,0x27f)](){function _0x31fe87(_0x17df58,_0x9e1548){return _0x259635(_0x17df58,_0x9e1548- -0x15a);}function _0x2771a0(_0x23e501,_0x516408){return _0x5ba876(_0x23e501- -0x2e9,_0x516408);}this['canvas']&&(this['canvas'][_0x31fe87(0x436,0x41e)]['width']=this['_map']['scene']['canvas'][_0x31fe87(0x41c,0x393)]+'px',this[_0x31fe87(0x335,0x373)][_0x2771a0(-0x12a,-0xfb)][_0x31fe87(0x414,0x38a)]=this['_map']['scene'][_0x2771a0(-0x1d5,-0x250)][_0x2771a0(-0x16b,-0x1a2)]+'px',this['canvas']['width']=this['_map'][_0x31fe87(0x3ef,0x3c6)]['canvas']['clientWidth'],this[_0x2771a0(-0x1d5,-0x166)][_0x31fe87(0x317,0x38a)]=this[_0x2771a0(-0x18c,-0x14e)]['scene']['canvas'][_0x31fe87(0x414,0x3dd)]);}[_0x259635(0x614,0x5a8)](){function _0x1e3ad6(_0x41e6ef,_0x269ef2){return _0x259635(_0x41e6ef,_0x269ef2- -0x3c7);}const _0x578759=this;function _0x434383(_0x12f986,_0x2bce7a){return _0x259635(_0x2bce7a,_0x12f986- -0x337);}let _0x83d8a8=Date['now']();(function _0x40b035(){function _0xa75253(_0x20b134,_0x53be5a){return _0x17b6(_0x53be5a- -0x3ce,_0x20b134);}if(_0x578759['isDestroy'])return;function _0x11ee1c(_0xef6c6e,_0x22bbe7){return _0x17b6(_0x22bbe7-0x13d,_0xef6c6e);}_0x578759['_animateFrame']=window[_0xa75253(-0x370,-0x2e7)](_0x40b035);if(_0x578759[_0x11ee1c(0x1f1,0x255)]&&_0x578759[_0xa75253(-0x221,-0x273)]){const _0x3ff77d=Date['now'](),_0x59d8fd=_0x3ff77d-_0x83d8a8;_0x59d8fd>_0x578759[_0x11ee1c(0x1e5,0x21a)]&&(_0x83d8a8=_0x3ff77d-_0x59d8fd%_0x578759['frameTime'],_0x578759['update']());}}(),window[_0x434383(0x1ae,0x196)](_0x434383(0x285,0x221),this[_0x434383(0x285,0x222)]['bind'](this),![]),this['mouse_down']=![],this[_0x434383(0x26b,0x23d)]=![],this['options'][_0x1e3ad6(0x224,0x1ae)]&&(this['_map']['on'](mars3d__namespace[_0x434383(0x185,0x1b4)]['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x434383(0x1ed,0x1fa)],this),this[_0x1e3ad6(0x106,0x14f)]['on'](mars3d__namespace[_0x1e3ad6(0x148,0xf5)]['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){window[_0x40703f(-0xc5,-0x125)](this['_animateFrame']),delete this[_0x40703f(-0x96,-0xee)];function _0x40703f(_0x4d8b24,_0x316f5a){return _0x5ba876(_0x316f5a- -0x287,_0x4d8b24);}function _0x5d52a4(_0x2152bd,_0x5a1157){return _0x5ba876(_0x5a1157-0x1bd,_0x2152bd);}window['removeEventListener']('resize',this['resize']),this['options'][_0x5d52a4(0x347,0x379)]&&(this['_map'][_0x40703f(-0xba,-0x104)](mars3d__namespace[_0x40703f(-0x1e6,-0x184)]['wheel'],this[_0x40703f(-0xb3,-0xb9)],this),this[_0x40703f(-0xe5,-0x12a)][_0x40703f(-0x187,-0x104)](mars3d__namespace[_0x40703f(-0x14f,-0x184)][_0x40703f(-0xd0,-0xcc)],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this[_0x5d52a4(0x3e1,0x397)],this),this['_map'][_0x5d52a4(0x320,0x340)](mars3d__namespace[_0x40703f(-0x198,-0x184)][_0x40703f(-0x72,-0x7f)],this[_0x40703f(-0xd7,-0x8b)],this));}[_0x5ba876(0x1ce,0x21a)](_0x2002b7){clearTimeout(this[_0x4e1f52(-0xe4,-0x9a)]);function _0x4e1f52(_0x5cd2e2,_0x3d87c7){return _0x259635(_0x5cd2e2,_0x3d87c7- -0x63e);}if(!this['show']||!this[_0x258035(0xe0,0x56)])return;this['canvas'][_0x4e1f52(-0x4b,-0xc6)][_0x258035(0xe1,0xbf)]='hidden';function _0x258035(_0x19e0e0,_0x31589f){return _0x5ba876(_0x19e0e0- -0x34,_0x31589f);}this['refreshTimer']=setTimeout(()=>{function _0x4d31ce(_0x3566ad,_0x53a9f7){return _0x4e1f52(_0x53a9f7,_0x3566ad-0x1fb);}function _0x19b5ad(_0x4b2701,_0x5ba94e){return _0x258035(_0x4b2701-0x29f,_0x5ba94e);}if(!this['show'])return;this['redraw'](),this[_0x19b5ad(0x37f,0x38f)]['style'][_0x19b5ad(0x380,0x35b)]='visible';},0xc8);}[_0x5ba876(0x16b,0x154)](_0x49ec03){function _0x44a082(_0x29ee3e,_0xde6520){return _0x259635(_0x29ee3e,_0xde6520- -0x500);}function _0x5d2f07(_0x940f80,_0x253652){return _0x5ba876(_0x940f80-0x66,_0x253652);}this['mouse_down']=!![],this['_map'][_0x5d2f07(0x1e9,0x194)](mars3d__namespace['EventType'][_0x5d2f07(0x26e,0x222)],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x44a082(0x107,0xc1)],this[_0x44a082(0xd0,0xb5)],this);}[_0x5ba876(0x1fc,0x1ad)](_0x42e100){function _0x5d8000(_0x2de3a4,_0x57c9e4){return _0x5ba876(_0x2de3a4- -0xca,_0x57c9e4);}if(!this['show']||!this['canvas'])return;function _0x96fa51(_0x152f66,_0x5c09d5){return _0x259635(_0x5c09d5,_0x152f66- -0x444);}this['mouse_down']&&(this[_0x96fa51(0x89,0x6a)][_0x5d8000(0xf5,0x74)]['visibility']='hidden',this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x5ae349){function _0x33c54c(_0x37a629,_0x29f1ed){return _0x5ba876(_0x37a629-0xb9,_0x29f1ed);}if(!this['show']||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);function _0xeeccf8(_0x4d8c74,_0x42f285){return _0x259635(_0x42f285,_0x4d8c74- -0x3d0);}this[_0xeeccf8(0x181,0x146)]&&this[_0x33c54c(0x2a2,0x247)]&&this['redraw'](),this['canvas']['style'][_0xeeccf8(0xfe,0xa6)]='visible',this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x5d8cca){this['clear']();function _0x10694b(_0x12cf20,_0x130e72){return _0x259635(_0x12cf20,_0x130e72- -0x31b);}this[_0x10694b(0x270,0x281)]=_0x5d8cca,this['windField']['setDate'](_0x5d8cca),this['redraw']();}['redraw'](){if(!this['show'])return;this['windField']['setOptions'](this[_0x15f08b(-0x82,-0x1e)]);function _0x15f08b(_0x344474,_0x4be710){return _0x259635(_0x344474,_0x4be710- -0x5d7);}this['update']();}[_0x5ba876(0x159,0xe4)](){if(this[_0x372d5d(-0xac,-0xe8)])return;this[_0x24ae5d(0xdf,0xe2)]=!![];function _0x372d5d(_0x280051,_0x15ec58){return _0x5ba876(_0x280051- -0x1d5,_0x15ec58);}if(this['worker'])this['windField']['update']();else{const _0x5603fe=this['windField']['getParticles']();this['_drawLines'](_0x5603fe);}function _0x24ae5d(_0x1c0a25,_0x51ee19){return _0x259635(_0x1c0a25,_0x51ee19- -0x400);}this['_updateIng']=![];}[_0x259635(0x4fe,0x53d)](_0x36ef73){this[_0x1d0e13(0x251,0x2bd)]=_0x36ef73,this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this[_0x1d0e13(0x1e5,0x264)],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']=_0x1d0e13(0x267,0x1fd),this['canvasContext'][_0xb5120f(-0x11e,-0xbd)]=0.9;function _0x1d0e13(_0x11ae7b,_0x5c2bbe){return _0x259635(_0x11ae7b,_0x5c2bbe- -0x2e3);}const _0xb235=this['_map']['scene']['mode']!==Cesium[_0x1d0e13(0x2e1,0x2ae)]['SCENE3D'],_0x22f7b0=this['canvasWidth']*0.25;function _0xb5120f(_0x170ad8,_0x108615){return _0x5ba876(_0x170ad8- -0x2a6,_0x108615);}if(this[_0x1d0e13(0x327,0x2e2)])for(let _0x25939d=0x0,_0x1cd605=_0x36ef73['length'];_0x25939d<_0x1cd605;_0x25939d++){const _0x2f77b4=_0x36ef73[_0x25939d],_0x10b165=this['_tomap'](_0x2f77b4,_0x2f77b4[_0xb5120f(-0x103,-0x188)],_0x2f77b4['lat'],_0x2f77b4[_0xb5120f(-0x13d,-0x12f)]),_0x323fda=this[_0xb5120f(-0xc9,-0xf1)](_0x2f77b4,_0x2f77b4[_0xb5120f(-0x14f,-0xc5)],_0x2f77b4['tlat'],_0x2f77b4['talt']);if(!_0x10b165||!_0x323fda)continue;if(_0xb235&&Math[_0x1d0e13(0x2ce,0x253)](_0x10b165[0x0]-_0x323fda[0x0])>=_0x22f7b0)continue;this[_0x1d0e13(0x24d,0x296)][_0x1d0e13(0x2bc,0x24e)](),this['canvasContext']['lineWidth']=this[_0x1d0e13(0x1e4,0x1f9)],this[_0x1d0e13(0x270,0x296)]['strokeStyle']=this['_colorRamp']['getColor'](_0x2f77b4[_0x1d0e13(0x1e4,0x20c)]),this['canvasContext']['moveTo'](_0x10b165[0x0],_0x10b165[0x1]),this[_0xb5120f(-0xe6,-0xe6)]['lineTo'](_0x323fda[0x0],_0x323fda[0x1]),this[_0x1d0e13(0x2d5,0x296)][_0xb5120f(-0xbe,-0x9c)]();}else{this[_0xb5120f(-0xe6,-0x90)]['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this[_0x1d0e13(0x21d,0x296)][_0x1d0e13(0x205,0x26a)]=this[_0x1d0e13(0x259,0x27c)];for(let _0x55ccdc=0x0,_0x2c0348=_0x36ef73['length'];_0x55ccdc<_0x2c0348;_0x55ccdc++){const _0x29002e=_0x36ef73[_0x55ccdc],_0x3b09b9=this['_tomap'](_0x29002e,_0x29002e['lng'],_0x29002e['lat'],_0x29002e[_0x1d0e13(0x2b7,0x23f)]),_0x31dbbf=this['_tomap'](_0x29002e,_0x29002e['tlng'],_0x29002e['tlat'],_0x29002e['talt']);if(!_0x3b09b9||!_0x31dbbf)continue;if(_0xb235&&Math['abs'](_0x3b09b9[0x0]-_0x31dbbf[0x0])>=_0x22f7b0)continue;this[_0xb5120f(-0xe6,-0xfb)][_0x1d0e13(0x284,0x21e)](_0x3b09b9[0x0],_0x3b09b9[0x1]),this['canvasContext']['lineTo'](_0x31dbbf[0x0],_0x31dbbf[0x1]);}this['canvasContext']['stroke']();}}[_0x5ba876(0x1dd,0x16f)](_0x5ce651,_0x28f425,_0x801d5,_0x28b1b0){const _0xa9ae48=Cesium['Cartesian3']['fromDegrees'](_0x28f425,_0x801d5,_0x28b1b0??this[_0x566bc4(-0x1a7,-0x165)]),_0x5a503c=this[_0x20f520(0x3f3,0x444)]['scene'];function _0x20f520(_0x6fc1e,_0x4ca32c){return _0x259635(_0x6fc1e,_0x4ca32c- -0xd2);}if(_0x5a503c['mode']===Cesium['SceneMode']['SCENE3D']){const _0x229495=new Cesium['EllipsoidalOccluder'](_0x5a503c[_0x20f520(0x535,0x4cc)]['ellipsoid'],_0x5a503c[_0x566bc4(-0x4,-0x76)][_0x566bc4(-0x11a,-0x9f)]),_0x1b5c54=_0x229495[_0x20f520(0x4d5,0x4c2)](_0xa9ae48);if(!_0x1b5c54)return _0x5ce651[_0x20f520(0x433,0x497)]=0x0,null;}const _0x17b4c5=mars3d__namespace['PointTrans']['toWindowCoordinates'](this['_map']['scene'],_0xa9ae48);function _0x566bc4(_0x4b9f15,_0x279bcc){return _0x259635(_0x4b9f15,_0x279bcc- -0x63a);}return _0x17b4c5?[_0x17b4c5['x'],_0x17b4c5['y']]:null;}['clear'](){function _0x4c09c7(_0x1a3a2d,_0x228914){return _0x5ba876(_0x1a3a2d-0x25b,_0x228914);}function _0x34758a(_0x48071e,_0x4ec5ed){return _0x259635(_0x4ec5ed,_0x48071e- -0x61e);}this[_0x4c09c7(0x3db,0x3c4)]['clear'](),delete this[_0x4c09c7(0x43e,0x4b3)];}['initWorker'](){this[_0x133411(0x4bb,0x437)]=new Worker(this[_0x158818(0x3aa,0x37d)][_0x158818(0x2fd,0x2be)]);function _0x133411(_0x330066,_0x4de367){return _0x5ba876(_0x4de367-0x2f6,_0x330066);}this[_0x133411(0x3f4,0x437)]['onmessage']=_0x20f06d=>{this['_drawLines'](_0x20f06d[_0x13a0d3(0x1c1,0x1a1)]['particles']);function _0x4c8ac9(_0x3b35cf,_0x433be5){return _0x158818(_0x433be5,_0x3b35cf- -0x36f);}function _0x13a0d3(_0x55fceb,_0xafcd93){return _0x133411(_0x55fceb,_0xafcd93- -0x312);}this[_0x13a0d3(0x1a8,0x15e)]=![];},this['windField']={'init':_0x49fc0b=>{const _0x56588a={};_0x56588a['type']='init',_0x56588a['options']=_0x49fc0b,this['worker']['postMessage'](_0x56588a);},'setOptions':_0x297596=>{function _0x3053d4(_0x1dfd24,_0x57f10c){return _0x158818(_0x1dfd24,_0x57f10c-0x19d);}const _0x299e3c={};_0x299e3c[_0xc35899(0x108,0x18e)]='setOptions',_0x299e3c[_0xc35899(0x24d,0x20f)]=_0x297596;function _0xc35899(_0xdcd86d,_0x3f974c){return _0x133411(_0xdcd86d,_0x3f974c- -0x2e7);}this['worker']['postMessage'](_0x299e3c);},'setDate':_0x1676b6=>{const _0x419703={};_0x419703[_0x390aec(-0x255,-0x230)]=_0x390aec(-0x280,-0x265),_0x419703['data']=_0x1676b6;function _0x390aec(_0x439af5,_0x5088ed){return _0x158818(_0x439af5,_0x5088ed- -0x52c);}function _0xbcfc59(_0xd0135b,_0x2ffebf){return _0x133411(_0xd0135b,_0x2ffebf-0x6);}this['worker'][_0xbcfc59(0x42b,0x415)](_0x419703);},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![];function _0x399821(_0x1ecfdb,_0x20e4de){return _0x158818(_0x1ecfdb,_0x20e4de- -0x4b5);}function _0x5ee756(_0x4bceae,_0x429e02){return _0x158818(_0x429e02,_0x4bceae- -0x2cb);}const _0x235997={};_0x235997[_0x399821(-0x156,-0x1b9)]=_0x5ee756(0xb,-0x5a),this['worker']['postMessage'](_0x235997);},'clear':()=>{function _0x304ce2(_0x471bc8,_0x24cfed){return _0x133411(_0x471bc8,_0x24cfed- -0x6bd);}const _0x278cd0={};_0x278cd0['type']=_0x304ce2(-0x1ea,-0x1d5),this['worker']['postMessage'](_0x278cd0);}};function _0x158818(_0x2245d1,_0x2eb6e2){return _0x259635(_0x2245d1,_0x2eb6e2- -0x23c);}this['windField']['init'](this['options']);}}mars3d__namespace[_0x259635(0x4f4,0x556)]['register']('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x5ba876(0x10b,0x114)][_0x5ba876(0x1b4,0x1f2)]('mars3d-wind插件注册成功\x20\x20\x20\x20\x20版本:'+version+'\x20\x20\x20\x20编译日期:'+buildTime),mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil;const _0x37aee5={};_0x37aee5[_0x259635(0x49e,0x517)]=!![],Object[_0x5ba876(0x10a,0x185)](exports,'__esModule',_0x37aee5);
|
|
15
15
|
}));
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mars3d-wind",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.0",
|
|
4
4
|
"description": "Mars3D平台插件,支持气象 风向图 功能插件",
|
|
5
5
|
"main": "./mars3d-wind.js",
|
|
6
6
|
"peerDependencies": {},
|
|
7
7
|
"devDependencies": {
|
|
8
|
-
"mars3d": "~3.
|
|
8
|
+
"mars3d": "~3.11.0"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"lint": "eslint ./src/**/*.{js,ts} --fix"
|