mars3d-wind 3.9.8 → 3.9.10
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 +3 -3
- package/package.json +2 -2
package/mars3d-wind.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
|
|
3
3
|
*
|
|
4
|
-
* 版本信息:v3.9.
|
|
5
|
-
* 编译日期:2025-
|
|
4
|
+
* 版本信息:v3.9.10
|
|
5
|
+
* 编译日期:2025-05-20 21:07
|
|
6
6
|
* 版权所有:Copyright by 火星科技 http://mars3d.cn
|
|
7
7
|
* 使用单位:火星科技免费公开版 ,2025-02-01
|
|
8
8
|
*/
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
|
|
12
12
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
|
|
13
13
|
})(this, (function (exports, mars3d) {
|
|
14
|
-
'use strict';(function(_0xd7598a,_0x5a8680){function _0x501c4e(_0x2067aa,_0x5268fe){return _0x534b(_0x5268fe-0x328,_0x2067aa);}const _0x5753e5=_0xd7598a();function _0x202ca9(_0x19a8d7,_0x5a11dd){return _0x534b(_0x5a11dd- -0xcd,_0x19a8d7);}while(!![]){try{const _0x496cbc=parseInt(_0x202ca9(0x77,0x96))/0x1+parseInt(_0x501c4e(0x515,0x4c5))/0x2*(parseInt(_0x501c4e(0x38f,0x3fd))/0x3)+parseInt(_0x501c4e(0x4d1,0x4f0))/0x4+-parseInt(_0x501c4e(0x416,0x45d))/0x5+-parseInt(_0x501c4e(0x4a3,0x510))/0x6*(-parseInt(_0x202ca9(0x15f,0x105))/0x7)+parseInt(_0x202ca9(0x108,0x8c))/0x8*(-parseInt(_0x202ca9(0xc8,0xa4))/0x9)+parseInt(_0x501c4e(0x55c,0x513))/0xa;if(_0x496cbc===_0x5a8680)break;else _0x5753e5['push'](_0x5753e5['shift']());}catch(_0xf4017a){_0x5753e5['push'](_0x5753e5['shift']());}}}(_0x19e8,0xef02f));function _interopNamespace(_0x424701){if(_0x424701&&_0x424701['__esModule'])return _0x424701;var _0x527bbf=Object[_0x5c0e80(0x3bd,0x349)](null);_0x424701&&Object['keys'](_0x424701)['forEach'](function(_0x3c69cd){function _0x34d4a7(_0x17108b,_0x4794ec){return _0x5c0e80(_0x4794ec,_0x17108b- -0x350);}if(_0x3c69cd!=='default'){var _0x778373=Object[_0x34d4a7(0x2,0x57)](_0x424701,_0x3c69cd);Object['defineProperty'](_0x527bbf,_0x3c69cd,_0x778373['get']?_0x778373:{'enumerable':!![],'get':function(){return _0x424701[_0x3c69cd];}});}});function _0x5c0e80(_0x539e66,_0x56bc08){return _0x534b(_0x56bc08-0x1d7,_0x539e66);}return _0x527bbf['default']=_0x424701,_0x527bbf;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function getU(_0x15ecec,_0x2958ec){const _0xb487b2=_0x15ecec*Math['cos'](Cesium$2['Math']['toRadians'](_0x2958ec));return _0xb487b2;}function getV(_0x5dc67,_0x21663f){const _0x12f050=_0x5dc67*Math[_0x427892(-0x8d,-0xd0)](Cesium$2[_0x427892(-0x34,-0x1b)][_0x427892(-0x9c,-0x18)](_0x21663f));function _0x1ccb1c(_0x4a96f1,_0x33c2ee){return _0x534b(_0x33c2ee-0x3aa,_0x4a96f1);}function _0x427892(_0x24bf0a,_0x4eb6b2){return _0x534b(_0x24bf0a- -0x1be,_0x4eb6b2);}return _0x12f050;}function getSpeed(_0x248f26,_0x2aeb36){const _0x16fb82=Math[_0xae892b(0xd1,0x130)](Math[_0xae892b(0x9c,0x127)](_0x248f26,0x2)+Math[_0x4e8188(0x79,0xeb)](_0x2aeb36,0x2));function _0xae892b(_0x45258e,_0x1e0603){return _0x534b(_0x45258e- -0xdb,_0x1e0603);}function _0x4e8188(_0x3c276f,_0x3d91e0){return _0x534b(_0x3c276f- -0xfe,_0x3d91e0);}return _0x16fb82;}function getDirection(_0x29f7a6,_0x5b33ae){let _0x5721fa=Cesium$2['Math'][_0x1156ff(0xf7,0xe7)](Math['atan2'](_0x5b33ae,_0x29f7a6));function _0x1156ff(_0x11f54b,_0x3bc3dc){return _0x534b(_0x11f54b- -0xb0,_0x3bc3dc);}return _0x5721fa+=_0x5721fa<0x0?0x168:0x0,_0x5721fa;}const _0x36d175={};_0x36d175[_0x35412f(0x29,-0x3)]=null,_0x36d175[_0x4e9bfa(0x113,0x88)]=getU,_0x36d175[_0x35412f(0x54,0xb2)]=getV,_0x36d175[_0x35412f(0x118,0x196)]=getSpeed,_0x36d175[_0x35412f(0x80,0xfc)]=getDirection;var WindUtil=_0x36d175,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=_0x35412f(0xe7,0xb9),postProcessingPositionFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20norm)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20dataLonRange;\x0auniform\x20vec2\x20dataLatRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x0auniform\x20float\x20dropRate;\x0auniform\x20float\x20dropRateBump;\x0a\x0a//\x20添加新的\x20uniform\x20变量\x0auniform\x20bool\x20useViewerBounds;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec2\x20generateRandomParticle(vec2\x20seed)\x20{\x0a\x20\x20vec2\x20range;\x0a\x20\x20float\x20randomLon,\x20randomLat;\x0a\x0a\x20\x20if(useViewerBounds)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在当前视域范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20lonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20在数据范围内生成粒子\x0a\x20\x20\x20\x20randomLon\x20=\x20rand(seed,\x20dataLonRange);\x0a\x20\x20\x20\x20randomLat\x20=\x20rand(-seed,\x20dataLatRange);\x0a\x20\x20}\x0a\x0a\x20\x20return\x20vec2(randomLon,\x20randomLat);\x0a}\x0a\x0abool\x20particleOutbound(vec2\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20dataLatRange.x\x20||\x20particle.y\x20>\x20dataLatRange.y\x20||\x20particle.x\x20<\x20dataLonRange.x\x20||\x20particle.x\x20>\x20dataLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rg;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.rg\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20randomParticle\x20=\x20generateRandomParticle(seed1);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x200.0f,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f,\x200.0f);\x0a\x20\x20}\x0a}\x0a',renderParticlesFragmentShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec4\x20speed;\x0ain\x20float\x20v_segmentPosition;\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20vec2\x20domain;\x0auniform\x20vec2\x20displayRange;\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speed.a\x20>\x20zero\x20&&\x20speed.b\x20>\x20displayRange.x\x20&&\x20speed.b\x20<\x20displayRange.y)\x20{\x0a\x20\x20\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x20\x20\x20\x20vec4\x20baseColor\x20=\x20texture(colorTable,\x20vec2(normalizedSpeed,\x20zero));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用更平滑的渐变效果\x0a\x20\x20\x20\x20float\x20alpha\x20=\x20smoothstep(0.0f,\x201.0f,\x20v_segmentPosition);\x0a\x20\x20\x20\x20alpha\x20=\x20pow(alpha,\x201.5f);\x20//\x20调整透明度渐变曲线\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20根据速度调整透明度\x0a\x20\x20\x20\x20float\x20speedAlpha\x20=\x20mix(0.3f,\x201.0f,\x20speed.a);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20组合颜色和透明度\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(baseColor.rgb,\x20baseColor.a\x20*\x20alpha\x20*\x20speedAlpha);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a\x0a\x20\x20float\x20segmentsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20if(segmentsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',renderParticlesVertexShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0ain\x20vec3\x20normal;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20frameRateAdjustment;\x0auniform\x20float\x20particleHeight;\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20vec2\x20lineWidth;\x0auniform\x20vec2\x20lineLength;\x0auniform\x20vec2\x20domain;\x0auniform\x20bool\x20is3D;\x0a\x0a//\x20添加输出变量传递给片元着色器\x0aout\x20vec4\x20speed;\x0aout\x20float\x20v_segmentPosition;\x0aout\x20vec2\x20textureCoordinate;\x0a\x0a//\x20添加结构体定义\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0avec3\x20convertCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLat.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLat.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec2\x20lonLat)\x20{\x0a\x20\x20if(is3D)\x20{\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLat);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20使用\x20modelViewProjection\x20矩阵进行投影变换\x0a\x20\x20\x20\x20vec4\x20projectedPosition\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20\x20\x20return\x20projectedPosition;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20vec3\x20position2D\x20=\x20vec3(radians(lonLat.x),\x20radians(lonLat.y),\x200.0f);\x0a\x20\x20\x20\x20return\x20czm_modelViewProjection\x20*\x20vec4(position2D,\x201.0f);\x0a\x20\x20}\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign,\x20float\x20widthFactor)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20//\x20计算方向向量\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x0a\x20\x20\x20\x20//\x20计算法向量\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x0a\x20\x20\x20\x20//\x20使用\x20widthFactor\x20调整宽度\x0a\x20\x20float\x20offsetLength\x20=\x20widthFactor\x20*\x20lineWidth.y;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20翻转\x20Y\x20轴坐标\x0a\x20\x20vec2\x20flippedIndex\x20=\x20vec2(st.x,\x201.0f\x20-\x20st.y);\x0a\x0a\x20\x20vec2\x20particleIndex\x20=\x20flippedIndex;\x0a\x20\x20speed\x20=\x20texture(particlesSpeed,\x20particleIndex);\x0a\x0a\x20\x20vec2\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rg;\x0a\x20\x20vec2\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rg;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x0a\x20\x20\x20\x20//\x20计算速度相关的宽度和长度因子\x0a\x20\x20float\x20speedLength\x20=\x20clamp(speed.b,\x20domain.x,\x20domain.y);\x0a\x20\x20float\x20normalizedSpeed\x20=\x20(speedLength\x20-\x20domain.x)\x20/\x20(domain.y\x20-\x20domain.x);\x0a\x0a\x20\x20\x20\x20//\x20根据速度计算宽度\x0a\x20\x20float\x20widthFactor\x20=\x20mix(lineWidth.x,\x20lineWidth.y,\x20normalizedSpeed);\x0a\x20\x20widthFactor\x20*=\x20(pointToUse\x20<\x200\x20?\x201.0f\x20:\x200.5f);\x20//\x20头部更宽,尾部更窄\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20length\x20based\x20on\x20speed\x0a\x20\x20float\x20lengthFactor\x20=\x20mix(lineLength.x,\x20lineLength.y,\x20normalizedSpeed)\x20*\x20pixelSize;\x0a\x0a\x20\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20头部位置\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x200.0f;\x20//\x20头部\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Get\x20direction\x20and\x20normalize\x20it\x20to\x20length\x201.0\x0a\x20\x20\x20\x20vec4\x20direction\x20=\x20normalize(projectedCoordinates.next\x20-\x20projectedCoordinates.current);\x0a\x20\x20\x20\x20vec4\x20extendedPosition\x20=\x20projectedCoordinates.current\x20+\x20direction\x20*\x20lengthFactor;\x0a\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20extendedPosition,\x20offsetSign,\x20widthFactor);\x0a\x20\x20\x20\x20gl_Position\x20=\x20extendedPosition\x20+\x20offset;\x0a\x20\x20\x20\x20v_segmentPosition\x20=\x201.0f;\x20//\x20尾部\x0a\x20\x20}\x0a\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a}\x0a';const {ShaderSource:ShaderSource$1}=mars3d__namespace['Cesium'];class ShaderManager{static['getCalculateSpeedShader'](){const _0x3e5ffa={};return _0x3e5ffa['sources']=[calculateSpeedShader],new ShaderSource$1(_0x3e5ffa);}static['getUpdatePositionShader'](){function _0x2b1c4b(_0x414590,_0x29453d){return _0x4e9bfa(_0x29453d- -0x33a,_0x414590);}const _0x4a3d5b={};return _0x4a3d5b[_0x2b1c4b(-0x1de,-0x244)]=[updatePositionShader],new ShaderSource$1(_0x4a3d5b);}static['getSegmentDrawVertexShader'](){const _0x191e8b={};function _0x29b55a(_0x309eda,_0xbc2503){return _0x4e9bfa(_0xbc2503- -0x18,_0x309eda);}return _0x191e8b[_0x29b55a(0x162,0xde)]=[renderParticlesVertexShader],new ShaderSource$1(_0x191e8b);}static[_0x4e9bfa(0xc0,0x131)](){const _0x39985b={};return _0x39985b['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x39985b);}static['getPostProcessingPositionShader'](){const _0x39d86c={};return _0x39d86c['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x39d86c);}}function _0x534b(_0x53881e,_0x7c11cb){const _0x19e83a=_0x19e8();return _0x534b=function(_0x534b1d,_0xe638c4){_0x534b1d=_0x534b1d-0xd4;let _0x14e1d6=_0x19e83a[_0x534b1d];return _0x14e1d6;},_0x534b(_0x53881e,_0x7c11cb);}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[_0x35412f(0xe1,0x111)];class CustomPrimitive{constructor(_0x31877b){this['commandType']=_0x31877b[_0x499bc4(-0xd7,-0x55)],this[_0x499bc4(-0x74,-0xbe)]=_0x31877b['geometry'];function _0x2b440a(_0x4bd75b,_0x1c41d6){return _0x35412f(_0x4bd75b-0x2ca,_0x1c41d6);}this['attributeLocations']=_0x31877b[_0x2b440a(0x3ef,0x3fe)],this['primitiveType']=_0x31877b[_0x499bc4(-0xd4,-0x11e)],this['uniformMap']=_0x31877b[_0x2b440a(0x352,0x358)]||{},this['vertexShaderSource']=_0x31877b[_0x2b440a(0x323,0x39f)],this[_0x499bc4(-0x106,-0x8b)]=_0x31877b['fragmentShaderSource'],this['rawRenderState']=_0x31877b['rawRenderState'],this['framebuffer']=_0x31877b['framebuffer'],this['outputTexture']=_0x31877b[_0x499bc4(-0x40,-0x6e)],this['autoClear']=_0x31877b['autoClear']??![],this[_0x2b440a(0x3a5,0x406)]=_0x31877b['preExecute'],this[_0x499bc4(-0x139,-0xb5)]=!![],this['commandToExecute']=undefined;function _0x499bc4(_0x56071a,_0x183cc0){return _0x4e9bfa(_0x183cc0- -0x1da,_0x56071a);}this['clearCommand']=undefined,this[_0x499bc4(-0xa7,-0xcd)]=_0x31877b['isDynamic']??(()=>!![]),this['autoClear']&&(this['clearCommand']=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x2b440a(0x368,0x3ac)],'pass':Pass$1['OPAQUE']}));}[_0x35412f(0x7e,0x108)](_0x1c3caf){function _0x9bad65(_0x3fb946,_0xe2be5c){return _0x35412f(_0xe2be5c- -0xda,_0x3fb946);}function _0x2100d0(_0x56db41,_0x31dea8){return _0x35412f(_0x56db41-0x3db,_0x31dea8);}if(this['commandType']===_0x2100d0(0x46b,0x459)){const _0x440959={};_0x440959[_0x2100d0(0x492,0x42c)]=_0x1c3caf,_0x440959['geometry']=this['geometry'],_0x440959[_0x9bad65(-0x27,0x4b)]=this[_0x2100d0(0x500,0x47c)],_0x440959[_0x2100d0(0x47f,0x4f4)]=BufferUsage$1['STATIC_DRAW'];const _0x44640e=VertexArray$1['fromGeometry'](_0x440959),_0x10eed5={};_0x10eed5['context']=_0x1c3caf,_0x10eed5[_0x9bad65(-0x69,-0x81)]=this[_0x2100d0(0x434,0x410)],_0x10eed5['fragmentShaderSource']=this['fragmentShaderSource'],_0x10eed5['attributeLocations']=this[_0x9bad65(-0x42,0x4b)];const _0x3cd29f=ShaderProgram['fromCache'](_0x10eed5),_0x7dd671=RenderState['fromCache'](this[_0x9bad65(-0x95,-0x91)]),_0x5c1586={};return _0x5c1586['owner']=this,_0x5c1586[_0x9bad65(-0xfc,-0x8e)]=_0x44640e,_0x5c1586['primitiveType']=this[_0x2100d0(0x425,0x45c)],_0x5c1586['modelMatrix']=Matrix4['IDENTITY'],_0x5c1586['renderState']=_0x7dd671,_0x5c1586['shaderProgram']=_0x3cd29f,_0x5c1586['framebuffer']=this[_0x2100d0(0x479,0x46b)],_0x5c1586[_0x9bad65(-0xc3,-0x52)]=this['uniformMap'],_0x5c1586[_0x9bad65(-0x80,-0x61)]=Pass$1[_0x9bad65(0x94,0x58)],new DrawCommand(_0x5c1586);}else{if(this[_0x9bad65(0x65,0x39)]==='Compute'){const _0x56789f={};return _0x56789f[_0x2100d0(0x4fd,0x4ea)]=this,_0x56789f['fragmentShaderSource']=this[_0x9bad65(0x5c,0x3)],_0x56789f['uniformMap']=this[_0x2100d0(0x463,0x4a4)],_0x56789f[_0x2100d0(0x4d5,0x49a)]=this['outputTexture'],_0x56789f[_0x2100d0(0x42e,0x4a6)]=!![],new ComputeCommand(_0x56789f);}else throw new Error(_0x9bad65(-0xb6,-0x79));}}[_0x35412f(0x142,0xfa)](_0x122f04,_0x70a729){function _0x271619(_0x3e1045,_0x592a4d){return _0x4e9bfa(_0x3e1045- -0x291,_0x592a4d);}function _0x1022bf(_0x1233a8,_0x286955){return _0x35412f(_0x1233a8-0x99,_0x286955);}this[_0x1022bf(0x143,0x159)]=_0x70a729,defined(this['commandToExecute'])&&(this[_0x1022bf(0xfe,0xc5)][_0x271619(-0x1d3,-0x222)]=VertexArray$1['fromGeometry']({'context':_0x122f04,'geometry':this[_0x271619(-0x175,-0xf8)],'attributeLocations':this['attributeLocations'],'bufferUsage':BufferUsage$1['STATIC_DRAW']}));}[_0x4e9bfa(0x18d,0x20c)](_0x122138){function _0x5be936(_0x43e78a,_0x13ed40){return _0x4e9bfa(_0x43e78a-0x3d4,_0x13ed40);}if(!this['isDynamic']())return;if(!this['show']||!defined(_0x122138))return;!defined(this['commandToExecute'])&&(this[_0x21bc78(0x279,0x27c)]=this['createCommand'](_0x122138['context']));defined(this[_0x5be936(0x521,0x538)])&&this[_0x5be936(0x521,0x581)]();if(!_0x122138[_0x21bc78(0x365,0x2ff)]){console[_0x21bc78(0x31e,0x2c3)](_0x21bc78(0x311,0x31a));return;}defined(this[_0x21bc78(0x290,0x27b)])&&_0x122138['commandList'][_0x21bc78(0x2cd,0x318)](this['clearCommand']);function _0x21bc78(_0x290a03,_0x41dea8){return _0x4e9bfa(_0x41dea8-0x1a5,_0x290a03);}defined(this[_0x21bc78(0x2b6,0x27c)])&&_0x122138['commandList']['push'](this['commandToExecute']);}[_0x35412f(0x86,0xeb)](){return![];}['destroy'](){function _0x38fdc8(_0x9c33aa,_0x2c3263){return _0x4e9bfa(_0x2c3263-0xb9,_0x9c33aa);}if(defined(this['commandToExecute'])){var _0x4ed367;(_0x4ed367=this['commandToExecute'][_0x38fdc8(0x139,0x156)])===null||_0x4ed367===void 0x0||_0x4ed367['destroy'](),this['commandToExecute']['shaderProgram']=undefined;}return destroyObject(this);}}function deepMerge(_0x188b25,_0x261741){if(!_0x188b25)return _0x261741;if(!_0x261741)return _0x188b25;const _0x152470={..._0x261741};function _0x1661bf(_0x3778ee,_0x400e9a){return _0x35412f(_0x3778ee-0x1c0,_0x400e9a);}const _0x622e2c=_0x152470;for(const _0x2da6b0 in _0x188b25){if(Object['prototype']['hasOwnProperty']['call'](_0x188b25,_0x2da6b0)){const _0x5b0fcf=_0x188b25[_0x2da6b0],_0x46721a=_0x261741[_0x2da6b0];if(Array['isArray'](_0x5b0fcf)){_0x622e2c[_0x2da6b0]=_0x5b0fcf['slice']();continue;}if(_0x5b0fcf&&typeof _0x5b0fcf===_0x1661bf(0x211,0x270)){_0x622e2c[_0x2da6b0]=deepMerge(_0x5b0fcf,_0x46721a||{});continue;}_0x5b0fcf!==undefined&&(_0x622e2c[_0x2da6b0]=_0x5b0fcf);}}return _0x622e2c;}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[_0x35412f(0xe1,0xea)];class WindParticlesComputing{constructor(_0xa5f945,_0x54e303,_0x480912,_0x6f58f4,_0x1698ee){this['context']=_0xa5f945;function _0x35d486(_0x167422,_0x28ad8a){return _0x4e9bfa(_0x167422- -0xf0,_0x28ad8a);}this[_0x35d486(0xa8,0x75)]=_0x480912,this['viewerParameters']=_0x6f58f4,this[_0x426103(0x288,0x2fa)]=_0x54e303,this[_0x35d486(-0x4c,-0x16)]=0x3c,this['frameRateAdjustment']=0x1;function _0x426103(_0x485c68,_0x2fa718){return _0x4e9bfa(_0x485c68-0x107,_0x2fa718);}const _0x235ab7={};_0x235ab7['scene']=_0x1698ee,_0x235ab7['samplingWindow']=0x1,_0x235ab7['quietPeriod']=0x0,this['frameRateMonitor']=new FrameRateMonitor(_0x235ab7),this['initFrameRate'](),this['createWindTextures'](),this[_0x35d486(0x49,0xb3)](),this[_0x35d486(-0x1e,-0x46)]();}['initFrameRate'](){function _0x15054f(_0x588825,_0x500974){return _0x35412f(_0x500974-0xa2,_0x588825);}const _0x20db80=()=>{function _0x1087f0(_0x11c69c,_0x25c8a1){return _0x534b(_0x11c69c-0x1d8,_0x25c8a1);}function _0x34ca6a(_0x49c03c,_0x4609f8){return _0x534b(_0x49c03c- -0xb6,_0x4609f8);}this[_0x1087f0(0x2f3,0x2b7)]['lastFramesPerSecond']>0x14&&(this['frameRate']=this[_0x34ca6a(0x65,0xc9)][_0x34ca6a(0xcf,0xa6)],this[_0x34ca6a(0xb6,0x48)]=0x3c/Math[_0x1087f0(0x3b1,0x341)](this[_0x34ca6a(0x2a,0x82)],0x1));};_0x20db80();const _0x492188=setInterval(_0x20db80,0x3e8),_0x24c47b=this['destroy'][_0x15054f(0x15a,0x152)](this);this['destroy']=()=>{clearInterval(_0x492188),_0x24c47b();};}['createWindTextures'](){function _0x3d224a(_0x3c422,_0xc4cf7c){return _0x4e9bfa(_0xc4cf7c- -0x40,_0x3c422);}const _0x53a6e2={};_0x53a6e2[_0x3d224a(0xb2,0x78)]=TextureMinificationFilter$1['LINEAR'],_0x53a6e2['magnificationFilter']=TextureMagnificationFilter$1[_0x3d224a(0x7f,0xd5)];function _0x3c4c06(_0x40a67b,_0x2d7739){return _0x35412f(_0x2d7739-0x19c,_0x40a67b);}const _0x1449b5={'context':this[_0x3d224a(0xd4,0xe9)],'width':this[_0x3d224a(0x1cc,0x141)][_0x3c4c06(0x26e,0x293)],'height':this['windData'][_0x3c4c06(0x348,0x2d5)],'pixelFormat':PixelFormat$1[_0x3c4c06(0x206,0x216)],'pixelDatatype':PixelDatatype$1[_0x3c4c06(0x242,0x242)],'flipY':this[_0x3c4c06(0x2f1,0x2c2)][_0x3d224a(0x8c,0x117)]??![],'sampler':new Sampler$1(_0x53a6e2)};this['windTextures']={'U':new Texture$1({..._0x1449b5,'source':{'arrayBufferView':new Float32Array(this['windData']['u'][_0x3c4c06(0x243,0x245)])}}),'V':new Texture$1({..._0x1449b5,'source':{'arrayBufferView':new Float32Array(this['windData']['v'][_0x3d224a(0x55,0xdb)])}})};}['createParticlesTextures'](){const _0x2f0d11={};_0x2f0d11['minificationFilter']=TextureMinificationFilter$1[_0x3c068(0x42c,0x4bc)],_0x2f0d11[_0x3c068(0x5fa,0x5c0)]=TextureMagnificationFilter$1['NEAREST'];function _0x3c068(_0x492dab,_0x5426f5){return _0x4e9bfa(_0x5426f5-0x40f,_0x492dab);}const _0x34d172={'context':this[_0x5012f3(0x1ac,0x1c7)],'width':this[_0x5012f3(0x21b,0x235)]['particlesTextureSize'],'height':this['options'][_0x3c068(0x521,0x4f8)],'pixelFormat':PixelFormat$1['RGBA'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options']['particlesTextureSize']*this[_0x5012f3(0x21b,0x1be)]['particlesTextureSize']*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x2f0d11)};function _0x5012f3(_0x5410dc,_0x2f0d06){return _0x4e9bfa(_0x5410dc-0x83,_0x2f0d06);}this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0x34d172),'currentParticlesPosition':new Texture$1(_0x34d172),'nextParticlesPosition':new Texture$1(_0x34d172),'postProcessingPosition':new Texture$1(_0x34d172),'particlesSpeed':new Texture$1(_0x34d172)};}['destroyParticlesTextures'](){Object['values'](this['particlesTextures'])['forEach'](_0x5799a6=>_0x5799a6['destroy']());}['createComputingPrimitives'](){function _0x592be8(_0xdeb2b9,_0x1b6bfe){return _0x35412f(_0xdeb2b9-0x1bd,_0x1b6bfe);}function _0x52cf9b(_0x4ea5af,_0x4527d3){return _0x35412f(_0x4527d3- -0x12f,_0x4ea5af);}this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this[_0x52cf9b(-0xa9,-0x76)]['V'],'uRange':()=>new Cartesian2$1(this[_0x52cf9b(-0xa,-0x20)]['u'][_0x592be8(0x283,0x2db)],this['windData']['u']['max']),'vRange':()=>new Cartesian2$1(this['windData']['v'][_0x52cf9b(-0x1,-0x69)],this['windData']['v']['max']),'speedRange':()=>new Cartesian2$1(this['windData']['speed']['min'],this[_0x52cf9b(-0xb,-0x20)][_0x52cf9b(-0x69,-0x3d)][_0x52cf9b(0xe,-0x4)]),'currentParticlesPosition':()=>this[_0x52cf9b(-0xbb,-0x5b)]['currentParticlesPosition'],'speedScaleFactor':()=>{function _0x4b09f7(_0x1048e8,_0x4abe7c){return _0x592be8(_0x4abe7c-0xbf,_0x1048e8);}return(this[_0x4b09f7(0x2be,0x2ed)]['pixelSize']+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this[_0x52cf9b(-0x58,-0x71)],'dimension':()=>new Cartesian2$1(this[_0x52cf9b(-0x4f,-0x20)]['width'],this[_0x52cf9b(0x19,-0x20)]['height']),'minimum':()=>new Cartesian2$1(this['windData']['bounds']['west'],this[_0x52cf9b(-0x69,-0x20)]['bounds'][_0x52cf9b(0xe,-0x32)]),'maximum':()=>new Cartesian2$1(this['windData']['bounds'][_0x592be8(0x282,0x246)],this[_0x52cf9b(0x3,-0x20)]['bounds']['north'])},'fragmentShaderSource':ShaderManager[_0x592be8(0x239,0x241)](),'outputTexture':this['particlesTextures']['particlesSpeed'],'preExecute':()=>{function _0x329c9b(_0x3b3a6e,_0x48e16a){return _0x592be8(_0x3b3a6e-0x11f,_0x48e16a);}const _0x2297e9=this['particlesTextures'][_0x329c9b(0x31c,0x338)];function _0x34cc5c(_0x54518e,_0x524bee){return _0x52cf9b(_0x524bee,_0x54518e-0xca);}this['particlesTextures']['previousParticlesPosition']=this['particlesTextures'][_0x329c9b(0x38e,0x3f0)],this['particlesTextures']['currentParticlesPosition']=this['particlesTextures']['postProcessingPosition'],this[_0x34cc5c(0x6f,0x8b)]['postProcessingPosition']=_0x2297e9,this[_0x34cc5c(0x6d,-0x23)][_0x329c9b(0x383,0x413)][_0x329c9b(0x341,0x325)]&&(this[_0x329c9b(0x3ae,0x426)][_0x329c9b(0x383,0x3cb)]['commandToExecute']['outputTexture']=this['particlesTextures']['particlesSpeed']);},'isDynamic':()=>this[_0x592be8(0x2e3,0x2f0)]['dynamic']}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this[_0x592be8(0x291,0x2ba)]['currentParticlesPosition'],'particlesSpeed':()=>this['particlesTextures']['particlesSpeed']},'fragmentShaderSource':ShaderManager['getUpdatePositionShader'](),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':()=>{function _0x403f70(_0x2f5e71,_0x5c19d0){return _0x592be8(_0x2f5e71-0x1cf,_0x5c19d0);}function _0x14359c(_0x5accd5,_0x258716){return _0x52cf9b(_0x5accd5,_0x258716-0x248);}this['primitives']['updatePosition'][_0x14359c(0x173,0x17e)]&&(this[_0x403f70(0x45e,0x4c2)][_0x403f70(0x449,0x4ce)][_0x403f70(0x3f1,0x3ee)]['outputTexture']=this['particlesTextures']['nextParticlesPosition']);},'isDynamic':()=>this[_0x52cf9b(-0x21,-0x9)]['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x592be8(0x252,0x226),'uniformMap':{'nextParticlesPosition':()=>this[_0x52cf9b(-0x74,-0x5b)]['nextParticlesPosition'],'particlesSpeed':()=>this[_0x52cf9b(-0x4,-0x5b)]['particlesSpeed'],'lonRange':()=>this[_0x592be8(0x22e,0x25e)][_0x592be8(0x22c,0x2ae)],'latRange':()=>this['viewerParameters'][_0x592be8(0x2f8,0x27a)],'dataLonRange':()=>new Cartesian2$1(this['windData'][_0x592be8(0x250,0x1ed)]['west'],this['windData']['bounds'][_0x592be8(0x282,0x2b3)]),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0x592be8(0x250,0x2af)]['south'],this['windData'][_0x592be8(0x250,0x256)][_0x52cf9b(-0x1b,-0x73)]),'randomCoefficient':function(){return Math['random']();},'dropRate':()=>this[_0x592be8(0x2e3,0x33a)]['dropRate'],'dropRateBump':()=>this[_0x52cf9b(0x79,-0x9)]['dropRateBump'],'useViewerBounds':()=>this[_0x52cf9b(0x10,-0x9)][_0x592be8(0x2d4,0x30c)]},'fragmentShaderSource':ShaderManager[_0x592be8(0x1eb,0x1be)](),'outputTexture':this['particlesTextures'][_0x52cf9b(-0xb8,-0x34)],'preExecute':()=>{function _0x48bf05(_0x4804be,_0x57cca8){return _0x592be8(_0x4804be-0x1cd,_0x57cca8);}function _0x215d59(_0x4202ce,_0x5ae72c){return _0x592be8(_0x4202ce- -0x1d2,_0x5ae72c);}this['primitives'][_0x215d59(0xe6,0x135)][_0x215d59(0x50,0x88)]&&(this[_0x215d59(0xbd,0x133)]['postProcessingPosition'][_0x215d59(0x50,0x85)]['outputTexture']=this['particlesTextures'][_0x48bf05(0x485,0x4f0)]);},'isDynamic':()=>this[_0x52cf9b(-0x2b,-0x9)][_0x592be8(0x229,0x25f)]})};}['reCreateWindTextures'](){this['windTextures']['U'][_0x5af60e(0x3fc,0x394)]();function _0x5af60e(_0x4163b7,_0x57c233){return _0x35412f(_0x4163b7-0x30e,_0x57c233);}this[_0x5af60e(0x3c7,0x384)]['V']['destroy']();function _0x2f97cf(_0x14514a,_0xc51b87){return _0x35412f(_0xc51b87-0x5,_0x14514a);}this['createWindTextures']();}['updateWindData'](_0x49afdb){this['windData']=_0x49afdb,this['reCreateWindTextures']();}['updateOptions'](_0x200919){const _0x4d88ce=_0x200919['flipY']!==undefined&&_0x200919['flipY']!==this['options']['flipY'];this['options']=deepMerge(_0x200919,this['options']);function _0x4ed3ca(_0x2ea832,_0x362612){return _0x35412f(_0x362612-0xbc,_0x2ea832);}_0x4d88ce&&this[_0x4ed3ca(0x183,0x200)]();}[_0x4e9bfa(0xfb,0xff)](_0x4c2159){const {array:_0x3d3e97}=_0x4c2159;let {min:_0x4ea0a0,max:_0x578425}=_0x4c2159;const _0x7a6eb2=new Float32Array(_0x3d3e97['length']);_0x4ea0a0===undefined&&(console['warn'](_0x5a602d(-0x1,-0x8e)),_0x4ea0a0=Math['min'](..._0x3d3e97));_0x578425===undefined&&(console['warn'](_0x5a602d(0x80,0x9c)),_0x578425=Math[_0x5a602d(0x76,0xc8)](..._0x3d3e97));const _0x290026=Math['max'](Math[_0xa11d5b(0x4a5,0x451)](_0x4ea0a0),Math['abs'](_0x578425));function _0xa11d5b(_0x2c1091,_0x3cd2bd){return _0x35412f(_0x3cd2bd-0x3f9,_0x2c1091);}for(let _0x2387ac=0x0;_0x2387ac<_0x3d3e97['length'];_0x2387ac++){const _0xc22a5b=_0x3d3e97[_0x2387ac]/_0x290026;_0x7a6eb2[_0x2387ac]=_0xc22a5b;}function _0x5a602d(_0x1a2519,_0x50e26b){return _0x4e9bfa(_0x1a2519- -0x127,_0x50e26b);}return _0x7a6eb2;}['destroy'](){function _0x5b85c0(_0x730c7,_0x2aea46){return _0x4e9bfa(_0x2aea46-0x201,_0x730c7);}Object['values'](this['windTextures'])['forEach'](_0x4beb2e=>_0x4beb2e['destroy']()),Object['values'](this['particlesTextures'])[_0x5b85c0(0x2c2,0x2fe)](_0x24e456=>_0x24e456[_0x4ea159(0x1c2,0x1ed)]());function _0x4ea159(_0x7e826f,_0x1fe93e){return _0x35412f(_0x1fe93e-0xff,_0x7e826f);}Object['values'](this[_0x4ea159(0x1cb,0x1d1)])[_0x5b85c0(0x381,0x2fe)](_0x2a6e98=>_0x2a6e98[_0x4ea159(0x1e8,0x1ed)]()),this['frameRateMonitor'][_0x5b85c0(0x36b,0x361)]();}}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace['Cesium'];function _0x35412f(_0x2e5e35,_0x13f98f){return _0x534b(_0x2e5e35- -0xae,_0x13f98f);}class WindParticlesRendering{constructor(_0x2f94e6,_0x159aef,_0x1b7628,_0x473516){this[_0x30c54f(0x364,0x385)]=_0x2f94e6;function _0x416882(_0x21d13b,_0x46431a){return _0x4e9bfa(_0x21d13b- -0x21c,_0x46431a);}this[_0x30c54f(0x3b3,0x3f4)]=_0x159aef,this['viewerParameters']=_0x1b7628,this['computing']=_0x473516;(typeof this['options'][_0x416882(-0x133,-0xd7)]!=='number'||this['options'][_0x416882(-0x133,-0xbd)]<=0x0)&&(console['error']('Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.'),this['options']['particlesTextureSize']=0x100);this[_0x416882(-0x14c,-0x1b7)]=this[_0x30c54f(0x353,0x320)](),this[_0x416882(-0xdf,-0x125)]=this['createRenderingTextures']();function _0x30c54f(_0x331385,_0x422526){return _0x4e9bfa(_0x422526-0x25c,_0x331385);}this[_0x30c54f(0x405,0x38e)]=this[_0x416882(-0x8b,-0xb6)](),this['primitives']=this['createPrimitives']();}['createRenderingTextures'](){function _0x49d8f0(_0x40a576,_0x501807){return _0x4e9bfa(_0x40a576- -0x284,_0x501807);}const _0x3408a4={};_0x3408a4[_0x55c549(0x473,0x4a2)]=this['context'],_0x3408a4[_0x55c549(0x4b3,0x466)]=this['context'][_0x55c549(0x4a6,0x4cc)],_0x3408a4['height']=this['context']['drawingBufferHeight'],_0x3408a4[_0x55c549(0x449,0x471)]=PixelFormat['RGBA'],_0x3408a4['pixelDatatype']=PixelDatatype['UNSIGNED_BYTE'];const _0x4cac45=_0x3408a4;function _0x55c549(_0x4798c0,_0x122f18){return _0x4e9bfa(_0x4798c0-0x34a,_0x122f18);}const _0x28b395={};_0x28b395[_0x55c549(0x473,0x434)]=this['context'],_0x28b395[_0x49d8f0(-0x11b,-0xb2)]=this[_0x49d8f0(-0x15b,-0x1d2)]['drawingBufferWidth'],_0x28b395['height']=this['context']['drawingBufferHeight'],_0x28b395['pixelFormat']=PixelFormat['DEPTH_COMPONENT'],_0x28b395['pixelDatatype']=PixelDatatype[_0x49d8f0(-0x10e,-0x97)];const _0x52ea6f=_0x28b395;return{'segmentsColor':new Texture(_0x4cac45),'segmentsDepth':new Texture(_0x52ea6f)};}['createRenderingFramebuffers'](){const _0x2d3eb9={};_0x2d3eb9['context']=this['context'],_0x2d3eb9['colorTextures']=[this['textures']['segmentsColor']],_0x2d3eb9[_0x321e3a(0x3e1,0x40d)]=this['textures'][_0x321e3a(0x4cb,0x48b)];function _0x42124b(_0xe88c2b,_0x1c7216){return _0x35412f(_0x1c7216-0x24c,_0xe88c2b);}function _0x321e3a(_0x31331c,_0x4f9e64){return _0x4e9bfa(_0x4f9e64-0x304,_0x31331c);}return{'segments':new Framebuffer(_0x2d3eb9)};}['destoryRenderingFramebuffers'](){Object['values'](this['framebuffers'])['forEach'](_0x24bb9a=>{function _0x5c28cb(_0x1a473f,_0x4c1cb9){return _0x534b(_0x4c1cb9-0x1a2,_0x1a473f);}_0x24bb9a[_0x5c28cb(0x376,0x33e)]();});}[_0x35412f(0x52,0xad)](){const _0x5c9d73=new Float32Array(this['options']['colors']['flatMap'](_0x437671=>{const _0x5c95de=Color$1[_0x4d06c2(-0x12f,-0x1ba)](_0x437671);function _0x4d06c2(_0x363d2f,_0x3e53a8){return _0x534b(_0x363d2f- -0x2ab,_0x3e53a8);}function _0x5d28b5(_0x10485c,_0xcd81a5){return _0x534b(_0xcd81a5-0x203,_0x10485c);}return[_0x5c95de[_0x4d06c2(-0xf7,-0x122)],_0x5c95de['green'],_0x5c95de['blue'],_0x5c95de['alpha']];}));function _0x24068d(_0x3b70bc,_0x3a5bdd){return _0x4e9bfa(_0x3b70bc- -0x360,_0x3a5bdd);}const _0x5e9147={};_0x5e9147[_0x3e9374(0x261,0x259)]=TextureMinificationFilter['LINEAR'];function _0x3e9374(_0x19743f,_0x24d388){return _0x4e9bfa(_0x24d388-0x1a1,_0x19743f);}return _0x5e9147['magnificationFilter']=TextureMagnificationFilter['LINEAR'],_0x5e9147[_0x24068d(-0x1f2,-0x195)]=TextureWrap[_0x3e9374(0x318,0x2df)],_0x5e9147[_0x24068d(-0x297,-0x25f)]=TextureWrap[_0x24068d(-0x222,-0x1d3)],new Texture({'context':this['context'],'width':this[_0x24068d(-0x1c8,-0x14c)][_0x24068d(-0x2c6,-0x30f)]['length'],'height':0x1,'pixelFormat':PixelFormat['RGBA'],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x5e9147),'source':{'width':this['options']['colors']['length'],'height':0x1,'arrayBufferView':_0x5c9d73}});}['createSegmentsGeometry'](){const _0x4f40c1=0x4,_0x20ddb0=this['options'][_0x24fa74(0x26b,0x2c8)];let _0xbdb9f=[];for(let _0x54250d=0x0;_0x54250d<_0x20ddb0;_0x54250d++){for(let _0x4e26e0=0x0;_0x4e26e0<_0x20ddb0;_0x4e26e0++){for(let _0x169b5c=0x0;_0x169b5c<_0x4f40c1;_0x169b5c++){_0xbdb9f[_0x24fa74(0x2f5,0x2bc)](_0x54250d/_0x20ddb0),_0xbdb9f['push'](_0x4e26e0/_0x20ddb0);}}}_0xbdb9f=new Float32Array(_0xbdb9f);const _0x3efc2f=this['options'][_0x3546dc(0x177,0x1c0)]**0x2;let _0x5549fe=[];for(let _0x3b57e1=0x0;_0x3b57e1<_0x3efc2f;_0x3b57e1++){_0x5549fe['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x5549fe=new Float32Array(_0x5549fe);let _0x347c9a=[];for(let _0x66dd4c=0x0,_0x26ad78=0x0;_0x66dd4c<_0x3efc2f;_0x66dd4c++){_0x347c9a[_0x24fa74(0x2f5,0x312)](_0x26ad78+0x0,_0x26ad78+0x1,_0x26ad78+0x2,_0x26ad78+0x2,_0x26ad78+0x1,_0x26ad78+0x3),_0x26ad78+=_0x4f40c1;}_0x347c9a=new Uint32Array(_0x347c9a);const _0x487b3b={};_0x487b3b[_0x24fa74(0x308,0x30b)]=ComponentDatatype['FLOAT'],_0x487b3b['componentsPerAttribute']=0x2;function _0x24fa74(_0x4c27be,_0x502454){return _0x4e9bfa(_0x4c27be-0x182,_0x502454);}_0x487b3b[_0x3546dc(0x1c4,0x1e5)]=_0xbdb9f;const _0x455bf2={};function _0x3546dc(_0xe25217,_0x34835e){return _0x35412f(_0x34835e-0x149,_0xe25217);}_0x455bf2['componentDatatype']=ComponentDatatype[_0x24fa74(0x29a,0x24d)],_0x455bf2[_0x24fa74(0x21a,0x1a8)]=0x3,_0x455bf2[_0x24fa74(0x290,0x288)]=_0x5549fe;const _0x201996=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x487b3b),'normal':new GeometryAttribute(_0x455bf2)}),'indices':_0x347c9a});return _0x201996;}['createRawRenderState'](_0x420292){function _0x4517a3(_0xe152b3,_0x4f636){return _0x4e9bfa(_0x4f636- -0x1a2,_0xe152b3);}const _0x5b1379={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x420292};return Appearance[_0x4517a3(-0x1b,0x1)](!![],![],_0x5b1379);}[_0x4e9bfa(0x143,0x196)](){const _0xaf5dec={};_0xaf5dec['st']=0x0,_0xaf5dec[_0x5509c4(0x469,0x3e3)]=0x1;const _0x25ecc4={};_0x25ecc4['enabled']=!![];const _0x3f1e71={};_0x3f1e71['enabled']=!![];function _0x5509c4(_0x5ddc60,_0x2e8d40){return _0x35412f(_0x5ddc60-0x35d,_0x2e8d40);}_0x3f1e71[_0x3062ca(0x227,0x1ea)]=WebGLRenderingContext['FUNC_ADD'],_0x3f1e71['blendFuncSource']=WebGLRenderingContext['SRC_ALPHA'],_0x3f1e71['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];function _0x3062ca(_0x45696b,_0x477688){return _0x35412f(_0x45696b-0x19d,_0x477688);}const _0x1d0847={};_0x1d0847['viewport']=undefined,_0x1d0847[_0x3062ca(0x1cc,0x1fe)]=_0x25ecc4,_0x1d0847['depthMask']=!![],_0x1d0847['blending']=_0x3f1e71;const _0x29c982=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0xaf5dec,'geometry':this[_0x3062ca(0x2c5,0x347)](),'primitiveType':PrimitiveType['TRIANGLES'],'uniformMap':{'previousParticlesPosition':()=>this['computing']['particlesTextures'][_0x5509c4(0x39d,0x384)],'currentParticlesPosition':()=>this[_0x5509c4(0x3f1,0x3d9)]['particlesTextures']['currentParticlesPosition'],'postProcessingPosition':()=>this[_0x3062ca(0x231,0x284)][_0x5509c4(0x431,0x420)][_0x5509c4(0x458,0x40e)],'particlesSpeed':()=>this['computing']['particlesTextures'][_0x3062ca(0x265,0x1d9)],'frameRateAdjustment':()=>this['computing']['frameRateAdjustment'],'colorTable':()=>this['colorTable'],'domain':()=>{var _0x5a8b28,_0x1fdf45;function _0x38b79e(_0x339077,_0x59c754){return _0x3062ca(_0x59c754-0x6d,_0x339077);}const _0x2d8d00=new Cartesian2(((_0x5a8b28=this['options']['domain'])===null||_0x5a8b28===void 0x0?void 0x0:_0x5a8b28[_0x38457f(0x3e7,0x38c)])??this[_0x38457f(0x34c,0x35a)]['windData']['speed'][_0x38b79e(0x33c,0x2d0)],((_0x1fdf45=this['options'][_0x38457f(0x3d8,0x3a5)])===null||_0x1fdf45===void 0x0?void 0x0:_0x1fdf45[_0x38b79e(0x33a,0x335)])??this['computing'][_0x38457f(0x38c,0x3d5)][_0x38b79e(0x2ff,0x2fc)][_0x38b79e(0x318,0x335)]);function _0x38457f(_0x1aaee1,_0x495463){return _0x5509c4(_0x495463- -0x97,_0x1aaee1);}return _0x2d8d00;},'displayRange':()=>{function _0xbda5ad(_0x28a9ef,_0xa9d9cf){return _0x3062ca(_0x28a9ef- -0x307,_0xa9d9cf);}function _0x392919(_0x1d678b,_0x3ac1a9){return _0x5509c4(_0x3ac1a9- -0x45,_0x1d678b);}var _0x2e1d76,_0x86f5fe;const _0x18f222=new Cartesian2(((_0x2e1d76=this[_0x392919(0x450,0x43e)]['displayRange'])===null||_0x2e1d76===void 0x0?void 0x0:_0x2e1d76['min'])??this['computing']['windData']['speed'][_0x392919(0x3cd,0x3de)],((_0x86f5fe=this['options']['displayRange'])===null||_0x86f5fe===void 0x0?void 0x0:_0x86f5fe[_0xbda5ad(-0x3f,0x9)])??this[_0x392919(0x413,0x3ac)][_0xbda5ad(-0x5b,-0x5c)][_0xbda5ad(-0x78,-0x85)][_0x392919(0x3ea,0x443)]);return _0x18f222;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x5509c4(0x414,0x43a)][_0x5509c4(0x447,0x3ed)]/this[_0x5509c4(0x414,0x47e)][_0x3062ca(0x23d,0x1e6)],'pixelSize':()=>this['viewerParameters'][_0x5509c4(0x3a5,0x32c)],'lineWidth':()=>{const _0x38c56e={};function _0x30e3bd(_0x288241,_0x32a59a){return _0x5509c4(_0x32a59a- -0xb8,_0x288241);}_0x38c56e[_0x30e3bd(0x3a7,0x36b)]=0x1,_0x38c56e['max']=0x2;const _0x59387a=this['options']['lineWidth']||_0x38c56e;return new Cartesian2(_0x59387a['min'],_0x59387a['max']);},'lineLength':()=>{const _0x33edf1={};_0x33edf1['min']=0x14;function _0x566f76(_0x56ba68,_0x1bae74){return _0x5509c4(_0x1bae74- -0x546,_0x56ba68);}function _0x3943ce(_0x480f6f,_0x3e1d47){return _0x3062ca(_0x3e1d47- -0x389,_0x480f6f);}_0x33edf1['max']=0x64;const _0x135148=this[_0x3943ce(-0x65,-0xc6)][_0x566f76(-0xba,-0x119)]||_0x33edf1;return new Cartesian2(_0x135148['min'],_0x135148[_0x566f76(-0xf3,-0xbe)]);},'is3D':()=>this[_0x3062ca(0x20e,0x1d4)]['sceneMode']===SceneMode['SCENE3D'],'segmentsDepthTexture':()=>this[_0x5509c4(0x428,0x3e7)]['segmentsDepth']},'vertexShaderSource':ShaderManager[_0x3062ca(0x2e3,0x2d1)](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x1d0847)}),_0x4cc829={};return _0x4cc829[_0x3062ca(0x1e8,0x232)]=_0x29c982,_0x4cc829;}['onParticlesTextureSizeChange'](){function _0x14acda(_0x8a06b6,_0x57a8c3){return _0x4e9bfa(_0x57a8c3- -0x345,_0x8a06b6);}const _0x1ca370=this[_0x14acda(-0x120,-0x1ab)]();this[_0x14acda(-0x188,-0x201)]['segments'][_0x14acda(-0x210,-0x229)]=_0x1ca370;const _0x56b6a6={};function _0x5410f6(_0x491a90,_0x1f1e80){return _0x35412f(_0x1f1e80- -0x1f3,_0x491a90);}_0x56b6a6[_0x5410f6(-0x19c,-0x13c)]=this[_0x5410f6(-0x156,-0x13c)],_0x56b6a6[_0x5410f6(-0xb8,-0x149)]=_0x1ca370,_0x56b6a6[_0x5410f6(-0x11a,-0xce)]=this['primitives'][_0x5410f6(-0x22a,-0x1a8)]['attributeLocations'],_0x56b6a6[_0x14acda(-0x1bf,-0x22f)]=BufferUsage[_0x5410f6(-0x166,-0x172)];const _0x60b334=VertexArray['fromGeometry'](_0x56b6a6);this['primitives']['segments'][_0x5410f6(-0x1d9,-0x18e)]&&(this['primitives']['segments'][_0x14acda(-0x2ec,-0x26e)]['vertexArray']=_0x60b334);}['onColorTableChange'](){this['colorTable']['destroy'](),this['colorTable']=this['createColorTableTexture']();}['updateOptions'](_0x4c095a){function _0x2376fd(_0x153d2b,_0x294594){return _0x35412f(_0x294594-0x1ef,_0x153d2b);}const _0x10994f=_0x4c095a[_0x2376fd(0x22f,0x217)]&&JSON['stringify'](_0x4c095a[_0x5944a9(0xd9,0x114)])!==JSON[_0x5944a9(0x1df,0x1e2)](this['options']['colors']);function _0x5944a9(_0x1ba0b0,_0x352406){return _0x35412f(_0x352406-0xec,_0x1ba0b0);}this['options']=deepMerge(_0x4c095a,this['options']),_0x10994f&&this['onColorTableChange']();}[_0x35412f(0xee,0xf0)](){Object['values'](this[_0x43c579(0x22d,0x276)])['forEach'](_0x3a6a5a=>{_0x3a6a5a['destroy']();});function _0x14d381(_0x15bd1f,_0x1aed33){return _0x4e9bfa(_0x1aed33- -0x77,_0x15bd1f);}Object[_0x43c579(0x261,0x252)](this[_0x43c579(0x287,0x288)])[_0x43c579(0x2aa,0x241)](_0x101b90=>{function _0x76148e(_0x54f248,_0x3c8446){return _0x14d381(_0x3c8446,_0x54f248-0x469);}_0x101b90[_0x76148e(0x552,0x4dd)]();});function _0x43c579(_0x22253b,_0x4dd5d4){return _0x4e9bfa(_0x4dd5d4-0x144,_0x22253b);}this['colorTable'][_0x14d381(0x78,0xe9)]();}}const {ClearCommand,Color,Pass}=mars3d__namespace['Cesium'];class WindParticleSystem{constructor(_0x16324f,_0x29db62,_0x88d714,_0x113bae,_0xd6ab76){this['context']=_0x16324f,this['options']=_0x88d714;function _0x1a7132(_0x36dc3f,_0x51c264){return _0x4e9bfa(_0x51c264-0x366,_0x36dc3f);}this[_0x1a7132(0x433,0x449)]=_0x113bae;function _0x1af590(_0x594554,_0x51d5bb){return _0x35412f(_0x594554- -0x309,_0x51d5bb);}this['computing']=new WindParticlesComputing(_0x16324f,_0x29db62,_0x88d714,_0x113bae,_0xd6ab76),this[_0x1a7132(0x568,0x4f1)]=new WindParticlesRendering(_0x16324f,_0x88d714,_0x113bae,this['computing']),this['clearFramebuffers']();}[_0x35412f(0x102,0x15d)](){function _0x275bba(_0x3f2b27,_0x25e868){return _0x4e9bfa(_0x3f2b27-0x258,_0x25e868);}function _0x295a62(_0x272dee,_0x1df34c){return _0x35412f(_0x272dee-0x240,_0x1df34c);}const _0x353832=[this['computing']['primitives']['calculateSpeed'],this[_0x295a62(0x2d4,0x2f7)][_0x275bba(0x39c,0x417)][_0x295a62(0x2fd,0x2fa)],this['computing'][_0x275bba(0x39c,0x402)]['postProcessingPosition'],this['rendering']['primitives'][_0x275bba(0x315,0x2c6)]];return _0x353832;}['clearFramebuffers'](){const _0x4856e1=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});function _0x5b1b3d(_0x52c216,_0x16757d){return _0x35412f(_0x16757d- -0xf1,_0x52c216);}Object['keys'](this[_0x5b1b3d(-0x14,0x28)]['framebuffers'])['forEach'](_0x28dd8b=>{function _0x121bab(_0x3c3ade,_0x3157db){return _0x5b1b3d(_0x3c3ade,_0x3157db-0x40f);}_0x4856e1[_0x4c446b(-0x8,0x2c)]=this[_0x4c446b(0x103,0xa7)][_0x121bab(0x422,0x3de)][_0x28dd8b];function _0x4c446b(_0x425d36,_0x2238cf){return _0x5b1b3d(_0x425d36,_0x2238cf-0x7f);}_0x4856e1['execute'](this['context']);});}['changeOptions'](_0x2fed14){let _0xd9da91=![];_0x2fed14['particlesTextureSize']&&this[_0x48a55c(0x3cc,0x375)][_0x48a55c(0x2b2,0x2c6)]!==_0x2fed14['particlesTextureSize']&&(_0xd9da91=!![]);const _0x393f5b=deepMerge(_0x2fed14,this['options']);if(_0x393f5b['particlesTextureSize']<0x1)throw new Error(_0x49b217(0x358,0x31b));function _0x48a55c(_0x2b9896,_0x2cb48f){return _0x35412f(_0x2cb48f-0x24f,_0x2b9896);}this[_0x48a55c(0x3a4,0x375)]=_0x393f5b,this['rendering']['updateOptions'](_0x2fed14),this[_0x48a55c(0x318,0x2e3)]['updateOptions'](_0x2fed14);function _0x49b217(_0xb6e1c8,_0x55729c){return _0x4e9bfa(_0x55729c-0x233,_0xb6e1c8);}_0xd9da91&&(this['computing'][_0x49b217(0x38a,0x3d8)](),this['computing'][_0x49b217(0x3b2,0x36c)](),this[_0x49b217(0x439,0x3be)]['onParticlesTextureSizeChange']());}['applyViewerParameters'](_0x2f4950){function _0x3b16f8(_0x4dfa3c,_0x2e736c){return _0x4e9bfa(_0x4dfa3c-0x1d1,_0x2e736c);}this[_0x3b16f8(0x2b4,0x300)]=_0x2f4950,this['computing']['viewerParameters']=_0x2f4950,this['rendering']['viewerParameters']=_0x2f4950;}[_0x4e9bfa(0x160,0x1a3)](){function _0x55781d(_0x2abb6b,_0xd5d5e7){return _0x35412f(_0x2abb6b- -0x5f,_0xd5d5e7);}this['computing']['destroy'](),this[_0x55781d(0xba,0xb5)]['destroy']();}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],_0x3a925d={};_0x3a925d[_0x35412f(0xc6,0x71)]=0x1,_0x3a925d[_0x4e9bfa(0x19d,0x154)]=0x2;const _0x3bb094={};_0x3bb094['min']=0x14,_0x3bb094[_0x35412f(0x12b,0x1ae)]=0x64;const _0x393fe7={};_0x393fe7[_0x4e9bfa(0xe9,0x8f)]=0x64,_0x393fe7['fixedHeight']=0x0,_0x393fe7['lineWidth']=_0x3a925d,_0x393fe7[_0x35412f(0xd0,0x147)]=_0x3bb094;function _0x4e9bfa(_0x390a2f,_0x2824c2){return _0x534b(_0x390a2f- -0x3c,_0x2824c2);}_0x393fe7[_0x4e9bfa(0xae,0x38)]=0x1,_0x393fe7['dropRate']=0.003,_0x393fe7[_0x4e9bfa(0x133,0x1a6)]=0.001,_0x393fe7['colors']=['rgb(206,255,255)'],_0x393fe7['flipY']=![],_0x393fe7['dynamic']=!![];const DEF_OPTIONS=_0x393fe7;class WindLayer extends BaseLayer$1{constructor(_0x2fdca1={}){_0x2fdca1={...DEF_OPTIONS,..._0x2fdca1},super(_0x2fdca1),this['_setOptionsHook'](_0x2fdca1,_0x2fdca1);}get['layer'](){function _0x2431a8(_0x4a7f4b,_0x4570f9){return _0x4e9bfa(_0x4a7f4b- -0x160,_0x4570f9);}return this[_0x2431a8(-0x1c,-0x12)];}get['data'](){function _0x562256(_0x496c36,_0x2d9a49){return _0x35412f(_0x2d9a49- -0x8d,_0x496c36);}return this['options'][_0x562256(-0x93,-0x38)];}set['data'](_0x50f8e3){this[_0x850397(0x507,0x504)][_0x4249d4(-0x218,-0x203)]=_0x50f8e3;function _0x4249d4(_0x1f70a2,_0x10565e){return _0x35412f(_0x1f70a2- -0x26d,_0x10565e);}function _0x850397(_0x46c344,_0x4b2cd6){return _0x4e9bfa(_0x4b2cd6-0x36c,_0x46c344);}this['setData'](_0x50f8e3);}get[_0x4e9bfa(0x9a,0x75)](){return this['options']['colors'];}set[_0x35412f(0x28,0x38)](_0x1bc35b){function _0x659884(_0x57cd5c,_0x2c0147){return _0x35412f(_0x2c0147-0x3f8,_0x57cd5c);}this['options']['colors']=_0x1bc35b;function _0xf7ee4a(_0x5169fa,_0x1c5266){return _0x4e9bfa(_0x1c5266-0x4e,_0x5169fa);}const _0x5ec006={};_0x5ec006['colors']=_0x1bc35b,this[_0xf7ee4a(0x98,0x122)](this[_0x659884(0x51d,0x51e)],_0x5ec006);}['_showHook'](_0x27e44c){_0x27e44c?this['_addedHook']():this['_removedHook']();}['_mountedHook'](){}['_addedHook'](){this[_0x19f4db(-0x176,-0x10a)]=this[_0x549872(-0x140,-0x1c4)]['scene'],this['camera']=this[_0x19f4db(-0x9f,-0xdd)][_0x19f4db(-0x13a,-0x134)];this['options']['data']&&this['setData'](this['options']['data']);if(!this[_0x549872(-0x15e,-0x19c)]||!this['show'])return;function _0x19f4db(_0x3913ea,_0x48f922){return _0x35412f(_0x3913ea- -0x1cc,_0x48f922);}this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](-0xb4,0xb4),'latRange':new Cesium$1['Cartesian2'](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this[_0x19f4db(-0x176,-0x193)]['mode']},this[_0x19f4db(-0xf3,-0x131)](),this['particleSystem']=new WindParticleSystem(this[_0x549872(-0x217,-0x24d)][_0x549872(-0x1b6,-0x193)],this[_0x19f4db(-0xbd,-0xba)],this[_0x549872(-0x147,-0xd6)],this['viewerParameters'],this['scene']);function _0x549872(_0x2c08f2,_0x3136cc){return _0x4e9bfa(_0x2c08f2- -0x2df,_0x3136cc);}this['primitives']=this['particleSystem'][_0x549872(-0x16b,-0x151)](),this[_0x19f4db(-0xfa,-0xd5)]['forEach'](_0x3863cf=>{this['scene']['primitives']['add'](_0x3863cf);}),this[_0x19f4db(-0x13a,-0x1af)]['percentageChanged']=0.01,this['camera']['changed']['addEventListener'](this['updateViewerParameters'][_0x19f4db(-0x11c,-0xb7)](this)),this[_0x19f4db(-0x176,-0xfb)]['morphComplete']['addEventListener'](this['updateViewerParameters']['bind'](this)),window['addEventListener']('resize',this['updateViewerParameters']['bind'](this));}['_removedHook'](){this[_0xbcbf90(-0x1d,0x25)]['changed']['removeEventListener'](this[_0x1ef189(0x415,0x3f9)][_0x1ef189(0x448,0x3d0)](this)),this[_0x1ef189(0x329,0x376)][_0xbcbf90(-0x2a,0xb)]['removeEventListener'](this['updateViewerParameters']['bind'](this)),window['removeEventListener']('resize',this['updateViewerParameters'][_0x1ef189(0x3af,0x3d0)](this));function _0xbcbf90(_0x105836,_0x5d3e35){return _0x4e9bfa(_0x5d3e35- -0xdf,_0x105836);}this['primitives']&&(this['primitives'][_0xbcbf90(-0x1,0x1e)](_0x5e8b0c=>{function _0x25ab02(_0x1196a8,_0x36d58c){return _0xbcbf90(_0x36d58c,_0x1196a8- -0x76);}function _0x48eca3(_0x211113,_0x11af4a){return _0x1ef189(_0x211113,_0x11af4a- -0x563);}this[_0x25ab02(-0x8d,-0x6b)]['primitives'][_0x25ab02(-0xad,-0xb0)](_0x5e8b0c);}),delete this[_0xbcbf90(0xe3,0x65)]);function _0x1ef189(_0x580c46,_0x3e77fd){return _0x35412f(_0x3e77fd-0x320,_0x580c46);}this[_0xbcbf90(-0xb6,-0x3a)]&&(this['particleSystem'][_0x1ef189(0x413,0x40e)](),delete this['particleSystem']);}['setData'](_0x2523f6,_0x35436a){this['windData']=this[_0x5e93ef(0x4e8,0x4eb)](_0x2523f6);if(_0x35436a){this['_removedHook'](),this['_addedHook']();return;}function _0x5e93ef(_0x4538e8,_0x26507a){return _0x35412f(_0x26507a-0x462,_0x4538e8);}function _0x222461(_0x46e817,_0x42283e){return _0x35412f(_0x42283e- -0x14d,_0x46e817);}this[_0x5e93ef(0x492,0x495)]?(this['particleSystem']['computing'][_0x5e93ef(0x4ab,0x51c)](this['windData']),this['scene'][_0x222461(-0x76,-0x45)]()):this[_0x222461(-0x8a,-0x10e)]();}[_0x4e9bfa(0xd4,0x119)](_0x123110,_0x1d14a3){function _0x71638f(_0x474149,_0x3faf20){return _0x4e9bfa(_0x3faf20- -0x16f,_0x474149);}function _0x5c1de5(_0x462b38,_0x4e5095){return _0x35412f(_0x4e5095- -0x26c,_0x462b38);}this['particleSystem']&&(this[_0x5c1de5(-0x1e4,-0x239)]['changeOptions'](_0x1d14a3),this[_0x71638f(-0xbf,-0xa7)]['requestRender']());}['processWindData'](_0x1d72b1){var _0x4f879e,_0x1f67f6;const _0xbae354={..._0x1d72b1},_0x1757f0=_0xbae354;!_0x1757f0[_0x532547(0x26,0x8c)]&&_0x1757f0[_0x532547(-0xe7,-0x16a)]&&(_0x1757f0[_0x532547(0x26,-0x32)]=_0x1757f0['rows']);!_0x1757f0[_0x532547(-0x1c,0x18)]&&_0x1757f0[_0x532547(-0xce,-0x94)]&&(_0x1757f0[_0x3637c5(0x1ff,0x1bd)]=_0x1757f0['cols']);function _0x3637c5(_0x89aef4,_0x20bae4){return _0x35412f(_0x20bae4-0xc6,_0x89aef4);}!_0x1757f0['bounds']&&(_0x1757f0[_0x532547(-0x80,-0xd0)]={'west':_0x1757f0['xmin'],'south':_0x1757f0[_0x532547(0x1c,0x18)],'east':_0x1757f0[_0x3637c5(0x1c9,0x1a8)],'north':_0x1757f0['ymax']});if(!_0x1757f0['u']){const _0x3b77ae={};_0x3b77ae['array']=_0x1d72b1[_0x3637c5(0x140,0x1b2)],_0x3b77ae[_0x3637c5(0x15e,0x18c)]=_0x1d72b1['umin'],_0x3b77ae['max']=_0x1d72b1[_0x532547(-0xb4,-0xb3)],_0x1757f0['u']=_0x3b77ae;}function _0x532547(_0x3b74e4,_0x179364){return _0x35412f(_0x3b74e4- -0x113,_0x179364);}if(!_0x1757f0['v']){const _0x5b5f18={};_0x5b5f18['array']=_0x1d72b1[_0x3637c5(0x1ac,0x168)],_0x5b5f18[_0x532547(-0x4d,-0x64)]=_0x1d72b1['vmin'],_0x5b5f18['max']=_0x1d72b1[_0x532547(-0xcf,-0x150)],_0x1757f0['v']=_0x5b5f18;}if(((_0x4f879e=_0x1757f0[_0x532547(-0x21,0x4e)])===null||_0x4f879e===void 0x0?void 0x0:_0x4f879e['min'])===undefined||((_0x1f67f6=_0x1757f0['speed'])===null||_0x1f67f6===void 0x0?void 0x0:_0x1f67f6[_0x532547(0x18,-0x26)])===undefined||_0x1757f0['speed']['array']===undefined){const _0x55e6a8={'array':new Float32Array(_0x1757f0['u'][_0x532547(-0x6a,-0x1d)]['length']),'min':Number[_0x532547(0x10,-0x21)],'max':Number[_0x3637c5(0x1b1,0x1dc)]};for(let _0x129680=0x0;_0x129680<_0x1757f0['u']['array']['length'];_0x129680++){_0x55e6a8['array'][_0x129680]=Math[_0x3637c5(0x228,0x1c4)](_0x1757f0['u']['array'][_0x129680]*_0x1757f0['u'][_0x532547(-0x6a,-0xbb)][_0x129680]+_0x1757f0['v']['array'][_0x129680]*_0x1757f0['v']['array'][_0x129680]),_0x55e6a8['array'][_0x129680]!==0x0&&(_0x55e6a8['min']=Math[_0x3637c5(0x1fa,0x18c)](_0x55e6a8['min'],_0x55e6a8[_0x532547(-0x6a,-0x8f)][_0x129680]),_0x55e6a8['max']=Math['max'](_0x55e6a8[_0x532547(0x18,0x4c)],_0x55e6a8['array'][_0x129680]));}_0x1757f0['speed']=_0x55e6a8;}return _0x1757f0;}['updateViewerParameters'](){var _0x422332;const _0x198e4b=this[_0x1b93bd(0xb9,0xf7)];if(!_0x198e4b)return;const _0x486dea=_0x198e4b[_0x1b93bd(0x136,0xb7)],_0x5c0eb8={};_0x5c0eb8['x']=0x0,_0x5c0eb8['y']=0x0;const _0x11a82a={};_0x11a82a['x']=0x0,_0x11a82a['y']=_0x486dea['clientHeight'];const _0x1af0f5={};_0x1af0f5['x']=_0x486dea[_0x4dfb8e(0x326,0x321)],_0x1af0f5['y']=0x0;const _0x3a5135={};_0x3a5135['x']=_0x486dea['clientWidth'];function _0x4dfb8e(_0xff9357,_0x953324){return _0x4e9bfa(_0xff9357-0x1d0,_0x953324);}_0x3a5135['y']=_0x486dea['clientHeight'];const _0x301627=[_0x5c0eb8,_0x11a82a,_0x1af0f5,_0x3a5135];function _0x1b93bd(_0x466d41,_0x5966fb){return _0x4e9bfa(_0x466d41- -0xf,_0x5966fb);}let _0x29aed5=0xb4,_0x1276b6=-0xb4,_0x4751e9=0x5a,_0x42e5b6=-0x5a,_0x1ada58=![];for(const _0x235ade of _0x301627){const _0x4b4e3a=_0x198e4b[_0x1b93bd(0xf5,0x11d)][_0x1b93bd(0x16c,0x11b)](new Cesium$1[(_0x4dfb8e(0x31c,0x303))](_0x235ade['x'],_0x235ade['y']),_0x198e4b['globe']['ellipsoid']);if(!_0x4b4e3a){_0x1ada58=!![];break;}const _0xf1962=_0x198e4b['globe']['ellipsoid']['cartesianToCartographic'](_0x4b4e3a),_0x48826d=Cesium$1[_0x4dfb8e(0x31e,0x37f)][_0x4dfb8e(0x33b,0x30b)](_0xf1962[_0x4dfb8e(0x2db,0x2cf)]),_0x51b6e6=Cesium$1['Math']['toDegrees'](_0xf1962[_0x4dfb8e(0x285,0x242)]);_0x29aed5=Math[_0x1b93bd(0x129,0xac)](_0x29aed5,_0x48826d),_0x1276b6=Math['max'](_0x1276b6,_0x48826d),_0x4751e9=Math['min'](_0x4751e9,_0x51b6e6),_0x42e5b6=Math[_0x4dfb8e(0x36d,0x363)](_0x42e5b6,_0x51b6e6);}if(!_0x1ada58){const _0x1a9ec5=new Cesium$1[(_0x4dfb8e(0x31c,0x34a))](Math[_0x1b93bd(0x18e,0x1cc)](this['windData']['bounds'][_0x1b93bd(0x1a3,0x182)],_0x29aed5),Math['min'](this[_0x1b93bd(0x172,0x133)][_0x1b93bd(0xf6,0x15b)]['east'],_0x1276b6)),_0xc0d2dd=new Cesium$1[(_0x1b93bd(0x13d,0x132))](Math['max'](this[_0x4dfb8e(0x351,0x397)][_0x4dfb8e(0x2d5,0x349)]['south'],_0x4751e9),Math[_0x4dfb8e(0x308,0x36b)](this[_0x4dfb8e(0x351,0x3a5)][_0x4dfb8e(0x2d5,0x2e7)]['north'],_0x42e5b6)),_0x51ef9b=(_0x1a9ec5['y']-_0x1a9ec5['x'])*0.05,_0x196cf8=(_0xc0d2dd['y']-_0xc0d2dd['x'])*0.05;_0x1a9ec5['x']=Math[_0x1b93bd(0x18e,0x192)](this[_0x1b93bd(0x172,0x175)][_0x4dfb8e(0x2d5,0x2d1)][_0x4dfb8e(0x382,0x318)],_0x1a9ec5['x']-_0x51ef9b),_0x1a9ec5['y']=Math[_0x1b93bd(0x129,0xb8)](this[_0x4dfb8e(0x351,0x388)]['bounds']['east'],_0x1a9ec5['y']+_0x51ef9b),_0xc0d2dd['x']=Math['max'](this['windData']['bounds'][_0x1b93bd(0x160,0x123)],_0xc0d2dd['x']-_0x196cf8),_0xc0d2dd['y']=Math[_0x4dfb8e(0x308,0x2b1)](this[_0x1b93bd(0x172,0x177)][_0x1b93bd(0xf6,0x167)][_0x4dfb8e(0x2fe,0x32a)],_0xc0d2dd['y']+_0x196cf8),this[_0x1b93bd(0xd4,0xaf)]['lonRange']=_0x1a9ec5,this[_0x1b93bd(0xd4,0x6c)]['latRange']=_0xc0d2dd;const _0x4010f6=this['windData'][_0x4dfb8e(0x2d5,0x2fa)]['east']-this['windData'][_0x4dfb8e(0x2d5,0x274)][_0x1b93bd(0x1a3,0x13d)],_0x277ad0=this['windData']['bounds']['north']-this['windData'][_0x1b93bd(0xf6,0x15e)]['south'],_0x254639=(_0x1a9ec5['y']-_0x1a9ec5['x'])/_0x4010f6,_0x2dffbd=(_0xc0d2dd['y']-_0xc0d2dd['x'])/_0x277ad0,_0x1c838b=Math['min'](_0x254639,_0x2dffbd),_0x7cac33=0x3e8*_0x1c838b;_0x7cac33>0x0&&(this['viewerParameters']['pixelSize']=Math[_0x1b93bd(0x18e,0x1e8)](0x0,Math['min'](0x3e8,_0x7cac33)));}this['viewerParameters']['sceneMode']=this['scene']['mode'],(_0x422332=this[_0x1b93bd(0x96,0x44)])===null||_0x422332===void 0x0||_0x422332[_0x1b93bd(0xfb,0x80)](this['viewerParameters']);}['getDataAtLonLat'](_0x39807d,_0x1efd1b){const {bounds:_0x1b2124,width:_0xb0c907,height:_0x369a63,u:_0x34eccc,v:_0x3ca901,speed:_0xfe2f01}=this['windData'],{flipY:_0xab123d}=this[_0x58ac07(0x526,0x49f)];if(_0x39807d<_0x1b2124['west']||_0x39807d>_0x1b2124[_0x5289ab(-0x119,-0xe1)]||_0x1efd1b<_0x1b2124['south']||_0x1efd1b>_0x1b2124['north'])return null;const _0x9de2c9=(_0x39807d-_0x1b2124['west'])/(_0x1b2124[_0x58ac07(0x3bb,0x43e)]-_0x1b2124['west'])*(_0xb0c907-0x1);let _0x571b68=(_0x1efd1b-_0x1b2124['south'])/(_0x1b2124[_0x5289ab(-0x122,-0xf0)]-_0x1b2124['south'])*(_0x369a63-0x1);_0xab123d&&(_0x571b68=_0x369a63-0x1-_0x571b68);const _0x4fd396=Math['floor'](_0x9de2c9),_0x516eb5=Math['floor'](_0x571b68),_0x5673e0=Math['floor'](_0x9de2c9),_0x32c50c=Math[_0x5289ab(-0x118,-0xf2)](_0x5673e0+0x1,_0xb0c907-0x1),_0x280e5c=Math[_0x5289ab(-0x1a0,-0x1af)](_0x571b68),_0x22cedc=Math['min'](_0x280e5c+0x1,_0x369a63-0x1),_0x2998f3=_0x9de2c9-_0x5673e0,_0x2bad0b=_0x571b68-_0x280e5c,_0x236ab9=_0x516eb5*_0xb0c907+_0x4fd396,_0x382c58=_0x280e5c*_0xb0c907+_0x5673e0,_0xb65ada=_0x280e5c*_0xb0c907+_0x32c50c,_0x56b452=_0x22cedc*_0xb0c907+_0x5673e0,_0x62335b=_0x22cedc*_0xb0c907+_0x32c50c;function _0x5289ab(_0x2b7878,_0x55b5c1){return _0x35412f(_0x2b7878- -0x1de,_0x55b5c1);}const _0x3e3002=_0x34eccc[_0x58ac07(0x395,0x422)][_0x382c58],_0x3d6649=_0x34eccc[_0x58ac07(0x3c0,0x422)][_0xb65ada],_0x2aa302=_0x34eccc['array'][_0x56b452],_0x5481e5=_0x34eccc['array'][_0x62335b],_0x52bcfc=(0x1-_0x2998f3)*(0x1-_0x2bad0b)*_0x3e3002+_0x2998f3*(0x1-_0x2bad0b)*_0x3d6649+(0x1-_0x2998f3)*_0x2bad0b*_0x2aa302+_0x2998f3*_0x2bad0b*_0x5481e5,_0x2ccb02=_0x3ca901[_0x5289ab(-0x135,-0xc4)][_0x382c58],_0x2a8842=_0x3ca901['array'][_0xb65ada],_0x4cd5e4=_0x3ca901['array'][_0x56b452],_0x38acfa=_0x3ca901[_0x58ac07(0x47d,0x422)][_0x62335b],_0x1009c6=(0x1-_0x2998f3)*(0x1-_0x2bad0b)*_0x2ccb02+_0x2998f3*(0x1-_0x2bad0b)*_0x2a8842+(0x1-_0x2998f3)*_0x2bad0b*_0x4cd5e4+_0x2998f3*_0x2bad0b*_0x38acfa;function _0x58ac07(_0x44b0f6,_0x1179fd){return _0x35412f(_0x1179fd-0x379,_0x44b0f6);}const _0x4a6693=Math[_0x5289ab(-0xe0,-0x150)](_0x52bcfc*_0x52bcfc+_0x1009c6*_0x1009c6),_0x290d08={};_0x290d08['u']=_0x34eccc['array'][_0x236ab9],_0x290d08['v']=_0x3ca901['array'][_0x236ab9],_0x290d08['speed']=_0xfe2f01['array'][_0x236ab9];const _0x5eaf8c={};_0x5eaf8c['u']=_0x52bcfc,_0x5eaf8c['v']=_0x1009c6,_0x5eaf8c['speed']=_0x4a6693;const _0x48ee5b={};return _0x48ee5b['original']=_0x290d08,_0x48ee5b['interpolated']=_0x5eaf8c,_0x48ee5b;}}mars3d__namespace['LayerUtil']['register'](_0x4e9bfa(0xa2,0x121),WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;function _0x19e8(){const _0x3ec2c6=['context','moveTo','windTextures','updateWindData','mouseDown','north','updatePosition','frameRateAdjustment','particles','framebuffers','dropRateBump','frameTime','9kuHsDI','create','east','min','createParticlesTextures','particlesSpeed','pow','redraw','textures','CLAMP_TO_EDGE','getOwnPropertyDescriptor','fromCssColorString','CanvasWindLayer','lineLength','createPrimitives','primitives','canvas','particlesTextures','_createCanvas','xmin','lastFramesPerSecond','ellipsoid','updateViewerParameters','Cartesian2','preExecute','Math','fragmentShaderSource','setDate','domain','canvasContext','Cesium','xmax','Rectangle','clientWidth','flipY','initWorker','#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','commandList','_colorRamp','drawingBufferWidth','visible','udata','_onMapWhellEvent','destroy','9716tlmypY','_calcUV','zIndex','speed','reverse','addEventListener','CanvasWindField','stringify','width','0px','toDegrees','outputTexture','postProcessingPosition','wrapS','south','sqrt','postMessage','_onMouseUpEvent','push','getPrimitives','frameState.commandList\x20is\x20undefined','UNSIGNED_INT','lng','red','_drawLines','requestRender','pickEllipsoid','toGridXY','DomUtil','normal','_tomap','_onMouseDownEvent','windData','container','positionWC','speedRate','commandType','componentDatatype','segmentsDepth','MIN_VALUE','useViewerBounds','getSpeed','rendering','1520760LVNjXx','update','particlesNumber','EllipsoidalOccluder','length','createRenderingFramebuffers','canvasWidth','mouse_move','owner','MAX_VALUE','3864KYseic','attributeLocations','options','style','createSegmentsGeometry','WindUtil','clear','max','color','_map','pointerEvents','ymin','removeChild','getDefaultRenderState','OPAQUE','destroyParticlesTextures','_updateIng2','max\x20is\x20undefined,\x20calculate\x20max','pointer-events','isInExtent','requestAnimationFrame','height','8148igGTbh','latRange','WindLayer','7190380nVnGck','canvasHeight','magnificationFilter','west','none','setGeometry','init','reCreateWindTextures','round','getSegmentDrawVertexShader','componentsPerAttribute','195KBQaPr','colors','__proto__','mouse_down','shaderProgram','rows','windField','getPostProcessingPositionShader','depthTest','wind','_animateFrame','frameRate','particleSystem','lat','value','remove','_calc_speedRate','clientHeight','ymax','age','NEAREST','speedFactor','lineTo','floor','_addedHook','previousParticlesPosition','wheel','globalCompositeOperation','latitude','vmax','cols','minificationFilter','PointTrans','pixelSize','rawRenderState','primitiveType','segments','vertexArray','refreshTimer','getSegmentDrawFragmentShader','talt','mars3d-canvasWind','object','createColorTableTexture','persists','getV','data','scene','wrapT','abs','vertexShaderSource','toWindowCoordinates','#ffffff','maxAge','fixedHeight','colorTable','umax','createComputingPrimitives','Unknown\x20command\x20type','_setOptionsHook','stroke','clearCommand','commandToExecute','visibility','type','tlng','left','isPointVisible','steps','dynamic','frameRateMonitor','_maxAge','lonRange','_speedRate','viewerParameters','resize','ColorRamp','toRadians','_pointerEvents','particlesTextureSize\x20must\x20be\x20greater\x20than\x200','particlesTextureSize','morphComplete','pass','RED','off','getCalculateSpeedShader','fromDegrees','createCommand','fillRect','getDirection','STATIC_DRAW','_randomParticle','sin','sources','getUVByXY','isDestroyed','4370915pReBfC','uniformMap','processWindData','blendEquation','forEach','_updateIng','pixelFormat','getUVByPoint','now','Draw','tlat','camera','bounds','computing','Compute','lineWidth','depthTexture','applyViewerParameters','longitude','worker','isDynamic','values','LayerUtil','framebuffer','_removedHook','drawingBufferHeight','getU','vdata','LINEAR','bufferUsage','auto','FLOAT','calculateSpeed','_onMouseMoveEvent','array','geometry','4393048AXuGHT','warn','setOptions','EventType','isDestroy','bind','mouseHidden','currentParticlesPosition','show','min\x20is\x20undefined,\x20calculate\x20min','237691tUbdTh','layer'];_0x19e8=function(){return _0x3ec2c6;};return _0x19e8();}class CanvasParticle{constructor(){function _0xafb521(_0x47c866,_0x5421b6){return _0x4e9bfa(_0x47c866- -0x262,_0x5421b6);}this[_0x12607e(-0xcd,-0x12a)]=null,this['lat']=null,this[_0xafb521(-0x188,-0x151)]=null;function _0x12607e(_0x3af2f5,_0x4edd21){return _0x35412f(_0x3af2f5- -0x1d2,_0x4edd21);}this['tlat']=null,this[_0xafb521(-0x1b6,-0x1f9)]=null,this[_0x12607e(-0xe0,-0x119)]=null;}[_0x35412f(0xee,0x94)](){for(const _0x482a43 in this){delete this[_0x482a43];}}}class CanvasWindField{constructor(_0x488168){this['setOptions'](_0x488168);}get['speedRate'](){function _0x465634(_0x614ed9,_0x499a17){return _0x35412f(_0x499a17-0x1ec,_0x614ed9);}return this[_0x465634(0x1e8,0x25c)];}set['speedRate'](_0x3465f4){this['_speedRate']=(0x64-(_0x3465f4>0x63?0x63:_0x3465f4))*0x64;function _0x9d3d8c(_0xca5478,_0x5d4984){return _0x4e9bfa(_0xca5478- -0x36e,_0x5d4984);}function _0x53d832(_0x5a7241,_0x4233b7){return _0x4e9bfa(_0x4233b7-0x1d8,_0x5a7241);}this[_0x9d3d8c(-0x2c5,-0x283)]=[(this['xmax']-this[_0x9d3d8c(-0x226,-0x1b3)])/this['_speedRate'],(this['ymax']-this[_0x9d3d8c(-0x1cd,-0x24b)])/this[_0x9d3d8c(-0x28c,-0x207)]];}get['maxAge'](){return this['_maxAge'];}set[_0x4e9bfa(0xce,0x43)](_0x31de75){function _0x7799d(_0x2bdd3f,_0x2a3349){return _0x4e9bfa(_0x2bdd3f-0x249,_0x2a3349);}this[_0x7799d(0x329,0x2a3)]=_0x31de75;}['setOptions'](_0x419348){this[_0x303a35(0x38c,0x3ad)]=_0x419348;function _0x303a35(_0x181051,_0x31ed7b){return _0x35412f(_0x31ed7b-0x287,_0x181051);}this[_0x6430b3(0x38f,0x377)]=_0x419348['maxAge']||0x78,this['speedRate']=_0x419348['speedRate']||0x32,this[_0x6430b3(0x35b,0x3da)]=[];const _0x22aa9d=_0x419348['particlesNumber']||0x1000;function _0x6430b3(_0x156adf,_0x39915f){return _0x35412f(_0x39915f-0x31b,_0x156adf);}for(let _0x2b8274=0x0;_0x2b8274<_0x22aa9d;_0x2b8274++){const _0x35ab21=this[_0x303a35(0x34a,0x309)](new CanvasParticle());this['particles']['push'](_0x35ab21);}}[_0x4e9bfa(0x150,0x133)](_0xe666ef){this['rows']=_0xe666ef[_0x4cf70c(0x10c,0x181)],this['cols']=_0xe666ef['cols'],this['xmin']=_0xe666ef['xmin'],this['xmax']=_0xe666ef['xmax'];function _0x4cf70c(_0x2110d5,_0x40c765){return _0x4e9bfa(_0x2110d5-0x6e,_0x40c765);}this[_0x4cf70c(0x20f,0x22e)]=_0xe666ef['ymin'],this['ymax']=_0xe666ef['ymax'],this['grid']=[];const _0x5b80a0=_0xe666ef[_0x30e256(0x448,0x451)],_0x73e594=_0xe666ef[_0x30e256(0x385,0x407)];let _0x444737=![];_0x5b80a0[_0x4cf70c(0x1fe,0x27a)]===this['rows']&&_0x5b80a0[0x0][_0x4cf70c(0x1fe,0x273)]===this[_0x4cf70c(0x125,0x182)]&&(_0x444737=!![]);let _0x2ec1bc=0x0,_0x3fc49c=null,_0x19999d=null;for(let _0x493442=0x0;_0x493442<this[_0x30e256(0x3e9,0x391)];_0x493442++){_0x3fc49c=[];for(let _0x192593=0x0;_0x192593<this[_0x4cf70c(0x125,0x99)];_0x192593++,_0x2ec1bc++){_0x444737?_0x19999d=this['_calcUV'](_0x5b80a0[_0x493442][_0x192593],_0x73e594[_0x493442][_0x192593]):_0x19999d=this['_calcUV'](_0x5b80a0[_0x2ec1bc],_0x73e594[_0x2ec1bc]),_0x3fc49c['push'](_0x19999d);}this['grid']['push'](_0x3fc49c);}function _0x30e256(_0x441bc7,_0x1f2dbc){return _0x4e9bfa(_0x1f2dbc-0x2f3,_0x441bc7);}!this['options']['flipY']&&this['grid'][_0x4cf70c(0x1d3,0x1f4)]();}['clear'](){delete this['rows'],delete this['cols'],delete this['xmin'];function _0x27208d(_0x3a39a4,_0x4fee58){return _0x35412f(_0x3a39a4-0x122,_0x4fee58);}delete this['xmax'],delete this[_0x27208d(0x251,0x1d2)],delete this['ymax'];function _0x2d11d2(_0xd6beda,_0x12d3a4){return _0x4e9bfa(_0x12d3a4- -0x2f,_0xd6beda);}delete this['grid'],delete this[_0x2d11d2(0xe3,0x102)];}[_0x35412f(0x10a,0x93)](_0x16cb98,_0x4d0612){function _0x273bc5(_0x252356,_0xee8357){return _0x4e9bfa(_0xee8357-0x1a9,_0x252356);}const _0xbba740=(_0x16cb98-this[_0x4d6b54(0x54e,0x59a)])/(this['xmax']-this['xmin'])*(this[_0x4d6b54(0x4bd,0x45c)]-0x1),_0x5e634b=(this[_0x273bc5(0x1da,0x254)]-_0x4d0612)/(this[_0x4d6b54(0x4b1,0x52e)]-this['ymin'])*(this[_0x273bc5(0x2b8,0x247)]-0x1);function _0x4d6b54(_0x4d849c,_0x5bc239){return _0x35412f(_0x4d849c-0x478,_0x5bc239);}return[_0xbba740,_0x5e634b];}['getUVByXY'](_0x1c7315,_0x58e098){if(_0x1c7315<0x0||_0x1c7315>=this[_0xf75913(0x1dc,0x157)]||_0x58e098>=this['rows'])return[0x0,0x0,0x0];function _0x4e7959(_0x435be6,_0x25ac68){return _0x4e9bfa(_0x435be6-0xbb,_0x25ac68);}const _0x591b23=Math['floor'](_0x1c7315);function _0xf75913(_0x4e37ff,_0x3b5bd2){return _0x4e9bfa(_0x4e37ff-0x125,_0x3b5bd2);}const _0x29d488=Math[_0x4e7959(0x16b,0x16e)](_0x58e098);if(_0x591b23===_0x1c7315&&_0x29d488===_0x58e098)return this['grid'][_0x58e098][_0x1c7315];const _0x403dbd=_0x591b23+0x1,_0x9a2f01=_0x29d488+0x1,_0x468e24=this['getUVByXY'](_0x591b23,_0x29d488),_0x2a3cda=this[_0x4e7959(0x1b2,0x1c8)](_0x403dbd,_0x29d488),_0x1de063=this[_0x4e7959(0x1b2,0x141)](_0x591b23,_0x9a2f01),_0x25939=this[_0xf75913(0x21c,0x1fe)](_0x403dbd,_0x9a2f01);let _0x24581a=null;try{_0x24581a=this['_bilinearInterpolation'](_0x1c7315-_0x591b23,_0x58e098-_0x29d488,_0x468e24,_0x2a3cda,_0x1de063,_0x25939);}catch(_0xa2f2e5){console['log'](_0x1c7315,_0x58e098);}return _0x24581a;}['_bilinearInterpolation'](_0x1cecd9,_0x43ac6b,_0x3704fb,_0x4848f2,_0x35f2bf,_0x1e9caa){const _0x5a78b0=0x1-_0x1cecd9,_0x55c797=0x1-_0x43ac6b,_0x43d1d3=_0x5a78b0*_0x55c797,_0x17bc3e=_0x1cecd9*_0x55c797,_0x16265e=_0x5a78b0*_0x43ac6b;function _0x15b620(_0x129120,_0x159306){return _0x4e9bfa(_0x159306- -0x1de,_0x129120);}const _0x527a78=_0x1cecd9*_0x43ac6b,_0x16d4b9=_0x3704fb[0x0]*_0x43d1d3+_0x4848f2[0x0]*_0x17bc3e+_0x35f2bf[0x0]*_0x16265e+_0x1e9caa[0x0]*_0x527a78,_0x3cd736=_0x3704fb[0x1]*_0x43d1d3+_0x4848f2[0x1]*_0x17bc3e+_0x35f2bf[0x1]*_0x16265e+_0x1e9caa[0x1]*_0x527a78;return this[_0x15b620(-0x11,-0x7c)](_0x16d4b9,_0x3cd736);}[_0x35412f(0xf0,0x124)](_0x5a24be,_0x233363){return[+_0x5a24be,+_0x233363,Math['sqrt'](_0x5a24be*_0x5a24be+_0x233363*_0x233363)];}[_0x4e9bfa(0x100,0xeb)](_0x24d13c,_0x1430ad){function _0x43395c(_0x62614b,_0x41948f){return _0x4e9bfa(_0x41948f- -0xa7,_0x62614b);}if(!this[_0x43395c(0x94,0x102)](_0x24d13c,_0x1430ad))return null;const _0x4fdf58=this['toGridXY'](_0x24d13c,_0x1430ad),_0x4dd458=this['getUVByXY'](_0x4fdf58[0x0],_0x4fdf58[0x1]);return _0x4dd458;}[_0x4e9bfa(0x1a9,0x197)](_0x2e5f07,_0x30549f){function _0x41ecbc(_0x39ce0f,_0x4b0a0a){return _0x4e9bfa(_0x39ce0f- -0x353,_0x4b0a0a);}return _0x2e5f07>=this['xmin']&&_0x2e5f07<=this['xmax']&&_0x30549f>=this['ymin']&&_0x30549f<=this[_0x41ecbc(-0x2a8,-0x287)]?!![]:![];}['getRandomLatLng'](){function _0x2d98f1(_0x11a7bd,_0x4bc701){return _0x4e9bfa(_0x11a7bd- -0x231,_0x4bc701);}const _0x381944=fRandomByfloat(this['xmin'],this['xmax']);function _0x44c4d0(_0x377c4e,_0xf8a6a3){return _0x4e9bfa(_0x377c4e- -0x54,_0xf8a6a3);}const _0x3d179b=fRandomByfloat(this[_0x2d98f1(-0x90,-0xe)],this['ymax']),_0x3fa749={};return _0x3fa749[_0x2d98f1(-0x18b,-0x18c)]=_0x3d179b,_0x3fa749['lng']=_0x381944,_0x3fa749;}['getParticles'](){function _0xceef85(_0x99ae1,_0x4465d5){return _0x35412f(_0x4465d5-0x2d3,_0x99ae1);}let _0x43fa13,_0xde1314,_0x448acf;for(let _0x1712b0=0x0,_0x47cec8=this['particles']['length'];_0x1712b0<_0x47cec8;_0x1712b0++){let _0x3d4da9=this['particles'][_0x1712b0];_0x3d4da9['age']<=0x0&&(_0x3d4da9=this[_0x5828c5(0x37c,0x3b6)](_0x3d4da9));if(_0x3d4da9['age']>0x0){const _0x2111d6=_0x3d4da9[_0xceef85(0x32c,0x33b)],_0x389b36=_0x3d4da9['tlat'];_0x448acf=this['getUVByPoint'](_0x2111d6,_0x389b36),_0x448acf?(_0x43fa13=_0x2111d6+this[_0xceef85(0x354,0x30a)][0x0]*_0x448acf[0x0],_0xde1314=_0x389b36+this['_calc_speedRate'][0x1]*_0x448acf[0x1],_0x3d4da9['lng']=_0x2111d6,_0x3d4da9['lat']=_0x389b36,_0x3d4da9['tlng']=_0x43fa13,_0x3d4da9['tlat']=_0xde1314,_0x3d4da9['speed']=_0x448acf[0x2],_0x3d4da9[_0xceef85(0x302,0x30d)]--):_0x3d4da9['age']=0x0;}}function _0x5828c5(_0xae4d14,_0x378772){return _0x4e9bfa(_0xae4d14-0x288,_0x378772);}return this['particles'];}['_randomParticle'](_0x5f0a7c){let _0x886a76,_0x70d6f8;for(let _0x250d86=0x0;_0x250d86<0x1e;_0x250d86++){_0x886a76=this['getRandomLatLng'](),_0x70d6f8=this['getUVByPoint'](_0x886a76['lng'],_0x886a76['lat']);if(_0x70d6f8&&_0x70d6f8[0x2]>0x0)break;}if(!_0x70d6f8)return _0x5f0a7c;const _0x2c4fdc=_0x886a76[_0x4bef45(0xf5,0x8e)]+this[_0x2f65ad(-0x158,-0x156)][0x0]*_0x70d6f8[0x0],_0x33b1b3=_0x886a76['lat']+this['_calc_speedRate'][0x1]*_0x70d6f8[0x1];function _0x2f65ad(_0x3a53d8,_0x22d7c0){return _0x35412f(_0x3a53d8- -0x18f,_0x22d7c0);}_0x5f0a7c[_0x2f65ad(-0x8a,-0xf4)]=_0x886a76[_0x2f65ad(-0x8a,-0x7)],_0x5f0a7c[_0x4bef45(-0x50,-0x43)]=_0x886a76[_0x4bef45(0x10,-0x43)],_0x5f0a7c[_0x2f65ad(-0x127,-0x16d)]=_0x2c4fdc,_0x5f0a7c[_0x2f65ad(-0xfe,-0x97)]=_0x33b1b3,_0x5f0a7c[_0x2f65ad(-0x155,-0xc6)]=Math[_0x4bef45(0x8a,0xce)](0xa+Math['random']()*this[_0x4bef45(0x2e,-0x1b)]);function _0x4bef45(_0x275801,_0x3d02fe){return _0x4e9bfa(_0x3d02fe- -0xe9,_0x275801);}return _0x5f0a7c['speed']=_0x70d6f8[0x2],_0x5f0a7c;}[_0x4e9bfa(0x160,0x188)](){for(const _0x21584c in this){delete this[_0x21584c];}}}function fRandomByfloat(_0x52b2ee,_0x9ccbee){return _0x52b2ee+Math['random']()*(_0x9ccbee-_0x52b2ee);}const Cesium=mars3d__namespace[_0x4e9bfa(0x153,0x1d0)],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x30b021={}){function _0x2741f7(_0x2101c5,_0x2b8d80){return _0x4e9bfa(_0x2101c5- -0x1b2,_0x2b8d80);}super(_0x30b021);function _0x34319e(_0x4eb5af,_0x26b0ea){return _0x4e9bfa(_0x4eb5af- -0x1ab,_0x26b0ea);}this['_setOptionsHook'](_0x30b021),this['canvas']=null,_0x30b021[_0x34319e(-0x111,-0xe5)]&&_0x30b021[_0x2741f7(-0xd5,-0xf2)]&&(this[_0x34319e(-0x50,-0x77)]=new mars3d__namespace[(_0x2741f7(-0xcd,-0x11e))](_0x30b021));}['_setOptionsHook'](_0x3f097d,_0xefcdc5){this['frameTime']=0x3e8/(_0x3f097d['frameRate']||0xa),this['_pointerEvents']=this[_0x4edc6b(0xfd,0xeb)]['pointerEvents']??![],this[_0xc81a54(0x3fa,0x3ba)]=_0x3f097d['color']||_0x4edc6b(-0x64,0x20);function _0x4edc6b(_0x5ad3a2,_0x3bde96){return _0x35412f(_0x3bde96- -0x3b,_0x5ad3a2);}this['lineWidth']=_0x3f097d['lineWidth']||0x1,this['fixedHeight']=_0x3f097d['fixedHeight']??0x0;function _0xc81a54(_0x431193,_0x283d80){return _0x4e9bfa(_0x431193-0x25c,_0x283d80);}this['flipY']=_0x3f097d['flipY']??![],this[_0xc81a54(0x2fb,0x375)]&&this['windField'][_0x4edc6b(0xa0,0x72)](_0x3f097d);}get[_0x4e9bfa(0x128,0x101)](){function _0x259d93(_0x3f8610,_0x34f7fe){return _0x35412f(_0x3f8610-0x44c,_0x34f7fe);}return this[_0x259d93(0x51f,0x558)];}get[_0x4e9bfa(0x192,0x1c8)](){function _0x5edf7b(_0x461475,_0xcf56f6){return _0x4e9bfa(_0xcf56f6-0x3b9,_0x461475);}function _0x23cb9f(_0x78ea4f,_0x3da91f){return _0x4e9bfa(_0x78ea4f- -0xf5,_0x3da91f);}return this['_map']['scene'][_0x23cb9f(0x50,0x67)][_0x5edf7b(0x508,0x50f)];}get[_0x4e9bfa(0x1b0,0x1d7)](){function _0x26826f(_0x23154a,_0x1150df){return _0x4e9bfa(_0x23154a-0x2d,_0x1150df);}function _0x2448c3(_0xdcf51b,_0x331d14){return _0x4e9bfa(_0x331d14- -0x10,_0xdcf51b);}return this['_map'][_0x2448c3(0x11f,0xb8)]['canvas'][_0x2448c3(0x105,0x9a)];}get[_0x4e9bfa(0x1a0,0x1b8)](){return this['_pointerEvents'];}set[_0x35412f(0x12e,0x1a2)](_0x5618d1){this['_pointerEvents']=_0x5618d1;if(!this['canvas'])return;function _0x373467(_0x552f65,_0x1f6f46){return _0x35412f(_0x1f6f46- -0x21b,_0x552f65);}function _0x2203ae(_0x5eea69,_0x3f6346){return _0x35412f(_0x5eea69-0x183,_0x3f6346);}_0x5618d1?this['canvas']['style']['pointer-events']='all':this[_0x2203ae(0x256,0x234)][_0x2203ae(0x2aa,0x2ae)][_0x2203ae(0x2b9,0x2fd)]=_0x373467(-0x66,-0xda);}get[_0x4e9bfa(0x18e,0x15c)](){return this['options']['particlesNumber'];}set['particlesNumber'](_0x13176c){function _0xfb02ed(_0x1367ef,_0x264a45){return _0x4e9bfa(_0x264a45-0x3de,_0x1367ef);}this['options'][_0xfb02ed(0x56e,0x56c)]=_0x13176c,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{function _0x3dc01d(_0x1041ca,_0x8d3be2){return _0xfb02ed(_0x8d3be2,_0x1041ca- -0x45c);}this[_0x3dc01d(0xbe,0x111)]();},0x1f4);}get['speedRate'](){function _0x7bedc9(_0x1a30a0,_0x2f8903){return _0x35412f(_0x1a30a0-0x268,_0x2f8903);}function _0x2e9aa5(_0x3a5983,_0x336704){return _0x4e9bfa(_0x336704- -0x34c,_0x3a5983);}return this[_0x7bedc9(0x38e,0x3fe)][_0x7bedc9(0x37a,0x3b1)];}set['speedRate'](_0x5d2b8a){this['options']['speedRate']=_0x5d2b8a,this['windField']&&(this['windField']['speedRate']=_0x5d2b8a);}get['maxAge'](){function _0x2f9dfb(_0x23fc89,_0x4430d7){return _0x35412f(_0x4430d7- -0x164,_0x23fc89);}return this['options'][_0x2f9dfb(-0x130,-0x108)];}set[_0x4e9bfa(0xce,0x66)](_0x5488ec){this['options'][_0x266327(-0x1b7,-0x153)]=_0x5488ec;function _0x266327(_0x258b0a,_0x3cfab0){return _0x4e9bfa(_0x258b0a- -0x285,_0x3cfab0);}this['windField']&&(this['windField']['maxAge']=_0x5488ec);}get[_0x35412f(0x55,-0x17)](){return this['windData'];}set['data'](_0x19afab){this['setData'](_0x19afab);}get['rectangle'](){let _0x4c1e84=this['windData']['xmin'],_0x40235e=this[_0x3780bf(0x2df,0x365)]['xmax'],_0x39001b=this['windData']['ymin'],_0x5ccc12=this[_0x3780bf(0x2df,0x2cc)][_0x794765(0x396,0x36c)];function _0x794765(_0x2127bb,_0xc0a7ff){return _0x4e9bfa(_0x2127bb-0x2eb,_0xc0a7ff);}_0x40235e>=0x167&&_0x4c1e84===0x0&&(_0x4c1e84=-0xb4,_0x40235e=0xb4);_0x4c1e84=Math['max'](_0x4c1e84,-0xb4),_0x40235e=Math['min'](_0x40235e,0xb4),_0x39001b=Math[_0x3780bf(0x2fb,0x2f6)](_0x39001b,-0x5a),_0x5ccc12=Math[_0x3780bf(0x296,0x2ab)](_0x5ccc12,0x5a);function _0x3780bf(_0x19532d,_0x57a156){return _0x4e9bfa(_0x19532d-0x15e,_0x57a156);}return Cesium[_0x794765(0x440,0x4ac)]['fromDegrees'](_0x4c1e84,_0x39001b,_0x40235e,_0x5ccc12);}['_showHook'](_0x140e07){function _0x39bd69(_0x4d68ee,_0x50c68e){return _0x4e9bfa(_0x4d68ee-0x99,_0x50c68e);}function _0x25dc90(_0x155353,_0x4e16b9){return _0x35412f(_0x155353-0x163,_0x4e16b9);}_0x140e07?this['_addedHook']():(this['windData']&&(this[_0x25dc90(0x289,0x202)]['data']=this[_0x25dc90(0x272,0x25d)]),this[_0x25dc90(0x202,0x265)]());}['_mountedHook'](){function _0x11545c(_0x3f15c6,_0x7b0cfb){return _0x35412f(_0x3f15c6- -0x8b,_0x7b0cfb);}function _0x387ad3(_0x59cb1d,_0x45323c){return _0x35412f(_0x45323c-0x431,_0x59cb1d);}this[_0x387ad3(0x516,0x557)]['worker']?this[_0x387ad3(0x487,0x517)]():this['windField']=new CanvasWindField(this['options']);}[_0x35412f(0x3f,-0x16)](){this[_0x131ec9(0x449,0x48a)]=this[_0x131ec9(0x44b,0x47d)]();const _0x4918c1={};_0x4918c1['willReadFrequently']=!![],this['canvasContext']=this['canvas']['getContext']('2d',_0x4918c1);function _0x131ec9(_0x270fe3,_0x2ad725){return _0x4e9bfa(_0x270fe3-0x304,_0x2ad725);}function _0x1b987e(_0x25a3b8,_0x1e7909){return _0x4e9bfa(_0x25a3b8-0x2f7,_0x1e7909);}this['bindEvent'](),this['options'][_0x1b987e(0x3be,0x3dc)]&&this['setData'](this['options']['data']);}['_removedHook'](){this['clear'](),this['unbindEvent']();function _0x53ccd4(_0x166eae,_0x411225){return _0x35412f(_0x411225-0x28d,_0x166eae);}function _0x56df42(_0x1f24c3,_0x655a9){return _0x35412f(_0x1f24c3- -0x205,_0x655a9);}this['canvas']&&(this['_map'][_0x53ccd4(0x33c,0x39d)][_0x53ccd4(0x3b2,0x3bd)](this[_0x53ccd4(0x324,0x360)]),delete this['canvas']);}['_createCanvas'](){const _0x3f03f9=mars3d__namespace[_0x177bd6(0x45d,0x3ce)][_0x41046d(0x31b,0x3a9)](_0x177bd6(0x36c,0x396),_0x41046d(0x3be,0x335),this[_0x41046d(0x47d,0x412)][_0x41046d(0x445,0x3f5)]);_0x3f03f9['style']['position']='absolute',_0x3f03f9['style']['top']=_0x41046d(0x40e,0x3dd);function _0x177bd6(_0x2b09e7,_0x45e311){return _0x4e9bfa(_0x45e311-0x251,_0x2b09e7);}_0x3f03f9['style'][_0x177bd6(0x3ae,0x32c)]=_0x177bd6(0x350,0x3bb),_0x3f03f9['style'][_0x177bd6(0x37e,0x3ba)]=this['_map'][_0x177bd6(0x321,0x319)][_0x41046d(0x3e8,0x3b8)][_0x177bd6(0x393,0x3a7)]+'px',_0x3f03f9['style'][_0x41046d(0x432,0x41e)]=this['_map'][_0x177bd6(0x2b3,0x319)][_0x41046d(0x40c,0x3b8)]['clientHeight']+'px',_0x3f03f9[_0x41046d(0x394,0x40c)][_0x41046d(0x3e9,0x413)]=this[_0x177bd6(0x2bd,0x338)]?_0x177bd6(0x3f2,0x368):'none';function _0x41046d(_0x2e615a,_0x177125){return _0x35412f(_0x177125-0x2e5,_0x2e615a);}return _0x3f03f9['style'][_0x41046d(0x39b,0x3d6)]=this['options']['zIndex']??0x9,_0x3f03f9['width']=this['_map']['scene']['canvas']['clientWidth'],_0x3f03f9[_0x41046d(0x3ec,0x41e)]=this['_map'][_0x177bd6(0x2fa,0x319)]['canvas']['clientHeight'],_0x3f03f9;}[_0x4e9bfa(0xe4,0x11f)](){function _0x5c0c53(_0x7d19de,_0x41d147){return _0x4e9bfa(_0x41d147-0x96,_0x7d19de);}function _0xa497eb(_0x506d4b,_0x45b08e){return _0x4e9bfa(_0x45b08e- -0x28c,_0x506d4b);}this['canvas']&&(this['canvas'][_0xa497eb(-0xd8,-0xf3)][_0xa497eb(-0x97,-0x123)]=this['_map'][_0xa497eb(-0x188,-0x1c4)]['canvas']['clientWidth']+'px',this['canvas'][_0xa497eb(-0xd7,-0xf3)]['height']=this[_0x5c0c53(0x2bc,0x235)][_0xa497eb(-0x150,-0x1c4)][_0x5c0c53(0x209,0x1db)][_0x5c0c53(0x16d,0x140)]+'px',this['canvas'][_0x5c0c53(0x179,0x1ff)]=this['_map']['scene']['canvas']['clientWidth'],this['canvas']['height']=this['_map'][_0x5c0c53(0xed,0x15e)]['canvas']['clientHeight']);}['bindEvent'](){const _0x4f92b8=this;let _0x40e811=Date[_0x392984(0x3ad,0x3cd)]();(function _0xb9053c(){function _0x3edecf(_0x572ca1,_0x1cf1f8){return _0x392984(_0x572ca1,_0x1cf1f8- -0x494);}function _0x4d169d(_0x51e565,_0x52b16b){return _0x392984(_0x51e565,_0x52b16b- -0x3b);}if(_0x4f92b8[_0x4d169d(0x35c,0x3b2)])return;_0x4f92b8[_0x4d169d(0x367,0x334)]=window[_0x3edecf(0x1a,-0x1e)](_0xb9053c);if(_0x4f92b8['show']&&_0x4f92b8[_0x3edecf(-0x177,-0x129)]){const _0x11f36e=Date['now'](),_0x235b26=_0x11f36e-_0x40e811;_0x235b26>_0x4f92b8[_0x3edecf(-0xb0,-0x94)]&&(_0x40e811=_0x11f36e-_0x235b26%_0x4f92b8['frameTime'],_0x4f92b8[_0x3edecf(-0xca,-0x3b)]());}}(),window[_0x338b42(-0x20c,-0x19f)]('resize',this[_0x338b42(-0x217,-0x221)][_0x392984(0x3dc,0x3ee)](this),![]));function _0x338b42(_0x23c5e3,_0x4ce301){return _0x4e9bfa(_0x4ce301- -0x305,_0x23c5e3);}this['mouse_down']=![],this[_0x338b42(-0x18c,-0x172)]=![];function _0x392984(_0x1fcf21,_0x11bf14){return _0x4e9bfa(_0x11bf14-0x2cc,_0x1fcf21);}this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType'][_0x392984(0x2ef,0x37f)],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace[_0x338b42(-0x222,-0x1e5)][_0x392984(0x3f2,0x3f9)],this[_0x392984(0x46c,0x44c)],this),this['_map']['on'](mars3d__namespace[_0x338b42(-0x259,-0x1e5)]['mouseUp'],this['_onMouseUpEvent'],this));}['unbindEvent'](){function _0x20942f(_0x309072,_0x4feb5a){return _0x4e9bfa(_0x309072-0x136,_0x4feb5a);}window['cancelAnimationFrame'](this[_0x4a560a(0x1a3,0x13d)]),delete this['_animateFrame'];function _0x4a560a(_0x22c4fa,_0x38ef68){return _0x35412f(_0x22c4fa-0x172,_0x38ef68);}window['removeEventListener']('resize',this[_0x20942f(0x21a,0x264)]),this[_0x4a560a(0x298,0x23b)][_0x4a560a(0x223,0x22e)]&&(this['_map'][_0x4a560a(0x1ed,0x27d)](mars3d__namespace['EventType'][_0x20942f(0x1e9,0x232)],this['_onMapWhellEvent'],this),this[_0x4a560a(0x29f,0x2fc)]['off'](mars3d__namespace[_0x20942f(0x256,0x207)]['mouseDown'],this[_0x20942f(0x2b6,0x240)],this),this[_0x4a560a(0x29f,0x28d)]['off'](mars3d__namespace['EventType']['mouseUp'],this[_0x4a560a(0x272,0x2fa)],this),this[_0x4a560a(0x29f,0x2ca)][_0x20942f(0x223,0x24d)](mars3d__namespace[_0x20942f(0x256,0x2bc)]['mouseMove'],this[_0x4a560a(0x21a,0x1cf)],this));}[_0x35412f(0xed,0x143)](_0x1c2bbd){function _0x37d633(_0x23c053,_0x194b21){return _0x4e9bfa(_0x194b21- -0xb8,_0x23c053);}clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;this['canvas']['style']['visibility']='hidden',this[_0x37d633(-0x7f,0x7)]=setTimeout(()=>{if(!this['show'])return;this['redraw']();function _0x2d96c8(_0x8dac06,_0x54c8ce){return _0x37d633(_0x54c8ce,_0x8dac06- -0x13e);}this[_0x2d96c8(-0xb1,-0x112)]['style']['visibility']='visible';},0xc8);}[_0x35412f(0x10e,0x122)](_0x225804){this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x46b400(0x220,0x28a)],this);function _0x46b400(_0x39461b,_0x5d6050){return _0x35412f(_0x39461b-0x178,_0x5d6050);}this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}[_0x4e9bfa(0x11a,0xa5)](_0x4e2aff){function _0x42e5eb(_0x2168a3,_0x211f1a){return _0x4e9bfa(_0x211f1a-0x117,_0x2168a3);}function _0x23c742(_0x5eea8f,_0x5c6432){return _0x4e9bfa(_0x5eea8f-0x282,_0x5c6432);}if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this['canvas'][_0x23c742(0x41b,0x48d)][_0x23c742(0x35a,0x2d9)]='hidden',this['mouse_move']=!![]);}[_0x35412f(0x100,0xed)](_0xd39935){function _0x575c72(_0x23122b,_0x39fa78){return _0x4e9bfa(_0x23122b- -0x308,_0x39fa78);}function _0x5eab90(_0x351bcb,_0xaacb5c){return _0x4e9bfa(_0xaacb5c-0x2eb,_0x351bcb);}if(!this[_0x575c72(-0x1e3,-0x1b3)]||!this[_0x5eab90(0x401,0x430)])return;this[_0x5eab90(0x3fd,0x48a)]['off'](mars3d__namespace[_0x575c72(-0x1e8,-0x1e4)]['mouseMove'],this['_onMouseMoveEvent'],this),this[_0x5eab90(0x379,0x387)]&&this['mouse_move']&&this[_0x5eab90(0x487,0x427)](),this['canvas'][_0x5eab90(0x452,0x484)]['visibility']=_0x575c72(-0x1ab,-0x189),this['mouse_down']=![],this['mouse_move']=![];}['setData'](_0x30f2ca){this['clear'](),this[_0x1f273a(0x55c,0x51d)]=_0x30f2ca;function _0x1f273a(_0x30e2e4,_0x38f1c5){return _0x35412f(_0x30e2e4-0x44d,_0x38f1c5);}this['windField']['setDate'](_0x30f2ca),this['redraw']();}['redraw'](){function _0x5d0e96(_0x5577a0,_0x4c226a){return _0x4e9bfa(_0x4c226a- -0x2de,_0x5577a0);}if(!this['show'])return;this[_0x39fa01(-0x193,-0x1ab)][_0x5d0e96(-0x198,-0x1bf)](this['options']);function _0x39fa01(_0x2c6242,_0x309472){return _0x4e9bfa(_0x309472- -0x24a,_0x2c6242);}this['update']();}['update'](){function _0xac21a8(_0x2b552b,_0x2049dc){return _0x4e9bfa(_0x2b552b-0x30e,_0x2049dc);}function _0xc6f7fa(_0x2d36bf,_0x46b906){return _0x35412f(_0x46b906-0x22e,_0x2d36bf);}if(this[_0xc6f7fa(0x30c,0x2ba)])return;this['_updateIng']=!![];if(this['worker'])this[_0xc6f7fa(0x203,0x25b)]['update']();else{const _0x48bbbf=this[_0xac21a8(0x3ad,0x3e6)]['getParticles']();this['_drawLines'](_0x48bbbf);}this['_updateIng']=![];}[_0x4e9bfa(0x179,0x1f6)](_0x20eb53){this['_canvasParticles']=_0x20eb53,this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext'][_0x66b038(-0x146,-0xb6)](0x0,0x0,this[_0x2f51e5(0x512,0x59e)],this['canvasHeight']),this[_0x2f51e5(0x4d2,0x4ef)][_0x66b038(-0xdd,-0xf3)]='lighter';function _0x66b038(_0x3f2b64,_0x2791d9){return _0x4e9bfa(_0x2791d9- -0x1a7,_0x3f2b64);}this['canvasContext']['globalAlpha']=0.9;const _0x434950=this[_0x66b038(-0x7d,-0x8)][_0x66b038(-0x119,-0xdf)]['mode']!==Cesium['SceneMode']['SCENE3D'];function _0x2f51e5(_0x5a993c,_0x12651b){return _0x4e9bfa(_0x5a993c-0x380,_0x12651b);}const _0x4addc6=this[_0x2f51e5(0x512,0x51f)]*0.25;if(this[_0x2f51e5(0x4db,0x49f)])for(let _0x13c6ba=0x0,_0x40d5ae=_0x20eb53['length'];_0x13c6ba<_0x40d5ae;_0x13c6ba++){const _0x476ed0=_0x20eb53[_0x13c6ba],_0x10b94d=this['_tomap'](_0x476ed0,_0x476ed0['lng'],_0x476ed0['lat'],_0x476ed0['alt']),_0x320078=this['_tomap'](_0x476ed0,_0x476ed0['tlng'],_0x476ed0['tlat'],_0x476ed0[_0x2f51e5(0x441,0x4a6)]);if(!_0x10b94d||!_0x320078)continue;if(_0x434950&&Math['abs'](_0x10b94d[0x0]-_0x320078[0x0])>=_0x4addc6)continue;this['canvasContext']['beginPath'](),this['canvasContext'][_0x2f51e5(0x488,0x4be)]=this[_0x66b038(-0x56,-0x9f)],this[_0x2f51e5(0x4d2,0x55f)]['strokeStyle']=this['_colorRamp']['getColor'](_0x476ed0['speed']),this[_0x66b038(0x8,-0x55)][_0x66b038(-0x98,-0x7d)](_0x10b94d[0x0],_0x10b94d[0x1]),this[_0x2f51e5(0x4d2,0x477)]['lineTo'](_0x320078[0x0],_0x320078[0x1]),this['canvasContext']['stroke']();}else{this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x2f51e5(0x488,0x493)],this[_0x2f51e5(0x4d2,0x539)]['strokeStyle']=this['color'];for(let _0x260199=0x0,_0x30ad27=_0x20eb53['length'];_0x260199<_0x30ad27;_0x260199++){const _0x18a874=_0x20eb53[_0x260199],_0x203f24=this[_0x2f51e5(0x4ff,0x53a)](_0x18a874,_0x18a874['lng'],_0x18a874['lat'],_0x18a874['alt']),_0x42bb6f=this[_0x2f51e5(0x4ff,0x4db)](_0x18a874,_0x18a874['tlng'],_0x18a874['tlat'],_0x18a874['talt']);if(!_0x203f24||!_0x42bb6f)continue;if(_0x434950&&Math['abs'](_0x203f24[0x0]-_0x42bb6f[0x0])>=_0x4addc6)continue;this[_0x2f51e5(0x4d2,0x523)]['moveTo'](_0x203f24[0x0],_0x203f24[0x1]),this['canvasContext'][_0x66b038(-0x141,-0xf8)](_0x42bb6f[0x0],_0x42bb6f[0x1]);}this['canvasContext'][_0x66b038(-0x15f,-0xd2)]();}}['_tomap'](_0x266c4e,_0x334707,_0x494911,_0x2982c5){function _0x49e1f6(_0x1b4aec,_0x15b1c5){return _0x35412f(_0x1b4aec-0x262,_0x15b1c5);}const _0x5945ec=Cesium['Cartesian3'][_0x49e1f6(0x2df,0x2d3)](_0x334707,_0x494911,_0x2982c5??this[_0x1d379a(-0x6b,-0x50)]),_0x52dc16=this['_map']['scene'];function _0x1d379a(_0xe9c7ee,_0x58b63b){return _0x35412f(_0x58b63b- -0xad,_0xe9c7ee);}if(_0x52dc16['mode']===Cesium['SceneMode']['SCENE3D']){const _0x3f875a=new Cesium[(_0x1d379a(0xcb,0x70))](_0x52dc16['globe'][_0x49e1f6(0x33a,0x3af)],_0x52dc16[_0x49e1f6(0x2f4,0x32f)][_0x1d379a(0x98,0x64)]),_0x4ed01a=_0x3f875a[_0x49e1f6(0x2cc,0x327)](_0x5945ec);if(!_0x4ed01a)return _0x266c4e['age']=0x0,null;}const _0x448680=mars3d__namespace[_0x1d379a(-0x65,-0x66)][_0x1d379a(-0x57,-0x53)](this['_map'][_0x49e1f6(0x2b8,0x27a)],_0x5945ec);return _0x448680?[_0x448680['x'],_0x448680['y']]:null;}['clear'](){this['windField'][_0x4a5f2b(0x264,0x2c5)]();function _0x4a5f2b(_0x2c8231,_0xb63424){return _0x35412f(_0xb63424-0x19b,_0x2c8231);}delete this['windData'];}['initWorker'](){function _0x194f8b(_0x478c3c,_0x11809d){return _0x4e9bfa(_0x478c3c- -0xa8,_0x11809d);}this[_0x4a3d01(0x6,0x4a)]=new Worker(this['options'][_0x4a3d01(0x6,0x6d)]),this['worker']['onmessage']=_0x34a39d=>{this['_drawLines'](_0x34a39d['data'][_0x5b2b1a(-0xe2,-0x153)]);function _0x5b2b1a(_0x741909,_0x43817d){return _0x194f8b(_0x43817d- -0x1dc,_0x741909);}this['_updateIng2']=![];},this['windField']={'init':_0x7d338a=>{const _0x3b4f2b={};_0x3b4f2b['type']='init',_0x3b4f2b[_0x4d5ccc(0x2ca,0x29b)]=_0x7d338a;function _0x4d5ccc(_0x32058f,_0x443f48){return _0x4a3d01(_0x32058f-0x238,_0x443f48);}this['worker']['postMessage'](_0x3b4f2b);},'setOptions':_0x591923=>{const _0x4dd6e0={};_0x4dd6e0[_0x5a9293(-0x174,-0x153)]='setOptions',_0x4dd6e0['options']=_0x591923;function _0x5a9293(_0x58bc9e,_0x105bd8){return _0x194f8b(_0x105bd8- -0x184,_0x58bc9e);}this['worker']['postMessage'](_0x4dd6e0);},'setDate':_0x243b58=>{const _0x54913e={};function _0x3616e0(_0x36af00,_0x19966e){return _0x194f8b(_0x36af00-0x172,_0x19966e);}_0x54913e[_0xe80e5c(0x3c1,0x3f9)]='setDate',_0x54913e['data']=_0x243b58;function _0xe80e5c(_0x5e64fc,_0x467740){return _0x4a3d01(_0x5e64fc-0x3ee,_0x467740);}this[_0x3616e0(0x1d6,0x155)]['postMessage'](_0x54913e);},'update':()=>{if(this['_updateIng2'])return;function _0x3e2a9a(_0x3e1166,_0x2cf373){return _0x4a3d01(_0x2cf373- -0x18d,_0x3e1166);}this[_0x57df4b(0x48f,0x4c7)]=!![];const _0x20e896={};_0x20e896[_0x57df4b(0x3c2,0x346)]='update';function _0x57df4b(_0x4622d9,_0xc1a4b4){return _0x4a3d01(_0x4622d9-0x3ef,_0xc1a4b4);}this[_0x57df4b(0x3f5,0x3d8)][_0x3e2a9a(-0x1a1,-0x122)](_0x20e896);},'clear':()=>{const _0x5be7df={};_0x5be7df['type']='clear',this['worker']['postMessage'](_0x5be7df);}};function _0x4a3d01(_0x94a35b,_0x3fcf4f){return _0x35412f(_0x94a35b- -0x94,_0x3fcf4f);}this['windField'][_0x194f8b(0x10d,0x11e)](this['options']);}}mars3d__namespace[_0x35412f(0x9d,0xcc)]['register']('canvasWind',CanvasWindLayer),mars3d__namespace[_0x4e9bfa(0x128,0xf6)][_0x35412f(0xcf,0x65)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x35412f(0x129,0x19e)]=WindUtil,exports[_0x35412f(0xf5,0x119)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports[_0x4e9bfa(0x1ae,0x20f)]=WindLayer,exports['WindUtil']=WindUtil;const _0x364b5d={};_0x364b5d[_0x4e9bfa(0xa7,0x3f)]=!![],Object['defineProperty'](exports,'__esModule',_0x364b5d);
|
|
14
|
+
'use strict';(function(_0x1bdebd,_0x3a9bb8){function _0x529cd6(_0x535969,_0x31ddeb){return _0xcb26(_0x31ddeb- -0x18c,_0x535969);}const _0x2f421d=_0x1bdebd();function _0x5efa5e(_0x201068,_0xd2ba6b){return _0xcb26(_0x201068-0x1eb,_0xd2ba6b);}while(!![]){try{const _0x4f8f40=-parseInt(_0x5efa5e(0x350,0x351))/0x1*(parseInt(_0x5efa5e(0x37b,0x344))/0x2)+parseInt(_0x529cd6(0x6a,0x6e))/0x3*(parseInt(_0x5efa5e(0x393,0x32f))/0x4)+parseInt(_0x529cd6(0xa,-0x8))/0x5*(-parseInt(_0x529cd6(0x63,0xa3))/0x6)+parseInt(_0x5efa5e(0x3dd,0x35f))/0x7*(parseInt(_0x529cd6(-0x11,-0x2))/0x8)+parseInt(_0x5efa5e(0x3ea,0x450))/0x9*(-parseInt(_0x5efa5e(0x3f0,0x3b1))/0xa)+parseInt(_0x529cd6(-0x18,-0x34))/0xb*(-parseInt(_0x529cd6(-0x50,-0x1f))/0xc)+parseInt(_0x5efa5e(0x354,0x2f1))/0xd*(parseInt(_0x5efa5e(0x37e,0x2f7))/0xe);if(_0x4f8f40===_0x3a9bb8)break;else _0x2f421d['push'](_0x2f421d['shift']());}catch(_0x30d65c){_0x2f421d['push'](_0x2f421d['shift']());}}}(_0x3d3e,0xc8885));function _interopNamespace(_0x31a650){if(_0x31a650&&_0x31a650[_0x2a090e(-0x224,-0x289)])return _0x31a650;var _0x12cf5f=Object[_0x2a090e(-0x1d3,-0x24f)](null);_0x31a650&&Object['keys'](_0x31a650)['forEach'](function(_0x573d21){function _0x5ec47b(_0x145bad,_0x3b8da4){return _0xe079b1(_0x3b8da4,_0x145bad- -0x5d5);}if(_0x573d21!=='default'){var _0x2b170f=Object['getOwnPropertyDescriptor'](_0x31a650,_0x573d21);Object[_0x5ec47b(-0xb6,-0xb4)](_0x12cf5f,_0x573d21,_0x2b170f['get']?_0x2b170f:{'enumerable':!![],'get':function(){return _0x31a650[_0x573d21];}});}});function _0x2a090e(_0x3e4278,_0x1c067d){return _0xcb26(_0x3e4278- -0x39e,_0x1c067d);}_0x12cf5f['default']=_0x31a650;function _0xe079b1(_0x319d2c,_0xfd730e){return _0xcb26(_0xfd730e-0x2f6,_0x319d2c);}return _0x12cf5f;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$2=mars3d__namespace['Cesium'];function getU(_0x3534ca,_0x1cb04d){function _0xba0b57(_0x536a33,_0x3195cf){return _0xcb26(_0x3195cf-0x10d,_0x536a33);}const _0xd8f747=_0x3534ca*Math[_0xba0b57(0x3b1,0x344)](Cesium$2['Math']['toRadians'](_0x1cb04d));return _0xd8f747;}function getV(_0x244531,_0x21e31e){function _0x47ccb4(_0x35f16b,_0x748249){return _0xcb26(_0x748249- -0xa7,_0x35f16b);}const _0xc2e63=_0x244531*Math['sin'](Cesium$2['Math'][_0x47ccb4(0x160,0x1a8)](_0x21e31e));return _0xc2e63;}function getSpeed(_0x1d051b,_0x2555ce){const _0x4a8e2c=Math['sqrt'](Math['pow'](_0x1d051b,0x2)+Math[_0x4deba1(0x4e4,0x4e6)](_0x2555ce,0x2));function _0x4deba1(_0x70d8e9,_0x1a7055){return _0xcb26(_0x1a7055-0x2a8,_0x70d8e9);}return _0x4a8e2c;}function getDirection(_0x599e84,_0x524687){let _0x1a8592=Cesium$2[_0x3ba964(0x33c,0x371)][_0x45211a(0x129,0xad)](Math['atan2'](_0x524687,_0x599e84));function _0x45211a(_0x5d07d1,_0xa1c702){return _0xcb26(_0x5d07d1- -0x4d,_0xa1c702);}_0x1a8592+=_0x1a8592<0x0?0x168:0x0;function _0x3ba964(_0x4f767c,_0x47b33b){return _0xcb26(_0x4f767c-0x1f9,_0x47b33b);}return _0x1a8592;}function _0xcb26(_0x1f7330,_0x321482){const _0x3d3e15=_0x3d3e();return _0xcb26=function(_0xcb269e,_0x25b117){_0xcb269e=_0xcb269e-0x13e;let _0x105e01=_0x3d3e15[_0xcb269e];return _0x105e01;},_0xcb26(_0x1f7330,_0x321482);}const _0x1774e6={};_0x1774e6[_0xa5f95b(0x507,0x534)]=null,_0x1774e6['getU']=getU,_0x1774e6['getV']=getV,_0x1774e6['getSpeed']=getSpeed,_0x1774e6['getDirection']=getDirection;var WindUtil=_0x1774e6,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=_0x366ecb(-0x29,0x26),postProcessingPositionFragmentShader=_0xa5f95b(0x49f,0x498),renderParticlesFragmentShader=_0x366ecb(-0x4e,-0x3),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[_0xa5f95b(0x4f7,0x543)];class ShaderManager{static[_0xa5f95b(0x57e,0x5e9)](){const _0x147124={};_0x147124[_0x55057f(0xa5,0x79)]=[calculateSpeedShader];function _0x55057f(_0x201e6f,_0x5671f5){return _0x366ecb(_0x201e6f,_0x5671f5-0x72);}return new ShaderSource$1(_0x147124);}static[_0xa5f95b(0x58e,0x53e)](){const _0x1906e0={};return _0x1906e0['sources']=[updatePositionShader],new ShaderSource$1(_0x1906e0);}static['getSegmentDrawVertexShader'](){const _0x2e2a8e={};return _0x2e2a8e['sources']=[renderParticlesVertexShader],new ShaderSource$1(_0x2e2a8e);}static[_0xa5f95b(0x54b,0x5af)](){const _0x5aa3f1={};return _0x5aa3f1['sources']=[renderParticlesFragmentShader],new ShaderSource$1(_0x5aa3f1);}static['getPostProcessingPositionShader'](){const _0x243daa={};return _0x243daa['sources']=[postProcessingPositionFragmentShader],new ShaderSource$1(_0x243daa);}}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['Cesium'];class CustomPrimitive{constructor(_0x450685){this['commandType']=_0x450685['commandType'];function _0x3e0c19(_0x599df7,_0x462769){return _0x366ecb(_0x599df7,_0x462769-0x427);}this['geometry']=_0x450685[_0x20d975(0x355,0x364)],this[_0x20d975(0x2fc,0x2a8)]=_0x450685['attributeLocations'],this['primitiveType']=_0x450685['primitiveType'],this[_0x20d975(0x33a,0x39b)]=_0x450685['uniformMap']||{},this[_0x20d975(0x3cf,0x432)]=_0x450685['vertexShaderSource'],this[_0x20d975(0x3b7,0x42e)]=_0x450685['fragmentShaderSource'],this['rawRenderState']=_0x450685['rawRenderState'];function _0x20d975(_0x417771,_0x3b1956){return _0x366ecb(_0x3b1956,_0x417771-0x35f);}this[_0x3e0c19(0x3e4,0x3d0)]=_0x450685['framebuffer'],this[_0x20d975(0x30e,0x398)]=_0x450685['outputTexture'],this['autoClear']=_0x450685['autoClear']??![],this['preExecute']=_0x450685[_0x3e0c19(0x432,0x3d3)],this[_0x20d975(0x3aa,0x32b)]=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this['isDynamic']=_0x450685[_0x3e0c19(0x3e1,0x469)]??(()=>!![]),this['autoClear']&&(this[_0x20d975(0x3de,0x443)]=new ClearCommand$1({'color':new Color$2(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Pass$1['OPAQUE']}));}['createCommand'](_0x1b287b){function _0x291b94(_0x4a33c4,_0x505a61){return _0xa5f95b(_0x505a61- -0x1b6,_0x4a33c4);}function _0x594858(_0x4be892,_0x473d9d){return _0xa5f95b(_0x4be892- -0x1ea,_0x473d9d);}if(this[_0x291b94(0x365,0x3c9)]==='Draw'){const _0x27802f={};_0x27802f['context']=_0x1b287b,_0x27802f[_0x594858(0x317,0x2cc)]=this[_0x594858(0x317,0x351)],_0x27802f[_0x594858(0x2be,0x295)]=this['attributeLocations'],_0x27802f[_0x291b94(0x3a0,0x3df)]=BufferUsage$1['STATIC_DRAW'];const _0xd95eb3=VertexArray$1['fromGeometry'](_0x27802f),_0xa2ffb6={};_0xa2ffb6[_0x291b94(0x2c6,0x339)]=_0x1b287b,_0xa2ffb6[_0x594858(0x391,0x366)]=this['vertexShaderSource'],_0xa2ffb6[_0x594858(0x379,0x3ec)]=this[_0x594858(0x379,0x34c)],_0xa2ffb6['attributeLocations']=this['attributeLocations'];const _0x3ddb84=ShaderProgram['fromCache'](_0xa2ffb6),_0x3c7c62=RenderState[_0x594858(0x2e3,0x266)](this[_0x594858(0x38b,0x3f2)]),_0x473e43={};return _0x473e43['owner']=this,_0x473e43[_0x291b94(0x337,0x34e)]=_0xd95eb3,_0x473e43[_0x291b94(0x446,0x3d3)]=this[_0x594858(0x39f,0x3a6)],_0x473e43['modelMatrix']=Matrix4['IDENTITY'],_0x473e43['renderState']=_0x3c7c62,_0x473e43[_0x594858(0x336,0x2d1)]=_0x3ddb84,_0x473e43['framebuffer']=this[_0x291b94(0x2b8,0x2fe)],_0x473e43['uniformMap']=this[_0x291b94(0x2d8,0x330)],_0x473e43[_0x291b94(0x3b1,0x37a)]=Pass$1[_0x291b94(0x40a,0x3ae)],new DrawCommand(_0x473e43);}else{if(this[_0x594858(0x395,0x346)]==='Compute'){const _0x5a4238={};return _0x5a4238[_0x291b94(0x38b,0x393)]=this,_0x5a4238['fragmentShaderSource']=this[_0x594858(0x379,0x345)],_0x5a4238['uniformMap']=this[_0x594858(0x2fc,0x2c1)],_0x5a4238['outputTexture']=this[_0x594858(0x2d0,0x316)],_0x5a4238[_0x291b94(0x444,0x3d5)]=!![],new ComputeCommand(_0x5a4238);}else throw new Error(_0x291b94(0x3f8,0x3ef));}}[_0x366ecb(0x2c,-0x4b)](_0x4558d9,_0x31aa05){function _0x4ad53b(_0x109f1f,_0x4d6251){return _0xa5f95b(_0x109f1f- -0x34c,_0x4d6251);}function _0x42566e(_0x12e61,_0x5ee5af){return _0xa5f95b(_0x5ee5af- -0x338,_0x12e61);}this['geometry']=_0x31aa05,defined(this['commandToExecute'])&&(this['commandToExecute'][_0x4ad53b(0x1b8,0x244)]=VertexArray$1['fromGeometry']({'context':_0x4558d9,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':BufferUsage$1[_0x42566e(0x256,0x1ef)]}));}['update'](_0xdfee2b){if(!this[_0x4cba05(0xf8,0x163)]())return;if(!this['show']||!defined(_0xdfee2b))return;function _0x4cba05(_0x704faa,_0x1e9fa6){return _0x366ecb(_0x1e9fa6,_0x704faa-0xb6);}!defined(this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0xdfee2b['context']));defined(this[_0x4cba05(0x62,0xeb)])&&this[_0x4cba05(0x62,0x73)]();if(!_0xdfee2b['commandList']){console['warn']('frameState.commandList\x20is\x20undefined');return;}defined(this[_0xb0cc7c(0x50e,0x4a8)])&&_0xdfee2b['commandList'][_0xb0cc7c(0x379,0x3e2)](this[_0x4cba05(0x135,0xba)]);function _0xb0cc7c(_0x24ea2e,_0x29985e){return _0x366ecb(_0x24ea2e,_0x29985e-0x429);}defined(this['commandToExecute'])&&_0xdfee2b[_0xb0cc7c(0x481,0x444)]['push'](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){if(defined(this['commandToExecute'])){var _0x26aad2;(_0x26aad2=this['commandToExecute']['shaderProgram'])===null||_0x26aad2===void 0x0||_0x26aad2['destroy'](),this[_0x4d6c19(0x2ef,0x31c)]['shaderProgram']=undefined;}function _0x4d6c19(_0xb206c9,_0x215cd8){return _0xa5f95b(_0xb206c9- -0x2bf,_0x215cd8);}return destroyObject(this);}}function deepMerge(_0x496cb2,_0x4d123b){if(!_0x496cb2)return _0x4d123b;if(!_0x4d123b)return _0x496cb2;const _0x28c510={..._0x4d123b},_0x5c3681=_0x28c510;function _0x5f374c(_0x4e7778,_0x2b4e2a){return _0xa5f95b(_0x2b4e2a- -0x604,_0x4e7778);}function _0x24e310(_0x14397c,_0x38525b){return _0x366ecb(_0x38525b,_0x14397c-0x3ae);}for(const _0x3e9491 in _0x496cb2){if(Object[_0x24e310(0x34e,0x38b)][_0x5f374c(-0x196,-0x118)][_0x5f374c(-0x18d,-0x125)](_0x496cb2,_0x3e9491)){const _0xdc1da8=_0x496cb2[_0x3e9491],_0x14964b=_0x4d123b[_0x3e9491];if(Array[_0x5f374c(-0x16d,-0x16d)](_0xdc1da8)){_0x5c3681[_0x3e9491]=_0xdc1da8[_0x24e310(0x366,0x3ef)]();continue;}if(_0xdc1da8&&typeof _0xdc1da8===_0x24e310(0x440,0x3ed)){_0x5c3681[_0x3e9491]=deepMerge(_0xdc1da8,_0x14964b||{});continue;}_0xdc1da8!==undefined&&(_0x5c3681[_0x3e9491]=_0xdc1da8);}}return _0x5c3681;}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(_0x5916ff,_0x194b9d,_0x1f2aac,_0x4e9d12,_0x5e60e2){this['context']=_0x5916ff,this['options']=_0x1f2aac,this['viewerParameters']=_0x4e9d12,this['windData']=_0x194b9d,this[_0x2fd9bc(-0x80,-0xc5)]=0x3c,this['frameRateAdjustment']=0x1;function _0x2fd9bc(_0x5cedd6,_0x444238){return _0x366ecb(_0x5cedd6,_0x444238- -0xe3);}const _0x4ef7c6={};_0x4ef7c6[_0x279b50(0x2,-0x15)]=_0x5e60e2,_0x4ef7c6['samplingWindow']=0x1,_0x4ef7c6[_0x279b50(-0xe,-0x5a)]=0x0,this[_0x2fd9bc(-0xe8,-0xb7)]=new FrameRateMonitor(_0x4ef7c6);function _0x279b50(_0x2ee0a4,_0x3a9821){return _0xa5f95b(_0x2ee0a4- -0x4c7,_0x3a9821);}this['initFrameRate'](),this[_0x2fd9bc(-0x163,-0x130)](),this['createParticlesTextures'](),this[_0x2fd9bc(-0x17c,-0x122)]();}['initFrameRate'](){const _0x62dd0a=()=>{function _0x1e9610(_0x1c87c9,_0x44fc33){return _0xcb26(_0x44fc33- -0x25e,_0x1c87c9);}function _0x557cda(_0x1321e6,_0x429d41){return _0xcb26(_0x1321e6-0x2b,_0x429d41);}this[_0x1e9610(-0xb5,-0x7f)][_0x557cda(0x169,0x127)]>0x14&&(this[_0x1e9610(-0xea,-0x8d)]=this['frameRateMonitor']['lastFramesPerSecond'],this['frameRateAdjustment']=0x3c/Math[_0x1e9610(-0xc8,-0xab)](this['frameRate'],0x1));};_0x62dd0a();const _0x576c13=setInterval(_0x62dd0a,0x3e8),_0x3bdea7=this['destroy']['bind'](this);this['destroy']=()=>{clearInterval(_0x576c13),_0x3bdea7();};}['createWindTextures'](){function _0x12b1a5(_0x52f3ec,_0x209ba0){return _0xa5f95b(_0x52f3ec- -0x65e,_0x209ba0);}const _0x4b0d3a={};_0x4b0d3a['minificationFilter']=TextureMinificationFilter$1[_0x285430(0x3bb,0x385)],_0x4b0d3a[_0x285430(0x39f,0x379)]=TextureMagnificationFilter$1['LINEAR'];function _0x285430(_0x572cc9,_0x527d60){return _0x366ecb(_0x572cc9,_0x527d60-0x3b9);}const _0x293c0e={'context':this[_0x285430(0x34b,0x39d)],'width':this['windData']['width'],'height':this[_0x285430(0x43f,0x42a)][_0x12b1a5(-0x125,-0xf0)],'pixelFormat':PixelFormat$1['RED'],'pixelDatatype':PixelDatatype$1['FLOAT'],'flipY':this['options'][_0x285430(0x4c0,0x440)]??![],'sampler':new Sampler$1(_0x4b0d3a)};this['windTextures']={'U':new Texture$1({..._0x293c0e,'source':{'arrayBufferView':new Float32Array(this['windData']['u']['array'])}}),'V':new Texture$1({..._0x293c0e,'source':{'arrayBufferView':new Float32Array(this[_0x12b1a5(-0xe2,-0x60)]['v']['array'])}})};}[_0xa5f95b(0x5a0,0x59b)](){const _0x326a98={};function _0x1a7d68(_0x553581,_0x35ff7a){return _0xa5f95b(_0x35ff7a- -0x129,_0x553581);}_0x326a98['minificationFilter']=TextureMinificationFilter$1['NEAREST'],_0x326a98[_0x1a7d68(0x3b0,0x3a2)]=TextureMagnificationFilter$1['NEAREST'];const _0x5383e2={'context':this['context'],'width':this[_0x1a7d68(0x3cd,0x3d0)]['particlesTextureSize'],'height':this[_0x1a7d68(0x3b1,0x3d0)]['particlesTextureSize'],'pixelFormat':PixelFormat$1[_0x1a7d68(0x3ff,0x3a1)],'pixelDatatype':PixelDatatype$1[_0x149e23(-0x2a,-0x81)],'flipY':![],'source':{'arrayBufferView':new Float32Array(this['options']['particlesTextureSize']*this[_0x1a7d68(0x354,0x3d0)]['particlesTextureSize']*0x4)['fill'](0x0)},'sampler':new Sampler$1(_0x326a98)};function _0x149e23(_0x3c9bc2,_0x1055f2){return _0xa5f95b(_0x1055f2- -0x572,_0x3c9bc2);}this['particlesTextures']={'previousParticlesPosition':new Texture$1(_0x5383e2),'currentParticlesPosition':new Texture$1(_0x5383e2),'nextParticlesPosition':new Texture$1(_0x5383e2),'postProcessingPosition':new Texture$1(_0x5383e2),'particlesSpeed':new Texture$1(_0x5383e2)};}['destroyParticlesTextures'](){function _0x1f766a(_0x1fe354,_0x410f8c){return _0xa5f95b(_0x410f8c- -0x53f,_0x1fe354);}function _0x4678f6(_0x19c8e5,_0x5cb4d9){return _0x366ecb(_0x19c8e5,_0x5cb4d9-0x1ff);}Object[_0x4678f6(0x1e6,0x1a2)](this[_0x4678f6(0x200,0x25d)])['forEach'](_0x450dfe=>_0x450dfe['destroy']());}['createComputingPrimitives'](){function _0x4b1c42(_0x5ce6b3,_0x2b082f){return _0x366ecb(_0x5ce6b3,_0x2b082f-0x432);}function _0x5f144c(_0x3e6644,_0x59f4c1){return _0xa5f95b(_0x59f4c1-0x10,_0x3e6644);}this[_0x4b1c42(0x559,0x4cb)]={'calculateSpeed':new CustomPrimitive({'commandType':_0x5f144c(0x62e,0x5b2),'uniformMap':{'U':()=>this['windTextures']['U'],'V':()=>this['windTextures']['V'],'uRange':()=>new Cartesian2$1(this[_0x4b1c42(0x4ed,0x4a3)]['u']['min'],this[_0x4b1c42(0x504,0x4a3)]['u'][_0x5f144c(0x52c,0x51b)]),'vRange':()=>new Cartesian2$1(this[_0x4b1c42(0x4a6,0x4a3)]['v']['min'],this[_0x4b1c42(0x485,0x4a3)]['v'][_0x5f144c(0x529,0x51b)]),'speedRange':()=>new Cartesian2$1(this['windData'][_0x5f144c(0x534,0x55e)][_0x5f144c(0x5b4,0x5ac)],this['windData']['speed']['max']),'currentParticlesPosition':()=>this['particlesTextures'][_0x5f144c(0x4ec,0x4eb)],'speedScaleFactor':()=>{function _0x5a7afc(_0x255e6b,_0x3e87b1){return _0x4b1c42(_0x3e87b1,_0x255e6b- -0x465);}return(this[_0x5a7afc(-0x43,0x3b)]['pixelSize']+0x32)*this['options']['speedFactor'];},'frameRateAdjustment':()=>this['frameRateAdjustment'],'dimension':()=>new Cartesian2$1(this['windData'][_0x4b1c42(0x366,0x3c8)],this['windData'][_0x4b1c42(0x4a1,0x460)]),'minimum':()=>new Cartesian2$1(this[_0x4b1c42(0x458,0x4a3)][_0x4b1c42(0x4d9,0x478)]['west'],this['windData'][_0x4b1c42(0x4b8,0x478)][_0x5f144c(0x64f,0x5c1)]),'maximum':()=>new Cartesian2$1(this[_0x4b1c42(0x461,0x4a3)]['bounds']['east'],this['windData'][_0x5f144c(0x58e,0x561)]['north'])},'fragmentShaderSource':ShaderManager[_0x4b1c42(0x497,0x4a5)](),'outputTexture':this[_0x4b1c42(0x45d,0x490)]['particlesSpeed'],'preExecute':()=>{const _0x4aa8b6=this[_0x1e58d(0x54a,0x543)]['previousParticlesPosition'];function _0x1e58d(_0x24a65c,_0x534638){return _0x5f144c(_0x24a65c,_0x534638- -0x36);}this[_0xfef1e6(0x3c,0xc1)][_0xfef1e6(-0x8d,-0x118)]=this[_0x1e58d(0x566,0x543)]['currentParticlesPosition'],this['particlesTextures']['currentParticlesPosition']=this[_0xfef1e6(0x3c,0x5)]['postProcessingPosition'];function _0xfef1e6(_0x3632dd,_0x19d480){return _0x4b1c42(_0x19d480,_0x3632dd- -0x454);}this[_0xfef1e6(0x3c,0x9e)]['postProcessingPosition']=_0x4aa8b6,this['primitives']['calculateSpeed'][_0xfef1e6(0x81,0x7e)]&&(this['primitives']['calculateSpeed'][_0xfef1e6(0x81,0xa4)][_0x1e58d(0x513,0x494)]=this[_0x1e58d(0x5cb,0x543)]['particlesSpeed']);},'isDynamic':()=>this[_0x5f144c(0x505,0x509)][_0x5f144c(0x5f2,0x59d)]}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':()=>this[_0x4b1c42(0x512,0x490)]['currentParticlesPosition'],'particlesSpeed':()=>this[_0x4b1c42(0x4e4,0x490)]['particlesSpeed']},'fragmentShaderSource':ShaderManager[_0x5f144c(0x5fb,0x59e)](),'outputTexture':this['particlesTextures'][_0x4b1c42(0x525,0x499)],'preExecute':()=>{function _0x4f9f66(_0x3133b2,_0x2eca72){return _0x4b1c42(_0x3133b2,_0x2eca72- -0x52f);}function _0x2e09fe(_0x3c5528,_0x3ca0f9){return _0x4b1c42(_0x3c5528,_0x3ca0f9- -0x394);}this['primitives']['updatePosition'][_0x2e09fe(0xda,0x141)]&&(this['primitives'][_0x4f9f66(-0x1c4,-0x16b)][_0x2e09fe(0x1c1,0x141)]['outputTexture']=this['particlesTextures']['nextParticlesPosition']);},'isDynamic':()=>this['options']['dynamic']}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x4b1c42(0x4b6,0x4c9),'uniformMap':{'nextParticlesPosition':()=>this[_0x5f144c(0x59e,0x579)]['nextParticlesPosition'],'particlesSpeed':()=>this['particlesTextures'][_0x5f144c(0x541,0x57b)],'lonRange':()=>this[_0x4b1c42(0x45f,0x422)]['lonRange'],'latRange':()=>this[_0x4b1c42(0x3cf,0x422)]['latRange'],'dataLonRange':()=>new Cartesian2$1(this['windData']['bounds']['west'],this['windData']['bounds'][_0x4b1c42(0x4ab,0x466)]),'dataLatRange':()=>new Cartesian2$1(this['windData'][_0x4b1c42(0x46f,0x478)][_0x4b1c42(0x462,0x4d8)],this[_0x4b1c42(0x4e2,0x4a3)][_0x4b1c42(0x43f,0x478)]['north']),'randomCoefficient':function(){function _0x98d893(_0x496a42,_0x50ac26){return _0x4b1c42(_0x496a42,_0x50ac26- -0x398);}return Math[_0x98d893(0xc8,0xa0)]();},'dropRate':()=>this['options'][_0x4b1c42(0x4cb,0x441)],'dropRateBump':()=>this['options'][_0x5f144c(0x573,0x5c2)],'useViewerBounds':()=>this['options']['useViewerBounds']},'fragmentShaderSource':ShaderManager['getPostProcessingPositionShader'](),'outputTexture':this[_0x5f144c(0x5bf,0x579)][_0x4b1c42(0x49c,0x430)],'preExecute':()=>{function _0x25126a(_0x5486b9,_0x485fb5){return _0x5f144c(_0x5486b9,_0x485fb5- -0x247);}function _0x2bbeef(_0x130014,_0x7e4e4b){return _0x5f144c(_0x7e4e4b,_0x130014- -0x217);}this['primitives']['postProcessingPosition']['commandToExecute']&&(this[_0x25126a(0x3a4,0x36d)]['postProcessingPosition']['commandToExecute'][_0x2bbeef(0x2b3,0x2ff)]=this[_0x2bbeef(0x362,0x2ea)]['postProcessingPosition']);},'isDynamic':()=>this['options']['dynamic']})};}['reCreateWindTextures'](){this['windTextures']['U']['destroy']();function _0xb42b46(_0x223e3d,_0x562175){return _0xa5f95b(_0x223e3d- -0x8f,_0x562175);}this['windTextures']['V'][_0xb42b46(0x485,0x4e2)](),this['createWindTextures']();}['updateWindData'](_0x166a4f){this['windData']=_0x166a4f,this['reCreateWindTextures']();}['updateOptions'](_0x44b4f){function _0x57ea5a(_0x522e14,_0x292808){return _0xa5f95b(_0x522e14- -0x674,_0x292808);}const _0x28abe7=_0x44b4f['flipY']!==undefined&&_0x44b4f[_0x4c0cb6(0x47a,0x43e)]!==this['options']['flipY'];function _0x4c0cb6(_0x549dfc,_0x27ffc0){return _0xa5f95b(_0x549dfc- -0x118,_0x27ffc0);}this['options']=deepMerge(_0x44b4f,this['options']),_0x28abe7&&this[_0x57ea5a(-0x13e,-0x103)]();}['processWindData'](_0x20b6da){const {array:_0x4cd028}=_0x20b6da;function _0x2d032a(_0x27395b,_0x568799){return _0xa5f95b(_0x27395b- -0x5be,_0x568799);}let {min:_0x58d46f,max:_0xd1ba7b}=_0x20b6da;const _0x29b80c=new Float32Array(_0x4cd028['length']);function _0x5e22ab(_0x3a463a,_0x5232f1){return _0x366ecb(_0x3a463a,_0x5232f1-0x14a);}_0x58d46f===undefined&&(console['warn']('min\x20is\x20undefined,\x20calculate\x20min'),_0x58d46f=Math[_0x5e22ab(0x1e9,0x1db)](..._0x4cd028));_0xd1ba7b===undefined&&(console['warn'](_0x2d032a(-0xa3,-0xfa)),_0xd1ba7b=Math['max'](..._0x4cd028));const _0x165ddb=Math['max'](Math[_0x2d032a(-0xb8,-0x85)](_0x58d46f),Math[_0x2d032a(-0xb8,-0xfa)](_0xd1ba7b));for(let _0x24576f=0x0;_0x24576f<_0x4cd028[_0x2d032a(-0xd9,-0x10c)];_0x24576f++){const _0x269a4c=_0x4cd028[_0x24576f]/_0x165ddb;_0x29b80c[_0x24576f]=_0x269a4c;}return _0x29b80c;}[_0xa5f95b(0x514,0x50c)](){function _0x432c95(_0x4c8e00,_0x4daf77){return _0xa5f95b(_0x4c8e00- -0x22f,_0x4daf77);}Object[_0x432c95(0x27f,0x258)](this['windTextures'])[_0x432c95(0x351,0x36d)](_0x5e74da=>_0x5e74da['destroy']()),Object[_0x3d2e3d(-0x16c,-0x1db)](this['particlesTextures'])['forEach'](_0x40a418=>_0x40a418['destroy']()),Object['values'](this['primitives'])[_0x3d2e3d(-0x9a,-0x23)](_0x35f48e=>_0x35f48e[_0x432c95(0x2e5,0x30d)]());function _0x3d2e3d(_0x305974,_0x53952d){return _0x366ecb(_0x53952d,_0x305974- -0x10f);}this['frameRateMonitor']['destroy']();}}const {Appearance,BufferUsage,Cartesian2,Color:Color$1,ComponentDatatype,Framebuffer,Geometry,GeometryAttribute,GeometryAttributes,PixelDatatype,PixelFormat,PrimitiveType,Sampler,SceneMode,Texture,TextureMagnificationFilter,TextureMinificationFilter,TextureWrap,VertexArray}=mars3d__namespace['Cesium'];class WindParticlesRendering{constructor(_0x5099d5,_0x80494d,_0x537847,_0x628109){this['context']=_0x5099d5,this['options']=_0x80494d;function _0x9a4578(_0x5486c3,_0x36d37e){return _0xa5f95b(_0x5486c3- -0x49d,_0x36d37e);}this[_0x9a4578(0x5e,0x84)]=_0x537847,this['computing']=_0x628109;(typeof this[_0x28d262(-0x103,-0x183)]['particlesTextureSize']!=='number'||this['options']['particlesTextureSize']<=0x0)&&(console[_0x9a4578(0xd7,0x148)](_0x28d262(-0xca,-0x11c)),this[_0x28d262(-0x17f,-0x183)][_0x28d262(-0x19a,-0x14e)]=0x100);this['colorTable']=this['createColorTableTexture'](),this[_0x28d262(-0x1b3,-0x14a)]=this[_0x28d262(-0x9c,-0x120)]();function _0x28d262(_0x511286,_0x1d1ed1){return _0x366ecb(_0x511286,_0x1d1ed1- -0x171);}this['framebuffers']=this['createRenderingFramebuffers'](),this[_0x9a4578(0x107,0xde)]=this[_0x28d262(-0x20f,-0x1d0)]();}[_0x366ecb(0x77,0x51)](){const _0x582863={};_0x582863[_0x369206(-0x1a0,-0x222)]=this['context'],_0x582863['width']=this['context'][_0x5916f4(0xbe,0xc6)],_0x582863['height']=this['context']['drawingBufferHeight'],_0x582863[_0x5916f4(0x13f,0xb4)]=PixelFormat[_0x369206(-0x24c,-0x247)],_0x582863[_0x369206(-0x1b4,-0x1d6)]=PixelDatatype[_0x369206(-0x13c,-0x18b)];const _0x53d841=_0x582863,_0x1e02dc={};_0x1e02dc[_0x369206(-0x1cf,-0x222)]=this['context'],_0x1e02dc[_0x369206(-0x2d2,-0x270)]=this['context'][_0x369206(-0x1b2,-0x22e)],_0x1e02dc['height']=this[_0x5916f4(0x11c,0xd2)]['drawingBufferHeight'];function _0x369206(_0x1ac2c7,_0x5376f7){return _0x366ecb(_0x1ac2c7,_0x5376f7- -0x206);}_0x1e02dc['pixelFormat']=PixelFormat['DEPTH_COMPONENT'],_0x1e02dc[_0x5916f4(0xcc,0x11e)]=PixelDatatype['UNSIGNED_INT'];function _0x5916f4(_0x100712,_0x1566c4){return _0xa5f95b(_0x1566c4- -0x41d,_0x100712);}const _0x2e436a=_0x1e02dc;return{'segmentsColor':new Texture(_0x53d841),'segmentsDepth':new Texture(_0x2e436a)};}[_0xa5f95b(0x4e9,0x4c6)](){const _0x4a230a={};_0x4a230a[_0x376037(0x1d4,0x214)]=this[_0x4d4768(0x1e8,0x17c)];function _0x376037(_0x41e3b9,_0x5ee3ac){return _0xa5f95b(_0x41e3b9- -0x31b,_0x5ee3ac);}function _0x4d4768(_0x1229ca,_0x191722){return _0x366ecb(_0x1229ca,_0x191722-0x198);}return _0x4a230a['colorTextures']=[this[_0x376037(0x217,0x1f9)][_0x4d4768(0x260,0x226)]],_0x4a230a[_0x4d4768(0x2b5,0x22e)]=this['textures'][_0x4d4768(0x1c0,0x220)],{'segments':new Framebuffer(_0x4a230a)};}[_0xa5f95b(0x535,0x5c1)](){Object['values'](this['framebuffers'])['forEach'](_0x2c8309=>{_0x2c8309['destroy']();});}['createColorTableTexture'](){const _0x458464=new Float32Array(this['options']['colors']['flatMap'](_0x4e204b=>{function _0x4f3e5b(_0x40d8d9,_0x3ae3b7){return _0xcb26(_0x40d8d9- -0x2d7,_0x3ae3b7);}const _0x19be32=Color$1['fromCssColorString'](_0x4e204b);function _0x5b9655(_0x26979b,_0x4b8095){return _0xcb26(_0x4b8095- -0x304,_0x26979b);}return[_0x19be32['red'],_0x19be32[_0x4f3e5b(-0x148,-0x1ce)],_0x19be32[_0x5b9655(-0x148,-0x196)],_0x19be32[_0x5b9655(-0xd4,-0x140)]];})),_0x50589f={};function _0x5b1059(_0x57516e,_0x3ccc7b){return _0x366ecb(_0x57516e,_0x3ccc7b- -0x58);}_0x50589f[_0x5b1059(-0x34,-0x65)]=TextureMinificationFilter['LINEAR'];function _0x20e0b6(_0x3c92dc,_0x464cef){return _0xa5f95b(_0x464cef- -0x456,_0x3c92dc);}return _0x50589f['magnificationFilter']=TextureMagnificationFilter[_0x5b1059(-0x94,-0x8c)],_0x50589f[_0x20e0b6(0x102,0xd4)]=TextureWrap[_0x20e0b6(0xb6,0x51)],_0x50589f['wrapT']=TextureWrap[_0x5b1059(-0x3f,-0xbc)],new Texture({'context':this['context'],'width':this['options']['colors']['length'],'height':0x1,'pixelFormat':PixelFormat['RGBA'],'pixelDatatype':PixelDatatype['FLOAT'],'sampler':new Sampler(_0x50589f),'source':{'width':this['options']['colors'][_0x5b1059(-0xe3,-0x7e)],'height':0x1,'arrayBufferView':_0x458464}});}[_0xa5f95b(0x4d3,0x500)](){const _0x3eeb5f=0x4,_0x4516ce=this['options']['particlesTextureSize'];let _0x2f6976=[];for(let _0x228f88=0x0;_0x228f88<_0x4516ce;_0x228f88++){for(let _0x15e234=0x0;_0x15e234<_0x4516ce;_0x15e234++){for(let _0x5d0330=0x0;_0x5d0330<_0x3eeb5f;_0x5d0330++){_0x2f6976[_0x2e3710(0x24a,0x2c1)](_0x228f88/_0x4516ce),_0x2f6976['push'](_0x15e234/_0x4516ce);}}}_0x2f6976=new Float32Array(_0x2f6976);function _0x2e3710(_0x3600ae,_0x29284e){return _0x366ecb(_0x3600ae,_0x29284e-0x308);}const _0x1ef32c=this[_0x1b12b1(0x371,0x3d4)][_0x2e3710(0x2ce,0x32b)]**0x2;let _0x193959=[];for(let _0x4c4967=0x0;_0x4c4967<_0x1ef32c;_0x4c4967++){_0x193959['push'](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x193959=new Float32Array(_0x193959);function _0x1b12b1(_0x4820db,_0x4df85a){return _0xa5f95b(_0x4df85a- -0x125,_0x4820db);}let _0x5abfa7=[];for(let _0x2b6d4c=0x0,_0x45b82=0x0;_0x2b6d4c<_0x1ef32c;_0x2b6d4c++){_0x5abfa7['push'](_0x45b82+0x0,_0x45b82+0x1,_0x45b82+0x2,_0x45b82+0x2,_0x45b82+0x1,_0x45b82+0x3),_0x45b82+=_0x3eeb5f;}_0x5abfa7=new Uint32Array(_0x5abfa7);const _0x1bdd05={};_0x1bdd05[_0x1b12b1(0x39e,0x406)]=ComponentDatatype['FLOAT'],_0x1bdd05[_0x1b12b1(0x3f8,0x41f)]=0x2,_0x1bdd05['values']=_0x2f6976;const _0x17976f={};_0x17976f['componentDatatype']=ComponentDatatype['FLOAT'],_0x17976f[_0x2e3710(0x353,0x341)]=0x3,_0x17976f['values']=_0x193959;const _0xd3e81d=new Geometry({'attributes':new GeometryAttributes({'st':new GeometryAttribute(_0x1bdd05),'normal':new GeometryAttribute(_0x17976f)}),'indices':_0x5abfa7});return _0xd3e81d;}['createRawRenderState'](_0x1e7800){const _0x2735ee={'viewport':undefined,'depthTest':undefined,'depthMask':undefined,'blending':undefined,..._0x1e7800};function _0x59b1c8(_0x89712f,_0x3cfa76){return _0xa5f95b(_0x89712f- -0x43f,_0x3cfa76);}return Appearance[_0x59b1c8(0x101,0x10e)](!![],![],_0x2735ee);}['createPrimitives'](){const _0x17aa60={};_0x17aa60['st']=0x0,_0x17aa60['normal']=0x1;const _0x580c3a={};_0x580c3a[_0x1efb59(0xe5,0x117)]=!![];const _0x26aca8={};_0x26aca8[_0x1efb59(0xe5,0x137)]=!![],_0x26aca8['blendEquation']=WebGLRenderingContext['FUNC_ADD'],_0x26aca8['blendFuncSource']=WebGLRenderingContext[_0x202657(0x67,0x86)],_0x26aca8['blendFuncDestination']=WebGLRenderingContext['ONE_MINUS_SRC_ALPHA'];const _0x290d2b={};_0x290d2b[_0x1efb59(0x1be,0x134)]=undefined,_0x290d2b['depthTest']=_0x580c3a,_0x290d2b['depthMask']=!![];function _0x202657(_0xca353a,_0x25e9a0){return _0x366ecb(_0x25e9a0,_0xca353a- -0x1f);}function _0x1efb59(_0x2ae1fc,_0x33e972){return _0xa5f95b(_0x2ae1fc- -0x3c5,_0x33e972);}_0x290d2b['blending']=_0x26aca8;const _0x4a92a4=new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x17aa60,'geometry':this['createSegmentsGeometry'](),'primitiveType':PrimitiveType[_0x202657(-0xb,-0x7f)],'uniformMap':{'previousParticlesPosition':()=>this['computing']['particlesTextures']['previousParticlesPosition'],'currentParticlesPosition':()=>this[_0x202657(0xa,0x96)][_0x202657(0x3f,0x5)][_0x1efb59(0x116,0x186)],'postProcessingPosition':()=>this[_0x1efb59(0x16f,0x1ae)][_0x202657(0x3f,-0x19)]['postProcessingPosition'],'particlesSpeed':()=>this['computing'][_0x202657(0x3f,0x49)][_0x1efb59(0x1a6,0x1dc)],'frameRateAdjustment':()=>this['computing']['frameRateAdjustment'],'colorTable':()=>this[_0x1efb59(0x18e,0x1de)],'domain':()=>{var _0x48c4b5,_0x3c0077;function _0x4048c6(_0x5ea5cd,_0x5b8e28){return _0x1efb59(_0x5b8e28- -0x39,_0x5ea5cd);}function _0x3814da(_0x4d5d81,_0x3a6fe9){return _0x202657(_0x3a6fe9- -0x186,_0x4d5d81);}const _0xb89193=new Cartesian2(((_0x48c4b5=this['options']['domain'])===null||_0x48c4b5===void 0x0?void 0x0:_0x48c4b5[_0x3814da(-0xd6,-0x114)])??this['computing']['windData'][_0x4048c6(0x133,0x150)]['min'],((_0x3c0077=this[_0x4048c6(0xa5,0xfb)]['domain'])===null||_0x3c0077===void 0x0?void 0x0:_0x3c0077[_0x4048c6(0x85,0x10d)])??this[_0x3814da(-0x197,-0x17c)]['windData']['speed']['max']);return _0xb89193;},'displayRange':()=>{function _0x3f2829(_0x5cfc23,_0x8a8f90){return _0x1efb59(_0x8a8f90-0x197,_0x5cfc23);}var _0x4c595a,_0x2462fa;function _0x4dab28(_0x1a2768,_0x28d353){return _0x1efb59(_0x1a2768- -0x15b,_0x28d353);}const _0xbf21c=new Cartesian2(((_0x4c595a=this['options'][_0x3f2829(0x373,0x2e8)])===null||_0x4c595a===void 0x0?void 0x0:_0x4c595a['min'])??this[_0x4dab28(0x14,-0x4c)][_0x4dab28(0x5c,0xac)]['speed']['min'],((_0x2462fa=this['options'][_0x4dab28(-0xa,-0x19)])===null||_0x2462fa===void 0x0?void 0x0:_0x2462fa['max'])??this['computing']['windData']['speed'][_0x4dab28(-0x15,-0x5e)]);return _0xbf21c;},'particleHeight':()=>this['options']['fixedHeight']||0x0,'aspect':()=>this[_0x1efb59(0x12a,0xe4)]['drawingBufferWidth']/this[_0x202657(-0x3b,-0x38)]['drawingBufferHeight'],'pixelSize':()=>this[_0x202657(-0x2f,-0x49)][_0x1efb59(0x1cf,0x15b)],'lineWidth':()=>{function _0x586ff2(_0x3f61b5,_0x45203c){return _0x1efb59(_0x45203c- -0x378,_0x3f61b5);}function _0x235411(_0x45f3c1,_0x341a6f){return _0x202657(_0x45f3c1- -0x30,_0x341a6f);}const _0x85e11e={};_0x85e11e['min']=0x1,_0x85e11e[_0x235411(-0x4f,0xb)]=0x2;const _0x43eccb=this['options'][_0x235411(0x49,0x80)]||_0x85e11e;return new Cartesian2(_0x43eccb['min'],_0x43eccb['max']);},'lineLength':()=>{const _0x77e175={};_0x77e175[_0x203f20(0x48f,0x4d1)]=0x14,_0x77e175['max']=0x64;const _0x356465=this['options']['lineLength']||_0x77e175;function _0x203f20(_0x33d40e,_0x2cf5b5){return _0x202657(_0x2cf5b5-0x45f,_0x33d40e);}return new Cartesian2(_0x356465['min'],_0x356465['max']);},'is3D':()=>this[_0x1efb59(0x136,0xfe)]['sceneMode']===SceneMode[_0x1efb59(0xf7,0x163)],'segmentsDepthTexture':()=>this['textures']['segmentsDepth']},'vertexShaderSource':ShaderManager[_0x1efb59(0x1b4,0x16a)](),'fragmentShaderSource':ShaderManager['getSegmentDrawFragmentShader'](),'rawRenderState':this['createRawRenderState'](_0x290d2b)}),_0x5ff707={};return _0x5ff707['segments']=_0x4a92a4,_0x5ff707;}['onParticlesTextureSizeChange'](){const _0x5b1169=this['createSegmentsGeometry']();function _0xefd6f4(_0x4c0623,_0x256482){return _0x366ecb(_0x4c0623,_0x256482-0xcb);}this['primitives']['segments'][_0xefd6f4(0x127,0xc1)]=_0x5b1169;const _0x18ad73={};_0x18ad73['context']=this['context'],_0x18ad73['geometry']=_0x5b1169,_0x18ad73[_0x327029(0x3ec,0x3b3)]=this[_0x327029(0x4e8,0x49d)][_0x327029(0x49c,0x431)][_0x327029(0x3ec,0x380)],_0x18ad73['bufferUsage']=BufferUsage[_0x327029(0x46b,0x4ed)];const _0x62553c=VertexArray['fromGeometry'](_0x18ad73);function _0x327029(_0x148fa9,_0x4c43b4){return _0xa5f95b(_0x148fa9- -0xbc,_0x4c43b4);}this[_0xefd6f4(0x13f,0x164)]['segments'][_0x327029(0x4f2,0x553)]&&(this[_0xefd6f4(0x1ef,0x164)]['segments']['commandToExecute'][_0xefd6f4(0xb5,0xc4)]=_0x62553c);}[_0xa5f95b(0x567,0x5b9)](){this['colorTable']['destroy'](),this['colorTable']=this['createColorTableTexture']();}[_0xa5f95b(0x4da,0x55b)](_0x444f21){const _0x3547ef=_0x444f21['colors']&&JSON['stringify'](_0x444f21['colors'])!==JSON['stringify'](this['options'][_0x47d335(-0x177,-0x1dd)]);function _0x47d335(_0x13448b,_0x490b51){return _0x366ecb(_0x490b51,_0x13448b- -0x134);}function _0x59761c(_0x268b1f,_0x3bf8d8){return _0x366ecb(_0x3bf8d8,_0x268b1f-0x31c);}this['options']=deepMerge(_0x444f21,this[_0x47d335(-0x146,-0x15b)]),_0x3547ef&&this[_0x59761c(0x378,0x337)]();}['destroy'](){function _0x3ef43f(_0x2b335d,_0x16c397){return _0xa5f95b(_0x2b335d- -0x20f,_0x16c397);}Object[_0x3ef43f(0x29f,0x305)](this['framebuffers'])['forEach'](_0x1b16d1=>{function _0x44daa2(_0x15cbf3,_0x21e38f){return _0x3ef43f(_0x21e38f- -0x36a,_0x15cbf3);}_0x1b16d1[_0x44daa2(-0x4e,-0x65)]();});function _0x45ec25(_0x7e65dd,_0x42eced){return _0xa5f95b(_0x7e65dd- -0x2a3,_0x42eced);}Object['values'](this[_0x3ef43f(0x395,0x3da)])['forEach'](_0x2b9fd1=>{_0x2b9fd1['destroy']();}),this['colorTable'][_0x3ef43f(0x305,0x2d4)]();}}const {ClearCommand,Color,Pass}=mars3d__namespace[_0xa5f95b(0x4f7,0x48a)];class WindParticleSystem{constructor(_0x3e3d00,_0x4d7b73,_0x173da4,_0x2af3f3,_0xce60a4){function _0x26cb45(_0x2aa17f,_0x9ded0c){return _0xa5f95b(_0x9ded0c- -0x311,_0x2aa17f);}function _0x553147(_0x573036,_0x597c96){return _0x366ecb(_0x573036,_0x597c96-0x62);}this['context']=_0x3e3d00,this['options']=_0x173da4,this[_0x26cb45(0x1e3,0x1ea)]=_0x2af3f3,this['computing']=new WindParticlesComputing(_0x3e3d00,_0x4d7b73,_0x173da4,_0x2af3f3,_0xce60a4),this[_0x26cb45(0x282,0x21c)]=new WindParticlesRendering(_0x3e3d00,_0x173da4,_0x2af3f3,this[_0x553147(0xd7,0x8b)]),this['clearFramebuffers']();}['getPrimitives'](){const _0x338efc=[this[_0x47a7d6(-0x98,-0xc1)]['primitives']['calculateSpeed'],this['computing'][_0x47a7d6(-0x28,0x4a)]['updatePosition'],this['computing'][_0x47a7d6(-0x28,-0x3d)][_0x47a7d6(-0xc3,-0xd5)],this[_0x3a19cf(0x3dd,0x3d5)]['primitives'][_0x3a19cf(0x408,0x490)]];function _0x3a19cf(_0x1ca626,_0x2498b9){return _0x366ecb(_0x2498b9,_0x1ca626-0x3bb);}function _0x47a7d6(_0x43410a,_0x8aa043){return _0xa5f95b(_0x43410a- -0x5cc,_0x8aa043);}return _0x338efc;}['clearFramebuffers'](){const _0x59e404=new ClearCommand({'color':new Color(0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Pass['OPAQUE']});function _0x490cfa(_0x21c298,_0x238cd2){return _0xa5f95b(_0x238cd2-0x38,_0x21c298);}Object[_0x490cfa(0x5b3,0x5ae)](this['rendering']['framebuffers'])['forEach'](_0x4f8a4f=>{function _0x56e332(_0x382afc,_0x487f7d){return _0x490cfa(_0x487f7d,_0x382afc- -0x3a1);}_0x59e404['framebuffer']=this['rendering']['framebuffers'][_0x4f8a4f],_0x59e404['execute'](this[_0x56e332(0x186,0x197)]);});}['changeOptions'](_0x2de13f){let _0xd434f9=![];_0x2de13f['particlesTextureSize']&&this['options']['particlesTextureSize']!==_0x2de13f[_0x2ca6bc(0x93,0x68)]&&(_0xd434f9=!![]);function _0x350c01(_0x1f9c35,_0x5127ff){return _0x366ecb(_0x1f9c35,_0x5127ff-0x39f);}function _0x2ca6bc(_0x5d06a4,_0x76afdb){return _0x366ecb(_0x5d06a4,_0x76afdb-0x45);}const _0x1eca9d=deepMerge(_0x2de13f,this['options']);if(_0x1eca9d[_0x350c01(0x386,0x3c2)]<0x1)throw new Error(_0x350c01(0x31d,0x388));this[_0x2ca6bc(0xad,0x33)]=_0x1eca9d,this[_0x350c01(0x41e,0x3c1)]['updateOptions'](_0x2de13f),this['computing'][_0x350c01(0x34d,0x36e)](_0x2de13f),_0xd434f9&&(this['computing']['destroyParticlesTextures'](),this['computing']['createParticlesTextures'](),this['rendering']['onParticlesTextureSizeChange']());}['applyViewerParameters'](_0x2c6210){function _0x1a94c5(_0x16cba4,_0xca84de){return _0x366ecb(_0xca84de,_0x16cba4-0x547);}this['viewerParameters']=_0x2c6210,this['computing']['viewerParameters']=_0x2c6210,this[_0x1a94c5(0x569,0x5a1)]['viewerParameters']=_0x2c6210;}['destroy'](){this[_0x4dda6a(0x1a7,0x1c7)]['destroy']();function _0xe1df19(_0xbdf003,_0x72d94d){return _0xa5f95b(_0x72d94d- -0x621,_0xbdf003);}function _0x4dda6a(_0x5509ed,_0x46dfae){return _0xa5f95b(_0x5509ed- -0x38d,_0x46dfae);}this[_0xe1df19(-0xe0,-0xf4)]['destroy']();}}const Cesium$1=mars3d__namespace[_0xa5f95b(0x4f7,0x488)],BaseLayer$1=mars3d__namespace[_0xa5f95b(0x49c,0x4fc)]['BaseLayer'],_0x20cd95={};_0x20cd95[_0xa5f95b(0x59c,0x570)]=0x1,_0x20cd95['max']=0x2;const _0x3c1b2c={};function _0x366ecb(_0x30c6d5,_0x5fc010){return _0xcb26(_0x5fc010- -0x1b3,_0x30c6d5);}function _0xa5f95b(_0x443f2f,_0x1c0cdc){return _0xcb26(_0x443f2f-0x358,_0x1c0cdc);}_0x3c1b2c['min']=0x14,_0x3c1b2c[_0x366ecb(0x38,0x0)]=0x64;const _0x513313={};_0x513313[_0x366ecb(0x7f,0x23)]=0x64,_0x513313['fixedHeight']=0x0,_0x513313['lineWidth']=_0x20cd95,_0x513313['lineLength']=_0x3c1b2c,_0x513313[_0x366ecb(0xe3,0xa4)]=0x1,_0x513313['dropRate']=0.003,_0x513313[_0xa5f95b(0x5b2,0x593)]=0.001,_0x513313['colors']=[_0xa5f95b(0x56f,0x568)],_0x513313[_0x366ecb(0xd,0x87)]=![],_0x513313['dynamic']=!![];const DEF_OPTIONS=_0x513313;class WindLayer extends BaseLayer$1{constructor(_0x3c201c={}){_0x3c201c={...DEF_OPTIONS,..._0x3c201c},super(_0x3c201c),this['_setOptionsHook'](_0x3c201c,_0x3c201c);}get[_0x366ecb(-0x90,-0x6f)](){return this['primitives'];}get[_0x366ecb(-0x66,0xe)](){return this['options']['data'];}set['data'](_0xcc3411){function _0x13b3f7(_0x4dfafc,_0x1aeabd){return _0xa5f95b(_0x4dfafc- -0x4d3,_0x1aeabd);}this['options']['data']=_0xcc3411,this[_0x13b3f7(-0x21,0xa)](_0xcc3411);}get['colors'](){function _0x23b876(_0x428a64,_0x534a1b){return _0x366ecb(_0x534a1b,_0x428a64-0x558);}return this['options'][_0x23b876(0x515,0x503)];}set['colors'](_0x235da8){this['options']['colors']=_0x235da8;function _0x9c1eec(_0x55d387,_0x57e369){return _0xa5f95b(_0x57e369- -0x458,_0x55d387);}const _0x54907e={};function _0x3f5719(_0x4f85f8,_0x2c7686){return _0xa5f95b(_0x2c7686- -0x69a,_0x4f85f8);}_0x54907e[_0x9c1eec(0xcc,0x70)]=_0x235da8,this[_0x9c1eec(0xdb,0x98)](this[_0x9c1eec(0x106,0xa1)],_0x54907e);}[_0xa5f95b(0x571,0x4f1)](_0xdf3327){_0xdf3327?this['_addedHook']():this['_removedHook']();}[_0x366ecb(0xc7,0x50)](){}[_0x366ecb(-0xa2,-0x15)](){this[_0x48bdca(0x3d6,0x437)]=this['_map'][_0x48bdca(0x468,0x437)],this[_0x43af26(-0xe5,-0x59)]=this['_map']['camera'];this['options']['data']&&this['setData'](this['options'][_0x43af26(-0x16b,-0xde)]);if(!this[_0x43af26(-0xd6,-0x7b)]||!this[_0x48bdca(0x4e2,0x4c4)])return;this['viewerParameters']={'lonRange':new Cesium$1[(_0x43af26(-0xb4,-0xf8))](-0xb4,0xb4),'latRange':new Cesium$1[(_0x48bdca(0x4cb,0x46d))](-0x5a,0x5a),'pixelSize':0x3e8,'sceneMode':this[_0x48bdca(0x3c0,0x437)]['mode']};function _0x48bdca(_0xd18041,_0x404e2f){return _0xa5f95b(_0x404e2f- -0x92,_0xd18041);}this[_0x48bdca(0x479,0x466)](),this['particleSystem']=new WindParticleSystem(this['scene']['context'],this['windData'],this[_0x43af26(-0x89,-0xfe)],this[_0x43af26(-0x93,-0xfc)],this['scene']),this['primitives']=this[_0x43af26(-0x46,-0xa7)]['getPrimitives']();function _0x43af26(_0x3eb6f7,_0x3c63f5){return _0x366ecb(_0x3eb6f7,_0x3c63f5- -0xec);}this['primitives'][_0x48bdca(0x55a,0x4ee)](_0x57cc70=>{function _0x1727db(_0x21057a,_0x3a8546){return _0x43af26(_0x3a8546,_0x21057a-0x47a);}this[_0x1727db(0x34c,0x346)]['primitives']['add'](_0x57cc70);}),this[_0x48bdca(0x52c,0x50c)]['percentageChanged']=0.01,this['camera'][_0x43af26(-0x85,-0xaf)]['addEventListener'](this['updateViewerParameters']['bind'](this)),this[_0x43af26(-0x11f,-0x12e)][_0x48bdca(0x3d6,0x424)][_0x48bdca(0x491,0x473)](this[_0x48bdca(0x457,0x466)][_0x48bdca(0x405,0x461)](this)),window['addEventListener']('resize',this[_0x48bdca(0x3d9,0x466)]['bind'](this));}[_0x366ecb(0xe5,0x90)](){this[_0x516066(-0xa2,-0xa5)]['changed'][_0x516066(-0x7c,-0x96)](this['updateViewerParameters']['bind'](this));function _0x522458(_0x55b8d9,_0x3622b6){return _0xa5f95b(_0x3622b6- -0x20a,_0x55b8d9);}this['scene']['morphComplete'][_0x516066(-0x6c,-0x96)](this['updateViewerParameters'][_0x516066(-0x1c3,-0x150)](this)),window['removeEventListener'](_0x522458(0x32c,0x39c),this['updateViewerParameters']['bind'](this));function _0x516066(_0x40b367,_0x158c83){return _0xa5f95b(_0x158c83- -0x643,_0x40b367);}this[_0x516066(-0xfe,-0x9f)]&&(this['primitives']['forEach'](_0x4bc534=>{function _0x482556(_0x2eca95,_0xd17af1){return _0x516066(_0x2eca95,_0xd17af1-0x4c8);}function _0x4d3301(_0x2240f0,_0x32f11e){return _0x516066(_0x32f11e,_0x2240f0- -0xf7);}this[_0x482556(0x3a0,0x34e)][_0x4d3301(-0x196,-0x135)][_0x482556(0x428,0x409)](_0x4bc534);}),delete this['primitives']),this['particleSystem']&&(this[_0x516066(-0x136,-0xf3)]['destroy'](),delete this['particleSystem']);}['setData'](_0xdcbf29,_0x1c3000){this[_0x22b667(0x2ee,0x2e9)]=this[_0x127e00(-0xca,-0x67)](_0xdcbf29);function _0x127e00(_0x505c48,_0x59121c){return _0xa5f95b(_0x505c48- -0x675,_0x59121c);}function _0x22b667(_0x4e10cf,_0x4012eb){return _0x366ecb(_0x4012eb,_0x4e10cf-0x27d);}if(_0x1c3000){this[_0x127e00(-0xda,-0xe7)](),this['_addedHook']();return;}this['particleSystem']?(this['particleSystem']['computing']['updateWindData'](this['windData']),this['scene'][_0x127e00(-0x19c,-0x1ee)]()):this[_0x127e00(-0x17f,-0x106)]();}['_setOptionsHook'](_0x3e67bc,_0x21de13){this['particleSystem']&&(this['particleSystem']['changeOptions'](_0x21de13),this['scene']['requestRender']());}['processWindData'](_0x52cf7e){var _0x42db2f,_0x42780d;const _0xd2565a={..._0x52cf7e},_0xd06e83=_0xd2565a;!_0xd06e83[_0x3e7778(0x287,0x2c9)]&&_0xd06e83['rows']&&(_0xd06e83[_0x2e206a(0x1e1,0x24f)]=_0xd06e83[_0x3e7778(0x213,0x274)]);function _0x2e206a(_0x58cd3e,_0x35362e){return _0xa5f95b(_0x35362e- -0x2ea,_0x58cd3e);}!_0xd06e83[_0x2e206a(0x218,0x1b7)]&&_0xd06e83['cols']&&(_0xd06e83['width']=_0xd06e83[_0x2e206a(0x241,0x1bc)]);function _0x3e7778(_0x4b414,_0x4ecdb1){return _0xa5f95b(_0x4ecdb1- -0x270,_0x4b414);}!_0xd06e83[_0x2e206a(0x25b,0x267)]&&(_0xd06e83['bounds']={'west':_0xd06e83['xmin'],'south':_0xd06e83[_0x2e206a(0x331,0x2c2)],'east':_0xd06e83['xmax'],'north':_0xd06e83[_0x2e206a(0x1f7,0x1e6)]});if(!_0xd06e83['u']){const _0x6f428b={};_0x6f428b[_0x3e7778(0x2a1,0x303)]=_0x52cf7e['udata'],_0x6f428b['min']=_0x52cf7e[_0x2e206a(0x2c8,0x250)],_0x6f428b[_0x2e206a(0x259,0x221)]=_0x52cf7e['umax'],_0xd06e83['u']=_0x6f428b;}if(!_0xd06e83['v']){const _0x2044a1={};_0x2044a1[_0x2e206a(0x2d4,0x289)]=_0x52cf7e['vdata'],_0x2044a1['min']=_0x52cf7e[_0x3e7778(0x2d3,0x340)],_0x2044a1['max']=_0x52cf7e['vmax'],_0xd06e83['v']=_0x2044a1;}if(((_0x42db2f=_0xd06e83[_0x3e7778(0x2c7,0x2de)])===null||_0x42db2f===void 0x0?void 0x0:_0x42db2f[_0x3e7778(0x36c,0x32c)])===undefined||((_0x42780d=_0xd06e83['speed'])===null||_0x42780d===void 0x0?void 0x0:_0x42780d['max'])===undefined||_0xd06e83['speed'][_0x3e7778(0x30a,0x303)]===undefined){const _0x197d49={'array':new Float32Array(_0xd06e83['u'][_0x2e206a(0x2fa,0x289)]['length']),'min':Number[_0x3e7778(0x34b,0x2d7)],'max':Number[_0x3e7778(0x268,0x271)]};for(let _0x559662=0x0;_0x559662<_0xd06e83['u'][_0x3e7778(0x2c5,0x303)]['length'];_0x559662++){_0x197d49['array'][_0x559662]=Math['sqrt'](_0xd06e83['u']['array'][_0x559662]*_0xd06e83['u'][_0x3e7778(0x2a4,0x303)][_0x559662]+_0xd06e83['v'][_0x3e7778(0x29f,0x303)][_0x559662]*_0xd06e83['v']['array'][_0x559662]),_0x197d49['array'][_0x559662]!==0x0&&(_0x197d49['min']=Math['min'](_0x197d49['min'],_0x197d49['array'][_0x559662]),_0x197d49[_0x3e7778(0x220,0x29b)]=Math['max'](_0x197d49[_0x3e7778(0x265,0x29b)],_0x197d49['array'][_0x559662]));}_0xd06e83['speed']=_0x197d49;}return _0xd06e83;}['updateViewerParameters'](){var _0x46d56e;const _0x251557=this['scene'];if(!_0x251557)return;const _0x1125f6=_0x251557[_0x4057f1(-0xf9,-0xd3)],_0x4007a3={};_0x4007a3['x']=0x0,_0x4007a3['y']=0x0;const _0x307f71={};_0x307f71['x']=0x0,_0x307f71['y']=_0x1125f6[_0x1cf547(-0x1d6,-0x227)];const _0xb49247={};_0xb49247['x']=_0x1125f6[_0x1cf547(-0x210,-0x19b)],_0xb49247['y']=0x0;function _0x1cf547(_0x4f5187,_0x266823){return _0xa5f95b(_0x266823- -0x73a,_0x4f5187);}const _0x3dfb85={};_0x3dfb85['x']=_0x1125f6[_0x1cf547(-0x195,-0x19b)],_0x3dfb85['y']=_0x1125f6[_0x4057f1(-0x180,-0x192)];const _0x1c75a8=[_0x4007a3,_0x307f71,_0xb49247,_0x3dfb85];let _0x2838f7=0xb4,_0x4b8aec=-0xb4,_0x423da2=0x5a,_0x16bf69=-0x5a,_0x263169=![];function _0x4057f1(_0x26bf5f,_0x4d1d20){return _0x366ecb(_0x4d1d20,_0x26bf5f- -0x188);}for(const _0x51447a of _0x1c75a8){const _0x209573=_0x251557['camera']['pickEllipsoid'](new Cesium$1['Cartesian2'](_0x51447a['x'],_0x51447a['y']),_0x251557['globe'][_0x1cf547(-0x12a,-0x191)]);if(!_0x209573){_0x263169=!![];break;}const _0x58a320=_0x251557['globe'][_0x4057f1(-0xea,-0x10a)][_0x1cf547(-0x242,-0x207)](_0x209573),_0x26de7d=Cesium$1['Math']['toDegrees'](_0x58a320['longitude']),_0x3b3372=Cesium$1[_0x4057f1(-0x1f8,-0x274)][_0x1cf547(-0x2bc,-0x26c)](_0x58a320[_0x1cf547(-0x1e3,-0x1d8)]);_0x2838f7=Math['min'](_0x2838f7,_0x26de7d),_0x4b8aec=Math[_0x4057f1(-0x188,-0x134)](_0x4b8aec,_0x26de7d),_0x423da2=Math['min'](_0x423da2,_0x3b3372),_0x16bf69=Math['max'](_0x16bf69,_0x3b3372);}if(!_0x263169){const _0x5d2fb2=new Cesium$1['Cartesian2'](Math[_0x4057f1(-0x188,-0x187)](this['windData'][_0x1cf547(-0x196,-0x1e9)]['west'],_0x2838f7),Math['min'](this['windData']['bounds'][_0x4057f1(-0x154,-0xe1)],_0x4b8aec)),_0x4c5160=new Cesium$1[(_0x4057f1(-0x194,-0x1cb))](Math['max'](this['windData'][_0x4057f1(-0x142,-0x19d)][_0x1cf547(-0x13f,-0x189)],_0x423da2),Math[_0x1cf547(-0x17b,-0x19e)](this['windData'][_0x4057f1(-0x142,-0xdf)][_0x1cf547(-0x2e2,-0x298)],_0x16bf69)),_0x5c6cf7=(_0x5d2fb2['y']-_0x5d2fb2['x'])*0.05,_0x382970=(_0x4c5160['y']-_0x4c5160['x'])*0.05;_0x5d2fb2['x']=Math[_0x1cf547(-0x28b,-0x22f)](this[_0x1cf547(-0x238,-0x1be)]['bounds']['west'],_0x5d2fb2['x']-_0x5c6cf7),_0x5d2fb2['y']=Math[_0x4057f1(-0xf7,-0xc7)](this['windData']['bounds']['east'],_0x5d2fb2['y']+_0x5c6cf7),_0x4c5160['x']=Math[_0x4057f1(-0x188,-0x1b6)](this[_0x4057f1(-0x117,-0xfe)]['bounds'][_0x4057f1(-0xe2,-0xf6)],_0x4c5160['x']-_0x382970),_0x4c5160['y']=Math[_0x1cf547(-0x1ff,-0x19e)](this['windData']['bounds']['north'],_0x4c5160['y']+_0x382970),this[_0x1cf547(-0x2aa,-0x23f)]['lonRange']=_0x5d2fb2,this['viewerParameters']['latRange']=_0x4c5160;const _0x3a7a06=this[_0x4057f1(-0x117,-0x185)]['bounds']['east']-this[_0x1cf547(-0x218,-0x1be)][_0x1cf547(-0x166,-0x1e9)][_0x1cf547(-0x198,-0x222)],_0x1f9fa3=this['windData']['bounds']['north']-this['windData'][_0x1cf547(-0x22f,-0x1e9)]['south'],_0x1a78f2=(_0x5d2fb2['y']-_0x5d2fb2['x'])/_0x3a7a06,_0x10ef38=(_0x4c5160['y']-_0x4c5160['x'])/_0x1f9fa3,_0x1209f2=Math['min'](_0x1a78f2,_0x10ef38),_0x48d269=0x3e8*_0x1209f2;_0x48d269>0x0&&(this['viewerParameters']['pixelSize']=Math['max'](0x0,Math['min'](0x3e8,_0x48d269)));}this[_0x4057f1(-0x198,-0x189)]['sceneMode']=this['scene'][_0x1cf547(-0x1cf,-0x1d9)],(_0x46d56e=this['particleSystem'])===null||_0x46d56e===void 0x0||_0x46d56e[_0x4057f1(-0x172,-0x136)](this[_0x4057f1(-0x198,-0x19f)]);}['getDataAtLonLat'](_0x59d77e,_0x181474){const {bounds:_0x4df786,width:_0x9da0e3,height:_0x518dca,u:_0x3daa55,v:_0x295df6,speed:_0x1adf0f}=this['windData'],{flipY:_0xfa99f5}=this['options'];if(_0x59d77e<_0x4df786['west']||_0x59d77e>_0x4df786[_0x1f4991(-0x27c,-0x1ee)]||_0x181474<_0x4df786[_0x1f4991(-0x121,-0x17c)]||_0x181474>_0x4df786['north'])return null;const _0x56de39=(_0x59d77e-_0x4df786[_0x1f4991(-0x1b4,-0x215)])/(_0x4df786[_0x2549b7(-0x21e,-0x19b)]-_0x4df786[_0x2549b7(-0x250,-0x1c2)])*(_0x9da0e3-0x1);function _0x2549b7(_0x5d2838,_0x47cdff){return _0x366ecb(_0x5d2838,_0x47cdff- -0x1cf);}let _0x37b241=(_0x181474-_0x4df786[_0x2549b7(-0x11d,-0x129)])/(_0x4df786['north']-_0x4df786[_0x2549b7(-0x119,-0x129)])*(_0x518dca-0x1);_0xfa99f5&&(_0x37b241=_0x518dca-0x1-_0x37b241);const _0x15a84e=Math['floor'](_0x56de39),_0x5909f0=Math[_0x1f4991(-0x263,-0x280)](_0x37b241),_0xb7eaa2=Math['floor'](_0x56de39),_0x5cca4e=Math['min'](_0xb7eaa2+0x1,_0x9da0e3-0x1),_0xc35684=Math['floor'](_0x37b241),_0x380da0=Math[_0x1f4991(-0x1c3,-0x191)](_0xc35684+0x1,_0x518dca-0x1);function _0x1f4991(_0x86b0a7,_0x5cfa5a){return _0x366ecb(_0x86b0a7,_0x5cfa5a- -0x222);}const _0x5b71a4=_0x56de39-_0xb7eaa2,_0x102f1a=_0x37b241-_0xc35684,_0x30af23=_0x5909f0*_0x9da0e3+_0x15a84e,_0x5825cd=_0xc35684*_0x9da0e3+_0xb7eaa2,_0x2778c4=_0xc35684*_0x9da0e3+_0x5cca4e,_0x23d7fe=_0x380da0*_0x9da0e3+_0xb7eaa2,_0x237492=_0x380da0*_0x9da0e3+_0x5cca4e,_0x35d383=_0x3daa55[_0x2549b7(-0x1f3,-0x167)][_0x5825cd],_0x4db874=_0x3daa55['array'][_0x2778c4],_0x155d1d=_0x3daa55['array'][_0x23d7fe],_0x1ddacd=_0x3daa55[_0x1f4991(-0x12c,-0x1ba)][_0x237492],_0x5d63df=(0x1-_0x5b71a4)*(0x1-_0x102f1a)*_0x35d383+_0x5b71a4*(0x1-_0x102f1a)*_0x4db874+(0x1-_0x5b71a4)*_0x102f1a*_0x155d1d+_0x5b71a4*_0x102f1a*_0x1ddacd,_0xef9531=_0x295df6['array'][_0x5825cd],_0x45d684=_0x295df6['array'][_0x2778c4],_0x3427f2=_0x295df6['array'][_0x23d7fe],_0x2637f2=_0x295df6['array'][_0x237492],_0x19824c=(0x1-_0x5b71a4)*(0x1-_0x102f1a)*_0xef9531+_0x5b71a4*(0x1-_0x102f1a)*_0x45d684+(0x1-_0x5b71a4)*_0x102f1a*_0x3427f2+_0x5b71a4*_0x102f1a*_0x2637f2,_0x2b7f65=Math[_0x1f4991(-0x214,-0x1d9)](_0x5d63df*_0x5d63df+_0x19824c*_0x19824c),_0x57e0dc={};_0x57e0dc['u']=_0x3daa55[_0x2549b7(-0x1cd,-0x167)][_0x30af23],_0x57e0dc['v']=_0x295df6['array'][_0x30af23],_0x57e0dc[_0x1f4991(-0x1a5,-0x1df)]=_0x1adf0f['array'][_0x30af23];const _0x39eaa2={};_0x39eaa2['u']=_0x5d63df,_0x39eaa2['v']=_0x19824c,_0x39eaa2[_0x1f4991(-0x191,-0x1df)]=_0x2b7f65;const _0x9eef47={};return _0x9eef47['original']=_0x57e0dc,_0x9eef47[_0x1f4991(-0x1d3,-0x259)]=_0x39eaa2,_0x9eef47;}}mars3d__namespace['LayerUtil']['register'](_0xa5f95b(0x4d6,0x544),WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){this['lng']=null,this[_0x435c89(0x174,0x137)]=null,this[_0x435c89(0x17a,0x17d)]=null,this['tlat']=null,this[_0x59d9bf(0x14d,0x1db)]=null;function _0x435c89(_0x7a8b56,_0x3c2d05){return _0xa5f95b(_0x7a8b56- -0x388,_0x3c2d05);}function _0x59d9bf(_0x5e0249,_0x3a7bf0){return _0xa5f95b(_0x3a7bf0- -0x347,_0x5e0249);}this['speed']=null;}[_0x366ecb(0x7f,0x9)](){for(const _0x5cd9c1 in this){delete this[_0x5cd9c1];}}}function _0x3d3e(){const _0x56d241=['lat','speedRate','minificationFilter','Cartesian2','4SfnPdY','geometry','tlng','_onMapWhellEvent','vertexArray','addEventListener','abs','__proto__','#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','postProcessingPosition','_randomParticle','max','getUVByPoint','init','container','talt','xmax','random','sources','clientHeight','destroy','hidden','displayRange','clear','west','data','dropRate','max\x20is\x20undefined,\x20calculate\x20max','alpha','_calcUV','ColorRamp','TRIANGLES','shaderProgram','applyViewerParameters','age','create','mouseUp','_map','commandList','STATIC_DRAW','mouse_move','frameRate','wrapS','componentDatatype','setOptions','rendering','particlesTextureSize','tlat','pass','#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','textures','cartesianToCartographic','computing','destoryRenderingFramebuffers','reCreateWindTextures','frameRateMonitor','WindUtil','height','umin','pixelDatatype','fixedHeight','mars3d-canvasWind','_maxAge','east','getDefaultRenderState','_createCanvas','setDate','BaseLayer','componentsPerAttribute','refreshTimer','unbindEvent','MAX_VALUE','changed','owner','3192kKFmaw','getSegmentDrawFragmentShader','_animateFrame','isDynamic','speed','moveTo','particleSystem','bounds','4086279jIXLeq','colorTable','sqrt','_colorRamp','show','9MxKDvR','segments','pointerEvents','_calc_speedRate','_mountedHook','createRenderingTextures','5724470xaCnIr','pointer-events','lng','Invalid\x20particlesTextureSize.\x20Using\x20default\x20value\x20of\x20256.','mode','latitude','fragmentShaderSource','OPAQUE','EllipsoidalOccluder','mouse_down','onColorTableChange','style','particlesTextures','0px','particlesSpeed','canvasWind','getUVByXY','lighter','rgb(206,255,255)','lineTo','_showHook','nextParticlesPosition','array','error','rawRenderState','keys','cancelAnimationFrame','rectangle','getSegmentDrawVertexShader','particles','vertexShaderSource','windData','mouseHidden','getCalculateSpeedShader','commandType','forEach','defineProperty','value','viewport','remove','_onMouseDownEvent','UNSIGNED_BYTE','42UmmynO','frameTime','primitiveType','clearCommand','persists','EventType','dynamic','getUpdatePositionShader','cos','canvasHeight','SRC_ALPHA','flipY','segmentsDepth','pixelSize','bufferUsage','pow','getContext','globe','segmentsColor','canvas','_removedHook','min','object','camera','clientWidth','createParticlesTextures','depthTexture','Compute','lineWidth','primitives','Unknown\x20command\x20type','resize','toRadians','_speedRate','ellipsoid','postMessage','processWindData','ymin','removeEventListener','commandToExecute','speedFactor','vmin','south','dropRateBump','lastFramesPerSecond','isArray','wheel','visible','_drawLines','Math','layer','updatePosition','WindLayer','#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','previousParticlesPosition','width','north','onmessage','left','absolute','cols','CLAMP_TO_EDGE','attributeLocations','type','enabled','prototype','createPrimitives','floor','values','color','11gXZZYz','worker','setData','maxAge','framebuffer','off','morphComplete','preExecute','getParticles','quietPeriod','outputTexture','_onMouseUpEvent','SCENE3D','3LgMRii','createWindTextures','canvasContext','setGeometry','247uqoreL','redraw','slice','push','2835096ZRKNKn','blue','_pointerEvents','colors','scene','RGBA','magnificationFilter','createComputingPrimitives','fromCache','toDegrees','visibility','ymax','pixelFormat','__esModule','createSegmentsGeometry','interpolated','CanvasWindField','wind','LINEAR','grid','requestRender','updateOptions','currentParticlesPosition','1029020jswEDw','_canrefresh','mouseMove','call','windField','MIN_VALUE','14776WEMRGu','drawingBufferWidth','rows','length','uniformMap','green','564776AbVrMZ','createRenderingFramebuffers','globalCompositeOperation','1262618qJEUIH','hasOwnProperty','_tomap','update','context','_setOptionsHook','FLOAT','xmin','bind','particlesTextureSize\x20must\x20be\x20greater\x20than\x200','canvasWidth','_addedHook','Cesium','updateViewerParameters','options','particlesNumber','viewerParameters'];_0x3d3e=function(){return _0x56d241;};return _0x3d3e();}class CanvasWindField{constructor(_0x334f9d){this['setOptions'](_0x334f9d);}get['speedRate'](){return this['_speedRate'];}set[_0x366ecb(-0x54,-0xe)](_0xd0c314){function _0xc3f299(_0x326353,_0x219d9c){return _0x366ecb(_0x219d9c,_0x326353- -0x224);}function _0x3893eb(_0x50df94,_0x3df2fd){return _0xa5f95b(_0x50df94- -0xd2,_0x3df2fd);}this[_0x3893eb(0x4d6,0x4bc)]=(0x64-(_0xd0c314>0x63?0x63:_0xd0c314))*0x64,this['_calc_speedRate']=[(this['xmax']-this[_0x3893eb(0x420,0x3a0)])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}get[_0xa5f95b(0x4b3,0x4b9)](){return this['_maxAge'];}set['maxAge'](_0x2d0f39){function _0xf1c7e2(_0x380305,_0x421451){return _0xa5f95b(_0x421451- -0x31e,_0x380305);}this[_0xf1c7e2(0x2af,0x220)]=_0x2d0f39;}[_0xa5f95b(0x52c,0x4a0)](_0x5b6fee){this['options']=_0x5b6fee,this['maxAge']=_0x5b6fee[_0x195f03(0x2d,0x1)]||0x78,this['speedRate']=_0x5b6fee[_0x195f03(0x30,0x4b)]||0x32;function _0xe2cac0(_0x3cef9c,_0x51d2a0){return _0xa5f95b(_0x3cef9c- -0x233,_0x51d2a0);}this['particles']=[];const _0xb24c9=_0x5b6fee[_0xe2cac0(0x2c7,0x349)]||0x1000;function _0x195f03(_0x5af677,_0x434369){return _0xa5f95b(_0x434369- -0x4b2,_0x5af677);}for(let _0x2fc29d=0x0;_0x2fc29d<_0xb24c9;_0x2fc29d++){const _0x1ab016=this['_randomParticle'](new CanvasParticle());this[_0xe2cac0(0x347,0x311)]['push'](_0x1ab016);}}[_0x366ecb(0x3a,0x37)](_0x18c869){this['rows']=_0x18c869[_0x5848cb(-0x21,0x60)],this[_0x5848cb(0xb,0x22)]=_0x18c869[_0x73e125(0x120,0x189)],this['xmin']=_0x18c869['xmin'],this['xmax']=_0x18c869['xmax'],this[_0x73e125(0x25a,0x28f)]=_0x18c869['ymin'],this['ymax']=_0x18c869['ymax'],this[_0x5848cb(0xc,0x54)]=[];const _0x3c3f74=_0x18c869['udata'],_0x4ccd33=_0x18c869['vdata'];let _0x2de7f6=![];_0x3c3f74['length']===this['rows']&&_0x3c3f74[0x0]['length']===this['cols']&&(_0x2de7f6=!![]);function _0x73e125(_0x4b5192,_0x2700aa){return _0x366ecb(_0x4b5192,_0x2700aa-0x1ee);}let _0x100d16=0x0,_0x4ff8af=null;function _0x5848cb(_0xfd8ee8,_0x21c314){return _0x366ecb(_0xfd8ee8,_0x21c314-0x87);}let _0xf86378=null;for(let _0xa4e14b=0x0;_0xa4e14b<this[_0x73e125(0x21c,0x1c7)];_0xa4e14b++){_0x4ff8af=[];for(let _0x49396d=0x0;_0x49396d<this[_0x73e125(0x16c,0x189)];_0x49396d++,_0x100d16++){_0x2de7f6?_0xf86378=this['_calcUV'](_0x3c3f74[_0xa4e14b][_0x49396d],_0x4ccd33[_0xa4e14b][_0x49396d]):_0xf86378=this['_calcUV'](_0x3c3f74[_0x100d16],_0x4ccd33[_0x100d16]),_0x4ff8af['push'](_0xf86378);}this[_0x73e125(0x1ff,0x1bb)]['push'](_0x4ff8af);}!this['options']['flipY']&&this[_0x73e125(0x212,0x1bb)]['reverse']();}[_0xa5f95b(0x517,0x4c7)](){delete this['rows'],delete this[_0x4b366c(0x1e8,0x1ac)],delete this[_0x52c219(0x3ba,0x3e7)],delete this['xmax'],delete this[_0x52c219(0x502,0x4a1)];function _0x52c219(_0x4a9969,_0x218e15){return _0xa5f95b(_0x218e15- -0x10b,_0x4a9969);}delete this[_0x4b366c(0x212,0x1c2)];function _0x4b366c(_0x230531,_0x3920b6){return _0xa5f95b(_0x230531- -0x2be,_0x3920b6);}delete this[_0x52c219(0x3d5,0x3cd)],delete this['particles'];}['toGridXY'](_0x249182,_0x46e38f){function _0x4c921c(_0x558e47,_0x13b150){return _0xa5f95b(_0x558e47- -0x4e9,_0x13b150);}const _0x959830=(_0x249182-this[_0x1ca407(0x317,0x36a)])/(this[_0x4c921c(0x27,0x1e)]-this[_0x4c921c(0x9,0x96)])*(this['cols']-0x1);function _0x1ca407(_0x5cacd8,_0x3f61c2){return _0xa5f95b(_0x3f61c2- -0x188,_0x5cacd8);}const _0x1cd0f1=(this[_0x1ca407(0x2f6,0x348)]-_0x46e38f)/(this[_0x4c921c(-0x19,0x47)]-this[_0x4c921c(0xc3,0xc1)])*(this['rows']-0x1);return[_0x959830,_0x1cd0f1];}[_0xa5f95b(0x56d,0x5ad)](_0x5aaa53,_0x46084a){if(_0x5aaa53<0x0||_0x5aaa53>=this[_0x3abca3(0x160,0x177)]||_0x46084a>=this['rows'])return[0x0,0x0,0x0];const _0x37ecbe=Math[_0x3abca3(0x167,0xf4)](_0x5aaa53);function _0x3abca3(_0x27ce2b,_0x5503d6){return _0xa5f95b(_0x27ce2b- -0x346,_0x5503d6);}const _0x37781c=Math['floor'](_0x46084a);if(_0x37ecbe===_0x5aaa53&&_0x37781c===_0x46084a)return this[_0x5b345a(0x4ab,0x4c3)][_0x46084a][_0x5aaa53];function _0x5b345a(_0x1d8f28,_0x4d8ea5){return _0xa5f95b(_0x4d8ea5- -0x15,_0x1d8f28);}const _0x2cd02c=_0x37ecbe+0x1,_0x389e89=_0x37781c+0x1,_0x293081=this['getUVByXY'](_0x37ecbe,_0x37781c),_0x28d745=this['getUVByXY'](_0x2cd02c,_0x37781c),_0x57030f=this['getUVByXY'](_0x37ecbe,_0x389e89),_0x1700dc=this[_0x5b345a(0x555,0x558)](_0x2cd02c,_0x389e89);let _0xec97cf=null;try{_0xec97cf=this['_bilinearInterpolation'](_0x5aaa53-_0x37ecbe,_0x46084a-_0x37781c,_0x293081,_0x28d745,_0x57030f,_0x1700dc);}catch(_0x3bf650){console['log'](_0x5aaa53,_0x46084a);}return _0xec97cf;}['_bilinearInterpolation'](_0x19bbe7,_0x57acf0,_0x4662d9,_0x4d5c61,_0x4ee91d,_0x58ccd3){const _0x4bf19c=0x1-_0x19bbe7,_0x10b8dd=0x1-_0x57acf0,_0xdedda2=_0x4bf19c*_0x10b8dd,_0xeff3fa=_0x19bbe7*_0x10b8dd,_0x5ea824=_0x4bf19c*_0x57acf0;function _0x3ea5c3(_0x323093,_0x5e7136){return _0xa5f95b(_0x323093- -0x5c5,_0x5e7136);}const _0x178085=_0x19bbe7*_0x57acf0,_0x4a3bb1=_0x4662d9[0x0]*_0xdedda2+_0x4d5c61[0x0]*_0xeff3fa+_0x4ee91d[0x0]*_0x5ea824+_0x58ccd3[0x0]*_0x178085,_0x1fdcd3=_0x4662d9[0x1]*_0xdedda2+_0x4d5c61[0x1]*_0xeff3fa+_0x4ee91d[0x1]*_0x5ea824+_0x58ccd3[0x1]*_0x178085;return this[_0x3ea5c3(-0xa8,-0xda)](_0x4a3bb1,_0x1fdcd3);}['_calcUV'](_0x57dca0,_0x476ccc){function _0x1bb001(_0x17c729,_0x1a9510){return _0xa5f95b(_0x17c729- -0x132,_0x1a9510);}return[+_0x57dca0,+_0x476ccc,Math[_0x1bb001(0x422,0x497)](_0x57dca0*_0x57dca0+_0x476ccc*_0x476ccc)];}[_0x366ecb(0x85,0x1)](_0x465fd2,_0xd3cad1){if(!this['isInExtent'](_0x465fd2,_0xd3cad1))return null;const _0x2ce6ef=this['toGridXY'](_0x465fd2,_0xd3cad1),_0x22f8ce=this['getUVByXY'](_0x2ce6ef[0x0],_0x2ce6ef[0x1]);return _0x22f8ce;}['isInExtent'](_0x3e64c3,_0x4a30fb){function _0x43907c(_0x2fab52,_0x5c0d97){return _0xa5f95b(_0x5c0d97- -0x6f,_0x2fab52);}function _0x4e0293(_0x2c7cde,_0x36d1e4){return _0xa5f95b(_0x36d1e4- -0x5a7,_0x2c7cde);}return _0x3e64c3>=this[_0x43907c(0x464,0x483)]&&_0x3e64c3<=this['xmax']&&_0x4a30fb>=this[_0x43907c(0x4c7,0x53d)]&&_0x4a30fb<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x3699fc=fRandomByfloat(this[_0x318a2e(0x223,0x1f2)],this[_0x318a2e(0x241,0x28e)]),_0x198c9a=fRandomByfloat(this['ymin'],this[_0x318a2e(0x201,0x1d5)]);function _0x2cefb8(_0x5c229f,_0x559ee5){return _0x366ecb(_0x5c229f,_0x559ee5-0x3e0);}const _0x452fc6={};function _0x318a2e(_0x3d7d6a,_0x25a629){return _0x366ecb(_0x25a629,_0x3d7d6a-0x23c);}return _0x452fc6[_0x318a2e(0x22d,0x227)]=_0x198c9a,_0x452fc6['lng']=_0x3699fc,_0x452fc6;}['getParticles'](){let _0x2eed08,_0x1f5347,_0x55460e;for(let _0x3a533c=0x0,_0x18f640=this[_0x43f052(0xfa,0xf5)]['length'];_0x3a533c<_0x18f640;_0x3a533c++){let _0x5650b8=this['particles'][_0x3a533c];_0x5650b8[_0x2af686(-0x109,-0xca)]<=0x0&&(_0x5650b8=this[_0x2af686(-0xc2,-0xe2)](_0x5650b8));if(_0x5650b8[_0x43f052(0xa2,0x59)]>0x0){const _0x1f77a2=_0x5650b8[_0x2af686(-0x120,-0xea)],_0x3a6146=_0x5650b8[_0x43f052(0xaf,0x22)];_0x55460e=this[_0x2af686(-0x105,-0xe0)](_0x1f77a2,_0x3a6146),_0x55460e?(_0x2eed08=_0x1f77a2+this[_0x43f052(0xda,0x5b)][0x0]*_0x55460e[0x0],_0x1f5347=_0x3a6146+this['_calc_speedRate'][0x1]*_0x55460e[0x1],_0x5650b8[_0x2af686(-0x31,-0x8d)]=_0x1f77a2,_0x5650b8[_0x43f052(0x7c,0x74)]=_0x3a6146,_0x5650b8['tlng']=_0x2eed08,_0x5650b8[_0x2af686(-0xe6,-0xbd)]=_0x1f5347,_0x5650b8[_0x43f052(0xce,0x69)]=_0x55460e[0x2],_0x5650b8['age']--):_0x5650b8[_0x2af686(-0xf0,-0xca)]=0x0;}}function _0x43f052(_0x5e8aef,_0x2c7115){return _0xa5f95b(_0x5e8aef- -0x480,_0x2c7115);}function _0x2af686(_0x3acd37,_0x1aa535){return _0xa5f95b(_0x1aa535- -0x5ec,_0x3acd37);}return this[_0x2af686(-0xa6,-0x72)];}['_randomParticle'](_0x54bf56){let _0x24bcda,_0x21ed65;for(let _0x133f89=0x0;_0x133f89<0x1e;_0x133f89++){_0x24bcda=this['getRandomLatLng'](),_0x21ed65=this['getUVByPoint'](_0x24bcda[_0x3bea8c(-0xe3,-0x11f)],_0x24bcda[_0x3bea8c(-0x1fa,-0x182)]);if(_0x21ed65&&_0x21ed65[0x2]>0x0)break;}function _0x3bea8c(_0x374e31,_0x1e99ef){return _0xa5f95b(_0x1e99ef- -0x67e,_0x374e31);}if(!_0x21ed65)return _0x54bf56;const _0x2410f1=_0x24bcda[_0x57754a(0x5e4,0x670)]+this['_calc_speedRate'][0x0]*_0x21ed65[0x0],_0x2b25c7=_0x24bcda[_0x57754a(0x581,0x55c)]+this['_calc_speedRate'][0x1]*_0x21ed65[0x1];_0x54bf56[_0x3bea8c(-0x153,-0x11f)]=_0x24bcda['lng'],_0x54bf56[_0x57754a(0x581,0x59f)]=_0x24bcda['lat'],_0x54bf56['tlng']=_0x2410f1,_0x54bf56[_0x3bea8c(-0x158,-0x14f)]=_0x2b25c7,_0x54bf56['age']=Math['round'](0xa+Math['random']()*this[_0x3bea8c(-0x1e3,-0x1cb)]);function _0x57754a(_0x5895a4,_0x161d29){return _0x366ecb(_0x161d29,_0x5895a4-0x590);}return _0x54bf56[_0x57754a(0x5d3,0x570)]=_0x21ed65[0x2],_0x54bf56;}['destroy'](){for(const _0x5da297 in this){delete this[_0x5da297];}}}function fRandomByfloat(_0x3e00f7,_0x61de20){return _0x3e00f7+Math['random']()*(_0x61de20-_0x3e00f7);}const Cesium=mars3d__namespace[_0xa5f95b(0x4f7,0x566)],BaseLayer=mars3d__namespace['layer'][_0x366ecb(0x51,0x38)];class CanvasWindLayer extends BaseLayer{constructor(_0x461880={}){function _0x583375(_0x42a707,_0x4d8271){return _0x366ecb(_0x42a707,_0x4d8271-0x4ac);}super(_0x461880),this[_0x1c4eb4(0x486,0x4b3)](_0x461880),this['canvas']=null;function _0x1c4eb4(_0x3abd72,_0x1a0943){return _0xa5f95b(_0x1a0943- -0x3d,_0x3abd72);}_0x461880[_0x583375(0x433,0x469)]&&_0x461880['steps']&&(this['_colorRamp']=new mars3d__namespace[(_0x583375(0x507,0x4bf))](_0x461880));}['_setOptionsHook'](_0x2b80f3,_0xb4064f){this[_0x41c18e(0x5d8,0x5f8)]=0x3e8/(_0x2b80f3['frameRate']||0xa),this[_0x41c18e(0x4e7,0x537)]=this[_0x41c18e(0x563,0x569)]['pointerEvents']??![],this[_0x41c18e(0x4f9,0x51f)]=_0x2b80f3['color']||'#ffffff',this[_0x5dd157(0xc2,0xf8)]=_0x2b80f3['lineWidth']||0x1;function _0x41c18e(_0xb70035,_0x5895b1){return _0x366ecb(_0xb70035,_0x5895b1-0x57b);}function _0x5dd157(_0x1b4877,_0x329235){return _0x366ecb(_0x329235,_0x1b4877-0x2a);}this[_0x41c18e(0x5a1,0x5ac)]=_0x2b80f3['fixedHeight']??0x0,this[_0x5dd157(0xb1,0xbc)]=_0x2b80f3[_0x5dd157(0xb1,0x4e)]??![],this['windField']&&this[_0x5dd157(-0x1,-0x5c)]['setOptions'](_0x2b80f3);}get['layer'](){return this['canvas'];}get[_0xa5f95b(0x4f5,0x4d3)](){function _0x6c7cb3(_0x17a73a,_0x4bec73){return _0xa5f95b(_0x4bec73- -0xbe,_0x17a73a);}function _0x5e42b0(_0x5d81bd,_0x1668cc){return _0xa5f95b(_0x5d81bd- -0x317,_0x1668cc);}return this['_map'][_0x5e42b0(0x1b2,0x23c)][_0x6c7cb3(0x46a,0x4dc)]['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get[_0x366ecb(0xb6,0x4e)](){return this['_pointerEvents'];}set['pointerEvents'](_0x389c1b){this[_0x5f300b(0x7d,0x9b)]=_0x389c1b;function _0x5f300b(_0x1dbae0,_0x35047c){return _0xa5f95b(_0x35047c- -0x42c,_0x1dbae0);}if(!this['canvas'])return;function _0x4a98d1(_0x4ccf58,_0x5206a4){return _0x366ecb(_0x5206a4,_0x4ccf58- -0x219);}_0x389c1b?this['canvas'][_0x4a98d1(-0x1bc,-0x1b3)]['pointer-events']='all':this[_0x4a98d1(-0x18a,-0x165)]['style'][_0x4a98d1(-0x1c6,-0x1ba)]='none';}get[_0xa5f95b(0x4fa,0x553)](){function _0x541297(_0x46fc77,_0x22870c){return _0x366ecb(_0x22870c,_0x46fc77-0x298);}return this['options'][_0x541297(0x287,0x216)];}set[_0xa5f95b(0x4fa,0x4f7)](_0x311608){this[_0x1dac41(-0xc3,-0xff)][_0x1dac41(-0xc2,-0x51)]=_0x311608;function _0x3e91c3(_0x4f63b7,_0x1bdc25){return _0x366ecb(_0x4f63b7,_0x1bdc25- -0x231);}clearTimeout(this[_0x3e91c3(-0x207,-0x25f)]);function _0x1dac41(_0x4dc59b,_0x5f2047){return _0x366ecb(_0x5f2047,_0x4dc59b- -0xb1);}this[_0x3e91c3(-0x2c9,-0x25f)]=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){function _0x58d581(_0x489f29,_0x156860){return _0xa5f95b(_0x489f29- -0x3c,_0x156860);}return this['options'][_0x58d581(0x4c1,0x52c)];}set['speedRate'](_0x28ee43){function _0x3279f9(_0x5b87e3,_0x58f767){return _0x366ecb(_0x58f767,_0x5b87e3-0x509);}this['options'][_0x619d2c(-0x21,-0x79)]=_0x28ee43;function _0x619d2c(_0x1777d1,_0x20cf51){return _0xa5f95b(_0x1777d1- -0x51e,_0x20cf51);}this['windField']&&(this['windField'][_0x3279f9(0x4fb,0x50b)]=_0x28ee43);}get['maxAge'](){return this['options']['maxAge'];}set['maxAge'](_0x3860ba){this['options'][_0x3d9643(-0x102,-0xc2)]=_0x3860ba;function _0x3ab617(_0x598dcb,_0x2d5748){return _0xa5f95b(_0x2d5748- -0x185,_0x598dcb);}function _0x3d9643(_0x2cbebb,_0x1b9da4){return _0x366ecb(_0x2cbebb,_0x1b9da4- -0x6a);}this[_0x3ab617(0x2fd,0x35b)]&&(this[_0x3d9643(-0xe8,-0x95)][_0x3ab617(0x33a,0x32e)]=_0x3860ba);}get[_0x366ecb(-0x7e,0xe)](){return this['windData'];}set['data'](_0x1952c9){function _0xa6aff(_0x2f01bf,_0x1bb0eb){return _0x366ecb(_0x2f01bf,_0x1bb0eb-0x13b);}this[_0xa6aff(0x74,0xe2)](_0x1952c9);}get[_0x366ecb(-0x20,0x6d)](){let _0x3d3d41=this['windData'][_0xff9737(0x236,0x22e)];function _0x28897f(_0x419615,_0x15baa0){return _0xa5f95b(_0x419615- -0x338,_0x15baa0);}function _0xff9737(_0x56ebda,_0x380ec6){return _0xa5f95b(_0x380ec6- -0x2c4,_0x56ebda);}let _0x51c8e3=this[_0xff9737(0x255,0x2b8)][_0xff9737(0x24c,0x24c)],_0x2db8c9=this['windData'][_0x28897f(0x274,0x278)],_0x27aa49=this[_0x28897f(0x244,0x237)][_0x28897f(0x198,0x175)];return _0x51c8e3>=0x167&&_0x3d3d41===0x0&&(_0x3d3d41=-0xb4,_0x51c8e3=0xb4),_0x3d3d41=Math['max'](_0x3d3d41,-0xb4),_0x51c8e3=Math['min'](_0x51c8e3,0xb4),_0x2db8c9=Math[_0xff9737(0x2a2,0x247)](_0x2db8c9,-0x5a),_0x27aa49=Math[_0x28897f(0x264,0x2d2)](_0x27aa49,0x5a),Cesium['Rectangle']['fromDegrees'](_0x3d3d41,_0x2db8c9,_0x51c8e3,_0x27aa49);}['_showHook'](_0x23b063){function _0x1f85ca(_0x59c7d,_0x28fcae){return _0x366ecb(_0x28fcae,_0x59c7d-0x273);}function _0x331fa2(_0x1d7d0e,_0x5f44b4){return _0xa5f95b(_0x1d7d0e- -0x1ef,_0x5f44b4);}_0x23b063?this['_addedHook']():(this[_0x331fa2(0x38d,0x3f8)]&&(this[_0x1f85ca(0x261,0x1f8)]['data']=this[_0x1f85ca(0x2e4,0x2ca)]),this[_0x1f85ca(0x303,0x29e)]());}['_mountedHook'](){function _0x43a872(_0x34467a,_0x4b7a85){return _0x366ecb(_0x4b7a85,_0x34467a-0xf1);}function _0x188bbc(_0x4ba4f1,_0x32e9dd){return _0xa5f95b(_0x32e9dd- -0x407,_0x4ba4f1);}this[_0x188bbc(0x16d,0xf2)]['worker']?this['initWorker']():this[_0x188bbc(0xd3,0xd9)]=new CanvasWindField(this['options']);}[_0x366ecb(-0x21,-0x15)](){this[_0xb21fc8(-0xf9,-0x13a)]=this[_0xe0d75e(0x168,0x1a6)]();const _0x3c78d2={};function _0xe0d75e(_0x476706,_0x3f383d){return _0x366ecb(_0x476706,_0x3f383d-0x170);}_0x3c78d2['willReadFrequently']=!![],this['canvasContext']=this['canvas'][_0xe0d75e(0x26f,0x1fc)]('2d',_0x3c78d2),this['bindEvent']();function _0xb21fc8(_0x4167db,_0x1cf705){return _0x366ecb(_0x1cf705,_0x4167db- -0x188);}this['options'][_0xb21fc8(-0x17a,-0x16f)]&&this['setData'](this[_0xb21fc8(-0x19a,-0x12f)][_0xe0d75e(0x1c3,0x17e)]);}['_removedHook'](){this[_0x4ddcbb(-0x190,-0x150)]();function _0x1fba0a(_0x1dea11,_0x32bb09){return _0x366ecb(_0x1dea11,_0x32bb09-0x1e5);}this[_0x4ddcbb(-0x1a5,-0x121)]();function _0x4ddcbb(_0x15426f,_0x3d8983){return _0xa5f95b(_0x3d8983- -0x667,_0x15426f);}this['canvas']&&(this[_0x1fba0a(0x207,0x1ff)]['container']['removeChild'](this[_0x4ddcbb(-0x3f,-0xcd)]),delete this['canvas']);}['_createCanvas'](){const _0xd8c9cb=mars3d__namespace['DomUtil']['create']('canvas',_0x32f8cd(0x41c,0x447),this['_map'][_0xf5a2d8(0x21a,0x1dd)]);_0xd8c9cb['style']['position']=_0xf5a2d8(0x157,0x174);function _0xf5a2d8(_0x305c0b,_0x4404d4){return _0xa5f95b(_0x4404d4- -0x331,_0x305c0b);}function _0x32f8cd(_0x211dd3,_0x76a536){return _0xa5f95b(_0x211dd3- -0x121,_0x76a536);}return _0xd8c9cb['style']['top']='0px',_0xd8c9cb['style'][_0x32f8cd(0x383,0x31a)]=_0x32f8cd(0x449,0x46b),_0xd8c9cb['style']['width']=this['_map'][_0xf5a2d8(0x1b7,0x198)][_0xf5a2d8(0x2a3,0x269)]['clientWidth']+'px',_0xd8c9cb['style']['height']=this['_map']['scene'][_0x32f8cd(0x479,0x4db)][_0xf5a2d8(0x1cb,0x1e2)]+'px',_0xd8c9cb['style']['pointerEvents']=this[_0x32f8cd(0x3a6,0x320)]?'auto':'none',_0xd8c9cb['style']['zIndex']=this[_0x32f8cd(0x3d8,0x461)]['zIndex']??0x9,_0xd8c9cb[_0x32f8cd(0x380,0x30a)]=this[_0xf5a2d8(0x17f,0x1f4)][_0x32f8cd(0x3a8,0x34a)]['canvas']['clientWidth'],_0xd8c9cb['height']=this['_map'][_0x32f8cd(0x3a8,0x404)][_0x32f8cd(0x479,0x40a)]['clientHeight'],_0xd8c9cb;}['resize'](){function _0x27ba13(_0x4ff99d,_0x5222ac){return _0xa5f95b(_0x4ff99d- -0x590,_0x5222ac);}function _0x222d6f(_0x183d62,_0x43800a){return _0xa5f95b(_0x43800a- -0x44b,_0x183d62);}this[_0x27ba13(0xa,0x7b)]&&(this['canvas']['style']['width']=this['_map'][_0x222d6f(0x3b,0x7e)]['canvas'][_0x27ba13(0xf,0x75)]+'px',this['canvas'][_0x27ba13(-0x28,-0x42)][_0x222d6f(0xd0,0xee)]=this['_map'][_0x222d6f(0x26,0x7e)][_0x27ba13(0xa,0x3e)]['clientHeight']+'px',this['canvas'][_0x222d6f(0x14,0x56)]=this['_map']['scene']['canvas']['clientWidth'],this['canvas']['height']=this[_0x222d6f(0x118,0xda)][_0x27ba13(-0xc7,-0xac)]['canvas']['clientHeight']);}['bindEvent'](){function _0x5eeb0f(_0x4419c9,_0xa5f64d){return _0x366ecb(_0xa5f64d,_0x4419c9-0x350);}const _0x375db9=this;let _0x726bbb=Date['now']();(function _0xca8851(){function _0x2443bd(_0x5cdbcc,_0x233ffb){return _0xcb26(_0x5cdbcc-0x1e6,_0x233ffb);}if(_0x375db9['isDestroy'])return;_0x375db9['_animateFrame']=window['requestAnimationFrame'](_0xca8851);if(_0x375db9[_0x2443bd(0x3e4,0x465)]&&_0x375db9['windField']){const _0x2dad18=Date['now'](),_0x4abd4d=_0x2dad18-_0x726bbb;_0x4abd4d>_0x375db9['frameTime']&&(_0x726bbb=_0x2dad18-_0x4abd4d%_0x375db9['frameTime'],_0x375db9['update']());}}(),window['addEventListener']('resize',this['resize'][_0x5eeb0f(0x338,0x35f)](this),![]),this['mouse_down']=![]);function _0xe99c19(_0x3cd4dd,_0x80575b){return _0xa5f95b(_0x80575b- -0x694,_0x3cd4dd);}this['mouse_move']=![],this['options']['mouseHidden']&&(this[_0x5eeb0f(0x36a,0x3c5)]['on'](mars3d__namespace[_0xe99c19(-0x9a,-0x108)][_0xe99c19(-0x1e1,-0x1fc)],this[_0x5eeb0f(0x348,0x3a8)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x5eeb0f(0x3ca,0x395)],this),this['_map']['on'](mars3d__namespace[_0x5eeb0f(0x3d1,0x38d)][_0xe99c19(-0xf6,-0x170)],this['_onMouseUpEvent'],this));}[_0xa5f95b(0x546,0x4bb)](){window[_0x2e558a(0x5ee,0x63c)](this[_0x3e8ec5(0x5ad,0x582)]),delete this['_animateFrame'];function _0x3e8ec5(_0x1414a8,_0x592c35){return _0x366ecb(_0x1414a8,_0x592c35-0x541);}window['removeEventListener'](_0x2e558a(0x61d,0x61a),this['resize']);function _0x2e558a(_0x23d7bf,_0x1dcd7b){return _0x366ecb(_0x1dcd7b,_0x23d7bf-0x582);}this[_0x2e558a(0x570,0x595)][_0x3e8ec5(0x62c,0x5b3)]&&(this[_0x2e558a(0x59c,0x55f)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x2e558a(0x59c,0x60c)][_0x2e558a(0x52c,0x4b4)](mars3d__namespace[_0x2e558a(0x603,0x5d1)]['mouseDown'],this[_0x2e558a(0x5fc,0x675)],this),this['_map'][_0x2e558a(0x52c,0x51b)](mars3d__namespace[_0x2e558a(0x603,0x5e7)]['mouseUp'],this['_onMouseUpEvent'],this),this[_0x3e8ec5(0x4db,0x55b)]['off'](mars3d__namespace['EventType'][_0x2e558a(0x555,0x4fe)],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x715069){clearTimeout(this['refreshTimer']);function _0x79bb6(_0x44d1c2,_0x9a26be){return _0x366ecb(_0x44d1c2,_0x9a26be- -0x233);}if(!this[_0x31a653(0x48c,0x4c6)]||!this['canvas'])return;function _0x31a653(_0x474254,_0x2bedfb){return _0xa5f95b(_0x2bedfb- -0x90,_0x474254);}this['canvas'][_0x31a653(0x53f,0x4d8)][_0x31a653(0x3bb,0x43f)]='hidden',this[_0x79bb6(-0x1f4,-0x1f9)]=setTimeout(()=>{if(!this['show'])return;function _0x5a832f(_0x297e3e,_0x2b7cb1){return _0x31a653(_0x297e3e,_0x2b7cb1- -0x387);}function _0x55e9f0(_0x3f84d8,_0x274e0c){return _0x79bb6(_0x3f84d8,_0x274e0c-0x4b2);}this['redraw'](),this['canvas']['style'][_0x5a832f(0x10f,0xb8)]=_0x5a832f(0x29,0x82);},0xc8);}['_onMouseDownEvent'](_0x1e681d){this[_0x22d047(0x56b,0x58b)]=!![],this[_0x3229a6(0x4b8,0x515)]['off'](mars3d__namespace[_0x22d047(0x591,0x5a7)][_0x3229a6(0x453,0x4ce)],this['_onMouseMoveEvent'],this);function _0x22d047(_0x31150d,_0x2013e0){return _0x366ecb(_0x2013e0,_0x31150d-0x510);}function _0x3229a6(_0x2f17fd,_0x5e29c2){return _0x366ecb(_0x2f17fd,_0x5e29c2-0x4fb);}this[_0x3229a6(0x4ed,0x515)]['on'](mars3d__namespace['EventType'][_0x22d047(0x4e3,0x4c4)],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x5a0510){function _0xf7330e(_0x199c60,_0x4fa836){return _0xa5f95b(_0x199c60- -0x232,_0x4fa836);}function _0x537c8d(_0x220e24,_0xb31b0f){return _0x366ecb(_0xb31b0f,_0x220e24-0x377);}if(!this['show']||!this['canvas'])return;this[_0x537c8d(0x3d2,0x411)]&&(this['canvas']['style'][_0xf7330e(0x29d,0x2be)]=_0x537c8d(0x381,0x39f),this['mouse_move']=!![]);}[_0x366ecb(0x1a,-0x50)](_0x3d0a4e){function _0xa4c5d2(_0x197888,_0x185af8){return _0xa5f95b(_0x185af8- -0x253,_0x197888);}function _0x31c796(_0x4655bd,_0x29306e){return _0x366ecb(_0x4655bd,_0x29306e- -0x1a1);}if(!this['show']||!this['canvas'])return;this['_map'][_0x31c796(-0x1b1,-0x1f7)](mars3d__namespace['EventType'][_0xa4c5d2(0x28d,0x28b)],this['_onMouseMoveEvent'],this),this['mouse_down']&&this[_0xa4c5d2(0x274,0x2d5)]&&this[_0x31c796(-0x1b0,-0x1ea)](),this['canvas']['style'][_0xa4c5d2(0x2f2,0x27c)]='visible',this['mouse_down']=![],this[_0xa4c5d2(0x257,0x2d5)]=![];}['setData'](_0x19f5d2){this[_0x3e1c1b(0x375,0x359)]();function _0x4652d4(_0x2894b8,_0x24006c){return _0x366ecb(_0x24006c,_0x2894b8-0x49b);}this[_0x4652d4(0x50c,0x4ca)]=_0x19f5d2,this['windField'][_0x3e1c1b(0x3a0,0x409)](_0x19f5d2);function _0x3e1c1b(_0x5c02dd,_0x4cd966){return _0xa5f95b(_0x5c02dd- -0x1a2,_0x4cd966);}this['redraw']();}['redraw'](){function _0xda4f3f(_0x4e2a10,_0x1bfa6d){return _0x366ecb(_0x1bfa6d,_0x4e2a10- -0x149);}if(!this[_0xda4f3f(-0xfe,-0xa0)])return;this[_0xda4f3f(-0x174,-0x19e)][_0x21e661(0x36a,0x3a9)](this['options']);function _0x21e661(_0x59dbb8,_0x362d3a){return _0x366ecb(_0x59dbb8,_0x362d3a-0x388);}this['update']();}['update'](){if(this['_updateIng'])return;function _0x114963(_0x4a7be2,_0x4b8809){return _0xa5f95b(_0x4b8809- -0x364,_0x4a7be2);}function _0x257469(_0x137ed0,_0x178076){return _0xa5f95b(_0x178076- -0x32d,_0x137ed0);}this['_updateIng']=!![];if(this[_0x257469(0x1eb,0x184)])this[_0x257469(0x22c,0x1b3)][_0x114963(0x11b,0x18a)]();else{const _0x58d495=this[_0x114963(0x1aa,0x17c)][_0x114963(0x162,0x154)]();this['_drawLines'](_0x58d495);}this['_updateIng']=![];}[_0x366ecb(0xc,-0x71)](_0xa13ffa){this['_canvasParticles']=_0xa13ffa,this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this[_0x8f20e3(0x2ce,0x27b)]),this['canvasContext'][_0x8f20e3(0x228,0x226)]=_0x47ea5d(0x24f,0x1d8),this[_0x47ea5d(0x1a0,0x19e)]['globalAlpha']=0.9;const _0x5187cc=this['_map']['scene'][_0x47ea5d(0x242,0x27f)]!==Cesium['SceneMode']['SCENE3D'],_0xedd577=this[_0x47ea5d(0x1d6,0x1ce)]*0.25;function _0x8f20e3(_0x2745c8,_0xb4b1e9){return _0x366ecb(_0xb4b1e9,_0x2745c8-0x249);}function _0x47ea5d(_0xd9e9c4,_0x145689){return _0x366ecb(_0x145689,_0xd9e9c4-0x1ec);}if(this[_0x47ea5d(0x236,0x284)])for(let _0x2740fd=0x0,_0x6a7eb2=_0xa13ffa[_0x8f20e3(0x223,0x213)];_0x2740fd<_0x6a7eb2;_0x2740fd++){const _0x28b954=_0xa13ffa[_0x2740fd],_0x3d0e91=this['_tomap'](_0x28b954,_0x28b954['lng'],_0x28b954['lat'],_0x28b954['alt']),_0x27fa0e=this[_0x47ea5d(0x1ce,0x170)](_0x28b954,_0x28b954['tlng'],_0x28b954[_0x47ea5d(0x210,0x1c4)],_0x28b954['talt']);if(!_0x3d0e91||!_0x27fa0e)continue;if(_0x5187cc&&Math['abs'](_0x3d0e91[0x0]-_0x27fa0e[0x0])>=_0xedd577)continue;this['canvasContext']['beginPath'](),this[_0x8f20e3(0x1fd,0x1d7)]['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this['_colorRamp']['getColor'](_0x28b954['speed']),this['canvasContext']['moveTo'](_0x3d0e91[0x0],_0x3d0e91[0x1]),this[_0x47ea5d(0x1a0,0x22c)]['lineTo'](_0x27fa0e[0x0],_0x27fa0e[0x1]),this[_0x8f20e3(0x1fd,0x1bd)]['stroke']();}else{this[_0x8f20e3(0x1fd,0x24c)]['beginPath'](),this['canvasContext'][_0x8f20e3(0x2e1,0x27e)]=this[_0x47ea5d(0x284,0x21c)],this['canvasContext']['strokeStyle']=this[_0x47ea5d(0x190,0x15a)];for(let _0x3c096f=0x0,_0x41be47=_0xa13ffa['length'];_0x3c096f<_0x41be47;_0x3c096f++){const _0x4a75c9=_0xa13ffa[_0x3c096f],_0x3f6ae3=this['_tomap'](_0x4a75c9,_0x4a75c9['lng'],_0x4a75c9['lat'],_0x4a75c9['alt']),_0x2b804f=this[_0x8f20e3(0x22b,0x217)](_0x4a75c9,_0x4a75c9[_0x47ea5d(0x1e3,0x220)],_0x4a75c9['tlat'],_0x4a75c9[_0x8f20e3(0x24d,0x278)]);if(!_0x3f6ae3||!_0x2b804f)continue;if(_0x5187cc&&Math[_0x8f20e3(0x244,0x20f)](_0x3f6ae3[0x0]-_0x2b804f[0x0])>=_0xedd577)continue;this[_0x8f20e3(0x1fd,0x20b)][_0x47ea5d(0x230,0x228)](_0x3f6ae3[0x0],_0x3f6ae3[0x1]),this[_0x8f20e3(0x1fd,0x1d0)][_0x47ea5d(0x251,0x241)](_0x2b804f[0x0],_0x2b804f[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x4048f1,_0x3f1006,_0x2d8265,_0xf5aaa1){const _0x5e4a05=Cesium['Cartesian3']['fromDegrees'](_0x3f1006,_0x2d8265,_0xf5aaa1??this['fixedHeight']),_0x1f9e14=this['_map'][_0x358a43(0x21,-0x5a)];function _0x358a43(_0x301d2d,_0x582e0f){return _0xa5f95b(_0x582e0f- -0x523,_0x301d2d);}if(_0x1f9e14['mode']===Cesium['SceneMode'][_0x358a43(-0x9a,-0x67)]){const _0xa9f661=new Cesium[(_0x5e4af5(0x29b,0x2c3))](_0x1f9e14[_0x358a43(0xbf,0x75)][_0x358a43(0xbd,0x86)],_0x1f9e14['camera']['positionWC']),_0x4ba618=_0xa9f661['isPointVisible'](_0x5e4a05);if(!_0x4ba618)return _0x4048f1['age']=0x0,null;}function _0x5e4af5(_0x1db101,_0x3ebd6){return _0x366ecb(_0x3ebd6,_0x1db101-0x241);}const _0x3825e1=mars3d__namespace['PointTrans']['toWindowCoordinates'](this[_0x5e4af5(0x25b,0x1ec)]['scene'],_0x5e4a05);return _0x3825e1?[_0x3825e1['x'],_0x3825e1['y']]:null;}[_0x366ecb(0x88,0xc)](){function _0x5b6283(_0x46f9bc,_0x3c630d){return _0xa5f95b(_0x3c630d- -0x1dd,_0x46f9bc);}this['windField'][_0x5b6283(0x2b2,0x33a)]();function _0x16da86(_0x2e460,_0x71a676){return _0xa5f95b(_0x2e460- -0x127,_0x71a676);}delete this[_0x5b6283(0x3b7,0x39f)];}['initWorker'](){this['worker']=new Worker(this[_0x56e58f(0x353,0x324)]['worker']);function _0x499e7a(_0x1af2e5,_0x181eda){return _0x366ecb(_0x181eda,_0x1af2e5-0x58a);}this[_0x499e7a(0x530,0x4f0)][_0x56e58f(0x2fd,0x2b5)]=_0x16ef5a=>{this[_0x5c905a(0x48d,0x445)](_0x16ef5a['data'][_0x51b1a6(-0xd9,-0x8b)]);function _0x51b1a6(_0x30f961,_0x510336){return _0x56e58f(_0x30f961- -0x4ad,_0x510336);}function _0x5c905a(_0x4ee904,_0x4788af){return _0x499e7a(_0x4788af- -0xd4,_0x4ee904);}this['_updateIng2']=![];};function _0x56e58f(_0x563159,_0x4504b4){return _0x366ecb(_0x4504b4,_0x563159-0x365);}this['windField']={'init':_0x34293f=>{const _0xdd044b={};function _0x4e6b8e(_0x4ff776,_0x59deed){return _0x56e58f(_0x59deed- -0x4e7,_0x4ff776);}_0xdd044b[_0x23e73b(-0x1b2,-0x1b5)]=_0x4e6b8e(-0x202,-0x180),_0xdd044b['options']=_0x34293f;function _0x23e73b(_0x179f1a,_0x4ca3f7){return _0x499e7a(_0x179f1a- -0x6da,_0x4ca3f7);}this['worker']['postMessage'](_0xdd044b);},'setOptions':_0x432dfb=>{const _0x103738={};_0x103738[_0x46e22c(-0x70,-0x18)]='setOptions';function _0x46e22c(_0x1c77e6,_0x4b0c02){return _0x56e58f(_0x4b0c02- -0x31b,_0x1c77e6);}function _0x427a5d(_0x43819b,_0x291bcd){return _0x56e58f(_0x43819b- -0x4bd,_0x291bcd);}_0x103738[_0x427a5d(-0x16a,-0x106)]=_0x432dfb,this['worker']['postMessage'](_0x103738);},'setDate':_0x23899d=>{const _0x1c481c={};_0x1c481c[_0x39b1eb(-0x282,-0x2d9)]=_0x39b1eb(-0x1e9,-0x239);function _0x39b1eb(_0x4035ae,_0x3e7ac4){return _0x56e58f(_0x4035ae- -0x585,_0x3e7ac4);}_0x1c481c['data']=_0x23899d;function _0x4013b6(_0x5f1255,_0xfbadd){return _0x56e58f(_0xfbadd- -0x173,_0x5f1255);}this[_0x4013b6(0x224,0x198)]['postMessage'](_0x1c481c);},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![];function _0x5e3eba(_0x471622,_0x314975){return _0x56e58f(_0x471622- -0x531,_0x314975);}function _0x315f39(_0x41067e,_0x5269ee){return _0x56e58f(_0x41067e- -0x14a,_0x5269ee);}const _0x2b30ee={};_0x2b30ee['type']=_0x315f39(0x1fe,0x19b),this['worker'][_0x5e3eba(-0x12d,-0x15a)](_0x2b30ee);},'clear':()=>{const _0x209821={};function _0x479db4(_0x5b8599,_0x591616){return _0x56e58f(_0x5b8599-0x137,_0x591616);}_0x209821[_0x479db4(0x43a,0x480)]=_0x479db4(0x4a8,0x442);function _0x584316(_0x398a15,_0x1062d5){return _0x56e58f(_0x1062d5-0xe6,_0x398a15);}this[_0x479db4(0x442,0x425)]['postMessage'](_0x209821);}},this['windField'][_0x499e7a(0x58c,0x616)](this[_0x499e7a(0x578,0x527)]);}}mars3d__namespace['LayerUtil']['register'](_0xa5f95b(0x56c,0x51b),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace[_0xa5f95b(0x4d5,0x54c)]=CanvasWindField,mars3d__namespace[_0xa5f95b(0x538,0x528)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports[_0x366ecb(-0x31,-0x6d)]=WindLayer,exports['WindUtil']=WindUtil;const _0x4c178c={};_0x4c178c[_0x366ecb(0xb4,0x77)]=!![],Object['defineProperty'](exports,'__esModule',_0x4c178c);
|
|
15
15
|
}));
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mars3d-wind",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.10",
|
|
4
4
|
"description": "Mars3D平台插件,支持气象 风向图 功能插件",
|
|
5
5
|
"main": "./mars3d-wind.js",
|
|
6
6
|
"peerDependencies": {},
|
|
7
7
|
"devDependencies": {
|
|
8
|
-
"mars3d": "~3.9.
|
|
8
|
+
"mars3d": "~3.9.10"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"lint": "eslint ./src/**/*.{js,ts} --fix"
|