mars3d-wind 3.6.18 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
3
3
  *
4
- * 版本信息:v3.6.18
5
- * 编译日期:2023-12-31 22:36:42
4
+ * 版本信息:v3.7.0
5
+ * 编译日期:2024-01-15 15:59:29
6
6
  * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
7
  * 使用单位:免费公开版 ,2023-03-17
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';const _0x327d5f=_0x3887;(function(_0x47e076,_0x152cb0){const _0x2de638=_0x3887,_0x2c1c34=_0x47e076();while(!![]){try{const _0x206252=parseInt(_0x2de638(0x18a))/0x1+parseInt(_0x2de638(0x254))/0x2+-parseInt(_0x2de638(0x253))/0x3+-parseInt(_0x2de638(0x250))/0x4+parseInt(_0x2de638(0x1fc))/0x5*(-parseInt(_0x2de638(0x17d))/0x6)+-parseInt(_0x2de638(0x252))/0x7+parseInt(_0x2de638(0x1df))/0x8;if(_0x206252===_0x152cb0)break;else _0x2c1c34['push'](_0x2c1c34['shift']());}catch(_0x2f2056){_0x2c1c34['push'](_0x2c1c34['shift']());}}}(_0x539b,0x81e76));function _interopNamespace(_0x5c5467){const _0x360c8f=_0x3887;if(_0x5c5467&&_0x5c5467[_0x360c8f(0x1bb)])return _0x5c5467;var _0x24a5d7=Object['create'](null);return _0x5c5467&&Object['keys'](_0x5c5467)['forEach'](function(_0x4e63a8){if(_0x4e63a8!=='default'){var _0x3e056f=Object['getOwnPropertyDescriptor'](_0x5c5467,_0x4e63a8);Object['defineProperty'](_0x24a5d7,_0x4e63a8,_0x3e056f['get']?_0x3e056f:{'enumerable':!![],'get':function(){return _0x5c5467[_0x4e63a8];}});}}),_0x24a5d7['default']=_0x5c5467,_0x24a5d7;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace[_0x327d5f(0x22d)];function getU(_0x25291e,_0x1c8826){const _0x39a42d=_0x327d5f,_0x3bd59f=_0x25291e*Math[_0x39a42d(0x1f6)](Cesium$7[_0x39a42d(0x1db)]['toRadians'](_0x1c8826));return _0x3bd59f;}function getV(_0x1a0488,_0x13842d){const _0x1fbce7=_0x1a0488*Math['sin'](Cesium$7['Math']['toRadians'](_0x13842d));return _0x1fbce7;}function getSpeed(_0x569b4b,_0x1a3d39){const _0x468fc8=_0x327d5f,_0x17e639=Math['sqrt'](Math['pow'](_0x569b4b,0x2)+Math[_0x468fc8(0x1a7)](_0x1a3d39,0x2));return _0x17e639;}function getDirection(_0x29721b,_0x3c26f3){const _0x50e090=_0x327d5f;let _0x4229f2=Cesium$7['Math']['toDegrees'](Math[_0x50e090(0x263)](_0x3c26f3,_0x29721b));return _0x4229f2+=_0x4229f2<0x0?0x168:0x0,_0x4229f2;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];function _0x539b(){const _0x3c7ec1=['particlesTextures','setData','context','fragmentShaderSource','primitives','redraw','mouse_down','autoClear','max','_updateIng2','pointerEvents','lev','top','fadeOpacity','ellipsoid','_mountedHook','udata','Pass','globalAlpha','camera','min','outputTexture','lineWidth','now','pow','worker','latRange','scene','ClearCommand','framebuffer','fromDegrees','viewerParameters','destroyParticlesTextures','red','clearFramebuffers','once','OPAQUE','particles','//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x,\x20360.0);\x0a\x20\x20\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20-90.0,\x2090.0);\x0a\x0a\x20\x20\x20\x20vec3\x20index3D\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20index3D.z\x20=\x20(lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z;\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205],\x20width\x20=\x203,\x20height\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x203\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x202\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWind(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20\x20\x20float\x20result\x20=\x20texture(windTexture,\x20normalizedIndex2D).r;\x0a\x20\x20\x20\x20return\x20result;\x0a}\x0a\x0aconst\x20mat4\x20kernelMatrix\x20=\x20mat4(\x0a\x20\x20\x20\x200.0,\x20-1.0,\x202.0,\x20-1.0,\x20//\x20first\x20column\x0a\x20\x20\x20\x202.0,\x200.0,\x20-5.0,\x203.0,\x20//\x20second\x20column\x0a\x20\x20\x20\x200.0,\x201.0,\x204.0,\x20-3.0,\x20//\x20third\x20column\x0a\x20\x20\x20\x200.0,\x200.0,\x20-1.0,\x201.0\x20//\x20fourth\x20column\x0a);\x0afloat\x20oneDimensionInterpolation(float\x20t,\x20float\x20p0,\x20float\x20p1,\x20float\x20p2,\x20float\x20p3)\x20{\x0a\x20\x20\x20\x20vec4\x20tVec4\x20=\x20vec4(1.0,\x20t,\x20t\x20*\x20t,\x20t\x20*\x20t\x20*\x20t);\x0a\x20\x20\x20\x20tVec4\x20=\x20tVec4\x20/\x202.0;\x0a\x20\x20\x20\x20vec4\x20pVec4\x20=\x20vec4(p0,\x20p1,\x20p2,\x20p3);\x0a\x20\x20\x20\x20return\x20dot((tVec4\x20*\x20kernelMatrix),\x20pVec4);\x0a}\x0a\x0afloat\x20calculateB(sampler2D\x20windTexture,\x20float\x20t,\x20float\x20lon,\x20float\x20lat,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20float\x20lon0\x20=\x20floor(lon)\x20-\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon1\x20=\x20floor(lon);\x0a\x20\x20\x20\x20float\x20lon2\x20=\x20floor(lon)\x20+\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon3\x20=\x20floor(lon)\x20+\x202.0\x20*\x20interval.x;\x0a\x0a\x20\x20\x20\x20float\x20p0\x20=\x20getWind(windTexture,\x20vec3(lon0,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p1\x20=\x20getWind(windTexture,\x20vec3(lon1,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p2\x20=\x20getWind(windTexture,\x20vec3(lon2,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p3\x20=\x20getWind(windTexture,\x20vec3(lon3,\x20lat,\x20lev));\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(t,\x20p0,\x20p1,\x20p2,\x20p3);\x0a}\x0a\x0afloat\x20interpolateOneTexture(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20\x20\x20float\x20lat0\x20=\x20floor(lat)\x20-\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat1\x20=\x20floor(lat);\x0a\x20\x20\x20\x20float\x20lat2\x20=\x20floor(lat)\x20+\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat3\x20=\x20floor(lat)\x20+\x202.0\x20*\x20interval.y;\x0a\x0a\x20\x20\x20\x20vec2\x20coefficient\x20=\x20lonLatLev.xy\x20-\x20floor(lonLatLev.xy);\x0a\x20\x20\x20\x20float\x20b0\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat0,\x20lev);\x0a\x20\x20\x20\x20float\x20b1\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat1,\x20lev);\x0a\x20\x20\x20\x20float\x20b2\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat2,\x20lev);\x0a\x20\x20\x20\x20float\x20b3\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat3,\x20lev);\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(coefficient.y,\x20b0,\x20b1,\x20b2,\x20b3);\x0a}\x0a\x0avec3\x20bicubic(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm\x0a\x20\x20\x20\x20float\x20u\x20=\x20interpolateOneTexture(U,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20v\x20=\x20interpolateOneTexture(V,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}\x0a','initWorker','createWindTextures','mouse_move','windData','lon','__esModule','color','_onMouseUpEvent','length','mode','lat','windTextures','currentParticlesPosition','reverse','reverseY','IDENTITY','clampToLatitudeRange','LayerUtil','rows','fromCache','getParticles','defined','push','mouseUp','resize','cols','Draw','EventType','_onMouseMoveEvent','commandType','PixelDatatype','getUVByPoint','particleSystem','_map','mars3d-canvasWind','getUVByXY','left','Math','pointer-events','tlat','options','13656032eKwDhV','height','update','_removedHook','Cartesian2','TRIANGLES','drawingBufferWidth','getExtent','postProcessingSpeed','destroy','framebuffers','frameTime','animateFrame','speed','uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a','canvasWidth','windField','updatePosition','mod','PrimitiveType','age','createTexture','textures','cos','clear','maxParticles','uniformMap','blue','Compute','10pdPJYh','WindUtil','SceneMode','maxAge','trails','canvas','currentTrailsDepth','createRawRenderState','create','getOptions','vdata','log','createRenderingFramebuffers','canvasResize','particlesNumber','ZERO','clearCommand','particlesRendering','addPrimitives','updateSpeed','setDate','vmax','Cartesian3','grid','createSegmentsGeometry','PrimitiveCollection','removeChild','nextTrails','visibility','GeometryAttributes','ceil','_createCanvas','_updateIng','register','forEach','init','removeEventListener','pixelSize','tlng','data','add','STATIC_DRAW','_speedRate','NEAREST','shaderProgram','Sampler','ymin','uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a','postMessage','Cesium','FLOAT','PixelFormat','clientHeight','keys','_data','particlesTextureSize','_calc_speedRate','ymax','currentParticlesSpeed','vertexArray','_tomap','_onMap_preRenderEvent','DEPTH_COMPONENT','in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a','lng','style','createParticlesTextures','setOptions','colors','onmessage','CanvasWindLayer','createRenderingTextures','visible','speedRate','commandToExecute','umin','globeBoundingSphere','hidden','show','getFullscreenQuad','levmin','strokeStyle','off','_onMouseDownEvent','2120476GaHNWJ','createRenderingPrimitives','739235nyBfVK','3034050rkCugw','1710404ZAiJqh','dimensions','fixedHeight','ShaderSource','BufferUsage','layer','xmin','fromGeometry','south','xmax','_calcUV','toDegrees','arrayBufferView','_maxAge','_onMapWhellEvent','atan2','colorTable','RenderState','currentTrailsColor','destination-in','canvasContext','particlesComputing','drawingBufferHeight','attributeLocations','postProcessingPosition','_pointerEvents','steps','1418724kitOkh','_bilinearInterpolation','all','primitiveType','preExecute','refreshTimer','segments','TWO_PI','_randomParticle','BaseLayer','zIndex','GeometryAttribute','RGBA','89862pmrOTL','random','getWind','mouseMove','nextTrailsColor'];_0x539b=function(){return _0x3c7ec1;};return _0x539b();}class CustomPrimitive{constructor(_0x2b7341){const _0x484f27=_0x327d5f;this[_0x484f27(0x1d3)]=_0x2b7341['commandType'],this['geometry']=_0x2b7341['geometry'],this['attributeLocations']=_0x2b7341[_0x484f27(0x179)],this['primitiveType']=_0x2b7341[_0x484f27(0x180)],this['uniformMap']=_0x2b7341['uniformMap'],this['vertexShaderSource']=_0x2b7341['vertexShaderSource'],this[_0x484f27(0x192)]=_0x2b7341[_0x484f27(0x192)],this['rawRenderState']=_0x2b7341['rawRenderState'],this['framebuffer']=_0x2b7341['framebuffer'],this[_0x484f27(0x1a4)]=_0x2b7341['outputTexture'],this[_0x484f27(0x196)]=_0x2b7341['autoClear']??![],this['preExecute']=_0x2b7341[_0x484f27(0x181)],this['show']=!![],this['commandToExecute']=undefined,this[_0x484f27(0x20c)]=undefined,this[_0x484f27(0x196)]&&(this['clearCommand']=new Cesium$6[(_0x484f27(0x1ab))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x484f27(0x1ac)],'pass':Cesium$6[_0x484f27(0x1a0)]['OPAQUE']}));}['createCommand'](_0x1fcd74){const _0x490e64=_0x327d5f;switch(this[_0x490e64(0x1d3)]){case'Draw':{const _0x36b62a=Cesium$6['VertexArray']['fromGeometry']({'context':_0x1fcd74,'geometry':this['geometry'],'attributeLocations':this[_0x490e64(0x179)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x4288ea=Cesium$6['ShaderProgram']['fromCache']({'context':_0x1fcd74,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x3e839e=Cesium$6[_0x490e64(0x173)][_0x490e64(0x1c9)](this['rawRenderState']);return new Cesium$6['DrawCommand']({'primitiveType':this[_0x490e64(0x180)],'shaderProgram':_0x4288ea,'vertexArray':_0x36b62a,'modelMatrix':Cesium$6['Matrix4'][_0x490e64(0x1c5)],'renderState':_0x3e839e,'uniformMap':this[_0x490e64(0x1f9)],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x490e64(0x1a0)]['OPAQUE'],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this[_0x490e64(0x1f9)],'outputTexture':this[_0x490e64(0x1a4)],'persists':!![]});}}}['setGeometry'](_0x5a48de,_0x39df69){const _0x1578fc=_0x327d5f;this['geometry']=_0x39df69;const _0x3e2ceb=Cesium$6['VertexArray'][_0x1578fc(0x25b)]({'context':_0x5a48de,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage'][_0x1578fc(0x225)]});this['commandToExecute']['vertexArray']=_0x3e2ceb;}[_0x327d5f(0x1e1)](_0x138103){const _0x12bbf4=_0x327d5f;if(!this['show'])return;if(_0x138103['mode']!==Cesium$6[_0x12bbf4(0x1fe)]['SCENE3D'])return;!Cesium$6['defined'](this[_0x12bbf4(0x246)])&&(this['commandToExecute']=this['createCommand'](_0x138103['context'])),Cesium$6['defined'](this['preExecute'])&&this['preExecute'](),Cesium$6[_0x12bbf4(0x1cb)](this['clearCommand'])&&_0x138103['commandList']['push'](this[_0x12bbf4(0x20c)]),_0x138103['commandList']['push'](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){const _0x5996b5=_0x327d5f;if(this['clearCommand']){var _0x21fecc,_0x194855;(_0x21fecc=this['clearCommand'])!==null&&_0x21fecc!==void 0x0&&_0x21fecc[_0x5996b5(0x237)]&&this['clearCommand'][_0x5996b5(0x237)]['destroy'](),(_0x194855=this['clearCommand'])!==null&&_0x194855!==void 0x0&&_0x194855['shaderProgram']&&this['clearCommand'][_0x5996b5(0x228)]['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this[_0x5996b5(0x246)][_0x5996b5(0x228)]&&this['commandToExecute'][_0x5996b5(0x228)]['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0xbbe4a4=function(){const _0x1cd4d9=_0x3887,_0x2daf34=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5[(_0x1cd4d9(0x188))]({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x2daf34;},_0x444ed9=function(_0x1a4bec,_0x15176a){const _0x58cfd0=_0x3887;if(Cesium$5['defined'](_0x15176a)){const _0x210fb9={};_0x210fb9[_0x58cfd0(0x260)]=_0x15176a,_0x1a4bec['source']=_0x210fb9;}const _0x440e17=new Cesium$5['Texture'](_0x1a4bec);return _0x440e17;},_0x21fc25=function(_0x5bc9d0,_0x470c6b,_0x50b649){const _0x5f17f9=new Cesium$5['Framebuffer']({'context':_0x5bc9d0,'colorTextures':[_0x470c6b],'depthTexture':_0x50b649});return _0x5f17f9;},_0x25025c=function(_0x5ee530){const _0x5c6548=!![],_0x2cadfa=![],_0x29cd55={'viewport':_0x5ee530['viewport'],'depthTest':_0x5ee530['depthTest'],'depthMask':_0x5ee530['depthMask'],'blending':_0x5ee530['blending']},_0x191dd4=Cesium$5['Appearance']['getDefaultRenderState'](_0x5c6548,_0x2cadfa,_0x29cd55);return _0x191dd4;},_0x13287e=function(_0x8edc57){const _0x10cc7d=_0x3887,_0x4633d7={},_0x290dd2=Cesium$5['Math'][_0x10cc7d(0x1f1)](_0x8edc57['west'],Cesium$5[_0x10cc7d(0x1db)]['TWO_PI']),_0xe98fb7=Cesium$5['Math'][_0x10cc7d(0x1f1)](_0x8edc57['east'],Cesium$5['Math'][_0x10cc7d(0x184)]),_0x2a24c3=_0x8edc57['width'];let _0x380bc4,_0x2a41b1;_0x2a24c3>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x380bc4=0x0,_0x2a41b1=Cesium$5[_0x10cc7d(0x1db)]['TWO_PI']):_0xe98fb7-_0x290dd2<_0x2a24c3?(_0x380bc4=_0x290dd2,_0x2a41b1=_0x290dd2+_0x2a24c3):(_0x380bc4=_0x290dd2,_0x2a41b1=_0xe98fb7);_0x4633d7['lon']={'min':Cesium$5['Math'][_0x10cc7d(0x25f)](_0x380bc4),'max':Cesium$5['Math']['toDegrees'](_0x2a41b1)};const _0x2a61fb=_0x8edc57[_0x10cc7d(0x25c)],_0x149050=_0x8edc57['north'],_0x1df256=_0x8edc57[_0x10cc7d(0x1e0)],_0x153af0=_0x1df256>Cesium$5['Math']['PI']/0xc?_0x1df256/0x2:0x0;let _0x3f3198=Cesium$5['Math'][_0x10cc7d(0x1c6)](_0x2a61fb-_0x153af0),_0x4442b7=Cesium$5['Math'][_0x10cc7d(0x1c6)](_0x149050+_0x153af0);return _0x3f3198<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x3f3198=-Cesium$5['Math']['PI_OVER_TWO']),_0x4442b7>Cesium$5[_0x10cc7d(0x1db)]['PI_OVER_THREE']&&(_0x4442b7=Cesium$5[_0x10cc7d(0x1db)]['PI_OVER_TWO']),_0x4633d7[_0x10cc7d(0x1c0)]={'min':Cesium$5[_0x10cc7d(0x1db)]['toDegrees'](_0x3f3198),'max':Cesium$5['Math'][_0x10cc7d(0x25f)](_0x4442b7)},_0x4633d7;};return{'getFullscreenQuad':_0xbbe4a4,'createTexture':_0x444ed9,'createFramebuffer':_0x21fc25,'createRawRenderState':_0x25025c,'viewRectangleToLonLatRange':_0x13287e};}());var segmentDraw_vert=_0x327d5f(0x23b),segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert='in\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0a}\x0a',trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20trailsColor;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0xcf0775,_0x54ad17,_0x598b3f,_0x4d9997,_0x4123af){const _0x59364b=_0x327d5f;this['createRenderingTextures'](_0xcf0775,_0x54ad17,_0x598b3f['colors']),this[_0x59364b(0x208)](_0xcf0775),this[_0x59364b(0x251)](_0xcf0775,_0x598b3f,_0x4d9997,_0x4123af);}[_0x327d5f(0x243)](_0x2a7fad,_0x13cc44,_0x2657a6){const _0x7c083f=_0x327d5f,_0x4d008e={'context':_0x2a7fad,'width':_0x2a7fad['drawingBufferWidth'],'height':_0x2a7fad['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat'][_0x7c083f(0x189)],'pixelDatatype':Cesium$4[_0x7c083f(0x1d4)]['UNSIGNED_BYTE']},_0x13d1f8={'context':_0x2a7fad,'width':_0x2a7fad[_0x7c083f(0x1e5)],'height':_0x2a7fad[_0x7c083f(0x178)],'pixelFormat':Cesium$4[_0x7c083f(0x22f)][_0x7c083f(0x23a)],'pixelDatatype':Cesium$4[_0x7c083f(0x1d4)]['UNSIGNED_INT']},_0x14cd78=_0x2657a6['length'],_0x56685d=new Float32Array(_0x14cd78*0x3);for(let _0x1c12b6=0x0;_0x1c12b6<_0x14cd78;_0x1c12b6++){const _0x58a280=Cesium$4['Color']['fromCssColorString'](_0x2657a6[_0x1c12b6]);_0x56685d[0x3*_0x1c12b6]=_0x58a280[_0x7c083f(0x1b0)],_0x56685d[0x3*_0x1c12b6+0x1]=_0x58a280['green'],_0x56685d[0x3*_0x1c12b6+0x2]=_0x58a280[_0x7c083f(0x1fa)];}const _0x54f643={'context':_0x2a7fad,'width':_0x14cd78,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype'][_0x7c083f(0x22e)],'sampler':new Cesium$4[(_0x7c083f(0x229))]({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x4d008e),'segmentsDepth':Util['createTexture'](_0x13d1f8),'currentTrailsColor':Util['createTexture'](_0x4d008e),'currentTrailsDepth':Util['createTexture'](_0x13d1f8),'nextTrailsColor':Util[_0x7c083f(0x1f4)](_0x4d008e),'nextTrailsDepth':Util[_0x7c083f(0x1f4)](_0x13d1f8),'colorTable':Util['createTexture'](_0x54f643,_0x56685d)};}[_0x327d5f(0x208)](_0x893510){const _0x3c9693=_0x327d5f;this['framebuffers']={'segments':Util['createFramebuffer'](_0x893510,this['textures']['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x893510,this[_0x3c9693(0x1f5)][_0x3c9693(0x174)],this[_0x3c9693(0x1f5)][_0x3c9693(0x202)]),'nextTrails':Util['createFramebuffer'](_0x893510,this['textures'][_0x3c9693(0x18e)],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x409d7a){const _0x496603=_0x327d5f,_0x47703d=0x4;let _0x88a876=[];for(let _0x292725=0x0;_0x292725<_0x409d7a[_0x496603(0x233)];_0x292725++){for(let _0x5383d5=0x0;_0x5383d5<_0x409d7a['particlesTextureSize'];_0x5383d5++){for(let _0x122fdb=0x0;_0x122fdb<_0x47703d;_0x122fdb++){_0x88a876[_0x496603(0x1cc)](_0x292725/_0x409d7a[_0x496603(0x233)]),_0x88a876[_0x496603(0x1cc)](_0x5383d5/_0x409d7a['particlesTextureSize']);}}}_0x88a876=new Float32Array(_0x88a876);let _0x4eb047=[];const _0x150a4b=[-0x1,0x1],_0x47ce7c=[-0x1,0x1];for(let _0x1b7e06=0x0;_0x1b7e06<_0x409d7a['maxParticles'];_0x1b7e06++){for(let _0x2e759e=0x0;_0x2e759e<_0x47703d/0x2;_0x2e759e++){for(let _0x144177=0x0;_0x144177<_0x47703d/0x2;_0x144177++){_0x4eb047[_0x496603(0x1cc)](_0x150a4b[_0x2e759e]),_0x4eb047['push'](_0x47ce7c[_0x144177]),_0x4eb047['push'](0x0);}}}_0x4eb047=new Float32Array(_0x4eb047);const _0x2ae626=0x6*_0x409d7a['maxParticles'],_0x282d2e=new Uint32Array(_0x2ae626);for(let _0x243a54=0x0,_0x1ab5d1=0x0,_0x507d96=0x0;_0x243a54<_0x409d7a['maxParticles'];_0x243a54++){_0x282d2e[_0x1ab5d1++]=_0x507d96+0x0,_0x282d2e[_0x1ab5d1++]=_0x507d96+0x1,_0x282d2e[_0x1ab5d1++]=_0x507d96+0x2,_0x282d2e[_0x1ab5d1++]=_0x507d96+0x2,_0x282d2e[_0x1ab5d1++]=_0x507d96+0x1,_0x282d2e[_0x1ab5d1++]=_0x507d96+0x3,_0x507d96+=0x4;}const _0x1e6af2=new Cesium$4['Geometry']({'attributes':new Cesium$4[(_0x496603(0x219))]({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x88a876}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x4eb047})}),'indices':_0x282d2e});return _0x1e6af2;}['createRenderingPrimitives'](_0x36068f,_0x333fc5,_0x29b1c4,_0x1369bb){const _0x538204=_0x327d5f,_0x20179b=this;this[_0x538204(0x193)]={'segments':new CustomPrimitive({'commandType':_0x538204(0x1d0),'attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x333fc5),'primitiveType':Cesium$4['PrimitiveType'][_0x538204(0x1e4)],'uniformMap':{'currentParticlesPosition':function(){return _0x1369bb['particlesTextures']['currentParticlesPosition'];},'postProcessingPosition':function(){return _0x1369bb['particlesTextures']['postProcessingPosition'];},'postProcessingSpeed':function(){return _0x1369bb['particlesTextures']['postProcessingSpeed'];},'colorTable':function(){const _0x121443=_0x538204;return _0x20179b[_0x121443(0x1f5)]['colorTable'];},'aspect':function(){return _0x36068f['drawingBufferWidth']/_0x36068f['drawingBufferHeight'];},'pixelSize':function(){const _0xf94b9e=_0x538204;return _0x29b1c4[_0xf94b9e(0x221)];},'lineWidth':function(){return _0x333fc5['lineWidth'];},'particleHeight':function(){return _0x333fc5['particleHeight'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4[(_0x538204(0x257))]({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this[_0x538204(0x1e9)][_0x538204(0x183)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0x538204(0x24b)](),'primitiveType':Cesium$4[_0x538204(0x1f2)]['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){const _0x3ba674=_0x538204;return _0x20179b[_0x3ba674(0x1f5)]['segmentsColor'];},'segmentsDepthTexture':function(){return _0x20179b['textures']['segmentsDepth'];},'currentTrailsColor':function(){return _0x20179b['framebuffers']['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x20179b['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){const _0xd028b4=_0x538204;return _0x333fc5[_0xd028b4(0x19c)];}},'vertexShaderSource':new Cesium$4[(_0x538204(0x257))]({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[trailDraw_frag]}),'rawRenderState':Util[_0x538204(0x203)]({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x5db82d=_0x538204,_0x5063df=_0x20179b[_0x5db82d(0x1e9)]['currentTrails'];_0x20179b['framebuffers']['currentTrails']=_0x20179b['framebuffers'][_0x5db82d(0x217)],_0x20179b['framebuffers']['nextTrails']=_0x5063df,_0x20179b['primitives'][_0x5db82d(0x200)][_0x5db82d(0x246)][_0x5db82d(0x1ac)]=_0x20179b['framebuffers'][_0x5db82d(0x217)],_0x20179b['primitives']['trails']['clearCommand']['framebuffer']=_0x20179b['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){return _0x20179b['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x2604f6=_0x538204;return _0x20179b['framebuffers'][_0x2604f6(0x217)]['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag=_0x327d5f(0x1b5),updateSpeed_frag='uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec3\x20percent\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20\x20\x20float\x20normalization\x20=\x20length(percent);\x0a\x0a\x20\x20\x20\x20return\x20normalization;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20//\x20vec3\x20currentSpeed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20out_FragColor\x20=\x20nextSpeed;\x0a}\x0a',updatePosition_frag=_0x327d5f(0x1ed),postProcessingPosition_frag=_0x327d5f(0x22b),postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x3bcdf4,_0x38844e,_0x1dc705,_0x5aaf30){const _0x4fec87=_0x327d5f;this['data']=_0x38844e,this[_0x4fec87(0x1b7)](_0x3bcdf4,_0x38844e),this[_0x4fec87(0x23e)](_0x3bcdf4,_0x1dc705,_0x5aaf30),this['createComputingPrimitives'](_0x38844e,_0x1dc705,_0x5aaf30);}['createWindTextures'](_0x943b5a,_0x31a5d5){const _0x5de336=_0x327d5f,_0x9af38d={'context':_0x943b5a,'width':_0x31a5d5[_0x5de336(0x255)]['lon'],'height':_0x31a5d5[_0x5de336(0x255)]['lat']*(_0x31a5d5['dimensions']['lev']||0x1),'pixelFormat':Cesium$3[_0x5de336(0x22f)]['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x5de336(0x229))]({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this[_0x5de336(0x1c1)]={'U':Util['createTexture'](_0x9af38d,_0x31a5d5['U']['array']),'V':Util['createTexture'](_0x9af38d,_0x31a5d5['V']['array'])};}['createParticlesTextures'](_0x5442c1,_0x17be8e,_0x1c35fe){const _0x3fc710=_0x327d5f,_0x1605fe={'context':_0x5442c1,'width':_0x17be8e['particlesTextureSize'],'height':_0x17be8e[_0x3fc710(0x233)],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x3fc710(0x227)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x3fc710(0x227)]})},_0x240207=this['randomizeParticles'](_0x17be8e[_0x3fc710(0x1f8)],_0x1c35fe),_0x3e6345=new Float32Array(0x4*_0x17be8e['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x1605fe),'currentParticlesPosition':Util['createTexture'](_0x1605fe,_0x240207),'nextParticlesPosition':Util[_0x3fc710(0x1f4)](_0x1605fe,_0x240207),'currentParticlesSpeed':Util[_0x3fc710(0x1f4)](_0x1605fe,_0x3e6345),'nextParticlesSpeed':Util['createTexture'](_0x1605fe,_0x3e6345),'postProcessingPosition':Util[_0x3fc710(0x1f4)](_0x1605fe,_0x240207),'postProcessingSpeed':Util['createTexture'](_0x1605fe,_0x3e6345)};}['randomizeParticles'](_0x4cd67f,_0x26b400){const _0x51a8a2=_0x327d5f,_0x21164b=new Float32Array(0x4*_0x4cd67f);for(let _0x5768de=0x0;_0x5768de<_0x4cd67f;_0x5768de++){_0x21164b[0x4*_0x5768de]=Cesium$3['Math']['randomBetween'](_0x26b400['lonRange']['x'],_0x26b400['lonRange']['y']),_0x21164b[0x4*_0x5768de+0x1]=Cesium$3['Math']['randomBetween'](_0x26b400[_0x51a8a2(0x1a9)]['x'],_0x26b400['latRange']['y']),_0x21164b[0x4*_0x5768de+0x2]=Cesium$3[_0x51a8a2(0x1db)]['randomBetween'](this['data']['lev']['min'],this['data']['lev']['max']),_0x21164b[0x4*_0x5768de+0x3]=0x0;}return _0x21164b;}['destroyParticlesTextures'](){const _0x2345f9=_0x327d5f;Object['keys'](this[_0x2345f9(0x18f)])['forEach'](_0x1bb449=>{const _0x562226=_0x2345f9;this[_0x562226(0x18f)][_0x1bb449][_0x562226(0x1e8)]();});}['createComputingPrimitives'](_0x18862b,_0x3f4c11,_0x3a74cb){const _0x3d13be=_0x327d5f,_0x1c6fa8=new Cesium$3[(_0x3d13be(0x212))](_0x18862b['dimensions']['lon'],_0x18862b[_0x3d13be(0x255)][_0x3d13be(0x1c0)],_0x18862b['dimensions']['lev']),_0x47570c=new Cesium$3[(_0x3d13be(0x212))](_0x18862b[_0x3d13be(0x1ba)]['min'],_0x18862b[_0x3d13be(0x1c0)]['min'],_0x18862b[_0x3d13be(0x19a)]['min']),_0x4de53b=new Cesium$3['Cartesian3'](_0x18862b[_0x3d13be(0x1ba)][_0x3d13be(0x197)],_0x18862b[_0x3d13be(0x1c0)]['max'],_0x18862b['lev']['max']),_0x49102c=new Cesium$3['Cartesian3']((_0x4de53b['x']-_0x47570c['x'])/(_0x1c6fa8['x']-0x1),(_0x4de53b['y']-_0x47570c['y'])/(_0x1c6fa8['y']-0x1),_0x1c6fa8['z']>0x1?(_0x4de53b['z']-_0x47570c['z'])/(_0x1c6fa8['z']-0x1):0x1),_0x1dbf61=new Cesium$3['Cartesian2'](_0x18862b['U'][_0x3d13be(0x1a3)],_0x18862b['U']['max']),_0x192e23=new Cesium$3['Cartesian2'](_0x18862b['V']['min'],_0x18862b['V'][_0x3d13be(0x197)]),_0x2d01e2=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x2d01e2['windTextures']['U'];},'V':function(){return _0x2d01e2['windTextures']['V'];},'currentParticlesPosition':function(){return _0x2d01e2['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x1c6fa8;},'minimum':function(){return _0x47570c;},'maximum':function(){return _0x4de53b;},'interval':function(){return _0x49102c;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x336de0=_0x3d13be;_0x2d01e2[_0x336de0(0x193)]['getWind']['commandToExecute']['outputTexture']=_0x2d01e2['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){const _0x3e8fbe=_0x3d13be;return _0x2d01e2[_0x3e8fbe(0x18f)]['currentParticlesSpeed'];},'particlesWind':function(){return _0x2d01e2['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x1dbf61;},'vSpeedRange':function(){return _0x192e23;},'pixelSize':function(){return _0x3a74cb['pixelSize'];},'speedFactor':function(){return _0x3f4c11['speedFactor'];}},'fragmentShaderSource':new Cesium$3[(_0x3d13be(0x257))]({'sources':[updateSpeed_frag]}),'outputTexture':this[_0x3d13be(0x18f)]['nextParticlesSpeed'],'preExecute':function(){const _0x32c2ff=_0x3d13be,_0x238df5=_0x2d01e2['particlesTextures']['currentParticlesSpeed'];_0x2d01e2['particlesTextures'][_0x32c2ff(0x236)]=_0x2d01e2['particlesTextures']['postProcessingSpeed'],_0x2d01e2[_0x32c2ff(0x18f)]['postProcessingSpeed']=_0x238df5,_0x2d01e2['primitives']['updateSpeed']['commandToExecute'][_0x32c2ff(0x1a4)]=_0x2d01e2[_0x32c2ff(0x18f)]['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':_0x3d13be(0x1fb),'uniformMap':{'currentParticlesPosition':function(){return _0x2d01e2['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function(){const _0x5c840c=_0x3d13be;return _0x2d01e2[_0x5c840c(0x18f)]['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x3d13be(0x257))]({'sources':[updatePosition_frag]}),'outputTexture':this[_0x3d13be(0x18f)]['nextParticlesPosition'],'preExecute':function(){const _0x315e4f=_0x3d13be,_0x19fcd5=_0x2d01e2['particlesTextures'][_0x315e4f(0x1c2)];_0x2d01e2['particlesTextures']['currentParticlesPosition']=_0x2d01e2['particlesTextures']['postProcessingPosition'],_0x2d01e2[_0x315e4f(0x18f)]['postProcessingPosition']=_0x19fcd5,_0x2d01e2[_0x315e4f(0x193)][_0x315e4f(0x1f0)]['commandToExecute'][_0x315e4f(0x1a4)]=_0x2d01e2['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){return _0x2d01e2['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){return _0x2d01e2['particlesTextures']['nextParticlesSpeed'];},'lonRange':function(){return _0x3a74cb['lonRange'];},'latRange':function(){const _0x32caf8=_0x3d13be;return _0x3a74cb[_0x32caf8(0x1a9)];},'randomCoefficient':function(){const _0x1ea996=Math['random']();return _0x1ea996;},'dropRate':function(){return _0x3f4c11['dropRate'];},'dropRateBump':function(){return _0x3f4c11['dropRateBump'];}},'fragmentShaderSource':new Cesium$3[(_0x3d13be(0x257))]({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){const _0x54f635=_0x3d13be;_0x2d01e2['primitives'][_0x54f635(0x17a)]['commandToExecute'][_0x54f635(0x1a4)]=_0x2d01e2['particlesTextures'][_0x54f635(0x17a)];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x7286b2=_0x3d13be;return _0x2d01e2[_0x7286b2(0x18f)]['postProcessingPosition'];},'nextParticlesSpeed':function(){return _0x2d01e2['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this[_0x3d13be(0x18f)][_0x3d13be(0x1e7)],'preExecute':function(){_0x2d01e2['primitives']['postProcessingSpeed']['commandToExecute']['outputTexture']=_0x2d01e2['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace[_0x327d5f(0x22d)];function _0x3887(_0x505a9e,_0x9efc7c){const _0x539bd6=_0x539b();return _0x3887=function(_0x3887f9,_0x104667){_0x3887f9=_0x3887f9-0x173;let _0x21c11a=_0x539bd6[_0x3887f9];return _0x21c11a;},_0x3887(_0x505a9e,_0x9efc7c);}class ParticleSystem{constructor(_0x2a599d,_0x4be259,_0x3cdcb3,_0x176cbc){const _0x50658c=_0x327d5f;this['context']=_0x2a599d,_0x4be259={..._0x4be259},_0x4be259['udata']&&_0x4be259[_0x50658c(0x206)]&&(_0x4be259[_0x50658c(0x255)]={},_0x4be259['dimensions']['lon']=_0x4be259[_0x50658c(0x1cf)],_0x4be259['dimensions']['lat']=_0x4be259['rows'],_0x4be259['dimensions']['lev']=_0x4be259['lev']||0x1,_0x4be259[_0x50658c(0x1ba)]={},_0x4be259[_0x50658c(0x1ba)][_0x50658c(0x1a3)]=_0x4be259['xmin'],_0x4be259['lon']['max']=_0x4be259['xmax'],_0x4be259['lat']={},_0x4be259['lat']['min']=_0x4be259['ymin'],_0x4be259[_0x50658c(0x1c0)][_0x50658c(0x197)]=_0x4be259['ymax'],_0x4be259['lev']={},_0x4be259[_0x50658c(0x19a)][_0x50658c(0x1a3)]=_0x4be259[_0x50658c(0x24c)]??0x1,_0x4be259['lev']['max']=_0x4be259['levmax']??0x1,_0x4be259['U']={},_0x4be259['U']['array']=new Float32Array(_0x4be259[_0x50658c(0x19f)]),_0x4be259['U']['min']=_0x4be259[_0x50658c(0x247)]??Math['min'](..._0x4be259[_0x50658c(0x19f)]),_0x4be259['U'][_0x50658c(0x197)]=_0x4be259['umax']??Math[_0x50658c(0x197)](..._0x4be259['udata']),_0x4be259['V']={},_0x4be259['V']['array']=new Float32Array(_0x4be259['vdata']),_0x4be259['V']['min']=_0x4be259['vmin']??Math[_0x50658c(0x1a3)](..._0x4be259['vdata']),_0x4be259['V']['max']=_0x4be259[_0x50658c(0x211)]??Math['max'](..._0x4be259['vdata'])),this['data']=_0x4be259,this[_0x50658c(0x1de)]=_0x3cdcb3,this['viewerParameters']=_0x176cbc,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this[_0x50658c(0x1ae)],this['particlesComputing']);}['canvasResize'](_0xb26b0c){const _0xa85f75=_0x327d5f;this['particlesComputing'][_0xa85f75(0x1af)](),Object[_0xa85f75(0x231)](this['particlesComputing']['windTextures'])[_0xa85f75(0x21e)](_0x20918d=>{this['particlesComputing']['windTextures'][_0x20918d]['destroy']();}),this['particlesRendering']['textures']['colorTable'][_0xa85f75(0x1e8)](),Object['keys'](this['particlesRendering'][_0xa85f75(0x1e9)])['forEach'](_0x346363=>{const _0x225f17=_0xa85f75;this[_0x225f17(0x20d)][_0x225f17(0x1e9)][_0x346363][_0x225f17(0x1e8)]();}),this[_0xa85f75(0x191)]=_0xb26b0c,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0xa85f75(0x1de)],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0xa85f75(0x223)],this['options'],this['viewerParameters'],this[_0xa85f75(0x177)]);}[_0x327d5f(0x1b1)](){const _0x35aa3c=_0x327d5f,_0x366384=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass'][_0x35aa3c(0x1b3)]});Object['keys'](this[_0x35aa3c(0x20d)][_0x35aa3c(0x1e9)])['forEach'](_0x48dd3c=>{const _0x14e2d6=_0x35aa3c;_0x366384[_0x14e2d6(0x1ac)]=this[_0x14e2d6(0x20d)]['framebuffers'][_0x48dd3c],_0x366384['execute'](this['context']);});}['refreshParticles'](_0x161ef3){const _0x551fce=_0x327d5f;this['clearFramebuffers'](),this['particlesComputing']['destroyParticlesTextures'](),this[_0x551fce(0x177)]['createParticlesTextures'](this['context'],this[_0x551fce(0x1de)],this[_0x551fce(0x1ae)]);if(_0x161ef3){var _0x3d304b;const _0x2f6293=this['particlesRendering'][_0x551fce(0x214)](this[_0x551fce(0x1de)]);this['particlesRendering']['primitives'][_0x551fce(0x183)]['geometry']=_0x2f6293;const _0x52a6fb=Cesium$2['VertexArray'][_0x551fce(0x25b)]({'context':this[_0x551fce(0x191)],'geometry':_0x2f6293,'attributeLocations':this['particlesRendering']['primitives']['segments'][_0x551fce(0x179)],'bufferUsage':Cesium$2[_0x551fce(0x258)]['STATIC_DRAW']});(_0x3d304b=this[_0x551fce(0x20d)]['primitives'])!==null&&_0x3d304b!==void 0x0&&(_0x3d304b=_0x3d304b['segments'])!==null&&_0x3d304b!==void 0x0&&_0x3d304b[_0x551fce(0x246)]&&(this['particlesRendering']['primitives']['segments'][_0x551fce(0x246)][_0x551fce(0x237)]=_0x52a6fb);}}['setOptions'](_0x2869f7){const _0x32aaed=_0x327d5f;let _0x4a49cc=![];this['options']['maxParticles']!==_0x2869f7[_0x32aaed(0x1f8)]&&(_0x4a49cc=!![]),Object[_0x32aaed(0x231)](_0x2869f7)['forEach'](_0x352980=>{const _0x46caad=_0x32aaed;this[_0x46caad(0x1de)][_0x352980]=_0x2869f7[_0x352980];}),this['refreshParticles'](_0x4a49cc);}['applyViewerParameters'](_0x1e8f71){const _0x22c66a=_0x327d5f;Object[_0x22c66a(0x231)](_0x1e8f71)['forEach'](_0x200677=>{this['viewerParameters'][_0x200677]=_0x1e8f71[_0x200677];}),this['refreshParticles'](![]);}['destroy'](){const _0x183199=_0x327d5f;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object[_0x183199(0x231)](this['particlesComputing'][_0x183199(0x1c1)])[_0x183199(0x21e)](_0x209e86=>{const _0x3add3b=_0x183199;this['particlesComputing'][_0x3add3b(0x1c1)][_0x209e86][_0x3add3b(0x1e8)]();}),this['particlesRendering']['textures'][_0x183199(0x264)][_0x183199(0x1e8)](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x265740=>{this['particlesRendering']['framebuffers'][_0x265740]['destroy']();});for(const _0x1d23ef in this){delete this[_0x1d23ef];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':['rgb(206,255,255)']};class WindLayer extends BaseLayer$1{constructor(_0x5366cd={}){_0x5366cd={...DEF_OPTIONS,..._0x5366cd},super(_0x5366cd),this['_setOptionsHook'](_0x5366cd);}get['layer'](){return this['primitives'];}get['data'](){const _0x1bc54c=_0x327d5f;return this[_0x1bc54c(0x232)];}set[_0x327d5f(0x223)](_0x408de6){const _0x542de1=_0x327d5f;this[_0x542de1(0x190)](_0x408de6);}get['colors'](){const _0x1b5dbd=_0x327d5f;return this[_0x1b5dbd(0x1de)][_0x1b5dbd(0x240)];}set['colors'](_0x3b6ba2){const _0xc8d505=_0x327d5f;this['options']['colors']=_0x3b6ba2,this['particleSystem']&&this[_0xc8d505(0x1d6)]['setOptions']({'colors':_0x3b6ba2}),this['resize']();}['_mountedHook'](){}['_addedHook'](){const _0x192239=_0x327d5f;this['scene']=this[_0x192239(0x1d7)]['scene'],this['camera']=this['_map']['camera'],this[_0x192239(0x193)]=new Cesium$1[(_0x192239(0x215))](),this[_0x192239(0x1d7)]['scene']['primitives'][_0x192239(0x224)](this['primitives']),this['viewerParameters']={'lonRange':new Cesium$1[(_0x192239(0x1e3))](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this[_0x192239(0x248)]=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3'][_0x192239(0x20b)],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this[_0x192239(0x1b8)]=![],this['_map']['on'](mars3d__namespace[_0x192239(0x1d1)]['wheel'],this[_0x192239(0x262)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x192239(0x24f)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x192239(0x1d2)],this),this['_data']&&this['setData'](this[_0x192239(0x232)]);}['_removedHook'](){const _0x3e4687=_0x327d5f;window[_0x3e4687(0x220)](_0x3e4687(0x1ce),this[_0x3e4687(0x1ce)]),this['_map']['off'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this[_0x3e4687(0x1d7)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x3e4687(0x1d7)][_0x3e4687(0x24e)](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x3e4687(0x1d7)][_0x3e4687(0x24e)](mars3d__namespace[_0x3e4687(0x1d1)]['mouseUp'],this['_onMouseUpEvent'],this),this['_map'][_0x3e4687(0x24e)](mars3d__namespace['EventType'][_0x3e4687(0x18d)],this[_0x3e4687(0x1d2)],this),this['primitives']['removeAll'](),this['_map']['scene'][_0x3e4687(0x193)]['remove'](this['primitives']);}[_0x327d5f(0x1ce)](){const _0x5590c9=_0x327d5f;if(!this['show']||!this[_0x5590c9(0x1d6)])return;this['primitives'][_0x5590c9(0x24a)]=![],this[_0x5590c9(0x193)]['removeAll'](),this['_map'][_0x5590c9(0x1b2)](mars3d__namespace['EventType']['preRender'],this[_0x5590c9(0x239)],this);}[_0x327d5f(0x239)](_0x4c1ad7){const _0x2d7d65=_0x327d5f;this['particleSystem'][_0x2d7d65(0x209)](this['scene']['context']),this['addPrimitives'](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x3a9161){const _0x57d068=_0x327d5f;clearTimeout(this['refreshTimer']);if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this[_0x57d068(0x182)]=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}[_0x327d5f(0x24f)](_0x351fbf){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x587b8f){const _0x3ebd1a=_0x327d5f;if(!this['show']||!this[_0x3ebd1a(0x1d6)])return;this['mouse_down']&&(this['primitives']['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x42646d){if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['primitives']['show']=!![],this['mouse_down']=![],this['mouse_move']=![];}['redraw'](){if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this['primitives']['show']=!![];}['setData'](_0x43d43f){const _0x7050cf=_0x327d5f;this[_0x7050cf(0x232)]=_0x43d43f,this['particleSystem']&&this['particleSystem']['destroy'](),this[_0x7050cf(0x1d6)]=new ParticleSystem(this['scene'][_0x7050cf(0x191)],_0x43d43f,this[_0x7050cf(0x205)](),this['viewerParameters']),this['addPrimitives']();}['_setOptionsHook'](_0x2cf795,_0x3526df){const _0xd9c0f3=_0x327d5f;if(_0x2cf795)for(const _0x568ba7 in _0x2cf795){this[_0x568ba7]=_0x2cf795[_0x568ba7];}this[_0xd9c0f3(0x1d6)]&&this['particleSystem']['setOptions'](this['getOptions']());}[_0x327d5f(0x205)](){const _0x45ae4c=_0x327d5f,_0x369056=Math[_0x45ae4c(0x21a)](Math['sqrt'](this['particlesNumber']));return this['particlesNumber']=_0x369056*_0x369056,{'particlesTextureSize':_0x369056,'maxParticles':this[_0x45ae4c(0x20a)],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this[_0x45ae4c(0x1a5)],'colors':this['colors']};}[_0x327d5f(0x20e)](){const _0x24655f=_0x327d5f;this['primitives'][_0x24655f(0x224)](this[_0x24655f(0x1d6)]['particlesComputing'][_0x24655f(0x193)][_0x24655f(0x18c)]),this['primitives']['add'](this[_0x24655f(0x1d6)][_0x24655f(0x177)]['primitives'][_0x24655f(0x20f)]),this[_0x24655f(0x193)]['add'](this[_0x24655f(0x1d6)]['particlesComputing']['primitives'][_0x24655f(0x1f0)]),this['primitives']['add'](this['particleSystem'][_0x24655f(0x177)]['primitives'][_0x24655f(0x17a)]),this['primitives'][_0x24655f(0x224)](this['particleSystem']['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives'][_0x24655f(0x224)](this[_0x24655f(0x1d6)]['particlesRendering'][_0x24655f(0x193)]['segments']),this['primitives'][_0x24655f(0x224)](this['particleSystem'][_0x24655f(0x20d)][_0x24655f(0x193)][_0x24655f(0x200)]),this['primitives'][_0x24655f(0x224)](this[_0x24655f(0x1d6)]['particlesRendering']['primitives']['screen']);}['updateViewerParameters'](){const _0x468bdf=_0x327d5f;let _0xfaeef1=this[_0x468bdf(0x1a2)]['computeViewRectangle'](this[_0x468bdf(0x1aa)]['globe'][_0x468bdf(0x19d)]);if(!_0xfaeef1){const _0x66c69f=this['_map'][_0x468bdf(0x1e6)]();_0xfaeef1=Cesium$1['Rectangle']['fromDegrees'](_0x66c69f[_0x468bdf(0x25a)],_0x66c69f['ymin'],_0x66c69f['xmax'],_0x66c69f['ymax']);}const _0xe0ddf3=Util['viewRectangleToLonLatRange'](_0xfaeef1);this['viewerParameters']['lonRange']['x']=_0xe0ddf3['lon']['min'],this['viewerParameters']['lonRange']['y']=_0xe0ddf3[_0x468bdf(0x1ba)]['max'],this['viewerParameters']['latRange']['x']=_0xe0ddf3['lat']['min'],this['viewerParameters']['latRange']['y']=_0xe0ddf3['lat']['max'];const _0x53fb90=this['camera']['getPixelSize'](this[_0x468bdf(0x248)],this[_0x468bdf(0x1aa)][_0x468bdf(0x1e5)],this['scene']['drawingBufferHeight']);_0x53fb90>0x0&&(this['viewerParameters'][_0x468bdf(0x221)]=_0x53fb90);}}mars3d__namespace[_0x327d5f(0x1c7)][_0x327d5f(0x21d)]('wind',WindLayer),mars3d__namespace[_0x327d5f(0x259)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0x4a7bfe=_0x327d5f;this['lng']=null,this['lat']=null,this[_0x4a7bfe(0x222)]=null,this['tlat']=null,this['age']=null,this['speed']=null;}[_0x327d5f(0x1e8)](){for(const _0x8b26fd in this){delete this[_0x8b26fd];}}}class CanvasWindField{constructor(_0x3f480a){this['setOptions'](_0x3f480a);}get[_0x327d5f(0x245)](){const _0x1a3593=_0x327d5f;return this[_0x1a3593(0x226)];}set[_0x327d5f(0x245)](_0x441fa1){const _0x36f47a=_0x327d5f;this['_speedRate']=(0x64-(_0x441fa1>0x63?0x63:_0x441fa1))*0x64,this[_0x36f47a(0x234)]=[(this['xmax']-this[_0x36f47a(0x25a)])/this['_speedRate'],(this['ymax']-this[_0x36f47a(0x22a)])/this['_speedRate']];}get[_0x327d5f(0x1ff)](){return this['_maxAge'];}set[_0x327d5f(0x1ff)](_0x403a03){const _0x20be6c=_0x327d5f;this[_0x20be6c(0x261)]=_0x403a03;}['setOptions'](_0x272718){const _0x153245=_0x327d5f;this['options']=_0x272718,this['maxAge']=_0x272718[_0x153245(0x1ff)]||0x78,this['speedRate']=_0x272718['speedRate']||0x32,this[_0x153245(0x1b4)]=[];const _0x32c6d5=_0x272718[_0x153245(0x20a)]||0x1000;for(let _0x280f1b=0x0;_0x280f1b<_0x32c6d5;_0x280f1b++){const _0x4a7cfc=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x4a7cfc);}}[_0x327d5f(0x210)](_0x3b5fbf){const _0x261ca8=_0x327d5f;this['rows']=_0x3b5fbf['rows'],this['cols']=_0x3b5fbf[_0x261ca8(0x1cf)],this['xmin']=_0x3b5fbf[_0x261ca8(0x25a)],this['xmax']=_0x3b5fbf['xmax'],this['ymin']=_0x3b5fbf[_0x261ca8(0x22a)],this[_0x261ca8(0x235)]=_0x3b5fbf['ymax'],this['grid']=[];const _0x25d358=_0x3b5fbf['udata'],_0x4f6a04=_0x3b5fbf[_0x261ca8(0x206)];let _0x5d2ddd=![];_0x25d358['length']===this['rows']&&_0x25d358[0x0]['length']===this[_0x261ca8(0x1cf)]&&(_0x5d2ddd=!![]);let _0x5b4dbd=0x0,_0x495b65=null,_0x26b18a=null;for(let _0x828293=0x0;_0x828293<this['rows'];_0x828293++){_0x495b65=[];for(let _0x387abe=0x0;_0x387abe<this['cols'];_0x387abe++,_0x5b4dbd++){_0x5d2ddd?_0x26b18a=this[_0x261ca8(0x25e)](_0x25d358[_0x828293][_0x387abe],_0x4f6a04[_0x828293][_0x387abe]):_0x26b18a=this[_0x261ca8(0x25e)](_0x25d358[_0x5b4dbd],_0x4f6a04[_0x5b4dbd]),_0x495b65['push'](_0x26b18a);}this['grid']['push'](_0x495b65);}this['options'][_0x261ca8(0x1c4)]&&this[_0x261ca8(0x213)][_0x261ca8(0x1c3)]();}['clear'](){const _0x436874=_0x327d5f;delete this['rows'],delete this['cols'],delete this[_0x436874(0x25a)],delete this['xmax'],delete this[_0x436874(0x22a)],delete this[_0x436874(0x235)],delete this[_0x436874(0x213)],delete this['particles'];}['toGridXY'](_0x7eb4ac,_0x2bfd8c){const _0x324ccd=_0x327d5f,_0x4d252e=(_0x7eb4ac-this['xmin'])/(this['xmax']-this[_0x324ccd(0x25a)])*(this['cols']-0x1),_0x2307d2=(this['ymax']-_0x2bfd8c)/(this['ymax']-this['ymin'])*(this[_0x324ccd(0x1c8)]-0x1);return[_0x4d252e,_0x2307d2];}[_0x327d5f(0x1d9)](_0x513d70,_0x63af1e){const _0x52bd22=_0x327d5f;if(_0x513d70<0x0||_0x513d70>=this['cols']||_0x63af1e>=this['rows'])return[0x0,0x0,0x0];const _0x4a6b13=Math['floor'](_0x513d70),_0x2cdce9=Math['floor'](_0x63af1e);if(_0x4a6b13===_0x513d70&&_0x2cdce9===_0x63af1e)return this[_0x52bd22(0x213)][_0x63af1e][_0x513d70];const _0x151eac=_0x4a6b13+0x1,_0xa3c21d=_0x2cdce9+0x1,_0x291e7b=this['getUVByXY'](_0x4a6b13,_0x2cdce9),_0x421288=this['getUVByXY'](_0x151eac,_0x2cdce9),_0x5ee280=this[_0x52bd22(0x1d9)](_0x4a6b13,_0xa3c21d),_0x650e61=this[_0x52bd22(0x1d9)](_0x151eac,_0xa3c21d);let _0x445e6c=null;try{_0x445e6c=this[_0x52bd22(0x17e)](_0x513d70-_0x4a6b13,_0x63af1e-_0x2cdce9,_0x291e7b,_0x421288,_0x5ee280,_0x650e61);}catch(_0x3a6c88){console[_0x52bd22(0x207)](_0x513d70,_0x63af1e);}return _0x445e6c;}['_bilinearInterpolation'](_0x15c414,_0x2e2e48,_0x4693dc,_0x6d849d,_0x45e915,_0x5a0cf1){const _0x306658=0x1-_0x15c414,_0x1996f2=0x1-_0x2e2e48,_0x126014=_0x306658*_0x1996f2,_0x4c3a00=_0x15c414*_0x1996f2,_0x2d656b=_0x306658*_0x2e2e48,_0x4307c3=_0x15c414*_0x2e2e48,_0x130961=_0x4693dc[0x0]*_0x126014+_0x6d849d[0x0]*_0x4c3a00+_0x45e915[0x0]*_0x2d656b+_0x5a0cf1[0x0]*_0x4307c3,_0x45be5b=_0x4693dc[0x1]*_0x126014+_0x6d849d[0x1]*_0x4c3a00+_0x45e915[0x1]*_0x2d656b+_0x5a0cf1[0x1]*_0x4307c3;return this['_calcUV'](_0x130961,_0x45be5b);}['_calcUV'](_0x141cc9,_0x269cc8){return[+_0x141cc9,+_0x269cc8,Math['sqrt'](_0x141cc9*_0x141cc9+_0x269cc8*_0x269cc8)];}['getUVByPoint'](_0xb5ee0b,_0x32facf){if(!this['isInExtent'](_0xb5ee0b,_0x32facf))return null;const _0x35e35f=this['toGridXY'](_0xb5ee0b,_0x32facf),_0x459119=this['getUVByXY'](_0x35e35f[0x0],_0x35e35f[0x1]);return _0x459119;}['isInExtent'](_0x4eea62,_0x11de61){const _0x18d4a2=_0x327d5f;return _0x4eea62>=this['xmin']&&_0x4eea62<=this[_0x18d4a2(0x25d)]&&_0x11de61>=this[_0x18d4a2(0x22a)]&&_0x11de61<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x5229a5=_0x327d5f,_0x52d491=fRandomByfloat(this['xmin'],this[_0x5229a5(0x25d)]),_0x26755a=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x26755a,'lng':_0x52d491};}[_0x327d5f(0x1ca)](){const _0x337616=_0x327d5f;let _0x27c9b0,_0x20538f,_0xe2532a;for(let _0xe117c6=0x0,_0x2bb00c=this[_0x337616(0x1b4)]['length'];_0xe117c6<_0x2bb00c;_0xe117c6++){let _0x3ea32a=this[_0x337616(0x1b4)][_0xe117c6];_0x3ea32a[_0x337616(0x1f3)]<=0x0&&(_0x3ea32a=this[_0x337616(0x185)](_0x3ea32a));if(_0x3ea32a['age']>0x0){const _0x49834a=_0x3ea32a[_0x337616(0x222)],_0x19a417=_0x3ea32a['tlat'];_0xe2532a=this[_0x337616(0x1d5)](_0x49834a,_0x19a417),_0xe2532a?(_0x27c9b0=_0x49834a+this[_0x337616(0x234)][0x0]*_0xe2532a[0x0],_0x20538f=_0x19a417+this['_calc_speedRate'][0x1]*_0xe2532a[0x1],_0x3ea32a['lng']=_0x49834a,_0x3ea32a['lat']=_0x19a417,_0x3ea32a['tlng']=_0x27c9b0,_0x3ea32a['tlat']=_0x20538f,_0x3ea32a[_0x337616(0x1ec)]=_0xe2532a[0x2],_0x3ea32a['age']--):_0x3ea32a['age']=0x0;}}return this['particles'];}['_randomParticle'](_0x18c911){const _0x1e3f02=_0x327d5f;let _0x35cb42,_0x496607;for(let _0x1f1fbf=0x0;_0x1f1fbf<0x1e;_0x1f1fbf++){_0x35cb42=this['getRandomLatLng'](),_0x496607=this['getUVByPoint'](_0x35cb42['lng'],_0x35cb42[_0x1e3f02(0x1c0)]);if(_0x496607&&_0x496607[0x2]>0x0)break;}if(!_0x496607)return _0x18c911;const _0x51fcd5=_0x35cb42['lng']+this['_calc_speedRate'][0x0]*_0x496607[0x0],_0x5deb3b=_0x35cb42[_0x1e3f02(0x1c0)]+this['_calc_speedRate'][0x1]*_0x496607[0x1];return _0x18c911[_0x1e3f02(0x23c)]=_0x35cb42['lng'],_0x18c911[_0x1e3f02(0x1c0)]=_0x35cb42[_0x1e3f02(0x1c0)],_0x18c911[_0x1e3f02(0x222)]=_0x51fcd5,_0x18c911['tlat']=_0x5deb3b,_0x18c911['age']=Math['round'](Math[_0x1e3f02(0x18b)]()*this['maxAge']),_0x18c911[_0x1e3f02(0x1ec)]=_0x496607[0x2],_0x18c911;}[_0x327d5f(0x1e8)](){for(const _0x5a50f7 in this){delete this[_0x5a50f7];}}}function fRandomByfloat(_0x2d3d2a,_0x359ab7){return _0x2d3d2a+Math['random']()*(_0x359ab7-_0x2d3d2a);}const Cesium=mars3d__namespace[_0x327d5f(0x22d)],BaseLayer=mars3d__namespace['layer'][_0x327d5f(0x186)];class CanvasWindLayer extends BaseLayer{constructor(_0x4597de={}){const _0x16b619=_0x327d5f;super(_0x4597de),this['_setOptionsHook'](_0x4597de),this['canvas']=null,_0x4597de['colors']&&_0x4597de[_0x16b619(0x17c)]&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x4597de));}['_setOptionsHook'](_0x1e06d6,_0x5d32b1){const _0x5bb498=_0x327d5f;this['frameTime']=0x3e8/(_0x1e06d6['frameRate']||0xa),this['_pointerEvents']=this['options'][_0x5bb498(0x199)]??![],this['color']=_0x1e06d6[_0x5bb498(0x1bc)]||'#ffffff',this['lineWidth']=_0x1e06d6[_0x5bb498(0x1a5)]||0x1,this[_0x5bb498(0x256)]=_0x1e06d6[_0x5bb498(0x256)]??0x0,this[_0x5bb498(0x1c4)]=_0x1e06d6[_0x5bb498(0x1c4)]??![],this['windField']&&this['windField'][_0x5bb498(0x23f)](_0x1e06d6);}get['layer'](){return this['canvas'];}get[_0x327d5f(0x1ee)](){const _0x1351fa=_0x327d5f;return this['_map']['scene'][_0x1351fa(0x201)]['clientWidth'];}get['canvasHeight'](){const _0x52b15a=_0x327d5f;return this[_0x52b15a(0x1d7)]['scene'][_0x52b15a(0x201)]['clientHeight'];}get['pointerEvents'](){const _0x1f883c=_0x327d5f;return this[_0x1f883c(0x17b)];}set['pointerEvents'](_0x2f93ad){const _0x5c855c=_0x327d5f;this['_pointerEvents']=_0x2f93ad;if(!this['canvas'])return;_0x2f93ad?this['canvas']['style'][_0x5c855c(0x1dc)]=_0x5c855c(0x17f):this['canvas']['style']['pointer-events']='none';}get['particlesNumber'](){const _0x3fdc64=_0x327d5f;return this[_0x3fdc64(0x1de)]['particlesNumber'];}set[_0x327d5f(0x20a)](_0x1633b5){const _0x324e9d=_0x327d5f;this[_0x324e9d(0x1de)][_0x324e9d(0x20a)]=_0x1633b5,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x327d5f(0x245)](){const _0x53d02a=_0x327d5f;return this[_0x53d02a(0x1de)][_0x53d02a(0x245)];}set['speedRate'](_0x1fdff6){const _0x52eefa=_0x327d5f;this['options'][_0x52eefa(0x245)]=_0x1fdff6,this[_0x52eefa(0x1ef)]&&(this[_0x52eefa(0x1ef)]['speedRate']=_0x1fdff6);}get[_0x327d5f(0x1ff)](){return this['options']['maxAge'];}set['maxAge'](_0x3314f6){const _0x48e881=_0x327d5f;this['options']['maxAge']=_0x3314f6,this['windField']&&(this['windField'][_0x48e881(0x1ff)]=_0x3314f6);}get[_0x327d5f(0x223)](){const _0x184821=_0x327d5f;return this[_0x184821(0x1b9)];}set[_0x327d5f(0x223)](_0x19e7d3){this['setData'](_0x19e7d3);}['_showHook'](_0x2815a5){const _0x1596da=_0x327d5f;_0x2815a5?this['_addedHook']():(this[_0x1596da(0x1b9)]&&(this[_0x1596da(0x1de)]['data']=this['windData']),this[_0x1596da(0x1e2)]());}[_0x327d5f(0x19e)](){const _0x3c0ef4=_0x327d5f;this[_0x3c0ef4(0x1de)][_0x3c0ef4(0x1a8)]?this[_0x3c0ef4(0x1b6)]():this[_0x3c0ef4(0x1ef)]=new CanvasWindField(this[_0x3c0ef4(0x1de)]);}['_addedHook'](){const _0x4a3144=_0x327d5f;this['canvas']=this['_createCanvas'](),this['canvasContext']=this[_0x4a3144(0x201)]['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this[_0x4a3144(0x1de)][_0x4a3144(0x223)]&&this['setData'](this['options'][_0x4a3144(0x223)]);}[_0x327d5f(0x1e2)](){const _0x28a464=_0x327d5f;this[_0x28a464(0x1f7)](),this['unbindEvent'](),this['canvas']&&(this['_map']['container'][_0x28a464(0x216)](this['canvas']),delete this['canvas']);}[_0x327d5f(0x21b)](){const _0x3cfa74=_0x327d5f,_0x4c7345=mars3d__namespace['DomUtil'][_0x3cfa74(0x204)]('canvas',_0x3cfa74(0x1d8),this['_map']['container']);return _0x4c7345[_0x3cfa74(0x23d)]['position']='absolute',_0x4c7345['style'][_0x3cfa74(0x19b)]='0px',_0x4c7345[_0x3cfa74(0x23d)][_0x3cfa74(0x1da)]='0px',_0x4c7345['style']['width']=this['_map']['scene'][_0x3cfa74(0x201)]['clientWidth']+'px',_0x4c7345['style']['height']=this[_0x3cfa74(0x1d7)]['scene'][_0x3cfa74(0x201)]['clientHeight']+'px',_0x4c7345[_0x3cfa74(0x23d)][_0x3cfa74(0x199)]=this['_pointerEvents']?'auto':'none',_0x4c7345['style'][_0x3cfa74(0x187)]=this['options']['zIndex']??0x9,_0x4c7345['width']=this[_0x3cfa74(0x1d7)][_0x3cfa74(0x1aa)]['canvas']['clientWidth'],_0x4c7345['height']=this[_0x3cfa74(0x1d7)]['scene'][_0x3cfa74(0x201)][_0x3cfa74(0x230)],_0x4c7345;}['resize'](){const _0x55197a=_0x327d5f;this[_0x55197a(0x201)]&&(this['canvas']['style']['width']=this[_0x55197a(0x1d7)]['scene']['canvas']['clientWidth']+'px',this['canvas']['style']['height']=this['_map']['scene'][_0x55197a(0x201)][_0x55197a(0x230)]+'px',this['canvas']['width']=this['_map']['scene'][_0x55197a(0x201)]['clientWidth'],this[_0x55197a(0x201)]['height']=this['_map'][_0x55197a(0x1aa)]['canvas']['clientHeight']);}['bindEvent'](){const _0x1b9b6b=_0x327d5f,_0xa784c0=this;let _0x540c5c=Date[_0x1b9b6b(0x1a6)]();(function _0x29b513(){const _0x1af060=_0x1b9b6b;_0xa784c0['animateFrame']=window['requestAnimationFrame'](_0x29b513);if(_0xa784c0['show']&&_0xa784c0[_0x1af060(0x1ef)]){const _0x53640b=Date['now'](),_0x5d3a74=_0x53640b-_0x540c5c;_0x5d3a74>_0xa784c0[_0x1af060(0x1ea)]&&(_0x540c5c=_0x53640b-_0x5d3a74%_0xa784c0['frameTime'],_0xa784c0['update']());}}(),window['addEventListener'](_0x1b9b6b(0x1ce),this['resize']['bind'](this),![]),this[_0x1b9b6b(0x195)]=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace[_0x1b9b6b(0x1d1)]['wheel'],this[_0x1b9b6b(0x262)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x1b9b6b(0x1d7)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){const _0x50ae0b=_0x327d5f;window['cancelAnimationFrame'](this[_0x50ae0b(0x1eb)]),delete this[_0x50ae0b(0x1eb)],window[_0x50ae0b(0x220)]('resize',this['resize']),this['options']['mouseHidden']&&(this['_map'][_0x50ae0b(0x24e)](mars3d__namespace['EventType']['wheel'],this[_0x50ae0b(0x262)],this),this[_0x50ae0b(0x1d7)]['off'](mars3d__namespace[_0x50ae0b(0x1d1)]['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x50ae0b(0x1cd)],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace[_0x50ae0b(0x1d1)]['mouseMove'],this['_onMouseMoveEvent'],this));}[_0x327d5f(0x262)](_0x459782){const _0x5a1511=_0x327d5f;clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;this['canvas']['style']['visibility']='hidden',this[_0x5a1511(0x182)]=setTimeout(()=>{const _0x17f4db=_0x5a1511;if(!this['show'])return;this[_0x17f4db(0x194)](),this[_0x17f4db(0x201)][_0x17f4db(0x23d)][_0x17f4db(0x218)]=_0x17f4db(0x244);},0xc8);}['_onMouseDownEvent'](_0x20e84a){const _0x761044=_0x327d5f;this[_0x761044(0x195)]=!![],this['_map'][_0x761044(0x24e)](mars3d__namespace['EventType'][_0x761044(0x18d)],this['_onMouseMoveEvent'],this),this[_0x761044(0x1d7)]['on'](mars3d__namespace['EventType'][_0x761044(0x18d)],this[_0x761044(0x1d2)],this);}['_onMouseMoveEvent'](_0x3fb82a){const _0xb4ec6a=_0x327d5f;if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this['canvas']['style']['visibility']=_0xb4ec6a(0x249),this['mouse_move']=!![]);}[_0x327d5f(0x1bd)](_0x1ad136){const _0x51e0b7=_0x327d5f;if(!this[_0x51e0b7(0x24a)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x51e0b7(0x1d2)],this),this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['canvas'][_0x51e0b7(0x23d)]['visibility']='visible',this[_0x51e0b7(0x195)]=![],this['mouse_move']=![];}['setData'](_0x2253d0){const _0x8a27dc=_0x327d5f;this[_0x8a27dc(0x1f7)](),this[_0x8a27dc(0x1b9)]=_0x2253d0,this['windField'][_0x8a27dc(0x210)](_0x2253d0),this[_0x8a27dc(0x194)]();}['redraw'](){const _0x18c469=_0x327d5f;if(!this['show'])return;this['windField'][_0x18c469(0x23f)](this['options']),this[_0x18c469(0x1e1)]();}['update'](){const _0x15ba5f=_0x327d5f;if(this['_updateIng'])return;this[_0x15ba5f(0x21c)]=!![];if(this['worker'])this['windField'][_0x15ba5f(0x1e1)]();else{const _0xf00f6b=this[_0x15ba5f(0x1ef)][_0x15ba5f(0x1ca)]();this['_drawLines'](_0xf00f6b);}this['_updateIng']=![];}['_drawLines'](_0x2ee3d8){const _0x317f25=_0x327d5f;this['canvasContext']['globalCompositeOperation']=_0x317f25(0x175),this['canvasContext']['fillRect'](0x0,0x0,this[_0x317f25(0x1ee)],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter',this['canvasContext'][_0x317f25(0x1a1)]=0.9;const _0x478048=this['_map'][_0x317f25(0x1aa)]['mode']!==Cesium[_0x317f25(0x1fe)]['SCENE3D'],_0x4c4a1a=this[_0x317f25(0x1ee)]*0.25;if(this['_colorRamp'])for(let _0x31b0a8=0x0,_0x1e4af0=_0x2ee3d8['length'];_0x31b0a8<_0x1e4af0;_0x31b0a8++){const _0x229802=_0x2ee3d8[_0x31b0a8],_0x4682fe=this['_tomap'](_0x229802[_0x317f25(0x23c)],_0x229802[_0x317f25(0x1c0)],_0x229802),_0xf57fc7=this['_tomap'](_0x229802['tlng'],_0x229802['tlat'],_0x229802);if(!_0x4682fe||!_0xf57fc7)continue;if(_0x478048&&Math['abs'](_0x4682fe[0x0]-_0xf57fc7[0x0])>=_0x4c4a1a)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this['canvasContext'][_0x317f25(0x24d)]=this['_colorRamp']['getColor'](_0x229802['speed']),this['canvasContext']['moveTo'](_0x4682fe[0x0],_0x4682fe[0x1]),this['canvasContext']['lineTo'](_0xf57fc7[0x0],_0xf57fc7[0x1]),this['canvasContext']['stroke']();}else{this['canvasContext']['beginPath'](),this['canvasContext'][_0x317f25(0x1a5)]=this[_0x317f25(0x1a5)],this['canvasContext']['strokeStyle']=this['color'];for(let _0xb2ee38=0x0,_0xf2f198=_0x2ee3d8[_0x317f25(0x1be)];_0xb2ee38<_0xf2f198;_0xb2ee38++){const _0x3a3330=_0x2ee3d8[_0xb2ee38],_0x9e907d=this[_0x317f25(0x238)](_0x3a3330['lng'],_0x3a3330['lat'],_0x3a3330),_0xee520f=this[_0x317f25(0x238)](_0x3a3330['tlng'],_0x3a3330[_0x317f25(0x1dd)],_0x3a3330);if(!_0x9e907d||!_0xee520f)continue;if(_0x478048&&Math['abs'](_0x9e907d[0x0]-_0xee520f[0x0])>=_0x4c4a1a)continue;this[_0x317f25(0x176)]['moveTo'](_0x9e907d[0x0],_0x9e907d[0x1]),this['canvasContext']['lineTo'](_0xee520f[0x0],_0xee520f[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0xb99157,_0x5f1e13,_0xfdf5d1){const _0x1266b8=_0x327d5f,_0x9ea0e6=Cesium['Cartesian3'][_0x1266b8(0x1ad)](_0xb99157,_0x5f1e13,this[_0x1266b8(0x256)]),_0x305cdc=this[_0x1266b8(0x1d7)]['scene'];if(_0x305cdc[_0x1266b8(0x1bf)]===Cesium['SceneMode']['SCENE3D']){const _0x24e714=new Cesium['EllipsoidalOccluder'](_0x305cdc['globe']['ellipsoid'],_0x305cdc['camera']['positionWC']),_0x4118c9=_0x24e714['isPointVisible'](_0x9ea0e6);if(!_0x4118c9)return _0xfdf5d1['age']=0x0,null;}const _0x1d7a77=Cesium['SceneTransforms']['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x9ea0e6);return _0x1d7a77?[_0x1d7a77['x'],_0x1d7a77['y']]:null;}['clear'](){const _0x1e2905=_0x327d5f;this['windField'][_0x1e2905(0x1f7)](),delete this['windData'];}['initWorker'](){const _0x361aff=_0x327d5f;this['worker']=new Worker(this['options'][_0x361aff(0x1a8)]),this[_0x361aff(0x1a8)][_0x361aff(0x241)]=_0x2d361f=>{const _0x161372=_0x361aff;this['_drawLines'](_0x2d361f['data']['particles']),this[_0x161372(0x198)]=![];},this['windField']={'init':_0x69d95f=>{const _0x540721=_0x361aff;this['worker']['postMessage']({'type':_0x540721(0x21f),'options':_0x69d95f});},'setOptions':_0x1b2cd7=>{const _0x36a705=_0x361aff;this['worker'][_0x36a705(0x22c)]({'type':'setOptions','options':_0x1b2cd7});},'setDate':_0x3b7a98=>{const _0xca6885=_0x361aff;this[_0xca6885(0x1a8)][_0xca6885(0x22c)]({'type':_0xca6885(0x210),'data':_0x3b7a98});},'update':()=>{const _0x2db121=_0x361aff;if(this[_0x2db121(0x198)])return;this[_0x2db121(0x198)]=!![],this['worker']['postMessage']({'type':'update'});},'clear':()=>{const _0x229384=_0x361aff;this['worker']['postMessage']({'type':_0x229384(0x1f7)});}},this[_0x361aff(0x1ef)]['init'](this['options']);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace[_0x327d5f(0x259)][_0x327d5f(0x242)]=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x327d5f(0x1fd)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x327d5f(0x1fd)]=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
14
+ 'use strict';const _0x589cd8=_0x38cd;(function(_0xd01413,_0x3a35eb){const _0x4dade2=_0x38cd,_0x24910d=_0xd01413();while(!![]){try{const _0x44422c=-parseInt(_0x4dade2(0x235))/0x1+-parseInt(_0x4dade2(0x196))/0x2+parseInt(_0x4dade2(0x17d))/0x3+parseInt(_0x4dade2(0x1d7))/0x4*(parseInt(_0x4dade2(0x192))/0x5)+-parseInt(_0x4dade2(0x23b))/0x6*(-parseInt(_0x4dade2(0x1f7))/0x7)+-parseInt(_0x4dade2(0x1df))/0x8+parseInt(_0x4dade2(0x240))/0x9;if(_0x44422c===_0x3a35eb)break;else _0x24910d['push'](_0x24910d['shift']());}catch(_0xa401a6){_0x24910d['push'](_0x24910d['shift']());}}}(_0x1821,0x8f498));function _interopNamespace(_0x2c40e8){const _0x23cf51=_0x38cd;if(_0x2c40e8&&_0x2c40e8[_0x23cf51(0x214)])return _0x2c40e8;var _0x38d35d=Object['create'](null);return _0x2c40e8&&Object['keys'](_0x2c40e8)[_0x23cf51(0x1b4)](function(_0x1cf0cc){if(_0x1cf0cc!=='default'){var _0x574443=Object['getOwnPropertyDescriptor'](_0x2c40e8,_0x1cf0cc);Object['defineProperty'](_0x38d35d,_0x1cf0cc,_0x574443['get']?_0x574443:{'enumerable':!![],'get':function(){return _0x2c40e8[_0x1cf0cc];}});}}),_0x38d35d[_0x23cf51(0x243)]=_0x2c40e8,_0x38d35d;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x60ace1,_0x1161cb){const _0xd5fc40=_0x60ace1*Math['cos'](Cesium$7['Math']['toRadians'](_0x1161cb));return _0xd5fc40;}function getV(_0x361792,_0x574f72){const _0x39a245=_0x361792*Math['sin'](Cesium$7['Math']['toRadians'](_0x574f72));return _0x39a245;}function _0x38cd(_0x4db144,_0x36dac2){const _0x182144=_0x1821();return _0x38cd=function(_0x38cd2e,_0x5cde6c){_0x38cd2e=_0x38cd2e-0x178;let _0xecf315=_0x182144[_0x38cd2e];return _0xecf315;},_0x38cd(_0x4db144,_0x36dac2);}function getSpeed(_0x297b2f,_0x828a8d){const _0x892893=_0x38cd,_0xd419ae=Math[_0x892893(0x1f8)](Math[_0x892893(0x1db)](_0x297b2f,0x2)+Math['pow'](_0x828a8d,0x2));return _0xd419ae;}function getDirection(_0x5f3896,_0x217150){const _0xc15aa6=_0x38cd;let _0x5944a5=Cesium$7[_0xc15aa6(0x19c)][_0xc15aa6(0x220)](Math['atan2'](_0x217150,_0x5f3896));return _0x5944a5+=_0x5944a5<0x0?0x168:0x0,_0x5944a5;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x8848d9){const _0x24d32f=_0x38cd;this['commandType']=_0x8848d9['commandType'],this[_0x24d32f(0x242)]=_0x8848d9['geometry'],this['attributeLocations']=_0x8848d9['attributeLocations'],this['primitiveType']=_0x8848d9[_0x24d32f(0x218)],this['uniformMap']=_0x8848d9['uniformMap'],this['vertexShaderSource']=_0x8848d9['vertexShaderSource'],this[_0x24d32f(0x261)]=_0x8848d9['fragmentShaderSource'],this['rawRenderState']=_0x8848d9[_0x24d32f(0x1e0)],this[_0x24d32f(0x1cf)]=_0x8848d9[_0x24d32f(0x1cf)],this['outputTexture']=_0x8848d9['outputTexture'],this['autoClear']=_0x8848d9['autoClear']??![],this['preExecute']=_0x8848d9['preExecute'],this['show']=!![],this['commandToExecute']=undefined,this[_0x24d32f(0x213)]=undefined,this['autoClear']&&(this[_0x24d32f(0x213)]=new Cesium$6['ClearCommand']({'color':new Cesium$6[(_0x24d32f(0x1d8))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x24d32f(0x1fa)]['OPAQUE']}));}[_0x589cd8(0x265)](_0x35dc1d){const _0x16f745=_0x589cd8;switch(this['commandType']){case'Draw':{const _0x4fe10e=Cesium$6['VertexArray']['fromGeometry']({'context':_0x35dc1d,'geometry':this['geometry'],'attributeLocations':this[_0x16f745(0x1f0)],'bufferUsage':Cesium$6[_0x16f745(0x18c)][_0x16f745(0x1b8)]}),_0x49d66b=Cesium$6['ShaderProgram']['fromCache']({'context':_0x35dc1d,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0xb86b03=Cesium$6['RenderState'][_0x16f745(0x1d6)](this['rawRenderState']);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x49d66b,'vertexArray':_0x4fe10e,'modelMatrix':Cesium$6['Matrix4'][_0x16f745(0x1d3)],'renderState':_0xb86b03,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this[_0x16f745(0x1cf)],'pass':Cesium$6['Pass']['OPAQUE'],'pickOnly':!![],'owner':this});}case _0x16f745(0x1b7):{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this[_0x16f745(0x1de)],'outputTexture':this['outputTexture'],'persists':!![]});}}}[_0x589cd8(0x1b0)](_0x34bd5e,_0x5ea161){const _0x35cdc8=_0x589cd8;this['geometry']=_0x5ea161;const _0x12a871=Cesium$6['VertexArray']['fromGeometry']({'context':_0x34bd5e,'geometry':this['geometry'],'attributeLocations':this[_0x35cdc8(0x1f0)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x12a871;}[_0x589cd8(0x1ea)](_0x1f2024){const _0x36d441=_0x589cd8;if(!this['show'])return;if(_0x1f2024['mode']!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6[_0x36d441(0x185)](this['commandToExecute'])&&(this['commandToExecute']=this[_0x36d441(0x265)](_0x1f2024[_0x36d441(0x1be)])),Cesium$6['defined'](this['preExecute'])&&this['preExecute'](),Cesium$6[_0x36d441(0x185)](this[_0x36d441(0x213)])&&_0x1f2024['commandList']['push'](this[_0x36d441(0x213)]),_0x1f2024['commandList']['push'](this['commandToExecute']);}[_0x589cd8(0x210)](){return![];}['destroy'](){const _0x774a09=_0x589cd8;if(this['clearCommand']){var _0x400ac,_0x3bf6fa;(_0x400ac=this['clearCommand'])!==null&&_0x400ac!==void 0x0&&_0x400ac[_0x774a09(0x18b)]&&this['clearCommand']['vertexArray']['destroy'](),(_0x3bf6fa=this['clearCommand'])!==null&&_0x3bf6fa!==void 0x0&&_0x3bf6fa[_0x774a09(0x22d)]&&this['clearCommand']['shaderProgram']['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this[_0x774a09(0x25b)]['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this['commandToExecute']['shaderProgram']&&this['commandToExecute']['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace[_0x589cd8(0x195)],Util=(function(){const _0x1a92c4=function(){const _0x203d5f=_0x38cd,_0x56dfa9=new Cesium$5[(_0x203d5f(0x223))]({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5[(_0x203d5f(0x254))]({'componentDatatype':Cesium$5[_0x203d5f(0x199)]['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x56dfa9;},_0x23d928=function(_0x897bf3,_0x417be2){const _0xb6ba73=_0x38cd;if(Cesium$5['defined'](_0x417be2)){const _0x580164={};_0x580164['arrayBufferView']=_0x417be2,_0x897bf3[_0xb6ba73(0x1c5)]=_0x580164;}const _0x438f53=new Cesium$5['Texture'](_0x897bf3);return _0x438f53;},_0x584d5f=function(_0x20dfa2,_0x13909f,_0x4429e4){const _0x49f0f0=new Cesium$5['Framebuffer']({'context':_0x20dfa2,'colorTextures':[_0x13909f],'depthTexture':_0x4429e4});return _0x49f0f0;},_0x10f7e6=function(_0x216d8d){const _0x36c033=_0x38cd,_0x1d6f6a=!![],_0x247846=![],_0x51d618={'viewport':_0x216d8d['viewport'],'depthTest':_0x216d8d[_0x36c033(0x1ae)],'depthMask':_0x216d8d[_0x36c033(0x238)],'blending':_0x216d8d[_0x36c033(0x1af)]},_0x1a5bf9=Cesium$5[_0x36c033(0x204)]['getDefaultRenderState'](_0x1d6f6a,_0x247846,_0x51d618);return _0x1a5bf9;},_0x262d4b=function(_0x52e55f){const _0x2d93ed=_0x38cd,_0x5077dc={},_0x20c2ef=Cesium$5[_0x2d93ed(0x19c)]['mod'](_0x52e55f['west'],Cesium$5[_0x2d93ed(0x19c)][_0x2d93ed(0x178)]),_0x561ce1=Cesium$5[_0x2d93ed(0x19c)]['mod'](_0x52e55f['east'],Cesium$5['Math']['TWO_PI']),_0x146943=_0x52e55f[_0x2d93ed(0x207)];let _0xc2b7ec,_0x105a07;_0x146943>Cesium$5[_0x2d93ed(0x19c)]['THREE_PI_OVER_TWO']?(_0xc2b7ec=0x0,_0x105a07=Cesium$5['Math']['TWO_PI']):_0x561ce1-_0x20c2ef<_0x146943?(_0xc2b7ec=_0x20c2ef,_0x105a07=_0x20c2ef+_0x146943):(_0xc2b7ec=_0x20c2ef,_0x105a07=_0x561ce1);_0x5077dc['lon']={'min':Cesium$5['Math']['toDegrees'](_0xc2b7ec),'max':Cesium$5[_0x2d93ed(0x19c)]['toDegrees'](_0x105a07)};const _0x3aeedf=_0x52e55f['south'],_0x5e5271=_0x52e55f['north'],_0x4a762c=_0x52e55f[_0x2d93ed(0x186)],_0x1fc271=_0x4a762c>Cesium$5['Math']['PI']/0xc?_0x4a762c/0x2:0x0;let _0xeb12=Cesium$5['Math'][_0x2d93ed(0x209)](_0x3aeedf-_0x1fc271),_0x4ef8a6=Cesium$5['Math'][_0x2d93ed(0x209)](_0x5e5271+_0x1fc271);return _0xeb12<-Cesium$5['Math'][_0x2d93ed(0x20e)]&&(_0xeb12=-Cesium$5['Math']['PI_OVER_TWO']),_0x4ef8a6>Cesium$5['Math']['PI_OVER_THREE']&&(_0x4ef8a6=Cesium$5['Math']['PI_OVER_TWO']),_0x5077dc[_0x2d93ed(0x1f4)]={'min':Cesium$5['Math']['toDegrees'](_0xeb12),'max':Cesium$5['Math']['toDegrees'](_0x4ef8a6)},_0x5077dc;};return{'getFullscreenQuad':_0x1a92c4,'createTexture':_0x23d928,'createFramebuffer':_0x584d5f,'createRawRenderState':_0x10f7e6,'viewRectangleToLonLatRange':_0x262d4b};}());var segmentDraw_vert='in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert=_0x589cd8(0x1d1),trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x0a\x20\x20\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0\x20*\x20trailsColor)\x20/\x20255.0;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20pointsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20out_FragColor\x20+\x20trailsColor;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20trailsColor;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x0a}\x0a';const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x32b17e,_0x278eca,_0x3d9fe4,_0xd8a097,_0x53a179){const _0xc7521=_0x589cd8;this['createRenderingTextures'](_0x32b17e,_0x278eca,_0x3d9fe4[_0xc7521(0x19e)]),this['createRenderingFramebuffers'](_0x32b17e),this[_0xc7521(0x268)](_0x32b17e,_0x3d9fe4,_0xd8a097,_0x53a179);}['createRenderingTextures'](_0x32de50,_0x2e55a6,_0x11e472){const _0x1f2249=_0x589cd8,_0x173423={'context':_0x32de50,'width':_0x32de50['drawingBufferWidth'],'height':_0x32de50['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x1f2249(0x182)]['RGBA'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_BYTE']},_0x1fdbb2={'context':_0x32de50,'width':_0x32de50[_0x1f2249(0x181)],'height':_0x32de50[_0x1f2249(0x259)],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x864f29=_0x11e472['length'],_0xb49309=new Float32Array(_0x864f29*0x3);for(let _0x36cea0=0x0;_0x36cea0<_0x864f29;_0x36cea0++){const _0x165e8b=Cesium$4['Color']['fromCssColorString'](_0x11e472[_0x36cea0]);_0xb49309[0x3*_0x36cea0]=_0x165e8b['red'],_0xb49309[0x3*_0x36cea0+0x1]=_0x165e8b['green'],_0xb49309[0x3*_0x36cea0+0x2]=_0x165e8b['blue'];}const _0x42fbdb={'context':_0x32de50,'width':_0x864f29,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4[(_0x1f2249(0x1b1))]({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x173423),'segmentsDepth':Util['createTexture'](_0x1fdbb2),'currentTrailsColor':Util[_0x1f2249(0x202)](_0x173423),'currentTrailsDepth':Util['createTexture'](_0x1fdbb2),'nextTrailsColor':Util[_0x1f2249(0x202)](_0x173423),'nextTrailsDepth':Util[_0x1f2249(0x202)](_0x1fdbb2),'colorTable':Util[_0x1f2249(0x202)](_0x42fbdb,_0xb49309)};}['createRenderingFramebuffers'](_0x473b20){const _0x3c327c=_0x589cd8;this[_0x3c327c(0x230)]={'segments':Util[_0x3c327c(0x23a)](_0x473b20,this[_0x3c327c(0x1ec)]['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util[_0x3c327c(0x23a)](_0x473b20,this['textures']['currentTrailsColor'],this['textures']['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x473b20,this[_0x3c327c(0x1ec)]['nextTrailsColor'],this[_0x3c327c(0x1ec)]['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x4e9ea2){const _0x58f84b=_0x589cd8,_0x2c3286=0x4;let _0x5d04de=[];for(let _0x4c10e5=0x0;_0x4c10e5<_0x4e9ea2['particlesTextureSize'];_0x4c10e5++){for(let _0x1d0721=0x0;_0x1d0721<_0x4e9ea2['particlesTextureSize'];_0x1d0721++){for(let _0x7a29af=0x0;_0x7a29af<_0x2c3286;_0x7a29af++){_0x5d04de[_0x58f84b(0x1c7)](_0x4c10e5/_0x4e9ea2['particlesTextureSize']),_0x5d04de[_0x58f84b(0x1c7)](_0x1d0721/_0x4e9ea2['particlesTextureSize']);}}}_0x5d04de=new Float32Array(_0x5d04de);let _0x3f726e=[];const _0x15cdd1=[-0x1,0x1],_0x51a112=[-0x1,0x1];for(let _0x4a5a62=0x0;_0x4a5a62<_0x4e9ea2['maxParticles'];_0x4a5a62++){for(let _0x35b7a1=0x0;_0x35b7a1<_0x2c3286/0x2;_0x35b7a1++){for(let _0x439c5a=0x0;_0x439c5a<_0x2c3286/0x2;_0x439c5a++){_0x3f726e['push'](_0x15cdd1[_0x35b7a1]),_0x3f726e['push'](_0x51a112[_0x439c5a]),_0x3f726e['push'](0x0);}}}_0x3f726e=new Float32Array(_0x3f726e);const _0x12a7eb=0x6*_0x4e9ea2['maxParticles'],_0x5c0e43=new Uint32Array(_0x12a7eb);for(let _0x2d0df1=0x0,_0x53378b=0x0,_0xe9b293=0x0;_0x2d0df1<_0x4e9ea2['maxParticles'];_0x2d0df1++){_0x5c0e43[_0x53378b++]=_0xe9b293+0x0,_0x5c0e43[_0x53378b++]=_0xe9b293+0x1,_0x5c0e43[_0x53378b++]=_0xe9b293+0x2,_0x5c0e43[_0x53378b++]=_0xe9b293+0x2,_0x5c0e43[_0x53378b++]=_0xe9b293+0x1,_0x5c0e43[_0x53378b++]=_0xe9b293+0x3,_0xe9b293+=0x4;}const _0x3cb0ca=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype'][_0x58f84b(0x22f)],'componentsPerAttribute':0x2,'values':_0x5d04de}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x3f726e})}),'indices':_0x5c0e43});return _0x3cb0ca;}['createRenderingPrimitives'](_0x3cb7fb,_0x4eeac3,_0x4b7d40,_0x47f234){const _0x16b7c9=_0x589cd8,_0x369078=this;this[_0x16b7c9(0x18f)]={'segments':new CustomPrimitive({'commandType':_0x16b7c9(0x253),'attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x4eeac3),'primitiveType':Cesium$4[_0x16b7c9(0x1c6)][_0x16b7c9(0x1f3)],'uniformMap':{'currentParticlesPosition':function(){return _0x47f234['particlesTextures']['currentParticlesPosition'];},'postProcessingPosition':function(){return _0x47f234['particlesTextures']['postProcessingPosition'];},'postProcessingSpeed':function(){const _0x3b107b=_0x16b7c9;return _0x47f234[_0x3b107b(0x1dd)]['postProcessingSpeed'];},'colorTable':function(){const _0x392cbc=_0x16b7c9;return _0x369078[_0x392cbc(0x1ec)]['colorTable'];},'aspect':function(){const _0xf56275=_0x16b7c9;return _0x3cb7fb[_0xf56275(0x181)]/_0x3cb7fb['drawingBufferHeight'];},'pixelSize':function(){const _0x18d0f5=_0x16b7c9;return _0x4b7d40[_0x18d0f5(0x184)];},'lineWidth':function(){return _0x4eeac3['lineWidth'];},'particleHeight':function(){const _0x3e6e42=_0x16b7c9;return _0x4eeac3[_0x3e6e42(0x180)];}},'vertexShaderSource':new Cesium$4[(_0x16b7c9(0x1bd))]({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers']['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0x16b7c9(0x212)](),'primitiveType':Cesium$4[_0x16b7c9(0x1c6)]['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x369078['textures']['segmentsColor'];},'segmentsDepthTexture':function(){const _0x5cf4da=_0x16b7c9;return _0x369078['textures'][_0x5cf4da(0x1fd)];},'currentTrailsColor':function(){const _0x15ad2e=_0x16b7c9;return _0x369078[_0x15ad2e(0x230)]['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x369078['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0x4eeac3['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0x16b7c9(0x1bd))]({'defines':[_0x16b7c9(0x229)],'sources':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x16b7c9(0x221)]['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){const _0x2a570a=_0x16b7c9,_0x431c39=_0x369078['framebuffers'][_0x2a570a(0x21b)];_0x369078['framebuffers'][_0x2a570a(0x21b)]=_0x369078['framebuffers']['nextTrails'],_0x369078['framebuffers']['nextTrails']=_0x431c39,_0x369078[_0x2a570a(0x18f)]['trails'][_0x2a570a(0x25b)][_0x2a570a(0x1cf)]=_0x369078[_0x2a570a(0x230)][_0x2a570a(0x211)],_0x369078['primitives'][_0x2a570a(0x21c)][_0x2a570a(0x213)]['framebuffer']=_0x369078['framebuffers'][_0x2a570a(0x211)];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0x16b7c9(0x212)](),'primitiveType':Cesium$4['PrimitiveType'][_0x16b7c9(0x1f3)],'uniformMap':{'trailsColorTexture':function(){const _0x2c20c8=_0x16b7c9;return _0x369078['framebuffers'][_0x2c20c8(0x211)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x369078['framebuffers']['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util[_0x16b7c9(0x1cb)]({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag='//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x,\x20360.0);\x0a\x20\x20\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20-90.0,\x2090.0);\x0a\x0a\x20\x20\x20\x20vec3\x20index3D\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20index3D.z\x20=\x20(lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z;\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205],\x20width\x20=\x203,\x20height\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x203\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x202\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWind(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20\x20\x20float\x20result\x20=\x20texture(windTexture,\x20normalizedIndex2D).r;\x0a\x20\x20\x20\x20return\x20result;\x0a}\x0a\x0aconst\x20mat4\x20kernelMatrix\x20=\x20mat4(\x0a\x20\x20\x20\x200.0,\x20-1.0,\x202.0,\x20-1.0,\x20//\x20first\x20column\x0a\x20\x20\x20\x202.0,\x200.0,\x20-5.0,\x203.0,\x20//\x20second\x20column\x0a\x20\x20\x20\x200.0,\x201.0,\x204.0,\x20-3.0,\x20//\x20third\x20column\x0a\x20\x20\x20\x200.0,\x200.0,\x20-1.0,\x201.0\x20//\x20fourth\x20column\x0a);\x0afloat\x20oneDimensionInterpolation(float\x20t,\x20float\x20p0,\x20float\x20p1,\x20float\x20p2,\x20float\x20p3)\x20{\x0a\x20\x20\x20\x20vec4\x20tVec4\x20=\x20vec4(1.0,\x20t,\x20t\x20*\x20t,\x20t\x20*\x20t\x20*\x20t);\x0a\x20\x20\x20\x20tVec4\x20=\x20tVec4\x20/\x202.0;\x0a\x20\x20\x20\x20vec4\x20pVec4\x20=\x20vec4(p0,\x20p1,\x20p2,\x20p3);\x0a\x20\x20\x20\x20return\x20dot((tVec4\x20*\x20kernelMatrix),\x20pVec4);\x0a}\x0a\x0afloat\x20calculateB(sampler2D\x20windTexture,\x20float\x20t,\x20float\x20lon,\x20float\x20lat,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20float\x20lon0\x20=\x20floor(lon)\x20-\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon1\x20=\x20floor(lon);\x0a\x20\x20\x20\x20float\x20lon2\x20=\x20floor(lon)\x20+\x201.0\x20*\x20interval.x;\x0a\x20\x20\x20\x20float\x20lon3\x20=\x20floor(lon)\x20+\x202.0\x20*\x20interval.x;\x0a\x0a\x20\x20\x20\x20float\x20p0\x20=\x20getWind(windTexture,\x20vec3(lon0,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p1\x20=\x20getWind(windTexture,\x20vec3(lon1,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p2\x20=\x20getWind(windTexture,\x20vec3(lon2,\x20lat,\x20lev));\x0a\x20\x20\x20\x20float\x20p3\x20=\x20getWind(windTexture,\x20vec3(lon3,\x20lat,\x20lev));\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(t,\x20p0,\x20p1,\x20p2,\x20p3);\x0a}\x0a\x0afloat\x20interpolateOneTexture(sampler2D\x20windTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20\x20\x20float\x20lat0\x20=\x20floor(lat)\x20-\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat1\x20=\x20floor(lat);\x0a\x20\x20\x20\x20float\x20lat2\x20=\x20floor(lat)\x20+\x201.0\x20*\x20interval.y;\x0a\x20\x20\x20\x20float\x20lat3\x20=\x20floor(lat)\x20+\x202.0\x20*\x20interval.y;\x0a\x0a\x20\x20\x20\x20vec2\x20coefficient\x20=\x20lonLatLev.xy\x20-\x20floor(lonLatLev.xy);\x0a\x20\x20\x20\x20float\x20b0\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat0,\x20lev);\x0a\x20\x20\x20\x20float\x20b1\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat1,\x20lev);\x0a\x20\x20\x20\x20float\x20b2\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat2,\x20lev);\x0a\x20\x20\x20\x20float\x20b3\x20=\x20calculateB(windTexture,\x20coefficient.x,\x20lon,\x20lat3,\x20lev);\x0a\x0a\x20\x20\x20\x20return\x20oneDimensionInterpolation(coefficient.y,\x20b0,\x20b1,\x20b2,\x20b3);\x0a}\x0a\x0avec3\x20bicubic(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm\x0a\x20\x20\x20\x20float\x20u\x20=\x20interpolateOneTexture(U,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20v\x20=\x20interpolateOneTexture(V,\x20lonLatLev);\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}\x0a',updateSpeed_frag='uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec3\x20percent\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20\x20\x20float\x20normalization\x20=\x20length(percent);\x0a\x0a\x20\x20\x20\x20return\x20normalization;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20//\x20vec3\x20currentSpeed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20out_FragColor\x20=\x20nextSpeed;\x0a}\x0a',updatePosition_frag=_0x589cd8(0x1a6),postProcessingPosition_frag=_0x589cd8(0x247),postProcessingSpeed_frag=_0x589cd8(0x1ca);const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x39fc18,_0xe01c8e,_0x1a02b2,_0xc9dfa7){const _0x2f0899=_0x589cd8;this['data']=_0xe01c8e,this[_0x2f0899(0x193)](_0x39fc18,_0xe01c8e),this['createParticlesTextures'](_0x39fc18,_0x1a02b2,_0xc9dfa7),this['createComputingPrimitives'](_0xe01c8e,_0x1a02b2,_0xc9dfa7);}['createWindTextures'](_0x1e17fa,_0xb04238){const _0x174a18=_0x589cd8,_0x47307e={'context':_0x1e17fa,'width':_0xb04238[_0x174a18(0x262)]['lon'],'height':_0xb04238['dimensions']['lat']*(_0xb04238[_0x174a18(0x262)]['lev']||0x1),'pixelFormat':Cesium$3[_0x174a18(0x182)][_0x174a18(0x1fb)],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x174a18(0x1c3)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x174a18(0x1c3)]})};this[_0x174a18(0x1bb)]={'U':Util['createTexture'](_0x47307e,_0xb04238['U']['array']),'V':Util['createTexture'](_0x47307e,_0xb04238['V']['array'])};}['createParticlesTextures'](_0x2fb82f,_0x2bb69e,_0xc2571e){const _0x49ee06=_0x589cd8,_0x452314={'context':_0x2fb82f,'width':_0x2bb69e['particlesTextureSize'],'height':_0x2bb69e[_0x49ee06(0x1bc)],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3[_0x49ee06(0x1eb)]['NEAREST'],'magnificationFilter':Cesium$3[_0x49ee06(0x203)]['NEAREST']})},_0x237b5f=this[_0x49ee06(0x1ab)](_0x2bb69e[_0x49ee06(0x237)],_0xc2571e),_0x373c45=new Float32Array(0x4*_0x2bb69e[_0x49ee06(0x237)])['fill'](0x0);this['particlesTextures']={'particlesWind':Util[_0x49ee06(0x202)](_0x452314),'currentParticlesPosition':Util['createTexture'](_0x452314,_0x237b5f),'nextParticlesPosition':Util['createTexture'](_0x452314,_0x237b5f),'currentParticlesSpeed':Util['createTexture'](_0x452314,_0x373c45),'nextParticlesSpeed':Util[_0x49ee06(0x202)](_0x452314,_0x373c45),'postProcessingPosition':Util['createTexture'](_0x452314,_0x237b5f),'postProcessingSpeed':Util[_0x49ee06(0x202)](_0x452314,_0x373c45)};}['randomizeParticles'](_0x5016e0,_0x14a091){const _0x1cfc76=_0x589cd8,_0x548000=new Float32Array(0x4*_0x5016e0);for(let _0x365160=0x0;_0x365160<_0x5016e0;_0x365160++){_0x548000[0x4*_0x365160]=Cesium$3['Math'][_0x1cfc76(0x23f)](_0x14a091['lonRange']['x'],_0x14a091[_0x1cfc76(0x22c)]['y']),_0x548000[0x4*_0x365160+0x1]=Cesium$3[_0x1cfc76(0x19c)][_0x1cfc76(0x23f)](_0x14a091['latRange']['x'],_0x14a091['latRange']['y']),_0x548000[0x4*_0x365160+0x2]=Cesium$3[_0x1cfc76(0x19c)]['randomBetween'](this['data']['lev'][_0x1cfc76(0x1f5)],this['data']['lev']['max']),_0x548000[0x4*_0x365160+0x3]=0x0;}return _0x548000;}[_0x589cd8(0x215)](){Object['keys'](this['particlesTextures'])['forEach'](_0x118dc1=>{const _0x14782a=_0x38cd;this[_0x14782a(0x1dd)][_0x118dc1][_0x14782a(0x263)]();});}['createComputingPrimitives'](_0x2bac58,_0x237889,_0x20d209){const _0x42ecb7=_0x589cd8,_0x308017=new Cesium$3[(_0x42ecb7(0x1d0))](_0x2bac58['dimensions'][_0x42ecb7(0x20b)],_0x2bac58['dimensions']['lat'],_0x2bac58[_0x42ecb7(0x262)][_0x42ecb7(0x227)]),_0xe21531=new Cesium$3[(_0x42ecb7(0x1d0))](_0x2bac58['lon']['min'],_0x2bac58['lat'][_0x42ecb7(0x1f5)],_0x2bac58['lev'][_0x42ecb7(0x1f5)]),_0x9c40b3=new Cesium$3['Cartesian3'](_0x2bac58['lon'][_0x42ecb7(0x1e3)],_0x2bac58['lat'][_0x42ecb7(0x1e3)],_0x2bac58[_0x42ecb7(0x227)][_0x42ecb7(0x1e3)]),_0x3f5d72=new Cesium$3[(_0x42ecb7(0x1d0))]((_0x9c40b3['x']-_0xe21531['x'])/(_0x308017['x']-0x1),(_0x9c40b3['y']-_0xe21531['y'])/(_0x308017['y']-0x1),_0x308017['z']>0x1?(_0x9c40b3['z']-_0xe21531['z'])/(_0x308017['z']-0x1):0x1),_0x4d5ab7=new Cesium$3['Cartesian2'](_0x2bac58['U']['min'],_0x2bac58['U']['max']),_0x248428=new Cesium$3[(_0x42ecb7(0x25f))](_0x2bac58['V']['min'],_0x2bac58['V']['max']),_0x12a1a6=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':_0x42ecb7(0x1b7),'uniformMap':{'U':function(){return _0x12a1a6['windTextures']['U'];},'V':function(){return _0x12a1a6['windTextures']['V'];},'currentParticlesPosition':function(){return _0x12a1a6['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x308017;},'minimum':function(){return _0xe21531;},'maximum':function(){return _0x9c40b3;},'interval':function(){return _0x3f5d72;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures'][_0x42ecb7(0x1d5)],'preExecute':function(){const _0x5b2796=_0x42ecb7;_0x12a1a6['primitives'][_0x5b2796(0x1a5)]['commandToExecute'][_0x5b2796(0x236)]=_0x12a1a6['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){return _0x12a1a6['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function(){return _0x12a1a6['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x4d5ab7;},'vSpeedRange':function(){return _0x248428;},'pixelSize':function(){const _0x1f5448=_0x42ecb7;return _0x20d209[_0x1f5448(0x184)];},'speedFactor':function(){return _0x237889['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function(){const _0x39dd36=_0x42ecb7,_0x2dd41f=_0x12a1a6[_0x39dd36(0x1dd)]['currentParticlesSpeed'];_0x12a1a6['particlesTextures']['currentParticlesSpeed']=_0x12a1a6['particlesTextures'][_0x39dd36(0x20d)],_0x12a1a6['particlesTextures']['postProcessingSpeed']=_0x2dd41f,_0x12a1a6['primitives']['updateSpeed']['commandToExecute']['outputTexture']=_0x12a1a6['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){return _0x12a1a6['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function(){const _0x1a25fd=_0x42ecb7;return _0x12a1a6[_0x1a25fd(0x1dd)]['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this[_0x42ecb7(0x1dd)][_0x42ecb7(0x24d)],'preExecute':function(){const _0x23fcd6=_0x42ecb7,_0x54a255=_0x12a1a6['particlesTextures']['currentParticlesPosition'];_0x12a1a6[_0x23fcd6(0x1dd)]['currentParticlesPosition']=_0x12a1a6['particlesTextures']['postProcessingPosition'],_0x12a1a6['particlesTextures']['postProcessingPosition']=_0x54a255,_0x12a1a6['primitives']['updatePosition']['commandToExecute'][_0x23fcd6(0x236)]=_0x12a1a6[_0x23fcd6(0x1dd)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x42ecb7(0x1b7),'uniformMap':{'nextParticlesPosition':function(){return _0x12a1a6['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){return _0x12a1a6['particlesTextures']['nextParticlesSpeed'];},'lonRange':function(){return _0x20d209['lonRange'];},'latRange':function(){return _0x20d209['latRange'];},'randomCoefficient':function(){const _0x2c37e9=Math['random']();return _0x2c37e9;},'dropRate':function(){return _0x237889['dropRate'];},'dropRateBump':function(){return _0x237889['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures'][_0x42ecb7(0x23c)],'preExecute':function(){const _0x7f45d8=_0x42ecb7;_0x12a1a6[_0x7f45d8(0x18f)]['postProcessingPosition']['commandToExecute']['outputTexture']=_0x12a1a6[_0x7f45d8(0x1dd)]['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x3a4973=_0x42ecb7;return _0x12a1a6['particlesTextures'][_0x3a4973(0x23c)];},'nextParticlesSpeed':function(){return _0x12a1a6['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x42ecb7(0x1bd))]({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x42ecb7(0x20d)],'preExecute':function(){const _0x3701dc=_0x42ecb7;_0x12a1a6['primitives']['postProcessingSpeed']['commandToExecute']['outputTexture']=_0x12a1a6['particlesTextures'][_0x3701dc(0x20d)];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x498e7c,_0x234aad,_0x293f59,_0x42aff5){const _0x451155=_0x589cd8;this['context']=_0x498e7c,_0x234aad={..._0x234aad},_0x234aad['udata']&&_0x234aad['vdata']&&(_0x234aad['dimensions']={},_0x234aad['dimensions']['lon']=_0x234aad['cols'],_0x234aad['dimensions'][_0x451155(0x1f4)]=_0x234aad['rows'],_0x234aad['dimensions'][_0x451155(0x227)]=_0x234aad['lev']||0x1,_0x234aad['lon']={},_0x234aad['lon']['min']=_0x234aad[_0x451155(0x246)],_0x234aad['lon']['max']=_0x234aad['xmax'],_0x234aad[_0x451155(0x1f4)]={},_0x234aad['lat']['min']=_0x234aad['ymin'],_0x234aad[_0x451155(0x1f4)]['max']=_0x234aad['ymax'],_0x234aad['lev']={},_0x234aad[_0x451155(0x227)][_0x451155(0x1f5)]=_0x234aad[_0x451155(0x1ee)]??0x1,_0x234aad['lev']['max']=_0x234aad['levmax']??0x1,_0x234aad['U']={},_0x234aad['U'][_0x451155(0x18e)]=new Float32Array(_0x234aad[_0x451155(0x194)]),_0x234aad['U'][_0x451155(0x1f5)]=_0x234aad[_0x451155(0x1d9)]??Math['min'](..._0x234aad['udata']),_0x234aad['U'][_0x451155(0x1e3)]=_0x234aad['umax']??Math['max'](..._0x234aad[_0x451155(0x194)]),_0x234aad['V']={},_0x234aad['V']['array']=new Float32Array(_0x234aad['vdata']),_0x234aad['V']['min']=_0x234aad['vmin']??Math['min'](..._0x234aad[_0x451155(0x189)]),_0x234aad['V']['max']=_0x234aad['vmax']??Math['max'](..._0x234aad[_0x451155(0x189)])),this['data']=_0x234aad,this['options']=_0x293f59,this[_0x451155(0x233)]=_0x42aff5,this[_0x451155(0x257)]=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this[_0x451155(0x19a)]=new ParticlesRendering(this['context'],this[_0x451155(0x234)],this['options'],this[_0x451155(0x233)],this['particlesComputing']);}['canvasResize'](_0x28a8f6){const _0x31d733=_0x589cd8;this['particlesComputing'][_0x31d733(0x215)](),Object['keys'](this[_0x31d733(0x257)]['windTextures'])['forEach'](_0x511fdc=>{this['particlesComputing']['windTextures'][_0x511fdc]['destroy']();}),this['particlesRendering']['textures']['colorTable'][_0x31d733(0x263)](),Object['keys'](this['particlesRendering'][_0x31d733(0x230)])[_0x31d733(0x1b4)](_0x22d2a5=>{this['particlesRendering']['framebuffers'][_0x22d2a5]['destroy']();}),this['context']=_0x28a8f6,this['particlesComputing']=new ParticlesComputing(this[_0x31d733(0x1be)],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this[_0x31d733(0x20f)],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0x3f6e88=_0x589cd8,_0x571d1c=new Cesium$2['ClearCommand']({'color':new Cesium$2[(_0x3f6e88(0x1d8))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});Object[_0x3f6e88(0x1a3)](this[_0x3f6e88(0x19a)][_0x3f6e88(0x230)])['forEach'](_0x19e8cc=>{const _0x5539da=_0x3f6e88;_0x571d1c['framebuffer']=this['particlesRendering'][_0x5539da(0x230)][_0x19e8cc],_0x571d1c['execute'](this['context']);});}['refreshParticles'](_0x815190){const _0x5c3ee8=_0x589cd8;this[_0x5c3ee8(0x1b9)](),this[_0x5c3ee8(0x257)]['destroyParticlesTextures'](),this['particlesComputing']['createParticlesTextures'](this[_0x5c3ee8(0x1be)],this[_0x5c3ee8(0x20f)],this[_0x5c3ee8(0x233)]);if(_0x815190){var _0x14f208;const _0x3ecfec=this[_0x5c3ee8(0x19a)]['createSegmentsGeometry'](this['options']);this[_0x5c3ee8(0x19a)]['primitives']['segments'][_0x5c3ee8(0x242)]=_0x3ecfec;const _0x299f3e=Cesium$2['VertexArray'][_0x5c3ee8(0x179)]({'context':this['context'],'geometry':_0x3ecfec,'attributeLocations':this['particlesRendering'][_0x5c3ee8(0x18f)]['segments']['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x14f208=this['particlesRendering']['primitives'])!==null&&_0x14f208!==void 0x0&&(_0x14f208=_0x14f208['segments'])!==null&&_0x14f208!==void 0x0&&_0x14f208['commandToExecute']&&(this[_0x5c3ee8(0x19a)][_0x5c3ee8(0x18f)]['segments']['commandToExecute']['vertexArray']=_0x299f3e);}}['setOptions'](_0x49dcd2){const _0x136628=_0x589cd8;let _0x1be17e=![];this[_0x136628(0x20f)][_0x136628(0x237)]!==_0x49dcd2['maxParticles']&&(_0x1be17e=!![]),Object['keys'](_0x49dcd2)['forEach'](_0x4b81e4=>{this['options'][_0x4b81e4]=_0x49dcd2[_0x4b81e4];}),this['refreshParticles'](_0x1be17e);}['applyViewerParameters'](_0x329163){Object['keys'](_0x329163)['forEach'](_0x419fd4=>{const _0x19c52b=_0x38cd;this[_0x19c52b(0x233)][_0x419fd4]=_0x329163[_0x419fd4];}),this['refreshParticles'](![]);}[_0x589cd8(0x263)](){clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x3a842f=>{const _0xd0225f=_0x38cd;this[_0xd0225f(0x257)]['windTextures'][_0x3a842f]['destroy']();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x22a3ba=>{const _0x5bf346=_0x38cd;this[_0x5bf346(0x19a)]['framebuffers'][_0x22a3ba][_0x5bf346(0x263)]();});for(const _0x33c27c in this){delete this[_0x33c27c];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':['rgb(206,255,255)']};class WindLayer extends BaseLayer$1{constructor(_0xf5f3ed={}){_0xf5f3ed={...DEF_OPTIONS,..._0xf5f3ed},super(_0xf5f3ed),this['_setOptionsHook'](_0xf5f3ed);}get['layer'](){return this['primitives'];}get['data'](){return this['_data'];}set[_0x589cd8(0x234)](_0x312c90){const _0x23a7fa=_0x589cd8;this[_0x23a7fa(0x1c1)](_0x312c90);}get['colors'](){return this['options']['colors'];}set['colors'](_0x4e2df2){const _0xeb0448=_0x589cd8;this['options'][_0xeb0448(0x19e)]=_0x4e2df2,this['particleSystem']&&this[_0xeb0448(0x241)]['setOptions']({'colors':_0x4e2df2}),this['resize']();}['_mountedHook'](){}[_0x589cd8(0x25d)](){const _0x2f6ef9=_0x589cd8;this['scene']=this['_map']['scene'],this['camera']=this['_map'][_0x2f6ef9(0x22b)],this[_0x2f6ef9(0x18f)]=new Cesium$1['PrimitiveCollection'](),this['_map'][_0x2f6ef9(0x24f)][_0x2f6ef9(0x18f)]['add'](this[_0x2f6ef9(0x18f)]),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this[_0x2f6ef9(0x256)]=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this[_0x2f6ef9(0x1b6)](),window['addEventListener']('resize',this[_0x2f6ef9(0x208)][_0x2f6ef9(0x252)](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace['EventType'][_0x2f6ef9(0x25a)],this['_onMapWhellEvent'],this),this[_0x2f6ef9(0x187)]['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x2f6ef9(0x187)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x2f6ef9(0x232)],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x2f6ef9(0x1c1)](this['_data']);}['_removedHook'](){const _0x3d3e3d=_0x589cd8;window['removeEventListener']('resize',this['resize']),this[_0x3d3e3d(0x187)]['off'](mars3d__namespace[_0x3d3e3d(0x1e6)]['preRender'],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace[_0x3d3e3d(0x1e6)]['wheel'],this['_onMapWhellEvent'],this),this[_0x3d3e3d(0x187)][_0x3d3e3d(0x198)](mars3d__namespace[_0x3d3e3d(0x1e6)]['mouseDown'],this[_0x3d3e3d(0x1d4)],this),this[_0x3d3e3d(0x187)]['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x3d3e3d(0x232)],this['_onMouseMoveEvent'],this),this['primitives'][_0x3d3e3d(0x1a7)](),this['_map']['scene']['primitives']['remove'](this['primitives']);}['resize'](){const _0x10b586=_0x589cd8;if(!this['show']||!this['particleSystem'])return;this[_0x10b586(0x18f)]['show']=![],this['primitives']['removeAll'](),this['_map']['once'](mars3d__namespace['EventType']['preRender'],this[_0x10b586(0x197)],this);}[_0x589cd8(0x197)](_0x271979){const _0x50f98f=_0x589cd8;this['particleSystem']['canvasResize'](this[_0x50f98f(0x24f)]['context']),this['addPrimitives'](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x905a54){const _0x2a7e59=_0x589cd8;clearTimeout(this[_0x2a7e59(0x21a)]);if(!this[_0x2a7e59(0x20c)]||!this['particleSystem'])return;this['primitives'][_0x2a7e59(0x20c)]=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x53f289){const _0x382b7c=_0x589cd8;this[_0x382b7c(0x1fc)]=!![];}['_onMouseMoveEvent'](_0x665ea8){const _0x31c552=_0x589cd8;if(!this['show']||!this['particleSystem'])return;this[_0x31c552(0x1fc)]&&(this['primitives']['show']=![],this[_0x31c552(0x206)]=!![]);}['_onMouseUpEvent'](_0x121901){const _0x365092=_0x589cd8;if(!this[_0x365092(0x20c)]||!this['particleSystem'])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['primitives']['show']=!![],this[_0x365092(0x1fc)]=![],this[_0x365092(0x206)]=![];}['redraw'](){if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this['primitives']['show']=!![];}['setData'](_0x4282c6){const _0x2cd4d5=_0x589cd8;this[_0x2cd4d5(0x1ce)]=_0x4282c6,this['particleSystem']&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this['scene'][_0x2cd4d5(0x1be)],_0x4282c6,this['getOptions'](),this[_0x2cd4d5(0x233)]),this[_0x2cd4d5(0x1a8)]();}['_setOptionsHook'](_0x2e35b8,_0x1c4d1a){const _0xd87e89=_0x589cd8;if(_0x2e35b8)for(const _0x26eb96 in _0x2e35b8){this[_0x26eb96]=_0x2e35b8[_0x26eb96];}this['particleSystem']&&this['particleSystem']['setOptions'](this[_0xd87e89(0x21f)]());}['getOptions'](){const _0xbba503=_0x589cd8,_0x345c6b=Math['ceil'](Math[_0xbba503(0x1f8)](this['particlesNumber']));return this[_0xbba503(0x1a1)]=_0x345c6b*_0x345c6b,{'particlesTextureSize':_0x345c6b,'maxParticles':this[_0xbba503(0x1a1)],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this[_0xbba503(0x245)],'dropRateBump':this[_0xbba503(0x24e)],'speedFactor':this['speedFactor'],'lineWidth':this[_0xbba503(0x1ba)],'colors':this['colors']};}['addPrimitives'](){const _0x499d0a=_0x589cd8;this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives'][_0x499d0a(0x1a5)]),this['primitives']['add'](this[_0x499d0a(0x241)]['particlesComputing']['primitives']['updateSpeed']),this[_0x499d0a(0x18f)][_0x499d0a(0x1e1)](this[_0x499d0a(0x241)]['particlesComputing']['primitives'][_0x499d0a(0x19f)]),this[_0x499d0a(0x18f)]['add'](this['particleSystem']['particlesComputing']['primitives']['postProcessingPosition']),this['primitives']['add'](this[_0x499d0a(0x241)]['particlesComputing']['primitives'][_0x499d0a(0x20d)]),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['segments']),this['primitives']['add'](this['particleSystem']['particlesRendering'][_0x499d0a(0x18f)][_0x499d0a(0x21c)]),this['primitives']['add'](this['particleSystem']['particlesRendering'][_0x499d0a(0x18f)]['screen']);}['updateViewerParameters'](){const _0x395ec1=_0x589cd8;let _0x57efad=this[_0x395ec1(0x22b)]['computeViewRectangle'](this['scene']['globe'][_0x395ec1(0x19d)]);if(!_0x57efad){const _0x7ae47=this['_map']['getExtent']();_0x57efad=Cesium$1['Rectangle']['fromDegrees'](_0x7ae47['xmin'],_0x7ae47[_0x395ec1(0x1e7)],_0x7ae47[_0x395ec1(0x18d)],_0x7ae47['ymax']);}const _0x2331ad=Util[_0x395ec1(0x1b2)](_0x57efad);this['viewerParameters']['lonRange']['x']=_0x2331ad[_0x395ec1(0x20b)]['min'],this[_0x395ec1(0x233)]['lonRange']['y']=_0x2331ad['lon']['max'],this['viewerParameters']['latRange']['x']=_0x2331ad['lat'][_0x395ec1(0x1f5)],this[_0x395ec1(0x233)]['latRange']['y']=_0x2331ad['lat']['max'];const _0x7aab97=this['camera']['getPixelSize'](this['globeBoundingSphere'],this['scene'][_0x395ec1(0x181)],this[_0x395ec1(0x24f)][_0x395ec1(0x259)]);_0x7aab97>0x0&&(this[_0x395ec1(0x233)]['pixelSize']=_0x7aab97);}}mars3d__namespace['LayerUtil']['register']('wind',WindLayer),mars3d__namespace[_0x589cd8(0x251)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0x3b7961=_0x589cd8;this['lng']=null,this['lat']=null,this['tlng']=null,this[_0x3b7961(0x23d)]=null,this['age']=null,this['speed']=null;}['destroy'](){for(const _0x4ca202 in this){delete this[_0x4ca202];}}}class CanvasWindField{constructor(_0x37a8d4){const _0x2dbe86=_0x589cd8;this[_0x2dbe86(0x24c)](_0x37a8d4);}get['speedRate'](){return this['_speedRate'];}set['speedRate'](_0x3ad870){this['_speedRate']=(0x64-(_0x3ad870>0x63?0x63:_0x3ad870))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set[_0x589cd8(0x249)](_0xefe69b){const _0x462269=_0x589cd8;this[_0x462269(0x20a)]=_0xefe69b;}['setOptions'](_0x51c19b){const _0x3d5ad0=_0x589cd8;this[_0x3d5ad0(0x20f)]=_0x51c19b,this[_0x3d5ad0(0x249)]=_0x51c19b['maxAge']||0x78,this['speedRate']=_0x51c19b['speedRate']||0x32,this['particles']=[];const _0x21dca3=_0x51c19b[_0x3d5ad0(0x1a1)]||0x1000;for(let _0x3ec0e1=0x0;_0x3ec0e1<_0x21dca3;_0x3ec0e1++){const _0x5624e1=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x5624e1);}}['setDate'](_0x54d113){const _0x3ded86=_0x589cd8;this[_0x3ded86(0x216)]=_0x54d113['rows'],this[_0x3ded86(0x1f2)]=_0x54d113['cols'],this['xmin']=_0x54d113['xmin'],this[_0x3ded86(0x18d)]=_0x54d113['xmax'],this['ymin']=_0x54d113['ymin'],this[_0x3ded86(0x250)]=_0x54d113['ymax'],this['grid']=[];const _0x586a26=_0x54d113['udata'],_0x5ed979=_0x54d113[_0x3ded86(0x189)];let _0x4791cc=![];_0x586a26['length']===this['rows']&&_0x586a26[0x0]['length']===this['cols']&&(_0x4791cc=!![]);let _0x352d21=0x0,_0x1dfde=null,_0x59c62f=null;for(let _0x32c8d2=0x0;_0x32c8d2<this['rows'];_0x32c8d2++){_0x1dfde=[];for(let _0x1f4a1c=0x0;_0x1f4a1c<this['cols'];_0x1f4a1c++,_0x352d21++){_0x4791cc?_0x59c62f=this['_calcUV'](_0x586a26[_0x32c8d2][_0x1f4a1c],_0x5ed979[_0x32c8d2][_0x1f4a1c]):_0x59c62f=this['_calcUV'](_0x586a26[_0x352d21],_0x5ed979[_0x352d21]),_0x1dfde['push'](_0x59c62f);}this['grid']['push'](_0x1dfde);}this['options']['reverseY']&&this[_0x3ded86(0x25e)][_0x3ded86(0x1c8)]();}['clear'](){const _0x26cfdb=_0x589cd8;delete this['rows'],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this[_0x26cfdb(0x1e7)],delete this['ymax'],delete this[_0x26cfdb(0x25e)],delete this[_0x26cfdb(0x222)];}['toGridXY'](_0xefe915,_0x38ea65){const _0x15f93b=_0x589cd8,_0x25e1f5=(_0xefe915-this['xmin'])/(this['xmax']-this['xmin'])*(this['cols']-0x1),_0xabf558=(this['ymax']-_0x38ea65)/(this[_0x15f93b(0x250)]-this['ymin'])*(this['rows']-0x1);return[_0x25e1f5,_0xabf558];}['getUVByXY'](_0x475462,_0x4cd8c3){const _0x206d4c=_0x589cd8;if(_0x475462<0x0||_0x475462>=this['cols']||_0x4cd8c3>=this['rows'])return[0x0,0x0,0x0];const _0x44242a=Math['floor'](_0x475462),_0xbbbffe=Math[_0x206d4c(0x231)](_0x4cd8c3);if(_0x44242a===_0x475462&&_0xbbbffe===_0x4cd8c3)return this['grid'][_0x4cd8c3][_0x475462];const _0x159908=_0x44242a+0x1,_0x17c3c=_0xbbbffe+0x1,_0x38c32b=this['getUVByXY'](_0x44242a,_0xbbbffe),_0x470e43=this['getUVByXY'](_0x159908,_0xbbbffe),_0x28b717=this['getUVByXY'](_0x44242a,_0x17c3c),_0x2b9191=this['getUVByXY'](_0x159908,_0x17c3c);let _0x185426=null;try{_0x185426=this[_0x206d4c(0x244)](_0x475462-_0x44242a,_0x4cd8c3-_0xbbbffe,_0x38c32b,_0x470e43,_0x28b717,_0x2b9191);}catch(_0x4a52cd){console['log'](_0x475462,_0x4cd8c3);}return _0x185426;}[_0x589cd8(0x244)](_0x26fce5,_0x3d18a3,_0x235754,_0x7a4504,_0x28f026,_0x4383ff){const _0x142879=0x1-_0x26fce5,_0x23c1df=0x1-_0x3d18a3,_0x13ff12=_0x142879*_0x23c1df,_0x255690=_0x26fce5*_0x23c1df,_0x5a4cb9=_0x142879*_0x3d18a3,_0x12c9e4=_0x26fce5*_0x3d18a3,_0x2e852e=_0x235754[0x0]*_0x13ff12+_0x7a4504[0x0]*_0x255690+_0x28f026[0x0]*_0x5a4cb9+_0x4383ff[0x0]*_0x12c9e4,_0x549086=_0x235754[0x1]*_0x13ff12+_0x7a4504[0x1]*_0x255690+_0x28f026[0x1]*_0x5a4cb9+_0x4383ff[0x1]*_0x12c9e4;return this['_calcUV'](_0x2e852e,_0x549086);}['_calcUV'](_0x5c530e,_0x5dfc68){return[+_0x5c530e,+_0x5dfc68,Math['sqrt'](_0x5c530e*_0x5c530e+_0x5dfc68*_0x5dfc68)];}['getUVByPoint'](_0x3c5e9f,_0x471947){if(!this['isInExtent'](_0x3c5e9f,_0x471947))return null;const _0x1270f0=this['toGridXY'](_0x3c5e9f,_0x471947),_0x296eb6=this['getUVByXY'](_0x1270f0[0x0],_0x1270f0[0x1]);return _0x296eb6;}['isInExtent'](_0xbfee8a,_0x3a7f24){const _0x4a6b46=_0x589cd8;return _0xbfee8a>=this[_0x4a6b46(0x246)]&&_0xbfee8a<=this[_0x4a6b46(0x18d)]&&_0x3a7f24>=this[_0x4a6b46(0x1e7)]&&_0x3a7f24<=this['ymax']?!![]:![];}[_0x589cd8(0x190)](){const _0x54946b=_0x589cd8,_0x44675c=fRandomByfloat(this['xmin'],this['xmax']),_0x5c822a=fRandomByfloat(this['ymin'],this[_0x54946b(0x250)]);return{'lat':_0x5c822a,'lng':_0x44675c};}[_0x589cd8(0x1f6)](){const _0x1cd87e=_0x589cd8;let _0x2ff369,_0x552036,_0x5c8c84;for(let _0x12e1f7=0x0,_0x1064e4=this['particles']['length'];_0x12e1f7<_0x1064e4;_0x12e1f7++){let _0x45d3cd=this['particles'][_0x12e1f7];_0x45d3cd['age']<=0x0&&(_0x45d3cd=this[_0x1cd87e(0x1e8)](_0x45d3cd));if(_0x45d3cd[_0x1cd87e(0x21e)]>0x0){const _0x592dc7=_0x45d3cd['tlng'],_0x581505=_0x45d3cd['tlat'];_0x5c8c84=this['getUVByPoint'](_0x592dc7,_0x581505),_0x5c8c84?(_0x2ff369=_0x592dc7+this['_calc_speedRate'][0x0]*_0x5c8c84[0x0],_0x552036=_0x581505+this['_calc_speedRate'][0x1]*_0x5c8c84[0x1],_0x45d3cd['lng']=_0x592dc7,_0x45d3cd['lat']=_0x581505,_0x45d3cd['tlng']=_0x2ff369,_0x45d3cd['tlat']=_0x552036,_0x45d3cd['speed']=_0x5c8c84[0x2],_0x45d3cd['age']--):_0x45d3cd[_0x1cd87e(0x21e)]=0x0;}}return this['particles'];}['_randomParticle'](_0x473af8){const _0x24f5b9=_0x589cd8;let _0x2c5ada,_0x4f1ff1;for(let _0x752f5d=0x0;_0x752f5d<0x1e;_0x752f5d++){_0x2c5ada=this[_0x24f5b9(0x190)](),_0x4f1ff1=this[_0x24f5b9(0x260)](_0x2c5ada[_0x24f5b9(0x1fe)],_0x2c5ada[_0x24f5b9(0x1f4)]);if(_0x4f1ff1&&_0x4f1ff1[0x2]>0x0)break;}if(!_0x4f1ff1)return _0x473af8;const _0x541f96=_0x2c5ada['lng']+this['_calc_speedRate'][0x0]*_0x4f1ff1[0x0],_0x31395d=_0x2c5ada[_0x24f5b9(0x1f4)]+this['_calc_speedRate'][0x1]*_0x4f1ff1[0x1];return _0x473af8['lng']=_0x2c5ada['lng'],_0x473af8['lat']=_0x2c5ada['lat'],_0x473af8['tlng']=_0x541f96,_0x473af8['tlat']=_0x31395d,_0x473af8['age']=Math['round'](Math[_0x24f5b9(0x1a4)]()*this['maxAge']),_0x473af8[_0x24f5b9(0x219)]=_0x4f1ff1[0x2],_0x473af8;}['destroy'](){for(const _0x5775ab in this){delete this[_0x5775ab];}}}function _0x1821(){const _0x575615=['fillRect','pixelSize','defined','height','_map','_drawLines','vdata','CanvasWindField','vertexArray','BufferUsage','xmax','array','primitives','getRandomLatLng','mode','25aSDEYe','createWindTextures','udata','Cesium','1447276sGOjPG','_onMap_preRenderEvent','off','ComponentDatatype','particlesRendering','visibility','Math','ellipsoid','colors','updatePosition','cancelAnimationFrame','particlesNumber','canvasHeight','keys','random','getWind','uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20\x20\x20float\x20term1\x20=\x20111132.92;\x0a\x20\x20\x20\x20float\x20term2\x20=\x20559.82\x20*\x20cos(2.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term3\x20=\x201.175\x20*\x20cos(4.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term4\x20=\x200.0023\x20*\x20cos(6.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20\x20\x20float\x20term5\x20=\x20111412.84\x20*\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20term6\x20=\x2093.5\x20*\x20cos(3.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20term7\x20=\x200.118\x20*\x20cos(5.0\x20*\x20latitude);\x0a\x20\x20\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avoid\x20updatePosition(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20\x20\x20float\x20w\x20=\x200.0;\x0a\x20\x20\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20windVectorInLonLatLev;\x0a\x0a\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\x0a}\x0a','removeAll','addPrimitives','length','clear','randomizeParticles','postMessage','worker','depthTest','blending','setGeometry','Sampler','viewRectangleToLonLatRange','SceneTransforms','forEach','canvasWidth','updateViewerParameters','Compute','STATIC_DRAW','clearFramebuffers','lineWidth','windTextures','particlesTextureSize','ShaderSource','context','top','initWorker','setData','_updateIng2','NEAREST','_canrefresh','source','PrimitiveType','push','reverse','0px','uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}\x0a','createRawRenderState','redraw','BaseLayer','_data','framebuffer','Cartesian3','in\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0a}\x0a','windField','IDENTITY','_onMouseDownEvent','particlesWind','fromCache','696092YmcWQM','Color','umin','reverseY','pow','LayerUtil','particlesTextures','uniformMap','7225464gZBfOm','rawRenderState','add','CanvasWindLayer','max','globe','auto','EventType','ymin','_randomParticle','clientWidth','update','TextureMinificationFilter','textures','animateFrame','levmin','pointer-events','attributeLocations','canvas','cols','TRIANGLES','lat','min','getParticles','7cqkaVL','sqrt','none','Pass','LUMINANCE','mouse_down','segmentsDepth','lng','_onMouseMoveEvent','strokeStyle','_mountedHook','createTexture','TextureMagnificationFilter','Appearance','_onMouseUpEvent','mouse_move','width','resize','clampToLatitudeRange','_maxAge','lon','show','postProcessingSpeed','PI_OVER_THREE','options','isDestroyed','nextTrails','getFullscreenQuad','clearCommand','__esModule','destroyParticlesTextures','rows','_onMapWhellEvent','primitiveType','speed','refreshTimer','currentTrails','trails','left','age','getOptions','toDegrees','DepthFunction','particles','Geometry','style','windData','_setOptionsHook','lev','_pointerEvents','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','_updateIng','camera','lonRange','shaderProgram','canvasWind','FLOAT','framebuffers','floor','mouseMove','viewerParameters','data','1015311ukcaWF','outputTexture','maxParticles','depthMask','SceneMode','createFramebuffer','1536474ZTzfEJ','postProcessingPosition','tlat','canvasContext','randomBetween','14150178mSBuap','particleSystem','geometry','default','_bilinearInterpolation','dropRate','xmin','uniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0a\x0auniform\x20float\x20randomCoefficient;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0auniform\x20float\x20dropRate;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0auniform\x20float\x20dropRateBump;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898,\x2078.233,\x204375.85453);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0,\x201.0);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0);\x0a\x20\x20\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20lev);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20\x20\x20return\x20particle.y\x20<\x20-90.0\x20||\x20particle.y\x20>\x2090.0;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20nextSpeed.a;\x0a\x0a\x20\x20\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20\x20\x20if\x20(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(randomParticle,\x201.0);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}\x0a','mouseUp','maxAge','mouseDown','addEventListener','setOptions','nextParticlesPosition','dropRateBump','scene','ymax','layer','bind','Draw','GeometryAttribute','frameTime','globeBoundingSphere','particlesComputing','moveTo','drawingBufferHeight','wheel','commandToExecute','now','_addedHook','grid','Cartesian2','getUVByPoint','fragmentShaderSource','dimensions','destroy','all','createCommand','_colorRamp','requestAnimationFrame','createRenderingPrimitives','TWO_PI','fromGeometry','_tomap','fixedHeight','container','1591800RxwfyS','init','clientHeight','particleHeight','drawingBufferWidth','PixelFormat'];_0x1821=function(){return _0x575615;};return _0x1821();}function fRandomByfloat(_0x24405d,_0xcc1334){const _0x7ac0d7=_0x589cd8;return _0x24405d+Math[_0x7ac0d7(0x1a4)]()*(_0xcc1334-_0x24405d);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x589cd8(0x251)][_0x589cd8(0x1cd)];class CanvasWindLayer extends BaseLayer{constructor(_0x18772c={}){const _0x8ba335=_0x589cd8;super(_0x18772c),this['_setOptionsHook'](_0x18772c),this['canvas']=null,_0x18772c['colors']&&_0x18772c['steps']&&(this[_0x8ba335(0x266)]=new mars3d__namespace['ColorRamp'](_0x18772c));}[_0x589cd8(0x226)](_0x268f02,_0x45ae27){const _0x3b0c75=_0x589cd8;this[_0x3b0c75(0x255)]=0x3e8/(_0x268f02['frameRate']||0xa),this[_0x3b0c75(0x228)]=this['options']['pointerEvents']??![],this['color']=_0x268f02['color']||'#ffffff',this[_0x3b0c75(0x1ba)]=_0x268f02['lineWidth']||0x1,this[_0x3b0c75(0x17b)]=_0x268f02['fixedHeight']??0x0,this[_0x3b0c75(0x1da)]=_0x268f02['reverseY']??![],this['windField']&&this[_0x3b0c75(0x1d2)]['setOptions'](_0x268f02);}get['layer'](){return this['canvas'];}get['canvasWidth'](){const _0x44cf77=_0x589cd8;return this[_0x44cf77(0x187)]['scene'][_0x44cf77(0x1f1)]['clientWidth'];}get[_0x589cd8(0x1a2)](){const _0x20cb83=_0x589cd8;return this[_0x20cb83(0x187)][_0x20cb83(0x24f)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0xc23c1e){const _0x2333d9=_0x589cd8;this['_pointerEvents']=_0xc23c1e;if(!this['canvas'])return;_0xc23c1e?this[_0x2333d9(0x1f1)]['style'][_0x2333d9(0x1ef)]=_0x2333d9(0x264):this[_0x2333d9(0x1f1)][_0x2333d9(0x224)][_0x2333d9(0x1ef)]='none';}get['particlesNumber'](){const _0x26be74=_0x589cd8;return this['options'][_0x26be74(0x1a1)];}set['particlesNumber'](_0x540901){const _0x605d3c=_0x589cd8;this['options'][_0x605d3c(0x1a1)]=_0x540901,clearTimeout(this['_canrefresh']),this[_0x605d3c(0x1c4)]=setTimeout(()=>{const _0x2e2843=_0x605d3c;this[_0x2e2843(0x1cc)]();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set['speedRate'](_0x4d25a1){this['options']['speedRate']=_0x4d25a1,this['windField']&&(this['windField']['speedRate']=_0x4d25a1);}get[_0x589cd8(0x249)](){return this['options']['maxAge'];}set['maxAge'](_0x5d5719){const _0x11644b=_0x589cd8;this[_0x11644b(0x20f)]['maxAge']=_0x5d5719,this['windField']&&(this['windField'][_0x11644b(0x249)]=_0x5d5719);}get['data'](){const _0xff318b=_0x589cd8;return this[_0xff318b(0x225)];}set['data'](_0x74a9fd){const _0x32f94e=_0x589cd8;this[_0x32f94e(0x1c1)](_0x74a9fd);}['_showHook'](_0x125f52){const _0x2f0c9d=_0x589cd8;_0x125f52?this['_addedHook']():(this[_0x2f0c9d(0x225)]&&(this['options']['data']=this[_0x2f0c9d(0x225)]),this['_removedHook']());}[_0x589cd8(0x201)](){const _0x2309d4=_0x589cd8;this['options']['worker']?this[_0x2309d4(0x1c0)]():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){const _0x342344=_0x589cd8;this[_0x342344(0x1f1)]=this['_createCanvas'](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options'][_0x342344(0x234)]&&this['setData'](this['options']['data']);}['_removedHook'](){const _0x493a79=_0x589cd8;this[_0x493a79(0x1aa)](),this['unbindEvent'](),this[_0x493a79(0x1f1)]&&(this[_0x493a79(0x187)][_0x493a79(0x17c)]['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x157b97=_0x589cd8,_0x356630=mars3d__namespace['DomUtil']['create']('canvas','mars3d-canvasWind',this[_0x157b97(0x187)]['container']);return _0x356630['style']['position']='absolute',_0x356630['style'][_0x157b97(0x1bf)]='0px',_0x356630['style'][_0x157b97(0x21d)]=_0x157b97(0x1c9),_0x356630[_0x157b97(0x224)]['width']=this['_map']['scene']['canvas'][_0x157b97(0x1e9)]+'px',_0x356630[_0x157b97(0x224)][_0x157b97(0x186)]=this['_map'][_0x157b97(0x24f)]['canvas'][_0x157b97(0x17f)]+'px',_0x356630['style']['pointerEvents']=this[_0x157b97(0x228)]?_0x157b97(0x1e5):_0x157b97(0x1f9),_0x356630['style']['zIndex']=this['options']['zIndex']??0x9,_0x356630['width']=this[_0x157b97(0x187)]['scene']['canvas']['clientWidth'],_0x356630['height']=this['_map']['scene'][_0x157b97(0x1f1)][_0x157b97(0x17f)],_0x356630;}['resize'](){const _0x5f3474=_0x589cd8;this[_0x5f3474(0x1f1)]&&(this[_0x5f3474(0x1f1)]['style']['width']=this['_map']['scene'][_0x5f3474(0x1f1)]['clientWidth']+'px',this['canvas']['style']['height']=this[_0x5f3474(0x187)]['scene']['canvas'][_0x5f3474(0x17f)]+'px',this['canvas']['width']=this['_map']['scene']['canvas'][_0x5f3474(0x1e9)],this[_0x5f3474(0x1f1)]['height']=this['_map']['scene'][_0x5f3474(0x1f1)][_0x5f3474(0x17f)]);}['bindEvent'](){const _0x4f34e1=_0x589cd8,_0x451175=this;let _0x5a21f7=Date[_0x4f34e1(0x25c)]();(function _0xd8ae1a(){const _0x1b8223=_0x4f34e1;_0x451175['animateFrame']=window[_0x1b8223(0x267)](_0xd8ae1a);if(_0x451175['show']&&_0x451175['windField']){const _0x3c80cb=Date[_0x1b8223(0x25c)](),_0x545aca=_0x3c80cb-_0x5a21f7;_0x545aca>_0x451175['frameTime']&&(_0x5a21f7=_0x3c80cb-_0x545aca%_0x451175[_0x1b8223(0x255)],_0x451175['update']());}}(),window[_0x4f34e1(0x24b)](_0x4f34e1(0x208),this['resize'][_0x4f34e1(0x252)](this),![]),this[_0x4f34e1(0x1fc)]=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace[_0x4f34e1(0x1e6)][_0x4f34e1(0x25a)],this[_0x4f34e1(0x217)],this),this['_map']['on'](mars3d__namespace['EventType'][_0x4f34e1(0x24a)],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x4f34e1(0x1e6)]['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){const _0x4e03ab=_0x589cd8;window[_0x4e03ab(0x1a0)](this[_0x4e03ab(0x1ed)]),delete this['animateFrame'],window['removeEventListener']('resize',this['resize']),this[_0x4e03ab(0x20f)]['mouseHidden']&&(this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x4e03ab(0x187)]['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x4e03ab(0x187)][_0x4e03ab(0x198)](mars3d__namespace['EventType'][_0x4e03ab(0x248)],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}[_0x589cd8(0x217)](_0x48de6b){const _0x265c11=_0x589cd8;clearTimeout(this['refreshTimer']);if(!this[_0x265c11(0x20c)]||!this[_0x265c11(0x1f1)])return;this['canvas']['style'][_0x265c11(0x19b)]='hidden',this['refreshTimer']=setTimeout(()=>{const _0x4ed818=_0x265c11;if(!this[_0x4ed818(0x20c)])return;this[_0x4ed818(0x1cc)](),this['canvas']['style']['visibility']='visible';},0xc8);}['_onMouseDownEvent'](_0x4b6eec){const _0x2dfe0d=_0x589cd8;this['mouse_down']=!![],this[_0x2dfe0d(0x187)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x34a45c){const _0x21d04d=_0x589cd8;if(!this[_0x21d04d(0x20c)]||!this[_0x21d04d(0x1f1)])return;this['mouse_down']&&(this['canvas']['style'][_0x21d04d(0x19b)]='hidden',this[_0x21d04d(0x206)]=!![]);}[_0x589cd8(0x205)](_0xdd45d){const _0x146939=_0x589cd8;if(!this['show']||!this[_0x146939(0x1f1)])return;this['_map']['off'](mars3d__namespace['EventType'][_0x146939(0x232)],this[_0x146939(0x1ff)],this),this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['canvas']['style']['visibility']='visible',this[_0x146939(0x1fc)]=![],this['mouse_move']=![];}['setData'](_0x5252ff){const _0x318170=_0x589cd8;this['clear'](),this['windData']=_0x5252ff,this[_0x318170(0x1d2)]['setDate'](_0x5252ff),this['redraw']();}['redraw'](){const _0x10f7e3=_0x589cd8;if(!this['show'])return;this['windField'][_0x10f7e3(0x24c)](this[_0x10f7e3(0x20f)]),this['update']();}['update'](){const _0x3951f8=_0x589cd8;if(this[_0x3951f8(0x22a)])return;this['_updateIng']=!![];if(this[_0x3951f8(0x1ad)])this[_0x3951f8(0x1d2)]['update']();else{const _0x13eb8a=this['windField']['getParticles']();this['_drawLines'](_0x13eb8a);}this['_updateIng']=![];}[_0x589cd8(0x188)](_0x138534){const _0xc6139c=_0x589cd8;this[_0xc6139c(0x23e)]['globalCompositeOperation']='destination-in',this['canvasContext'][_0xc6139c(0x183)](0x0,0x0,this[_0xc6139c(0x1b5)],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter',this['canvasContext']['globalAlpha']=0.9;const _0x70a21b=this['_map']['scene'][_0xc6139c(0x191)]!==Cesium[_0xc6139c(0x239)]['SCENE3D'],_0x5d9b1f=this[_0xc6139c(0x1b5)]*0.25;if(this['_colorRamp'])for(let _0x4f62d6=0x0,_0x23228e=_0x138534['length'];_0x4f62d6<_0x23228e;_0x4f62d6++){const _0x315608=_0x138534[_0x4f62d6],_0x39bce9=this['_tomap'](_0x315608[_0xc6139c(0x1fe)],_0x315608['lat'],_0x315608),_0x46ae7f=this[_0xc6139c(0x17a)](_0x315608['tlng'],_0x315608['tlat'],_0x315608);if(!_0x39bce9||!_0x46ae7f)continue;if(_0x70a21b&&Math['abs'](_0x39bce9[0x0]-_0x46ae7f[0x0])>=_0x5d9b1f)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this['_colorRamp']['getColor'](_0x315608['speed']),this['canvasContext'][_0xc6139c(0x258)](_0x39bce9[0x0],_0x39bce9[0x1]),this['canvasContext']['lineTo'](_0x46ae7f[0x0],_0x46ae7f[0x1]),this['canvasContext']['stroke']();}else{this['canvasContext']['beginPath'](),this[_0xc6139c(0x23e)]['lineWidth']=this['lineWidth'],this['canvasContext'][_0xc6139c(0x200)]=this['color'];for(let _0x96e575=0x0,_0x46b2df=_0x138534[_0xc6139c(0x1a9)];_0x96e575<_0x46b2df;_0x96e575++){const _0x1f9fde=_0x138534[_0x96e575],_0x154f47=this['_tomap'](_0x1f9fde['lng'],_0x1f9fde['lat'],_0x1f9fde),_0x2ddbd2=this['_tomap'](_0x1f9fde['tlng'],_0x1f9fde['tlat'],_0x1f9fde);if(!_0x154f47||!_0x2ddbd2)continue;if(_0x70a21b&&Math['abs'](_0x154f47[0x0]-_0x2ddbd2[0x0])>=_0x5d9b1f)continue;this[_0xc6139c(0x23e)][_0xc6139c(0x258)](_0x154f47[0x0],_0x154f47[0x1]),this['canvasContext']['lineTo'](_0x2ddbd2[0x0],_0x2ddbd2[0x1]);}this[_0xc6139c(0x23e)]['stroke']();}}['_tomap'](_0x55f804,_0xf4fa09,_0x4a8822){const _0x248ff4=_0x589cd8,_0x229484=Cesium['Cartesian3']['fromDegrees'](_0x55f804,_0xf4fa09,this['fixedHeight']),_0x389a1c=this['_map']['scene'];if(_0x389a1c['mode']===Cesium['SceneMode']['SCENE3D']){const _0xb4ccc4=new Cesium['EllipsoidalOccluder'](_0x389a1c[_0x248ff4(0x1e4)]['ellipsoid'],_0x389a1c['camera']['positionWC']),_0x5e786d=_0xb4ccc4['isPointVisible'](_0x229484);if(!_0x5e786d)return _0x4a8822[_0x248ff4(0x21e)]=0x0,null;}const _0x480fe2=Cesium[_0x248ff4(0x1b3)]['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x229484);return _0x480fe2?[_0x480fe2['x'],_0x480fe2['y']]:null;}['clear'](){const _0x18e81d=_0x589cd8;this['windField'][_0x18e81d(0x1aa)](),delete this['windData'];}['initWorker'](){const _0x4d2c90=_0x589cd8;this[_0x4d2c90(0x1ad)]=new Worker(this['options']['worker']),this['worker']['onmessage']=_0x1d80d5=>{const _0x4b0191=_0x4d2c90;this['_drawLines'](_0x1d80d5[_0x4b0191(0x234)]['particles']),this[_0x4b0191(0x1c2)]=![];},this['windField']={'init':_0x2ded11=>{const _0x3849d6=_0x4d2c90;this['worker']['postMessage']({'type':_0x3849d6(0x17e),'options':_0x2ded11});},'setOptions':_0x3796d2=>{const _0x3cb3c1=_0x4d2c90;this[_0x3cb3c1(0x1ad)][_0x3cb3c1(0x1ac)]({'type':'setOptions','options':_0x3796d2});},'setDate':_0x2da5ba=>{const _0x2c021b=_0x4d2c90;this[_0x2c021b(0x1ad)][_0x2c021b(0x1ac)]({'type':'setDate','data':_0x2da5ba});},'update':()=>{const _0x1e9114=_0x4d2c90;if(this['_updateIng2'])return;this[_0x1e9114(0x1c2)]=!![],this['worker']['postMessage']({'type':_0x1e9114(0x1ea)});},'clear':()=>{this['worker']['postMessage']({'type':'clear'});}},this['windField']['init'](this['options']);}}mars3d__namespace[_0x589cd8(0x1dc)]['register'](_0x589cd8(0x22e),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace[_0x589cd8(0x18a)]=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x589cd8(0x1e2)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
15
15
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.6.18",
3
+ "version": "3.7.0",
4
4
  "description": "Mars3D平台插件,支持气象 风向图 功能插件",
5
5
  "main": "dist/mars3d-wind.js",
6
6
  "files": [
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "peerDependencies": {},
10
10
  "devDependencies": {
11
- "mars3d": "~3.6.18"
11
+ "mars3d": "~3.7.0"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"