mars3d-wind 3.6.8 → 3.6.9

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.8
5
- * 编译日期:2023-10-09 22:20:34
4
+ * 版本信息:v3.6.9
5
+ * 编译日期:2023-10-17 19:50:11
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';function _0x1c85(){const _0x545f2c=['_map','keys','primitives','canvas','drawingBufferWidth','log','10bWsIGi','BufferUsage','tlng','camera','nextParticlesSpeed','_onMouseMoveEvent','CanvasWindLayer','getUVByPoint','rgb(206,255,255)','OPAQUE','default','Math','vmin','depthTexture','mouseDown','clearCommand','cols','ymax','hidden','Appearance','fragmentShaderSource','attributeLocations','currentParticlesSpeed','addPrimitives','nextTrailsDepth','wind','Draw','particlesRendering','reverseY','setData','1142776wPqesF','top','defined','source','preRender','framebuffer','PixelDatatype','GeometryAttribute','west','50448RueeWC','udata','getExtent','clientWidth','Cartesian3','TWO_PI','speedRate','nextParticlesPosition','abs','_mountedHook','resize','_speedRate','get','options','toGridXY','windField','layer','show','lev','speed','//\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','length','TextureMinificationFilter','positionWC','refreshTimer','age','lineWidth','clear','tlat','once','pow','ceil','maxParticles','_onMouseUpEvent','vertexArray','mouseMove','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','mouse_move','windTextures','currentParticlesPosition','xmin','_calcUV','updateViewerParameters','_onMapWhellEvent','preExecute','ColorRamp','Framebuffer','outputTexture','ShaderSource','currentTrailsDepth','update','BoundingSphere','Cartesian2','fixedHeight','requestAnimationFrame','postMessage','__esModule','off','lon','9ffnQwu','nextTrails','_onMap_preRenderEvent','createWindTextures','PixelFormat','49314ZnFfIS','add','dropRateBump','isInExtent','createParticlesTextures','NEAREST','destroy','createSegmentsGeometry','wheel','dimensions','particlesTextures','ShaderProgram','globalCompositeOperation','_drawLines','randomBetween','updateSpeed','umin','latRange','UNSIGNED_BYTE','worker','bind','getFullscreenQuad','_updateIng','colors','initWorker','particlesComputing','commandToExecute','_calc_speedRate','init','fromCssColorString','particlesWind','clearFramebuffers','lng','shaderProgram','_setOptionsHook','fromCache','847aMLBCK','primitiveType','DISABLE_GL_POSITION_LOG_DEPTH','_onMouseDownEvent','currentTrails','27185150qJqrph','_updateIng2','mars3d-canvasWind','445440KYYPON','refreshParticles','frameTime','GeometryAttributes','framebuffers','style','rows','createRenderingPrimitives','_tomap','fillRect','clampToLatitudeRange','lat','1085572BxJJmS','getOwnPropertyDescriptor','color','xmax','ComponentDatatype','height','forEach','redraw','uniformMap','sqrt','stroke','particlesTextureSize','onmessage','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','array','pixelSize','1338096gFbBFW','Compute','clientHeight','postProcessingPosition','moveTo','Cesium','particlesNumber','_randomParticle','push','_pointerEvents','blue','pointerEvents','lineTo','context','Sampler','min','drawingBufferHeight','_bilinearInterpolation','levmax','levmin','SceneTransforms','grid','scene','canvasContext','destroyParticlesTextures','particleSystem','setOptions','viewerParameters','removeChild','data','all','maxAge','segments','mouse_down','getUVByXY','_removedHook','unbindEvent','globe','geometry','WindUtil','EventType','randomizeParticles','createComputingPrimitives','getParticles','max','getRandomLatLng','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','trails','mouseHidden','FLOAT','windData','textures','PrimitiveType','createTexture','atan2','addEventListener','fill'];_0x1c85=function(){return _0x545f2c;};return _0x1c85();}const _0x2451d4=_0x54f3;(function(_0x3cbd19,_0x554831){const _0x48c4cd=_0x54f3,_0x302578=_0x3cbd19();while(!![]){try{const _0x5e1543=-parseInt(_0x48c4cd(0x2a1))/0x1+-parseInt(_0x48c4cd(0x220))/0x2+-parseInt(_0x48c4cd(0x229))/0x3+-parseInt(_0x48c4cd(0x2b1))/0x4*(-parseInt(_0x48c4cd(0x202))/0x5)+parseInt(_0x48c4cd(0x269))/0x6*(-parseInt(_0x48c4cd(0x28d))/0x7)+-parseInt(_0x48c4cd(0x295))/0x8+-parseInt(_0x48c4cd(0x264))/0x9*(-parseInt(_0x48c4cd(0x292))/0xa);if(_0x5e1543===_0x554831)break;else _0x302578['push'](_0x302578['shift']());}catch(_0xe6f673){_0x302578['push'](_0x302578['shift']());}}}(_0x1c85,0xa2038));function _interopNamespace(_0x54bf1b){const _0x3c144c=_0x54f3;if(_0x54bf1b&&_0x54bf1b['__esModule'])return _0x54bf1b;var _0xea2a3f=Object['create'](null);return _0x54bf1b&&Object['keys'](_0x54bf1b)[_0x3c144c(0x2a7)](function(_0x314df7){const _0x4dc403=_0x3c144c;if(_0x314df7!==_0x4dc403(0x20c)){var _0x4cd561=Object[_0x4dc403(0x2a2)](_0x54bf1b,_0x314df7);Object['defineProperty'](_0xea2a3f,_0x314df7,_0x4cd561[_0x4dc403(0x235)]?_0x4cd561:{'enumerable':!![],'get':function(){return _0x54bf1b[_0x314df7];}});}}),_0xea2a3f['default']=_0x54bf1b,_0xea2a3f;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x5480ab,_0x2c3f21){const _0x4a888b=_0x54f3,_0x4d1287=_0x5480ab*Math['cos'](Cesium$7[_0x4a888b(0x20d)]['toRadians'](_0x2c3f21));return _0x4d1287;}function getV(_0x1382bf,_0x14fc28){const _0x3ab5b5=_0x1382bf*Math['sin'](Cesium$7['Math']['toRadians'](_0x14fc28));return _0x3ab5b5;}function getSpeed(_0x3a7fb5,_0x26cb76){const _0x1d2715=_0x54f3,_0x2e3c68=Math['sqrt'](Math[_0x1d2715(0x247)](_0x3a7fb5,0x2)+Math[_0x1d2715(0x247)](_0x26cb76,0x2));return _0x2e3c68;}function _0x54f3(_0x1921fd,_0x4c3722){const _0x1c8558=_0x1c85();return _0x54f3=function(_0x54f32d,_0x34c889){_0x54f32d=_0x54f32d-0x1c9;let _0x20d705=_0x1c8558[_0x54f32d];return _0x20d705;},_0x54f3(_0x1921fd,_0x4c3722);}function getDirection(_0x1041fd,_0x15e34b){const _0x5493d6=_0x54f3;let _0x2606f5=Cesium$7[_0x5493d6(0x20d)]['toDegrees'](Math[_0x5493d6(0x1f9)](_0x15e34b,_0x1041fd));return _0x2606f5+=_0x2606f5<0x0?0x168:0x0,_0x2606f5;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x5de465){const _0x35f312=_0x54f3;this['commandType']=_0x5de465['commandType'],this[_0x35f312(0x1e9)]=_0x5de465['geometry'],this[_0x35f312(0x217)]=_0x5de465['attributeLocations'],this['primitiveType']=_0x5de465[_0x35f312(0x28e)],this[_0x35f312(0x2a9)]=_0x5de465[_0x35f312(0x2a9)],this['vertexShaderSource']=_0x5de465['vertexShaderSource'],this['fragmentShaderSource']=_0x5de465['fragmentShaderSource'],this['rawRenderState']=_0x5de465['rawRenderState'],this['framebuffer']=_0x5de465['framebuffer'],this['outputTexture']=_0x5de465['outputTexture'],this['autoClear']=_0x5de465['autoClear']??![],this[_0x35f312(0x255)]=_0x5de465[_0x35f312(0x255)],this['show']=!![],this[_0x35f312(0x283)]=undefined,this['clearCommand']=undefined,this['autoClear']&&(this[_0x35f312(0x211)]=new Cesium$6['ClearCommand']({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x35f312(0x225)],'pass':Cesium$6['Pass']['OPAQUE']}));}['createCommand'](_0x3b6db7){const _0x461227=_0x54f3;switch(this['commandType']){case _0x461227(0x21c):{const _0x409be7=Cesium$6['VertexArray']['fromGeometry']({'context':_0x3b6db7,'geometry':this[_0x461227(0x1e9)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6[_0x461227(0x203)]['STATIC_DRAW']}),_0xddb90e=Cesium$6[_0x461227(0x274)][_0x461227(0x28c)]({'context':_0x3b6db7,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this[_0x461227(0x216)]}),_0x19b461=Cesium$6['RenderState']['fromCache'](this['rawRenderState']);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0xddb90e,'vertexArray':_0x409be7,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x19b461,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass'][_0x461227(0x20b)],'pickOnly':!![],'owner':this});}case _0x461227(0x2b2):{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this[_0x461227(0x258)],'persists':!![]});}}}['setGeometry'](_0x47bb20,_0x261212){const _0x321a9a=_0x54f3;this['geometry']=_0x261212;const _0x6e65d2=Cesium$6['VertexArray']['fromGeometry']({'context':_0x47bb20,'geometry':this['geometry'],'attributeLocations':this[_0x321a9a(0x217)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x6e65d2;}[_0x2451d4(0x25b)](_0x5ac457){const _0x509e99=_0x2451d4;if(!this['show'])return;if(_0x5ac457['mode']!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6[_0x509e99(0x222)](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x5ac457['context'])),Cesium$6['defined'](this[_0x509e99(0x255)])&&this['preExecute'](),Cesium$6['defined'](this[_0x509e99(0x211)])&&_0x5ac457['commandList']['push'](this['clearCommand']),_0x5ac457['commandList'][_0x509e99(0x1cb)](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){const _0x17b2eb=_0x2451d4;if(this['clearCommand']){var _0x4679b9,_0x3eba6d;(_0x4679b9=this['clearCommand'])!==null&&_0x4679b9!==void 0x0&&_0x4679b9[_0x17b2eb(0x24b)]&&this['clearCommand']['vertexArray'][_0x17b2eb(0x26f)](),(_0x3eba6d=this['clearCommand'])!==null&&_0x3eba6d!==void 0x0&&_0x3eba6d['shaderProgram']&&this['clearCommand']['shaderProgram'][_0x17b2eb(0x26f)](),delete this['clearCommand'];}return this['commandToExecute']&&(this[_0x17b2eb(0x283)]['vertexArray']&&this['commandToExecute'][_0x17b2eb(0x24b)][_0x17b2eb(0x26f)](),this['commandToExecute'][_0x17b2eb(0x28a)]&&this['commandToExecute'][_0x17b2eb(0x28a)][_0x17b2eb(0x26f)](),delete this[_0x17b2eb(0x283)]),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x4bab99=function(){const _0x4e0c14=_0x54f3,_0x59f276=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'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[_0x4e0c14(0x2a5)]['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x59f276;},_0x3f7c21=function(_0x3251c7,_0x3f78d2){const _0x15e3fb=_0x54f3;if(Cesium$5['defined'](_0x3f78d2)){const _0x39866e={};_0x39866e['arrayBufferView']=_0x3f78d2,_0x3251c7[_0x15e3fb(0x223)]=_0x39866e;}const _0x131d19=new Cesium$5['Texture'](_0x3251c7);return _0x131d19;},_0x9c71f8=function(_0x3b9b91,_0x1926d8,_0x5285a1){const _0x3a3569=_0x54f3,_0x14fd9e=new Cesium$5[(_0x3a3569(0x257))]({'context':_0x3b9b91,'colorTextures':[_0x1926d8],'depthTexture':_0x5285a1});return _0x14fd9e;},_0x4a4f73=function(_0x58a857){const _0x54e277=_0x54f3,_0x181454=!![],_0x1799b6=![],_0x3bcb01={'viewport':_0x58a857['viewport'],'depthTest':_0x58a857['depthTest'],'depthMask':_0x58a857['depthMask'],'blending':_0x58a857['blending']},_0x5c8672=Cesium$5[_0x54e277(0x215)]['getDefaultRenderState'](_0x181454,_0x1799b6,_0x3bcb01);return _0x5c8672;},_0x2fba1d=function(_0x386f46){const _0x432b22=_0x54f3,_0x5a559c={},_0x3cd749=Cesium$5[_0x432b22(0x20d)]['mod'](_0x386f46[_0x432b22(0x228)],Cesium$5['Math'][_0x432b22(0x22e)]),_0x57ecee=Cesium$5['Math']['mod'](_0x386f46['east'],Cesium$5['Math'][_0x432b22(0x22e)]),_0x1c701c=_0x386f46['width'];let _0x4da117,_0x2a50d3;_0x1c701c>Cesium$5[_0x432b22(0x20d)]['THREE_PI_OVER_TWO']?(_0x4da117=0x0,_0x2a50d3=Cesium$5['Math'][_0x432b22(0x22e)]):_0x57ecee-_0x3cd749<_0x1c701c?(_0x4da117=_0x3cd749,_0x2a50d3=_0x3cd749+_0x1c701c):(_0x4da117=_0x3cd749,_0x2a50d3=_0x57ecee);_0x5a559c[_0x432b22(0x263)]={'min':Cesium$5['Math']['toDegrees'](_0x4da117),'max':Cesium$5[_0x432b22(0x20d)]['toDegrees'](_0x2a50d3)};const _0x189d46=_0x386f46['south'],_0x4b8332=_0x386f46['north'],_0x3e32e4=_0x386f46['height'],_0x408b1a=_0x3e32e4>Cesium$5['Math']['PI']/0xc?_0x3e32e4/0x2:0x0;let _0x541020=Cesium$5['Math'][_0x432b22(0x29f)](_0x189d46-_0x408b1a),_0x46535f=Cesium$5['Math']['clampToLatitudeRange'](_0x4b8332+_0x408b1a);return _0x541020<-Cesium$5[_0x432b22(0x20d)]['PI_OVER_THREE']&&(_0x541020=-Cesium$5['Math']['PI_OVER_TWO']),_0x46535f>Cesium$5[_0x432b22(0x20d)]['PI_OVER_THREE']&&(_0x46535f=Cesium$5['Math']['PI_OVER_TWO']),_0x5a559c['lat']={'min':Cesium$5[_0x432b22(0x20d)]['toDegrees'](_0x541020),'max':Cesium$5['Math']['toDegrees'](_0x46535f)},_0x5a559c;};return{'getFullscreenQuad':_0x4bab99,'createTexture':_0x3f7c21,'createFramebuffer':_0x9c71f8,'createRawRenderState':_0x4a4f73,'viewRectangleToLonLatRange':_0x2fba1d};}());var segmentDraw_vert=_0x2451d4(0x24d),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=_0x2451d4(0x2ae),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(_0x21d642,_0x47a0dc,_0x483317,_0x56d0bc,_0x34befa){this['createRenderingTextures'](_0x21d642,_0x47a0dc,_0x483317['colors']),this['createRenderingFramebuffers'](_0x21d642),this['createRenderingPrimitives'](_0x21d642,_0x483317,_0x56d0bc,_0x34befa);}['createRenderingTextures'](_0x508476,_0x443b8c,_0x10268a){const _0xa4b83b=_0x2451d4,_0x1025cf={'context':_0x508476,'width':_0x508476['drawingBufferWidth'],'height':_0x508476['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['RGBA'],'pixelDatatype':Cesium$4['PixelDatatype'][_0xa4b83b(0x27b)]},_0x432b94={'context':_0x508476,'width':_0x508476[_0xa4b83b(0x200)],'height':_0x508476[_0xa4b83b(0x1d3)],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4[_0xa4b83b(0x226)]['UNSIGNED_INT']},_0x2bb0fa=_0x10268a[_0xa4b83b(0x23e)],_0x496f60=new Float32Array(_0x2bb0fa*0x3);for(let _0x14c65d=0x0;_0x14c65d<_0x2bb0fa;_0x14c65d++){const _0x145c31=Cesium$4['Color'][_0xa4b83b(0x286)](_0x10268a[_0x14c65d]);_0x496f60[0x3*_0x14c65d]=_0x145c31['red'],_0x496f60[0x3*_0x14c65d+0x1]=_0x145c31['green'],_0x496f60[0x3*_0x14c65d+0x2]=_0x145c31[_0xa4b83b(0x1cd)];}const _0x31a0ca={'context':_0x508476,'width':_0x2bb0fa,'height':0x1,'pixelFormat':Cesium$4[_0xa4b83b(0x268)]['RGB'],'pixelDatatype':Cesium$4[_0xa4b83b(0x226)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4[_0xa4b83b(0x23f)]['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this[_0xa4b83b(0x1f6)]={'segmentsColor':Util['createTexture'](_0x1025cf),'segmentsDepth':Util[_0xa4b83b(0x1f8)](_0x432b94),'currentTrailsColor':Util['createTexture'](_0x1025cf),'currentTrailsDepth':Util['createTexture'](_0x432b94),'nextTrailsColor':Util['createTexture'](_0x1025cf),'nextTrailsDepth':Util['createTexture'](_0x432b94),'colorTable':Util['createTexture'](_0x31a0ca,_0x496f60)};}['createRenderingFramebuffers'](_0x3f5603){const _0x4c4408=_0x2451d4;this['framebuffers']={'segments':Util['createFramebuffer'](_0x3f5603,this['textures']['segmentsColor'],this[_0x4c4408(0x1f6)]['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x3f5603,this[_0x4c4408(0x1f6)]['currentTrailsColor'],this[_0x4c4408(0x1f6)][_0x4c4408(0x25a)]),'nextTrails':Util['createFramebuffer'](_0x3f5603,this['textures']['nextTrailsColor'],this['textures'][_0x4c4408(0x21a)])};}['createSegmentsGeometry'](_0x4fe7e7){const _0x14b32c=_0x2451d4,_0x24b2ea=0x4;let _0x3769cc=[];for(let _0x25f1cf=0x0;_0x25f1cf<_0x4fe7e7['particlesTextureSize'];_0x25f1cf++){for(let _0x53db3f=0x0;_0x53db3f<_0x4fe7e7['particlesTextureSize'];_0x53db3f++){for(let _0x22ea2d=0x0;_0x22ea2d<_0x24b2ea;_0x22ea2d++){_0x3769cc['push'](_0x25f1cf/_0x4fe7e7['particlesTextureSize']),_0x3769cc['push'](_0x53db3f/_0x4fe7e7[_0x14b32c(0x2ac)]);}}}_0x3769cc=new Float32Array(_0x3769cc);let _0x4fc3aa=[];const _0x16b093=[-0x1,0x1],_0xde8ad5=[-0x1,0x1];for(let _0x41ddf1=0x0;_0x41ddf1<_0x4fe7e7['maxParticles'];_0x41ddf1++){for(let _0x505102=0x0;_0x505102<_0x24b2ea/0x2;_0x505102++){for(let _0x35bf80=0x0;_0x35bf80<_0x24b2ea/0x2;_0x35bf80++){_0x4fc3aa['push'](_0x16b093[_0x505102]),_0x4fc3aa[_0x14b32c(0x1cb)](_0xde8ad5[_0x35bf80]),_0x4fc3aa['push'](0x0);}}}_0x4fc3aa=new Float32Array(_0x4fc3aa);const _0x9dc08f=0x6*_0x4fe7e7[_0x14b32c(0x249)],_0x31ba72=new Uint32Array(_0x9dc08f);for(let _0x9f2d3e=0x0,_0x495e80=0x0,_0x1e3010=0x0;_0x9f2d3e<_0x4fe7e7['maxParticles'];_0x9f2d3e++){_0x31ba72[_0x495e80++]=_0x1e3010+0x0,_0x31ba72[_0x495e80++]=_0x1e3010+0x1,_0x31ba72[_0x495e80++]=_0x1e3010+0x2,_0x31ba72[_0x495e80++]=_0x1e3010+0x2,_0x31ba72[_0x495e80++]=_0x1e3010+0x1,_0x31ba72[_0x495e80++]=_0x1e3010+0x3,_0x1e3010+=0x4;}const _0x3ff54a=new Cesium$4['Geometry']({'attributes':new Cesium$4[(_0x14b32c(0x298))]({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4[_0x14b32c(0x2a5)]['FLOAT'],'componentsPerAttribute':0x2,'values':_0x3769cc}),'normal':new Cesium$4[(_0x14b32c(0x227))]({'componentDatatype':Cesium$4['ComponentDatatype'][_0x14b32c(0x1f4)],'componentsPerAttribute':0x3,'values':_0x4fc3aa})}),'indices':_0x31ba72});return _0x3ff54a;}[_0x2451d4(0x29c)](_0x44e2c5,_0x4f9cf5,_0x4e01c0,_0x55f06d){const _0x444dfb=_0x2451d4,_0x4b64ed=this;this[_0x444dfb(0x1fe)]={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x444dfb(0x270)](_0x4f9cf5),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){const _0x455663=_0x444dfb;return _0x55f06d['particlesTextures'][_0x455663(0x250)];},'postProcessingPosition':function(){return _0x55f06d['particlesTextures']['postProcessingPosition'];},'postProcessingSpeed':function(){const _0x474add=_0x444dfb;return _0x55f06d[_0x474add(0x273)]['postProcessingSpeed'];},'colorTable':function(){return _0x4b64ed['textures']['colorTable'];},'aspect':function(){const _0x558ddc=_0x444dfb;return _0x44e2c5[_0x558ddc(0x200)]/_0x44e2c5['drawingBufferHeight'];},'pixelSize':function(){return _0x4e01c0['pixelSize'];},'lineWidth':function(){return _0x4f9cf5['lineWidth'];},'particleHeight':function(){return _0x4f9cf5['particleHeight'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'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[_0x444dfb(0x27e)](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x4b64ed['textures']['segmentsColor'];},'segmentsDepthTexture':function(){return _0x4b64ed['textures']['segmentsDepth'];},'currentTrailsColor':function(){return _0x4b64ed['framebuffers']['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x78b14b=_0x444dfb;return _0x4b64ed['framebuffers']['currentTrails'][_0x78b14b(0x20f)];},'fadeOpacity':function(){return _0x4f9cf5['fadeOpacity'];}},'vertexShaderSource':new Cesium$4[(_0x444dfb(0x259))]({'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['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x444dfb(0x265)],'autoClear':!![],'preExecute':function(){const _0x4a6b1a=_0x444dfb,_0x5e2bb7=_0x4b64ed[_0x4a6b1a(0x299)][_0x4a6b1a(0x291)];_0x4b64ed['framebuffers']['currentTrails']=_0x4b64ed[_0x4a6b1a(0x299)]['nextTrails'],_0x4b64ed['framebuffers']['nextTrails']=_0x5e2bb7,_0x4b64ed['primitives']['trails']['commandToExecute']['framebuffer']=_0x4b64ed[_0x4a6b1a(0x299)][_0x4a6b1a(0x265)],_0x4b64ed['primitives'][_0x4a6b1a(0x1f2)][_0x4a6b1a(0x211)]['framebuffer']=_0x4b64ed[_0x4a6b1a(0x299)][_0x4a6b1a(0x265)];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x444dfb(0x1f7)]['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){return _0x4b64ed['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x4b64ed['framebuffers']['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x444dfb(0x28f)],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0x444dfb(0x259))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag=_0x2451d4(0x23d),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='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',postProcessingPosition_frag='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',postProcessingSpeed_frag=_0x2451d4(0x1f1);const Cesium$3=mars3d__namespace[_0x2451d4(0x2b6)];class ParticlesComputing{constructor(_0x166627,_0xc21a6c,_0x45b0da,_0x502a1d){this['data']=_0xc21a6c,this['createWindTextures'](_0x166627,_0xc21a6c),this['createParticlesTextures'](_0x166627,_0x45b0da,_0x502a1d),this['createComputingPrimitives'](_0xc21a6c,_0x45b0da,_0x502a1d);}[_0x2451d4(0x267)](_0x42d8e6,_0x535d0b){const _0x40b277=_0x2451d4,_0x2831cd={'context':_0x42d8e6,'width':_0x535d0b['dimensions']['lon'],'height':_0x535d0b[_0x40b277(0x272)][_0x40b277(0x2a0)]*(_0x535d0b['dimensions']['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x40b277(0x1d1))]({'minificationFilter':Cesium$3[_0x40b277(0x23f)]['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x40b277(0x26e)]})};this[_0x40b277(0x24f)]={'U':Util[_0x40b277(0x1f8)](_0x2831cd,_0x535d0b['U']['array']),'V':Util[_0x40b277(0x1f8)](_0x2831cd,_0x535d0b['V']['array'])};}['createParticlesTextures'](_0x4d0689,_0x5d5804,_0x481d66){const _0x1f7f37=_0x2451d4,_0x1485ae={'context':_0x4d0689,'width':_0x5d5804['particlesTextureSize'],'height':_0x5d5804['particlesTextureSize'],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3[_0x1f7f37(0x23f)][_0x1f7f37(0x26e)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x4ec3c5=this['randomizeParticles'](_0x5d5804[_0x1f7f37(0x249)],_0x481d66),_0x6951ab=new Float32Array(0x4*_0x5d5804['maxParticles'])[_0x1f7f37(0x1fb)](0x0);this['particlesTextures']={'particlesWind':Util[_0x1f7f37(0x1f8)](_0x1485ae),'currentParticlesPosition':Util['createTexture'](_0x1485ae,_0x4ec3c5),'nextParticlesPosition':Util['createTexture'](_0x1485ae,_0x4ec3c5),'currentParticlesSpeed':Util['createTexture'](_0x1485ae,_0x6951ab),'nextParticlesSpeed':Util['createTexture'](_0x1485ae,_0x6951ab),'postProcessingPosition':Util[_0x1f7f37(0x1f8)](_0x1485ae,_0x4ec3c5),'postProcessingSpeed':Util['createTexture'](_0x1485ae,_0x6951ab)};}[_0x2451d4(0x1ec)](_0x30edcb,_0x5c3732){const _0x1a8e8b=_0x2451d4,_0x224955=new Float32Array(0x4*_0x30edcb);for(let _0x305405=0x0;_0x305405<_0x30edcb;_0x305405++){_0x224955[0x4*_0x305405]=Cesium$3['Math'][_0x1a8e8b(0x277)](_0x5c3732['lonRange']['x'],_0x5c3732['lonRange']['y']),_0x224955[0x4*_0x305405+0x1]=Cesium$3['Math']['randomBetween'](_0x5c3732[_0x1a8e8b(0x27a)]['x'],_0x5c3732['latRange']['y']),_0x224955[0x4*_0x305405+0x2]=Cesium$3[_0x1a8e8b(0x20d)]['randomBetween'](this['data'][_0x1a8e8b(0x23b)]['min'],this['data'][_0x1a8e8b(0x23b)]['max']),_0x224955[0x4*_0x305405+0x3]=0x0;}return _0x224955;}['destroyParticlesTextures'](){Object['keys'](this['particlesTextures'])['forEach'](_0x271cef=>{const _0x495ed6=_0x54f3;this[_0x495ed6(0x273)][_0x271cef][_0x495ed6(0x26f)]();});}[_0x2451d4(0x1ed)](_0x2f664a,_0x381abf,_0x4cf004){const _0x99c614=_0x2451d4,_0x5fd604=new Cesium$3[(_0x99c614(0x22d))](_0x2f664a[_0x99c614(0x272)]['lon'],_0x2f664a['dimensions'][_0x99c614(0x2a0)],_0x2f664a['dimensions']['lev']),_0x215121=new Cesium$3[(_0x99c614(0x22d))](_0x2f664a['lon']['min'],_0x2f664a[_0x99c614(0x2a0)][_0x99c614(0x1d2)],_0x2f664a['lev']['min']),_0x556bf9=new Cesium$3[(_0x99c614(0x22d))](_0x2f664a['lon']['max'],_0x2f664a[_0x99c614(0x2a0)][_0x99c614(0x1ef)],_0x2f664a['lev'][_0x99c614(0x1ef)]),_0x4db06a=new Cesium$3['Cartesian3']((_0x556bf9['x']-_0x215121['x'])/(_0x5fd604['x']-0x1),(_0x556bf9['y']-_0x215121['y'])/(_0x5fd604['y']-0x1),_0x5fd604['z']>0x1?(_0x556bf9['z']-_0x215121['z'])/(_0x5fd604['z']-0x1):0x1),_0x4d5699=new Cesium$3[(_0x99c614(0x25d))](_0x2f664a['U']['min'],_0x2f664a['U']['max']),_0x13c0ad=new Cesium$3['Cartesian2'](_0x2f664a['V']['min'],_0x2f664a['V'][_0x99c614(0x1ef)]),_0x21410f=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x21410f['windTextures']['U'];},'V':function(){return _0x21410f['windTextures']['V'];},'currentParticlesPosition':function(){return _0x21410f['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x5fd604;},'minimum':function(){return _0x215121;},'maximum':function(){return _0x556bf9;},'interval':function(){return _0x4db06a;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures'][_0x99c614(0x287)],'preExecute':function(){const _0x25db22=_0x99c614;_0x21410f['primitives']['getWind']['commandToExecute'][_0x25db22(0x258)]=_0x21410f['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':_0x99c614(0x2b2),'uniformMap':{'currentParticlesSpeed':function(){const _0x45f8c8=_0x99c614;return _0x21410f['particlesTextures'][_0x45f8c8(0x218)];},'particlesWind':function(){const _0x2f6e1f=_0x99c614;return _0x21410f['particlesTextures'][_0x2f6e1f(0x287)];},'uSpeedRange':function(){return _0x4d5699;},'vSpeedRange':function(){return _0x13c0ad;},'pixelSize':function(){const _0x23bdd3=_0x99c614;return _0x4cf004[_0x23bdd3(0x2b0)];},'speedFactor':function(){return _0x381abf['speedFactor'];}},'fragmentShaderSource':new Cesium$3[(_0x99c614(0x259))]({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function(){const _0x88b34b=_0x99c614,_0x43909b=_0x21410f['particlesTextures']['currentParticlesSpeed'];_0x21410f['particlesTextures']['currentParticlesSpeed']=_0x21410f['particlesTextures']['postProcessingSpeed'],_0x21410f[_0x88b34b(0x273)]['postProcessingSpeed']=_0x43909b,_0x21410f[_0x88b34b(0x1fe)]['updateSpeed'][_0x88b34b(0x283)]['outputTexture']=_0x21410f[_0x88b34b(0x273)][_0x88b34b(0x206)];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x4336cf=_0x99c614;return _0x21410f[_0x4336cf(0x273)][_0x4336cf(0x250)];},'currentParticlesSpeed':function(){return _0x21410f['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this[_0x99c614(0x273)][_0x99c614(0x230)],'preExecute':function(){const _0x1a86c5=_0x99c614,_0x21b5b2=_0x21410f['particlesTextures']['currentParticlesPosition'];_0x21410f[_0x1a86c5(0x273)]['currentParticlesPosition']=_0x21410f['particlesTextures']['postProcessingPosition'],_0x21410f['particlesTextures']['postProcessingPosition']=_0x21b5b2,_0x21410f[_0x1a86c5(0x1fe)]['updatePosition']['commandToExecute'][_0x1a86c5(0x258)]=_0x21410f[_0x1a86c5(0x273)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x99c614(0x2b2),'uniformMap':{'nextParticlesPosition':function(){const _0x5e3c1f=_0x99c614;return _0x21410f[_0x5e3c1f(0x273)][_0x5e3c1f(0x230)];},'nextParticlesSpeed':function(){return _0x21410f['particlesTextures']['nextParticlesSpeed'];},'lonRange':function(){return _0x4cf004['lonRange'];},'latRange':function(){const _0x2b76e4=_0x99c614;return _0x4cf004[_0x2b76e4(0x27a)];},'randomCoefficient':function(){const _0x3fc1b4=Math['random']();return _0x3fc1b4;},'dropRate':function(){return _0x381abf['dropRate'];},'dropRateBump':function(){const _0x2d95f6=_0x99c614;return _0x381abf[_0x2d95f6(0x26b)];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this[_0x99c614(0x273)]['postProcessingPosition'],'preExecute':function(){_0x21410f['primitives']['postProcessingPosition']['commandToExecute']['outputTexture']=_0x21410f['particlesTextures']['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function(){const _0x5a07bb=_0x99c614;return _0x21410f['particlesTextures'][_0x5a07bb(0x2b4)];},'nextParticlesSpeed':function(){return _0x21410f['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){const _0x29259b=_0x99c614;_0x21410f['primitives']['postProcessingSpeed'][_0x29259b(0x283)]['outputTexture']=_0x21410f['particlesTextures']['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x5d87ed,_0x445910,_0x4c1759,_0x178be4){const _0x4bd3e1=_0x2451d4;this['context']=_0x5d87ed,_0x445910={..._0x445910},_0x445910[_0x4bd3e1(0x22a)]&&_0x445910['vdata']&&(_0x445910['dimensions']={},_0x445910['dimensions']['lon']=_0x445910['cols'],_0x445910[_0x4bd3e1(0x272)]['lat']=_0x445910[_0x4bd3e1(0x29b)],_0x445910[_0x4bd3e1(0x272)]['lev']=_0x445910['lev']||0x1,_0x445910['lon']={},_0x445910['lon']['min']=_0x445910['xmin'],_0x445910['lon']['max']=_0x445910['xmax'],_0x445910[_0x4bd3e1(0x2a0)]={},_0x445910[_0x4bd3e1(0x2a0)]['min']=_0x445910['ymin'],_0x445910['lat'][_0x4bd3e1(0x1ef)]=_0x445910[_0x4bd3e1(0x213)],_0x445910[_0x4bd3e1(0x23b)]={},_0x445910['lev'][_0x4bd3e1(0x1d2)]=_0x445910[_0x4bd3e1(0x1d6)]??0x1,_0x445910['lev']['max']=_0x445910[_0x4bd3e1(0x1d5)]??0x1,_0x445910['U']={},_0x445910['U'][_0x4bd3e1(0x2af)]=new Float32Array(_0x445910['udata']),_0x445910['U']['min']=_0x445910[_0x4bd3e1(0x279)]??Math['min'](..._0x445910['udata']),_0x445910['U']['max']=_0x445910['umax']??Math['max'](..._0x445910['udata']),_0x445910['V']={},_0x445910['V']['array']=new Float32Array(_0x445910['vdata']),_0x445910['V']['min']=_0x445910[_0x4bd3e1(0x20e)]??Math[_0x4bd3e1(0x1d2)](..._0x445910['vdata']),_0x445910['V']['max']=_0x445910['vmax']??Math['max'](..._0x445910['vdata'])),this[_0x4bd3e1(0x1e0)]=_0x445910,this[_0x4bd3e1(0x236)]=_0x4c1759,this['viewerParameters']=_0x178be4,this[_0x4bd3e1(0x282)]=new ParticlesComputing(this['context'],this[_0x4bd3e1(0x1e0)],this[_0x4bd3e1(0x236)],this[_0x4bd3e1(0x1de)]),this[_0x4bd3e1(0x21d)]=new ParticlesRendering(this['context'],this[_0x4bd3e1(0x1e0)],this['options'],this['viewerParameters'],this['particlesComputing']);}['canvasResize'](_0x2119dc){const _0x14c7b7=_0x2451d4;this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])[_0x14c7b7(0x2a7)](_0x13e5bd=>{const _0x40cac5=_0x14c7b7;this[_0x40cac5(0x282)]['windTextures'][_0x13e5bd][_0x40cac5(0x26f)]();}),this['particlesRendering'][_0x14c7b7(0x1f6)]['colorTable']['destroy'](),Object['keys'](this['particlesRendering'][_0x14c7b7(0x299)])[_0x14c7b7(0x2a7)](_0x1879ff=>{this['particlesRendering']['framebuffers'][_0x1879ff]['destroy']();}),this['context']=_0x2119dc,this[_0x14c7b7(0x282)]=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this[_0x14c7b7(0x1d0)],this['data'],this['options'],this['viewerParameters'],this[_0x14c7b7(0x282)]);}[_0x2451d4(0x288)](){const _0x3cf167=_0x2451d4,_0x3a2644=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});Object[_0x3cf167(0x1fd)](this['particlesRendering']['framebuffers'])[_0x3cf167(0x2a7)](_0x3a6d58=>{_0x3a2644['framebuffer']=this['particlesRendering']['framebuffers'][_0x3a6d58],_0x3a2644['execute'](this['context']);});}['refreshParticles'](_0x38af90){const _0xdc7e68=_0x2451d4;this['clearFramebuffers'](),this[_0xdc7e68(0x282)]['destroyParticlesTextures'](),this['particlesComputing'][_0xdc7e68(0x26d)](this['context'],this['options'],this[_0xdc7e68(0x1de)]);if(_0x38af90){var _0x34598e,_0x47d8ed;const _0x447d18=this['particlesRendering']['createSegmentsGeometry'](this['options']);this['particlesRendering']['primitives'][_0xdc7e68(0x1e3)]['geometry']=_0x447d18;const _0x1f524e=Cesium$2['VertexArray']['fromGeometry']({'context':this['context'],'geometry':_0x447d18,'attributeLocations':this['particlesRendering'][_0xdc7e68(0x1fe)]['segments']['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x34598e=this['particlesRendering']['primitives'])!==null&&_0x34598e!==void 0x0&&(_0x47d8ed=_0x34598e['segments'])!==null&&_0x47d8ed!==void 0x0&&_0x47d8ed['commandToExecute']&&(this['particlesRendering']['primitives'][_0xdc7e68(0x1e3)]['commandToExecute']['vertexArray']=_0x1f524e);}}['setOptions'](_0x15e011){const _0x4e58b0=_0x2451d4;let _0x5e5162=![];this['options']['maxParticles']!==_0x15e011['maxParticles']&&(_0x5e5162=!![]),Object['keys'](_0x15e011)['forEach'](_0xee10d3=>{this['options'][_0xee10d3]=_0x15e011[_0xee10d3];}),this[_0x4e58b0(0x296)](_0x5e5162);}['applyViewerParameters'](_0x2e29ae){Object['keys'](_0x2e29ae)['forEach'](_0x1ebbd8=>{this['viewerParameters'][_0x1ebbd8]=_0x2e29ae[_0x1ebbd8];}),this['refreshParticles'](![]);}[_0x2451d4(0x26f)](){const _0x5f2b80=_0x2451d4;clearTimeout(this['canrefresh']),this[_0x5f2b80(0x282)][_0x5f2b80(0x1db)](),Object['keys'](this[_0x5f2b80(0x282)]['windTextures'])[_0x5f2b80(0x2a7)](_0x18195d=>{this['particlesComputing']['windTextures'][_0x18195d]['destroy']();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object['keys'](this['particlesRendering'][_0x5f2b80(0x299)])['forEach'](_0x33be7a=>{this['particlesRendering']['framebuffers'][_0x33be7a]['destroy']();});for(const _0x8b485b in this){delete this[_0x8b485b];}}}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':[_0x2451d4(0x20a)]};class WindLayer extends BaseLayer$1{constructor(_0x4e97ec={}){_0x4e97ec={...DEF_OPTIONS,..._0x4e97ec},super(_0x4e97ec),this['_setOptionsHook'](_0x4e97ec);}get[_0x2451d4(0x239)](){const _0xddc3ec=_0x2451d4;return this[_0xddc3ec(0x1fe)];}get['data'](){return this['_data'];}set['data'](_0x18a42a){const _0xe2b5cd=_0x2451d4;this[_0xe2b5cd(0x21f)](_0x18a42a);}get['colors'](){const _0x59bc34=_0x2451d4;return this[_0x59bc34(0x236)]['colors'];}set['colors'](_0x3718a1){const _0x3714db=_0x2451d4;this['options'][_0x3714db(0x280)]=_0x3718a1,this['particleSystem']&&this['particleSystem'][_0x3714db(0x1dd)]({'colors':_0x3718a1}),this[_0x3714db(0x233)]();}[_0x2451d4(0x232)](){}['_addedHook'](){const _0x5cf879=_0x2451d4;this['scene']=this['_map']['scene'],this['camera']=this[_0x5cf879(0x1fc)]['camera'],this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map']['scene']['primitives'][_0x5cf879(0x26a)](this['primitives']),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1[(_0x5cf879(0x25c))](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this['resize'][_0x5cf879(0x27d)](this),![]),this[_0x5cf879(0x1e4)]=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace[_0x5cf879(0x1eb)][_0x5cf879(0x271)],this[_0x5cf879(0x254)],this),this[_0x5cf879(0x1fc)]['on'](mars3d__namespace['EventType'][_0x5cf879(0x210)],this['_onMouseDownEvent'],this),this[_0x5cf879(0x1fc)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x5cf879(0x21f)](this['_data']);}[_0x2451d4(0x1e6)](){const _0x3e20ac=_0x2451d4;window['removeEventListener'](_0x3e20ac(0x233),this[_0x3e20ac(0x233)]),this[_0x3e20ac(0x1fc)]['off'](mars3d__namespace[_0x3e20ac(0x1eb)][_0x3e20ac(0x224)],this[_0x3e20ac(0x266)],this),this['_map'][_0x3e20ac(0x262)](mars3d__namespace['EventType'][_0x3e20ac(0x271)],this['_onMapWhellEvent'],this),this[_0x3e20ac(0x1fc)][_0x3e20ac(0x262)](mars3d__namespace[_0x3e20ac(0x1eb)][_0x3e20ac(0x210)],this['_onMouseDownEvent'],this),this[_0x3e20ac(0x1fc)][_0x3e20ac(0x262)](mars3d__namespace[_0x3e20ac(0x1eb)]['mouseUp'],this['_onMouseUpEvent'],this),this[_0x3e20ac(0x1fc)]['off'](mars3d__namespace[_0x3e20ac(0x1eb)]['mouseMove'],this[_0x3e20ac(0x207)],this),this['primitives']['removeAll'](),this['_map']['scene']['primitives']['remove'](this[_0x3e20ac(0x1fe)]);}[_0x2451d4(0x233)](){const _0x47610a=_0x2451d4;if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this['primitives']['removeAll'](),this[_0x47610a(0x1fc)][_0x47610a(0x246)](mars3d__namespace[_0x47610a(0x1eb)]['preRender'],this['_onMap_preRenderEvent'],this);}[_0x2451d4(0x266)](_0x2795c7){const _0x45b6f5=_0x2451d4;this['particleSystem']['canvasResize'](this['scene'][_0x45b6f5(0x1d0)]),this[_0x45b6f5(0x219)](),this[_0x45b6f5(0x1fe)][_0x45b6f5(0x23a)]=!![];}['_onMapWhellEvent'](_0x5efae0){const _0x587fb5=_0x2451d4;clearTimeout(this['refreshTimer']);if(!this['show']||!this[_0x587fb5(0x1dc)])return;this[_0x587fb5(0x1fe)]['show']=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x2b4ffb){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x2a5d0d){const _0x507ee3=_0x2451d4;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this[_0x507ee3(0x1fe)]['show']=![],this['mouse_move']=!![]);}[_0x2451d4(0x24a)](_0xbc705d){const _0x43fa66=_0x2451d4;if(!this['show']||!this['particleSystem'])return;this[_0x43fa66(0x1e4)]&&this['mouse_move']&&this[_0x43fa66(0x2a8)](),this['primitives']['show']=!![],this['mouse_down']=![],this['mouse_move']=![];}['redraw'](){const _0x4197cd=_0x2451d4;if(!this[_0x4197cd(0x1fc)]||!this[_0x4197cd(0x23a)])return;this['updateViewerParameters'](),this[_0x4197cd(0x1dc)]['applyViewerParameters'](this['viewerParameters']),this[_0x4197cd(0x1fe)]['show']=!![];}['setData'](_0x180135){const _0x5c2d22=_0x2451d4;this['_data']=_0x180135,this[_0x5c2d22(0x1dc)]&&this['particleSystem']['destroy'](),this[_0x5c2d22(0x1dc)]=new ParticleSystem(this[_0x5c2d22(0x1d9)][_0x5c2d22(0x1d0)],_0x180135,this['getOptions'](),this[_0x5c2d22(0x1de)]),this['addPrimitives']();}[_0x2451d4(0x28b)](_0x3a6aa1,_0x2b2ecd){const _0x56c1b1=_0x2451d4;if(_0x3a6aa1)for(const _0xf20745 in _0x3a6aa1){this[_0xf20745]=_0x3a6aa1[_0xf20745];}this['particleSystem']&&this[_0x56c1b1(0x1dc)]['setOptions'](this['getOptions']());}['getOptions'](){const _0x555c77=_0x2451d4,_0x377eeb=Math[_0x555c77(0x248)](Math[_0x555c77(0x2aa)](this['particlesNumber']));return this['particlesNumber']=_0x377eeb*_0x377eeb,{'particlesTextureSize':_0x377eeb,'maxParticles':this['particlesNumber'],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this[_0x555c77(0x280)]};}[_0x2451d4(0x219)](){const _0xc8a163=_0x2451d4;this[_0xc8a163(0x1fe)]['add'](this[_0xc8a163(0x1dc)]['particlesComputing']['primitives']['getWind']),this[_0xc8a163(0x1fe)]['add'](this['particleSystem']['particlesComputing']['primitives'][_0xc8a163(0x278)]),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives']['updatePosition']),this[_0xc8a163(0x1fe)][_0xc8a163(0x26a)](this[_0xc8a163(0x1dc)]['particlesComputing']['primitives']['postProcessingPosition']),this[_0xc8a163(0x1fe)]['add'](this[_0xc8a163(0x1dc)][_0xc8a163(0x282)][_0xc8a163(0x1fe)]['postProcessingSpeed']),this['primitives']['add'](this['particleSystem'][_0xc8a163(0x21d)]['primitives']['segments']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['trails']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['screen']);}[_0x2451d4(0x253)](){const _0x285e74=_0x2451d4;let _0x214b2e=this[_0x285e74(0x205)]['computeViewRectangle'](this['scene'][_0x285e74(0x1e8)]['ellipsoid']);if(!_0x214b2e){const _0x1d50de=this['_map'][_0x285e74(0x22b)]();_0x214b2e=Cesium$1['Rectangle']['fromDegrees'](_0x1d50de['xmin'],_0x1d50de['ymin'],_0x1d50de['xmax'],_0x1d50de['ymax']);}const _0x4c558f=Util['viewRectangleToLonLatRange'](_0x214b2e);this[_0x285e74(0x1de)]['lonRange']['x']=_0x4c558f['lon']['min'],this[_0x285e74(0x1de)]['lonRange']['y']=_0x4c558f['lon'][_0x285e74(0x1ef)],this['viewerParameters'][_0x285e74(0x27a)]['x']=_0x4c558f['lat']['min'],this[_0x285e74(0x1de)]['latRange']['y']=_0x4c558f['lat']['max'];const _0xb9a50c=this['camera']['getPixelSize'](this['globeBoundingSphere'],this['scene']['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0xb9a50c>0x0&&(this['viewerParameters'][_0x285e74(0x2b0)]=_0xb9a50c);}}mars3d__namespace['LayerUtil']['register'](_0x2451d4(0x21b),WindLayer),mars3d__namespace['layer']['WindLayer']=WindLayer;class CanvasParticle{constructor(){const _0x1349e2=_0x2451d4;this['lng']=null,this[_0x1349e2(0x2a0)]=null,this['tlng']=null,this[_0x1349e2(0x245)]=null,this['age']=null,this[_0x1349e2(0x23c)]=null;}['destroy'](){for(const _0x11a717 in this){delete this[_0x11a717];}}}class CanvasWindField{constructor(_0x4f94ef){this['setOptions'](_0x4f94ef);}get['speedRate'](){return this['_speedRate'];}set['speedRate'](_0x5de5e9){const _0x2131d0=_0x2451d4;this['_speedRate']=(0x64-(_0x5de5e9>0x63?0x63:_0x5de5e9))*0x64,this[_0x2131d0(0x284)]=[(this['xmax']-this[_0x2131d0(0x251)])/this[_0x2131d0(0x234)],(this['ymax']-this['ymin'])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set['maxAge'](_0x51f8b0){this['_maxAge']=_0x51f8b0;}[_0x2451d4(0x1dd)](_0x57c94a){const _0x440f04=_0x2451d4;this['options']=_0x57c94a,this['maxAge']=_0x57c94a['maxAge']||0x78,this[_0x440f04(0x22f)]=_0x57c94a['speedRate']||0x32,this['particles']=[];const _0x4ddb17=_0x57c94a['particlesNumber']||0x1000;for(let _0x29d527=0x0;_0x29d527<_0x4ddb17;_0x29d527++){const _0x21af2d=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x21af2d);}}['setDate'](_0xbef59f){const _0x5cd00c=_0x2451d4;this[_0x5cd00c(0x29b)]=_0xbef59f['rows'],this['cols']=_0xbef59f['cols'],this[_0x5cd00c(0x251)]=_0xbef59f['xmin'],this['xmax']=_0xbef59f['xmax'],this['ymin']=_0xbef59f['ymin'],this['ymax']=_0xbef59f[_0x5cd00c(0x213)],this['grid']=[];const _0x2f859d=_0xbef59f['udata'],_0x5aa67f=_0xbef59f['vdata'];let _0x15ab91=![];_0x2f859d['length']===this[_0x5cd00c(0x29b)]&&_0x2f859d[0x0]['length']===this[_0x5cd00c(0x212)]&&(_0x15ab91=!![]);let _0x33c3f1=0x0,_0x54fc75=null,_0x436bf4=null;for(let _0x1a0f2a=0x0;_0x1a0f2a<this['rows'];_0x1a0f2a++){_0x54fc75=[];for(let _0x4960ee=0x0;_0x4960ee<this['cols'];_0x4960ee++,_0x33c3f1++){_0x15ab91?_0x436bf4=this['_calcUV'](_0x2f859d[_0x1a0f2a][_0x4960ee],_0x5aa67f[_0x1a0f2a][_0x4960ee]):_0x436bf4=this[_0x5cd00c(0x252)](_0x2f859d[_0x33c3f1],_0x5aa67f[_0x33c3f1]),_0x54fc75[_0x5cd00c(0x1cb)](_0x436bf4);}this['grid'][_0x5cd00c(0x1cb)](_0x54fc75);}this['options']['reverseY']&&this['grid']['reverse']();}['clear'](){const _0x4aaa86=_0x2451d4;delete this['rows'],delete this[_0x4aaa86(0x212)],delete this['xmin'],delete this[_0x4aaa86(0x2a4)],delete this['ymin'],delete this['ymax'],delete this[_0x4aaa86(0x1d8)],delete this['particles'];}[_0x2451d4(0x237)](_0x37babc,_0x27bb4a){const _0xfddf8a=_0x2451d4,_0x4e90a3=(_0x37babc-this['xmin'])/(this[_0xfddf8a(0x2a4)]-this['xmin'])*(this[_0xfddf8a(0x212)]-0x1),_0x4ed80e=(this['ymax']-_0x27bb4a)/(this['ymax']-this['ymin'])*(this['rows']-0x1);return[_0x4e90a3,_0x4ed80e];}['getUVByXY'](_0x1d0e4e,_0x4a1a17){const _0x5a7c41=_0x2451d4;if(_0x1d0e4e<0x0||_0x1d0e4e>=this['cols']||_0x4a1a17>=this['rows'])return[0x0,0x0,0x0];const _0x8fa459=Math['floor'](_0x1d0e4e),_0x1085e1=Math['floor'](_0x4a1a17);if(_0x8fa459===_0x1d0e4e&&_0x1085e1===_0x4a1a17)return this['grid'][_0x4a1a17][_0x1d0e4e];const _0x4661cc=_0x8fa459+0x1,_0x46c19f=_0x1085e1+0x1,_0x754f0c=this['getUVByXY'](_0x8fa459,_0x1085e1),_0x479cc3=this[_0x5a7c41(0x1e5)](_0x4661cc,_0x1085e1),_0x4cdca2=this['getUVByXY'](_0x8fa459,_0x46c19f),_0x40bddf=this['getUVByXY'](_0x4661cc,_0x46c19f);let _0x529a50=null;try{_0x529a50=this['_bilinearInterpolation'](_0x1d0e4e-_0x8fa459,_0x4a1a17-_0x1085e1,_0x754f0c,_0x479cc3,_0x4cdca2,_0x40bddf);}catch(_0x122301){console[_0x5a7c41(0x201)](_0x1d0e4e,_0x4a1a17);}return _0x529a50;}[_0x2451d4(0x1d4)](_0x153a1f,_0x27812b,_0x3aefe4,_0x52291e,_0x481e3d,_0x9fdff1){const _0x2c1c18=0x1-_0x153a1f,_0x686c6f=0x1-_0x27812b,_0x1f81aa=_0x2c1c18*_0x686c6f,_0x549404=_0x153a1f*_0x686c6f,_0x156761=_0x2c1c18*_0x27812b,_0x2c7455=_0x153a1f*_0x27812b,_0x2eba9e=_0x3aefe4[0x0]*_0x1f81aa+_0x52291e[0x0]*_0x549404+_0x481e3d[0x0]*_0x156761+_0x9fdff1[0x0]*_0x2c7455,_0x469542=_0x3aefe4[0x1]*_0x1f81aa+_0x52291e[0x1]*_0x549404+_0x481e3d[0x1]*_0x156761+_0x9fdff1[0x1]*_0x2c7455;return this['_calcUV'](_0x2eba9e,_0x469542);}['_calcUV'](_0x1f9e60,_0x2dbf80){return[+_0x1f9e60,+_0x2dbf80,Math['sqrt'](_0x1f9e60*_0x1f9e60+_0x2dbf80*_0x2dbf80)];}['getUVByPoint'](_0x1867d2,_0x1914a1){if(!this['isInExtent'](_0x1867d2,_0x1914a1))return null;const _0xa7e493=this['toGridXY'](_0x1867d2,_0x1914a1),_0x585ac4=this['getUVByXY'](_0xa7e493[0x0],_0xa7e493[0x1]);return _0x585ac4;}[_0x2451d4(0x26c)](_0x17955a,_0x1e8d51){const _0x90eee1=_0x2451d4;return _0x17955a>=this['xmin']&&_0x17955a<=this[_0x90eee1(0x2a4)]&&_0x1e8d51>=this['ymin']&&_0x1e8d51<=this['ymax']?!![]:![];}[_0x2451d4(0x1f0)](){const _0x3995c8=_0x2451d4,_0x419a85=fRandomByfloat(this['xmin'],this[_0x3995c8(0x2a4)]),_0x34879f=fRandomByfloat(this['ymin'],this[_0x3995c8(0x213)]);return{'lat':_0x34879f,'lng':_0x419a85};}['getParticles'](){const _0x22647e=_0x2451d4;let _0x1f30c7,_0x48a2f3,_0x3372e8;for(let _0x4d544a=0x0,_0x54afd=this['particles'][_0x22647e(0x23e)];_0x4d544a<_0x54afd;_0x4d544a++){let _0x457635=this['particles'][_0x4d544a];_0x457635['age']<=0x0&&(_0x457635=this['_randomParticle'](_0x457635));if(_0x457635[_0x22647e(0x242)]>0x0){const _0x1b6731=_0x457635['tlng'],_0x4fa0b8=_0x457635[_0x22647e(0x245)];_0x3372e8=this['getUVByPoint'](_0x1b6731,_0x4fa0b8),_0x3372e8?(_0x1f30c7=_0x1b6731+this[_0x22647e(0x284)][0x0]*_0x3372e8[0x0],_0x48a2f3=_0x4fa0b8+this[_0x22647e(0x284)][0x1]*_0x3372e8[0x1],_0x457635[_0x22647e(0x289)]=_0x1b6731,_0x457635['lat']=_0x4fa0b8,_0x457635['tlng']=_0x1f30c7,_0x457635[_0x22647e(0x245)]=_0x48a2f3,_0x457635[_0x22647e(0x23c)]=_0x3372e8[0x2],_0x457635['age']--):_0x457635[_0x22647e(0x242)]=0x0;}}return this['particles'];}[_0x2451d4(0x1ca)](_0x575cee){const _0x5a1622=_0x2451d4;let _0x28c295,_0x469dc8;for(let _0x108880=0x0;_0x108880<0x1e;_0x108880++){_0x28c295=this['getRandomLatLng'](),_0x469dc8=this[_0x5a1622(0x209)](_0x28c295['lng'],_0x28c295['lat']);if(_0x469dc8&&_0x469dc8[0x2]>0x0)break;}if(!_0x469dc8)return _0x575cee;const _0x1530c1=_0x28c295['lng']+this['_calc_speedRate'][0x0]*_0x469dc8[0x0],_0x3065d0=_0x28c295['lat']+this[_0x5a1622(0x284)][0x1]*_0x469dc8[0x1];return _0x575cee[_0x5a1622(0x289)]=_0x28c295['lng'],_0x575cee[_0x5a1622(0x2a0)]=_0x28c295['lat'],_0x575cee['tlng']=_0x1530c1,_0x575cee['tlat']=_0x3065d0,_0x575cee['age']=Math['round'](Math['random']()*this['maxAge']),_0x575cee['speed']=_0x469dc8[0x2],_0x575cee;}['destroy'](){for(const _0x6c83b in this){delete this[_0x6c83b];}}}function fRandomByfloat(_0x1872d,_0x3bbe67){return _0x1872d+Math['random']()*(_0x3bbe67-_0x1872d);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x2451d4(0x239)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x41d009={}){const _0x3c9ddf=_0x2451d4;super(_0x41d009),this['_setOptionsHook'](_0x41d009),this['canvas']=null,_0x41d009['colors']&&_0x41d009['steps']&&(this['_colorRamp']=new mars3d__namespace[(_0x3c9ddf(0x256))](_0x41d009));}['_setOptionsHook'](_0x24cf68,_0x1847b9){const _0x7337b7=_0x2451d4;this[_0x7337b7(0x297)]=0x3e8/(_0x24cf68['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this[_0x7337b7(0x2a3)]=_0x24cf68['color']||'#ffffff',this[_0x7337b7(0x243)]=_0x24cf68['lineWidth']||0x1,this['fixedHeight']=_0x24cf68[_0x7337b7(0x25e)]??0x0,this[_0x7337b7(0x21e)]=_0x24cf68['reverseY']??![],this['windField']&&this['windField']['setOptions'](_0x24cf68);}get['layer'](){return this['canvas'];}get['canvasWidth'](){const _0x78353f=_0x2451d4;return this['_map']['scene'][_0x78353f(0x1ff)][_0x78353f(0x22c)];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){const _0x3e9d96=_0x2451d4;return this[_0x3e9d96(0x1cc)];}set['pointerEvents'](_0x32ba80){const _0x272111=_0x2451d4;this[_0x272111(0x1cc)]=_0x32ba80;if(!this['canvas'])return;_0x32ba80?this[_0x272111(0x1ff)]['style']['pointer-events']=_0x272111(0x1e1):this['canvas']['style']['pointer-events']='none';}get['particlesNumber'](){return this['options']['particlesNumber'];}set[_0x2451d4(0x1c9)](_0x1369db){const _0x24911b=_0x2451d4;this['options'][_0x24911b(0x1c9)]=_0x1369db,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){const _0x52e38c=_0x2451d4;return this[_0x52e38c(0x236)]['speedRate'];}set['speedRate'](_0xd87da8){const _0x165dde=_0x2451d4;this[_0x165dde(0x236)]['speedRate']=_0xd87da8,this['windField']&&(this['windField']['speedRate']=_0xd87da8);}get['maxAge'](){const _0x50fbf1=_0x2451d4;return this['options'][_0x50fbf1(0x1e2)];}set['maxAge'](_0x354fcd){const _0x565598=_0x2451d4;this['options'][_0x565598(0x1e2)]=_0x354fcd,this['windField']&&(this['windField']['maxAge']=_0x354fcd);}get['data'](){return this['windData'];}set[_0x2451d4(0x1e0)](_0x12b012){this['setData'](_0x12b012);}['_showHook'](_0x1bbbb1){_0x1bbbb1?this['_addedHook']():(this['windData']&&(this['options']['data']=this['windData']),this['_removedHook']());}['_mountedHook'](){this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){const _0x557a35=_0x2451d4;this['canvas']=this['_createCanvas'](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options']['data']&&this[_0x557a35(0x21f)](this[_0x557a35(0x236)]['data']);}['_removedHook'](){const _0x3a5044=_0x2451d4;this['clear'](),this['unbindEvent'](),this['canvas']&&(this['_map']['container'][_0x3a5044(0x1df)](this['canvas']),delete this[_0x3a5044(0x1ff)]);}['_createCanvas'](){const _0x22137c=_0x2451d4,_0x5cc11a=mars3d__namespace['DomUtil']['create']('canvas',_0x22137c(0x294),this[_0x22137c(0x1fc)]['container']);return _0x5cc11a['style']['position']='absolute',_0x5cc11a['style'][_0x22137c(0x221)]='0px',_0x5cc11a['style']['left']='0px',_0x5cc11a[_0x22137c(0x29a)]['width']=this['_map']['scene']['canvas']['clientWidth']+'px',_0x5cc11a[_0x22137c(0x29a)]['height']=this['_map']['scene']['canvas'][_0x22137c(0x2b3)]+'px',_0x5cc11a['style'][_0x22137c(0x1ce)]=this['_pointerEvents']?'auto':'none',_0x5cc11a['style']['zIndex']=this[_0x22137c(0x236)]['zIndex']??0x9,_0x5cc11a['width']=this['_map']['scene']['canvas']['clientWidth'],_0x5cc11a[_0x22137c(0x2a6)]=this[_0x22137c(0x1fc)]['scene'][_0x22137c(0x1ff)][_0x22137c(0x2b3)],_0x5cc11a;}[_0x2451d4(0x233)](){const _0x427e23=_0x2451d4;this['canvas']&&(this[_0x427e23(0x1ff)]['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',this['canvas'][_0x427e23(0x29a)][_0x427e23(0x2a6)]=this['_map']['scene'][_0x427e23(0x1ff)][_0x427e23(0x2b3)]+'px',this['canvas']['width']=this[_0x427e23(0x1fc)]['scene']['canvas']['clientWidth'],this[_0x427e23(0x1ff)][_0x427e23(0x2a6)]=this['_map'][_0x427e23(0x1d9)]['canvas']['clientHeight']);}['bindEvent'](){const _0x3a9a54=_0x2451d4,_0x135430=this;let _0x1fd706=Date['now']();(function _0xe6c28b(){const _0x34d06f=_0x54f3;_0x135430['animateFrame']=window[_0x34d06f(0x25f)](_0xe6c28b);if(_0x135430['show']&&_0x135430['windField']){const _0x2f3019=Date['now'](),_0x928edd=_0x2f3019-_0x1fd706;_0x928edd>_0x135430['frameTime']&&(_0x1fd706=_0x2f3019-_0x928edd%_0x135430[_0x34d06f(0x297)],_0x135430['update']());}}(),window[_0x3a9a54(0x1fa)]('resize',this[_0x3a9a54(0x233)]['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this[_0x3a9a54(0x254)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x2451d4(0x1e7)](){const _0x1f73fe=_0x2451d4;window['cancelAnimationFrame'](this['animateFrame']),delete this['animateFrame'],window['removeEventListener']('resize',this[_0x1f73fe(0x233)]),this['options'][_0x1f73fe(0x1f3)]&&(this[_0x1f73fe(0x1fc)][_0x1f73fe(0x262)](mars3d__namespace['EventType'][_0x1f73fe(0x271)],this[_0x1f73fe(0x254)],this),this[_0x1f73fe(0x1fc)]['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x1f73fe(0x1fc)]['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map'][_0x1f73fe(0x262)](mars3d__namespace['EventType']['mouseMove'],this[_0x1f73fe(0x207)],this));}['_onMapWhellEvent'](_0x52bc7a){const _0x52678e=_0x2451d4;clearTimeout(this[_0x52678e(0x241)]);if(!this[_0x52678e(0x23a)]||!this[_0x52678e(0x1ff)])return;this['canvas']['style']['visibility']='hidden',this[_0x52678e(0x241)]=setTimeout(()=>{if(!this['show'])return;this['redraw'](),this['canvas']['style']['visibility']='visible';},0xc8);}[_0x2451d4(0x290)](_0x4784b5){const _0x2f654c=_0x2451d4;this[_0x2f654c(0x1e4)]=!![],this['_map']['off'](mars3d__namespace['EventType'][_0x2f654c(0x24c)],this[_0x2f654c(0x207)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x2f654c(0x207)],this);}['_onMouseMoveEvent'](_0x306218){const _0x3e2c76=_0x2451d4;if(!this[_0x3e2c76(0x23a)]||!this[_0x3e2c76(0x1ff)])return;this['mouse_down']&&(this['canvas']['style']['visibility']=_0x3e2c76(0x214),this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x260c44){const _0x39429e=_0x2451d4;if(!this['show']||!this[_0x39429e(0x1ff)])return;this[_0x39429e(0x1fc)]['off'](mars3d__namespace['EventType'][_0x39429e(0x24c)],this['_onMouseMoveEvent'],this),this['mouse_down']&&this['mouse_move']&&this[_0x39429e(0x2a8)](),this['canvas'][_0x39429e(0x29a)]['visibility']='visible',this[_0x39429e(0x1e4)]=![],this[_0x39429e(0x24e)]=![];}[_0x2451d4(0x21f)](_0x7af3ce){this['clear'](),this['windData']=_0x7af3ce,this['windField']['setDate'](_0x7af3ce),this['redraw']();}['redraw'](){const _0x41b062=_0x2451d4;if(!this[_0x41b062(0x23a)])return;this['windField']['setOptions'](this['options']),this['update']();}[_0x2451d4(0x25b)](){const _0x16aef9=_0x2451d4;if(this['_updateIng'])return;this['_updateIng']=!![];if(this['worker'])this['windField']['update']();else{const _0x218ab3=this[_0x16aef9(0x238)][_0x16aef9(0x1ee)]();this[_0x16aef9(0x276)](_0x218ab3);}this[_0x16aef9(0x27f)]=![];}['_drawLines'](_0x3e6c2d){const _0x2f58ef=_0x2451d4;this[_0x2f58ef(0x1da)][_0x2f58ef(0x275)]='destination-in',this['canvasContext'][_0x2f58ef(0x29e)](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']='lighter',this['canvasContext']['globalAlpha']=0.9;const _0x1e195d=this['_map']['scene']['mode']!==Cesium['SceneMode']['SCENE3D'],_0x489f73=this['canvasWidth']*0.25;if(this['_colorRamp'])for(let _0x3749e0=0x0,_0x54f013=_0x3e6c2d[_0x2f58ef(0x23e)];_0x3749e0<_0x54f013;_0x3749e0++){const _0x3c3809=_0x3e6c2d[_0x3749e0],_0x69d1fc=this[_0x2f58ef(0x29d)](_0x3c3809[_0x2f58ef(0x289)],_0x3c3809[_0x2f58ef(0x2a0)],_0x3c3809),_0x4bf61b=this['_tomap'](_0x3c3809[_0x2f58ef(0x204)],_0x3c3809[_0x2f58ef(0x245)],_0x3c3809);if(!_0x69d1fc||!_0x4bf61b)continue;if(_0x1e195d&&Math[_0x2f58ef(0x231)](_0x69d1fc[0x0]-_0x4bf61b[0x0])>=_0x489f73)continue;this['canvasContext']['beginPath'](),this[_0x2f58ef(0x1da)]['lineWidth']=this[_0x2f58ef(0x243)],this['canvasContext']['strokeStyle']=this['_colorRamp']['getColor'](_0x3c3809['speed']),this[_0x2f58ef(0x1da)]['moveTo'](_0x69d1fc[0x0],_0x69d1fc[0x1]),this['canvasContext']['lineTo'](_0x4bf61b[0x0],_0x4bf61b[0x1]),this['canvasContext'][_0x2f58ef(0x2ab)]();}else{this[_0x2f58ef(0x1da)]['beginPath'](),this['canvasContext'][_0x2f58ef(0x243)]=this[_0x2f58ef(0x243)],this['canvasContext']['strokeStyle']=this['color'];for(let _0x2eada6=0x0,_0x4bc4c0=_0x3e6c2d[_0x2f58ef(0x23e)];_0x2eada6<_0x4bc4c0;_0x2eada6++){const _0x3c18af=_0x3e6c2d[_0x2eada6],_0x14d4b8=this['_tomap'](_0x3c18af['lng'],_0x3c18af[_0x2f58ef(0x2a0)],_0x3c18af),_0x34fd25=this[_0x2f58ef(0x29d)](_0x3c18af[_0x2f58ef(0x204)],_0x3c18af['tlat'],_0x3c18af);if(!_0x14d4b8||!_0x34fd25)continue;if(_0x1e195d&&Math['abs'](_0x14d4b8[0x0]-_0x34fd25[0x0])>=_0x489f73)continue;this['canvasContext'][_0x2f58ef(0x2b5)](_0x14d4b8[0x0],_0x14d4b8[0x1]),this['canvasContext'][_0x2f58ef(0x1cf)](_0x34fd25[0x0],_0x34fd25[0x1]);}this['canvasContext']['stroke']();}}[_0x2451d4(0x29d)](_0x2cc015,_0x1d9296,_0x201f92){const _0x4c963a=_0x2451d4,_0x124789=Cesium['Cartesian3']['fromDegrees'](_0x2cc015,_0x1d9296,this[_0x4c963a(0x25e)]),_0x1d0d8=this[_0x4c963a(0x1fc)][_0x4c963a(0x1d9)];if(_0x1d0d8['mode']===Cesium['SceneMode']['SCENE3D']){const _0x2c4504=new Cesium['EllipsoidalOccluder'](_0x1d0d8['globe']['ellipsoid'],_0x1d0d8['camera'][_0x4c963a(0x240)]),_0x572806=_0x2c4504['isPointVisible'](_0x124789);if(!_0x572806)return _0x201f92['age']=0x0,null;}const _0x18b731=Cesium[_0x4c963a(0x1d7)]['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x124789);return _0x18b731?[_0x18b731['x'],_0x18b731['y']]:null;}['clear'](){const _0xd41d81=_0x2451d4;this['windField']['clear'](),delete this[_0xd41d81(0x1f5)];}[_0x2451d4(0x281)](){const _0x29c34b=_0x2451d4;this['worker']=new Worker(this['options']['worker']),this[_0x29c34b(0x27c)][_0x29c34b(0x2ad)]=_0x2b1bfa=>{const _0x4b1477=_0x29c34b;this['_drawLines'](_0x2b1bfa[_0x4b1477(0x1e0)]['particles']),this['_updateIng2']=![];},this[_0x29c34b(0x238)]={'init':_0x4c2a77=>{const _0x58dda4=_0x29c34b;this['worker'][_0x58dda4(0x260)]({'type':'init','options':_0x4c2a77});},'setOptions':_0x37779a=>{const _0x1700ce=_0x29c34b;this['worker']['postMessage']({'type':_0x1700ce(0x1dd),'options':_0x37779a});},'setDate':_0x4e67c2=>{this['worker']['postMessage']({'type':'setDate','data':_0x4e67c2});},'update':()=>{const _0x2807b0=_0x29c34b;if(this['_updateIng2'])return;this[_0x2807b0(0x293)]=!![],this['worker']['postMessage']({'type':_0x2807b0(0x25b)});},'clear':()=>{const _0x16ddd3=_0x29c34b;this[_0x16ddd3(0x27c)]['postMessage']({'type':_0x16ddd3(0x244)});}},this['windField'][_0x29c34b(0x285)](this['options']);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x2451d4(0x208)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x2451d4(0x1ea)]=WindUtil,Object['defineProperty'](exports,_0x2451d4(0x261),{'value':!![]});
14
+ 'use strict';const _0x4d081e=_0x4e28;(function(_0x14e8bf,_0x5c6efb){const _0x5b0de4=_0x4e28,_0x236cbc=_0x14e8bf();while(!![]){try{const _0x3cedc=-parseInt(_0x5b0de4(0x1d9))/0x1*(parseInt(_0x5b0de4(0x19b))/0x2)+parseInt(_0x5b0de4(0x277))/0x3+-parseInt(_0x5b0de4(0x265))/0x4*(parseInt(_0x5b0de4(0x19d))/0x5)+-parseInt(_0x5b0de4(0x1e2))/0x6*(parseInt(_0x5b0de4(0x197))/0x7)+-parseInt(_0x5b0de4(0x20b))/0x8*(-parseInt(_0x5b0de4(0x209))/0x9)+-parseInt(_0x5b0de4(0x1b6))/0xa+parseInt(_0x5b0de4(0x260))/0xb;if(_0x3cedc===_0x5c6efb)break;else _0x236cbc['push'](_0x236cbc['shift']());}catch(_0x40500f){_0x236cbc['push'](_0x236cbc['shift']());}}}(_0x389c,0x1f72a));function _interopNamespace(_0x2f4c04){if(_0x2f4c04&&_0x2f4c04['__esModule'])return _0x2f4c04;var _0x1eab8e=Object['create'](null);return _0x2f4c04&&Object['keys'](_0x2f4c04)['forEach'](function(_0x293f1a){const _0x1861e6=_0x4e28;if(_0x293f1a!==_0x1861e6(0x1e4)){var _0x7648ac=Object[_0x1861e6(0x214)](_0x2f4c04,_0x293f1a);Object[_0x1861e6(0x204)](_0x1eab8e,_0x293f1a,_0x7648ac['get']?_0x7648ac:{'enumerable':!![],'get':function(){return _0x2f4c04[_0x293f1a];}});}}),_0x1eab8e['default']=_0x2f4c04,_0x1eab8e;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function _0x389c(){const _0x2533b3=['Sampler','mouseHidden','setDate','layer','source','canvasWind','645108fLRnbI','_onMouseMoveEvent','windField','postProcessingPosition','levmin','_onMouseDownEvent','keys','randomizeParticles','413bkPCbx','_speedRate','getUVByXY','fromGeometry','7208fanweS','lineTo','5rbuGNS','commandToExecute','context','viewerParameters','particlesTextures','add','PixelFormat','createRenderingFramebuffers','mars3d-canvasWind','LUMINANCE','vdata','createRenderingPrimitives','PixelDatatype','isInExtent','addPrimitives','setOptions','fixedHeight','mouse_move','sqrt','ClearCommand','shaderProgram','particlesRendering','0px','destroy','RGBA','949590zXaagR','_tomap','mouseUp','LayerUtil','all','tlat','PrimitiveType','canvasHeight','canvas','setData','atan2','getPixelSize','Draw','rows','frameTime','segmentsDepth','unbindEvent','nextParticlesPosition','mouseDown','updatePosition','lonRange','mouse_down','absolute','getDefaultRenderState','CanvasWindField','Pass','speedRate','lineWidth','canvasWidth','_pointerEvents','currentTrailsColor','fillRect','lev','postProcessingSpeed','_onMap_preRenderEvent','58Pbpjje','globeBoundingSphere','attributeLocations','Cartesian3','_updateIng2','_bilinearInterpolation','_randomParticle','options','latRange','14154Zlzaqu','worker','default','style','_colorRamp','EllipsoidalOccluder','mod','mouseMove','age','data','particlesTextureSize','createRawRenderState','ComponentDatatype','UNSIGNED_BYTE','_onMouseUpEvent','particlesComputing','setGeometry','fill','rawRenderState','show','windData','segments','ShaderSource','blue','refreshTimer','createSegmentsGeometry','onmessage','postMessage','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','Cartesian2','clearCommand','IDENTITY','execute','refreshParticles','defineProperty','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','update','createTexture','lng','9BoFkvd','maxAge','1769208ozqbBL','currentTrails','primitiveType','wheel','particleHeight','ymax','trails','BufferUsage','xmin','getOwnPropertyDescriptor','TextureMagnificationFilter','framebuffers','particlesNumber','visible','SCENE3D','currentParticlesPosition','applyViewerParameters','clear','getUVByPoint','globe','nextTrails','computeViewRectangle','Cesium','BaseLayer','toGridXY','viewRectangleToLonLatRange','outputTexture','animateFrame','Math','WindLayer','xmax','udata','framebuffer','globalAlpha','removeAll','colorTable','cols','position','clientWidth','resize','length','particleSystem','_mountedHook','scene','toRadians','clampToLatitudeRange','textures','getWind','height','getOptions','preRender','tlng','pointerEvents','min','randomBetween','FLOAT','max','getFullscreenQuad','maxParticles','_map','canvasResize','drawingBufferWidth','dropRate','_data','vertexArray','DepthFunction','removeEventListener','screen','Compute','NEAREST','EventType','particles','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','GeometryAttribute','autoClear','ShaderProgram','off','lat','now','currentParticlesSpeed','width','array','commandType','redraw','colors','2753630dewZhV','primitives','lon','umin','geometry','458140COPEmQ','canvasContext','_showHook','_onMapWhellEvent','toDegrees','visibility','viewport','dimensions','ymin','_updateIng','destroyParticlesTextures','push'];_0x389c=function(){return _0x2533b3;};return _0x389c();}function getU(_0x4f08b6,_0x285ac0){const _0x26a4cc=_0x4e28,_0x38856d=_0x4f08b6*Math['cos'](Cesium$7[_0x26a4cc(0x227)]['toRadians'](_0x285ac0));return _0x38856d;}function getV(_0x158aca,_0x7a2e97){const _0x5514d9=_0x4e28,_0x1898c7=_0x158aca*Math['sin'](Cesium$7[_0x5514d9(0x227)][_0x5514d9(0x237)](_0x7a2e97));return _0x1898c7;}function getSpeed(_0x348e14,_0x11e6de){const _0x132824=Math['sqrt'](Math['pow'](_0x348e14,0x2)+Math['pow'](_0x11e6de,0x2));return _0x132824;}function getDirection(_0x140726,_0x1ebf80){const _0x5781b8=_0x4e28;let _0x1c3aa1=Cesium$7[_0x5781b8(0x227)][_0x5781b8(0x269)](Math[_0x5781b8(0x1c0)](_0x1ebf80,_0x140726));return _0x1c3aa1+=_0x1c3aa1<0x0?0x168:0x0,_0x1c3aa1;}function _0x4e28(_0x206e67,_0x30fc84){const _0x389cbc=_0x389c();return _0x4e28=function(_0x4e282b,_0x3fc3a9){_0x4e282b=_0x4e282b-0x196;let _0x39153e=_0x389cbc[_0x4e282b];return _0x39153e;},_0x4e28(_0x206e67,_0x30fc84);}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x5259a6){const _0x4380db=_0x4e28;this[_0x4380db(0x25d)]=_0x5259a6['commandType'],this['geometry']=_0x5259a6['geometry'],this['attributeLocations']=_0x5259a6['attributeLocations'],this[_0x4380db(0x20d)]=_0x5259a6['primitiveType'],this['uniformMap']=_0x5259a6['uniformMap'],this['vertexShaderSource']=_0x5259a6['vertexShaderSource'],this['fragmentShaderSource']=_0x5259a6['fragmentShaderSource'],this[_0x4380db(0x1f4)]=_0x5259a6['rawRenderState'],this[_0x4380db(0x22b)]=_0x5259a6['framebuffer'],this[_0x4380db(0x225)]=_0x5259a6['outputTexture'],this[_0x4380db(0x255)]=_0x5259a6[_0x4380db(0x255)]??![],this['preExecute']=_0x5259a6['preExecute'],this[_0x4380db(0x1f5)]=!![],this['commandToExecute']=undefined,this[_0x4380db(0x200)]=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6[(_0x4380db(0x1b0))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x4380db(0x22b)],'pass':Cesium$6[_0x4380db(0x1cf)]['OPAQUE']}));}['createCommand'](_0x3d9a76){const _0x543af1=_0x4e28;switch(this['commandType']){case _0x543af1(0x1c2):{const _0x1dd54a=Cesium$6['VertexArray']['fromGeometry']({'context':_0x3d9a76,'geometry':this['geometry'],'attributeLocations':this[_0x543af1(0x1db)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0xa6dad2=Cesium$6[_0x543af1(0x256)]['fromCache']({'context':_0x3d9a76,'attributeLocations':this['attributeLocations'],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x529e12=Cesium$6['RenderState']['fromCache'](this[_0x543af1(0x1f4)]);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0xa6dad2,'vertexArray':_0x1dd54a,'modelMatrix':Cesium$6['Matrix4'][_0x543af1(0x201)],'renderState':_0x529e12,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x543af1(0x1cf)]['OPAQUE'],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this[_0x543af1(0x225)],'persists':!![]});}}}[_0x4d081e(0x1f2)](_0x2cae60,_0x32102a){const _0x5817e2=_0x4d081e;this['geometry']=_0x32102a;const _0x29911b=Cesium$6['VertexArray']['fromGeometry']({'context':_0x2cae60,'geometry':this[_0x5817e2(0x264)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x29911b;}['update'](_0x5587e5){const _0x2488bb=_0x4d081e;if(!this[_0x2488bb(0x1f5)])return;if(_0x5587e5['mode']!==Cesium$6['SceneMode'][_0x2488bb(0x219)])return;!Cesium$6['defined'](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x5587e5[_0x2488bb(0x19f)])),Cesium$6['defined'](this['preExecute'])&&this['preExecute'](),Cesium$6['defined'](this[_0x2488bb(0x200)])&&_0x5587e5['commandList'][_0x2488bb(0x270)](this[_0x2488bb(0x200)]),_0x5587e5['commandList']['push'](this[_0x2488bb(0x19e)]);}['isDestroyed'](){return![];}[_0x4d081e(0x1b4)](){const _0x2303f5=_0x4d081e;if(this['clearCommand']){var _0x4b89de,_0x4d225c;(_0x4b89de=this['clearCommand'])!==null&&_0x4b89de!==void 0x0&&_0x4b89de['vertexArray']&&this['clearCommand'][_0x2303f5(0x24b)]['destroy'](),(_0x4d225c=this['clearCommand'])!==null&&_0x4d225c!==void 0x0&&_0x4d225c['shaderProgram']&&this['clearCommand'][_0x2303f5(0x1b1)]['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute'][_0x2303f5(0x24b)]&&this['commandToExecute']['vertexArray'][_0x2303f5(0x1b4)](),this['commandToExecute']['shaderProgram']&&this['commandToExecute'][_0x2303f5(0x1b1)]['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x5f1f31=function(){const _0x2a40ea=_0x4e28,_0x517c10=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5[(_0x2a40ea(0x254))]({'componentDatatype':Cesium$5[_0x2a40ea(0x1ee)]['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'][_0x2a40ea(0x242)],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x517c10;},_0x236898=function(_0x5a589f,_0xd603c7){const _0x86e66a=_0x4e28;if(Cesium$5['defined'](_0xd603c7)){const _0xbb1f46={};_0xbb1f46['arrayBufferView']=_0xd603c7,_0x5a589f[_0x86e66a(0x275)]=_0xbb1f46;}const _0x4bc5b2=new Cesium$5['Texture'](_0x5a589f);return _0x4bc5b2;},_0x54b93f=function(_0x3965f4,_0xcdddee,_0x5a0aa9){const _0x16330f=new Cesium$5['Framebuffer']({'context':_0x3965f4,'colorTextures':[_0xcdddee],'depthTexture':_0x5a0aa9});return _0x16330f;},_0x21824f=function(_0xfbca1f){const _0x2280a4=_0x4e28,_0x3b7d8e=!![],_0xa9153a=![],_0x418d91={'viewport':_0xfbca1f[_0x2280a4(0x26b)],'depthTest':_0xfbca1f['depthTest'],'depthMask':_0xfbca1f['depthMask'],'blending':_0xfbca1f['blending']},_0x12732f=Cesium$5['Appearance'][_0x2280a4(0x1cd)](_0x3b7d8e,_0xa9153a,_0x418d91);return _0x12732f;},_0x3f54c7=function(_0x76f58f){const _0x56789c=_0x4e28,_0x35149d={},_0xe02fb4=Cesium$5['Math'][_0x56789c(0x1e8)](_0x76f58f['west'],Cesium$5['Math']['TWO_PI']),_0xefdc80=Cesium$5['Math']['mod'](_0x76f58f['east'],Cesium$5['Math']['TWO_PI']),_0x5227a8=_0x76f58f[_0x56789c(0x25b)];let _0x52064f,_0x408461;_0x5227a8>Cesium$5[_0x56789c(0x227)]['THREE_PI_OVER_TWO']?(_0x52064f=0x0,_0x408461=Cesium$5['Math']['TWO_PI']):_0xefdc80-_0xe02fb4<_0x5227a8?(_0x52064f=_0xe02fb4,_0x408461=_0xe02fb4+_0x5227a8):(_0x52064f=_0xe02fb4,_0x408461=_0xefdc80);_0x35149d['lon']={'min':Cesium$5['Math'][_0x56789c(0x269)](_0x52064f),'max':Cesium$5['Math'][_0x56789c(0x269)](_0x408461)};const _0x26d64a=_0x76f58f['south'],_0x14844f=_0x76f58f['north'],_0xbbdd36=_0x76f58f['height'],_0x7d00db=_0xbbdd36>Cesium$5['Math']['PI']/0xc?_0xbbdd36/0x2:0x0;let _0x22fbbf=Cesium$5['Math'][_0x56789c(0x238)](_0x26d64a-_0x7d00db),_0x266c0c=Cesium$5['Math'][_0x56789c(0x238)](_0x14844f+_0x7d00db);return _0x22fbbf<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x22fbbf=-Cesium$5['Math']['PI_OVER_TWO']),_0x266c0c>Cesium$5[_0x56789c(0x227)]['PI_OVER_THREE']&&(_0x266c0c=Cesium$5[_0x56789c(0x227)]['PI_OVER_TWO']),_0x35149d['lat']={'min':Cesium$5['Math']['toDegrees'](_0x22fbbf),'max':Cesium$5['Math']['toDegrees'](_0x266c0c)},_0x35149d;};return{'getFullscreenQuad':_0x5f1f31,'createTexture':_0x236898,'createFramebuffer':_0x54b93f,'createRawRenderState':_0x21824f,'viewRectangleToLonLatRange':_0x3f54c7};}());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=_0x4d081e(0x205),fullscreen_vert=_0x4d081e(0x253),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(_0x5ab975,_0x24eaa1,_0xc8e639,_0xa0c1c9,_0x5bb49c){const _0x4ba994=_0x4d081e;this['createRenderingTextures'](_0x5ab975,_0x24eaa1,_0xc8e639['colors']),this[_0x4ba994(0x1a4)](_0x5ab975),this['createRenderingPrimitives'](_0x5ab975,_0xc8e639,_0xa0c1c9,_0x5bb49c);}['createRenderingTextures'](_0x2ce7f9,_0x2400bd,_0xa78187){const _0x280335=_0x4d081e,_0x58b2c7={'context':_0x2ce7f9,'width':_0x2ce7f9['drawingBufferWidth'],'height':_0x2ce7f9['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x280335(0x1a3)][_0x280335(0x1b5)],'pixelDatatype':Cesium$4[_0x280335(0x1a9)][_0x280335(0x1ef)]},_0x5aa036={'context':_0x2ce7f9,'width':_0x2ce7f9[_0x280335(0x248)],'height':_0x2ce7f9['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0xe7cb88=_0xa78187[_0x280335(0x233)],_0x4a2d34=new Float32Array(_0xe7cb88*0x3);for(let _0x5853e7=0x0;_0x5853e7<_0xe7cb88;_0x5853e7++){const _0x33c4ec=Cesium$4['Color']['fromCssColorString'](_0xa78187[_0x5853e7]);_0x4a2d34[0x3*_0x5853e7]=_0x33c4ec['red'],_0x4a2d34[0x3*_0x5853e7+0x1]=_0x33c4ec['green'],_0x4a2d34[0x3*_0x5853e7+0x2]=_0x33c4ec[_0x280335(0x1f9)];}const _0x4356be={'context':_0x2ce7f9,'width':_0xe7cb88,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4[_0x280335(0x215)]['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x58b2c7),'segmentsDepth':Util['createTexture'](_0x5aa036),'currentTrailsColor':Util[_0x280335(0x207)](_0x58b2c7),'currentTrailsDepth':Util['createTexture'](_0x5aa036),'nextTrailsColor':Util['createTexture'](_0x58b2c7),'nextTrailsDepth':Util[_0x280335(0x207)](_0x5aa036),'colorTable':Util[_0x280335(0x207)](_0x4356be,_0x4a2d34)};}[_0x4d081e(0x1a4)](_0x7f0600){const _0x21c1ee=_0x4d081e;this['framebuffers']={'segments':Util['createFramebuffer'](_0x7f0600,this['textures']['segmentsColor'],this['textures'][_0x21c1ee(0x1c5)]),'currentTrails':Util['createFramebuffer'](_0x7f0600,this['textures'][_0x21c1ee(0x1d4)],this['textures']['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x7f0600,this[_0x21c1ee(0x239)]['nextTrailsColor'],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x339513){const _0x20d181=_0x4d081e,_0x3eea58=0x4;let _0x17bf4d=[];for(let _0x3027d5=0x0;_0x3027d5<_0x339513[_0x20d181(0x1ec)];_0x3027d5++){for(let _0x181c94=0x0;_0x181c94<_0x339513['particlesTextureSize'];_0x181c94++){for(let _0x2268d0=0x0;_0x2268d0<_0x3eea58;_0x2268d0++){_0x17bf4d['push'](_0x3027d5/_0x339513['particlesTextureSize']),_0x17bf4d['push'](_0x181c94/_0x339513['particlesTextureSize']);}}}_0x17bf4d=new Float32Array(_0x17bf4d);let _0x305332=[];const _0x4629c4=[-0x1,0x1],_0x1eaf70=[-0x1,0x1];for(let _0x2ee227=0x0;_0x2ee227<_0x339513[_0x20d181(0x245)];_0x2ee227++){for(let _0x4d3ca5=0x0;_0x4d3ca5<_0x3eea58/0x2;_0x4d3ca5++){for(let _0x393fd5=0x0;_0x393fd5<_0x3eea58/0x2;_0x393fd5++){_0x305332[_0x20d181(0x270)](_0x4629c4[_0x4d3ca5]),_0x305332['push'](_0x1eaf70[_0x393fd5]),_0x305332['push'](0x0);}}}_0x305332=new Float32Array(_0x305332);const _0x720132=0x6*_0x339513[_0x20d181(0x245)],_0x76fa12=new Uint32Array(_0x720132);for(let _0x14902e=0x0,_0x1e434b=0x0,_0x267e61=0x0;_0x14902e<_0x339513['maxParticles'];_0x14902e++){_0x76fa12[_0x1e434b++]=_0x267e61+0x0,_0x76fa12[_0x1e434b++]=_0x267e61+0x1,_0x76fa12[_0x1e434b++]=_0x267e61+0x2,_0x76fa12[_0x1e434b++]=_0x267e61+0x2,_0x76fa12[_0x1e434b++]=_0x267e61+0x1,_0x76fa12[_0x1e434b++]=_0x267e61+0x3,_0x267e61+=0x4;}const _0x2b41f7=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x17bf4d}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4[_0x20d181(0x1ee)][_0x20d181(0x242)],'componentsPerAttribute':0x3,'values':_0x305332})}),'indices':_0x76fa12});return _0x2b41f7;}[_0x4d081e(0x1a8)](_0x21e84e,_0x40a8ea,_0x2eb2ab,_0x1fd0dd){const _0x328651=_0x4d081e,_0x62876=this;this['primitives']={'segments':new CustomPrimitive({'commandType':_0x328651(0x1c2),'attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x328651(0x1fb)](_0x40a8ea),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){const _0x2dd6d1=_0x328651;return _0x1fd0dd['particlesTextures'][_0x2dd6d1(0x21a)];},'postProcessingPosition':function(){const _0x411ca6=_0x328651;return _0x1fd0dd['particlesTextures'][_0x411ca6(0x27a)];},'postProcessingSpeed':function(){const _0x4a6769=_0x328651;return _0x1fd0dd['particlesTextures'][_0x4a6769(0x1d7)];},'colorTable':function(){return _0x62876['textures']['colorTable'];},'aspect':function(){const _0x5b897b=_0x328651;return _0x21e84e[_0x5b897b(0x248)]/_0x21e84e['drawingBufferHeight'];},'pixelSize':function(){return _0x2eb2ab['pixelSize'];},'lineWidth':function(){const _0x214843=_0x328651;return _0x40a8ea[_0x214843(0x1d1)];},'particleHeight':function(){const _0x4c5375=_0x328651;return _0x40a8ea[_0x4c5375(0x20f)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_frag]}),'rawRenderState':Util[_0x328651(0x1ed)]({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers']['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x62876['textures']['segmentsColor'];},'segmentsDepthTexture':function(){const _0x1daf20=_0x328651;return _0x62876['textures'][_0x1daf20(0x1c5)];},'currentTrailsColor':function(){const _0x1d0b9e=_0x328651;return _0x62876[_0x1d0b9e(0x216)]['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x49dd74=_0x328651;return _0x62876['framebuffers'][_0x49dd74(0x20c)]['depthTexture'];},'fadeOpacity':function(){return _0x40a8ea['fadeOpacity'];}},'vertexShaderSource':new Cesium$4[(_0x328651(0x1f8))]({'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['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x328651(0x24c)]['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x328651(0x21f)],'autoClear':!![],'preExecute':function(){const _0x70c196=_0x328651,_0x13eb42=_0x62876['framebuffers']['currentTrails'];_0x62876['framebuffers'][_0x70c196(0x20c)]=_0x62876['framebuffers']['nextTrails'],_0x62876['framebuffers'][_0x70c196(0x21f)]=_0x13eb42,_0x62876[_0x70c196(0x261)]['trails']['commandToExecute']['framebuffer']=_0x62876[_0x70c196(0x216)]['nextTrails'],_0x62876['primitives'][_0x70c196(0x211)]['clearCommand']['framebuffer']=_0x62876[_0x70c196(0x216)]['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0x328651(0x1c2),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0x328651(0x244)](),'primitiveType':Cesium$4[_0x328651(0x1bc)]['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){const _0x2e7c49=_0x328651;return _0x62876['framebuffers'][_0x2e7c49(0x21f)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x5d0948=_0x328651;return _0x62876['framebuffers'][_0x5d0948(0x21f)]['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[_0x328651(0x1ed)]({'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='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',postProcessingPosition_frag=_0x4d081e(0x1fe),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(_0x18e595,_0x5814c9,_0x1a94a6,_0x579a4d){const _0x728c06=_0x4d081e;this[_0x728c06(0x1eb)]=_0x5814c9,this['createWindTextures'](_0x18e595,_0x5814c9),this['createParticlesTextures'](_0x18e595,_0x1a94a6,_0x579a4d),this['createComputingPrimitives'](_0x5814c9,_0x1a94a6,_0x579a4d);}['createWindTextures'](_0x55f59a,_0x4fafed){const _0x2d791c=_0x4d081e,_0x3b926d={'context':_0x55f59a,'width':_0x4fafed[_0x2d791c(0x26c)][_0x2d791c(0x262)],'height':_0x4fafed['dimensions']['lat']*(_0x4fafed[_0x2d791c(0x26c)]['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat'][_0x2d791c(0x1a6)],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x2d791c(0x271))]({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this['windTextures']={'U':Util[_0x2d791c(0x207)](_0x3b926d,_0x4fafed['U']['array']),'V':Util['createTexture'](_0x3b926d,_0x4fafed['V'][_0x2d791c(0x25c)])};}['createParticlesTextures'](_0x2a5806,_0x4d9161,_0x8fb669){const _0x2301b5=_0x4d081e,_0x81f97f={'context':_0x2a5806,'width':_0x4d9161[_0x2301b5(0x1ec)],'height':_0x4d9161['particlesTextureSize'],'pixelFormat':Cesium$3['PixelFormat'][_0x2301b5(0x1b5)],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x2301b5(0x250)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x2301b5(0x250)]})},_0x385c3f=this[_0x2301b5(0x196)](_0x4d9161['maxParticles'],_0x8fb669),_0x54c0da=new Float32Array(0x4*_0x4d9161['maxParticles'])[_0x2301b5(0x1f3)](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x81f97f),'currentParticlesPosition':Util['createTexture'](_0x81f97f,_0x385c3f),'nextParticlesPosition':Util['createTexture'](_0x81f97f,_0x385c3f),'currentParticlesSpeed':Util['createTexture'](_0x81f97f,_0x54c0da),'nextParticlesSpeed':Util[_0x2301b5(0x207)](_0x81f97f,_0x54c0da),'postProcessingPosition':Util['createTexture'](_0x81f97f,_0x385c3f),'postProcessingSpeed':Util['createTexture'](_0x81f97f,_0x54c0da)};}['randomizeParticles'](_0x9d5ec7,_0x2efb){const _0x21b687=_0x4d081e,_0x19d349=new Float32Array(0x4*_0x9d5ec7);for(let _0x385314=0x0;_0x385314<_0x9d5ec7;_0x385314++){_0x19d349[0x4*_0x385314]=Cesium$3['Math']['randomBetween'](_0x2efb['lonRange']['x'],_0x2efb['lonRange']['y']),_0x19d349[0x4*_0x385314+0x1]=Cesium$3['Math']['randomBetween'](_0x2efb[_0x21b687(0x1e1)]['x'],_0x2efb['latRange']['y']),_0x19d349[0x4*_0x385314+0x2]=Cesium$3['Math'][_0x21b687(0x241)](this['data']['lev']['min'],this['data']['lev'][_0x21b687(0x243)]),_0x19d349[0x4*_0x385314+0x3]=0x0;}return _0x19d349;}[_0x4d081e(0x26f)](){Object['keys'](this['particlesTextures'])['forEach'](_0x193d13=>{this['particlesTextures'][_0x193d13]['destroy']();});}['createComputingPrimitives'](_0x388793,_0x1f3829,_0x56ef1e){const _0x224230=_0x4d081e,_0x3ecb54=new Cesium$3[(_0x224230(0x1dc))](_0x388793[_0x224230(0x26c)]['lon'],_0x388793['dimensions']['lat'],_0x388793['dimensions']['lev']),_0x4ac998=new Cesium$3['Cartesian3'](_0x388793[_0x224230(0x262)][_0x224230(0x240)],_0x388793['lat']['min'],_0x388793['lev']['min']),_0x45c2a1=new Cesium$3[(_0x224230(0x1dc))](_0x388793['lon']['max'],_0x388793['lat']['max'],_0x388793['lev']['max']),_0x4b6ff7=new Cesium$3['Cartesian3']((_0x45c2a1['x']-_0x4ac998['x'])/(_0x3ecb54['x']-0x1),(_0x45c2a1['y']-_0x4ac998['y'])/(_0x3ecb54['y']-0x1),_0x3ecb54['z']>0x1?(_0x45c2a1['z']-_0x4ac998['z'])/(_0x3ecb54['z']-0x1):0x1),_0x337e79=new Cesium$3['Cartesian2'](_0x388793['U'][_0x224230(0x240)],_0x388793['U']['max']),_0x4ccb80=new Cesium$3[(_0x224230(0x1ff))](_0x388793['V'][_0x224230(0x240)],_0x388793['V']['max']),_0x3219d7=this;this[_0x224230(0x261)]={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x3219d7['windTextures']['U'];},'V':function(){return _0x3219d7['windTextures']['V'];},'currentParticlesPosition':function(){const _0x49a22b=_0x224230;return _0x3219d7[_0x49a22b(0x1a1)][_0x49a22b(0x21a)];},'dimension':function(){return _0x3ecb54;},'minimum':function(){return _0x4ac998;},'maximum':function(){return _0x45c2a1;},'interval':function(){return _0x4b6ff7;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures']['particlesWind'],'preExecute':function(){const _0x2351ee=_0x224230;_0x3219d7['primitives'][_0x2351ee(0x23a)][_0x2351ee(0x19e)]['outputTexture']=_0x3219d7['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){const _0x4a7112=_0x224230;return _0x3219d7['particlesTextures'][_0x4a7112(0x25a)];},'particlesWind':function(){const _0x5df624=_0x224230;return _0x3219d7[_0x5df624(0x1a1)]['particlesWind'];},'uSpeedRange':function(){return _0x337e79;},'vSpeedRange':function(){return _0x4ccb80;},'pixelSize':function(){return _0x56ef1e['pixelSize'];},'speedFactor':function(){return _0x1f3829['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function(){const _0x159358=_0x224230,_0x51b876=_0x3219d7[_0x159358(0x1a1)][_0x159358(0x25a)];_0x3219d7[_0x159358(0x1a1)][_0x159358(0x25a)]=_0x3219d7['particlesTextures']['postProcessingSpeed'],_0x3219d7['particlesTextures']['postProcessingSpeed']=_0x51b876,_0x3219d7['primitives']['updateSpeed'][_0x159358(0x19e)][_0x159358(0x225)]=_0x3219d7['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x5a4094=_0x224230;return _0x3219d7[_0x5a4094(0x1a1)]['currentParticlesPosition'];},'currentParticlesSpeed':function(){const _0x565dd0=_0x224230;return _0x3219d7[_0x565dd0(0x1a1)]['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x224230(0x1f8))]({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures'][_0x224230(0x1c7)],'preExecute':function(){const _0x38bf58=_0x224230,_0xe27e53=_0x3219d7['particlesTextures']['currentParticlesPosition'];_0x3219d7[_0x38bf58(0x1a1)]['currentParticlesPosition']=_0x3219d7['particlesTextures'][_0x38bf58(0x27a)],_0x3219d7['particlesTextures']['postProcessingPosition']=_0xe27e53,_0x3219d7['primitives'][_0x38bf58(0x1c9)]['commandToExecute'][_0x38bf58(0x225)]=_0x3219d7[_0x38bf58(0x1a1)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){const _0xaa9882=_0x224230;return _0x3219d7['particlesTextures'][_0xaa9882(0x1c7)];},'nextParticlesSpeed':function(){const _0x4db24e=_0x224230;return _0x3219d7[_0x4db24e(0x1a1)]['nextParticlesSpeed'];},'lonRange':function(){return _0x56ef1e['lonRange'];},'latRange':function(){const _0x560242=_0x224230;return _0x56ef1e[_0x560242(0x1e1)];},'randomCoefficient':function(){const _0x2c905e=Math['random']();return _0x2c905e;},'dropRate':function(){const _0x20056f=_0x224230;return _0x1f3829[_0x20056f(0x249)];},'dropRateBump':function(){return _0x1f3829['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){const _0x2af62a=_0x224230;_0x3219d7['primitives'][_0x2af62a(0x27a)][_0x2af62a(0x19e)][_0x2af62a(0x225)]=_0x3219d7['particlesTextures']['postProcessingPosition'];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x224230(0x24f),'uniformMap':{'postProcessingPosition':function(){return _0x3219d7['particlesTextures']['postProcessingPosition'];},'nextParticlesSpeed':function(){const _0x27f549=_0x224230;return _0x3219d7[_0x27f549(0x1a1)]['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x224230(0x1d7)],'preExecute':function(){const _0x3ebb67=_0x224230;_0x3219d7[_0x3ebb67(0x261)]['postProcessingSpeed']['commandToExecute'][_0x3ebb67(0x225)]=_0x3219d7[_0x3ebb67(0x1a1)]['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace[_0x4d081e(0x221)];class ParticleSystem{constructor(_0x2aa066,_0x359dcf,_0x5f0031,_0xce6304){const _0x52c3d3=_0x4d081e;this['context']=_0x2aa066,_0x359dcf={..._0x359dcf},_0x359dcf['udata']&&_0x359dcf['vdata']&&(_0x359dcf[_0x52c3d3(0x26c)]={},_0x359dcf['dimensions']['lon']=_0x359dcf['cols'],_0x359dcf[_0x52c3d3(0x26c)]['lat']=_0x359dcf[_0x52c3d3(0x1c3)],_0x359dcf['dimensions'][_0x52c3d3(0x1d6)]=_0x359dcf['lev']||0x1,_0x359dcf[_0x52c3d3(0x262)]={},_0x359dcf[_0x52c3d3(0x262)]['min']=_0x359dcf['xmin'],_0x359dcf[_0x52c3d3(0x262)]['max']=_0x359dcf['xmax'],_0x359dcf['lat']={},_0x359dcf[_0x52c3d3(0x258)]['min']=_0x359dcf['ymin'],_0x359dcf[_0x52c3d3(0x258)]['max']=_0x359dcf['ymax'],_0x359dcf[_0x52c3d3(0x1d6)]={},_0x359dcf['lev']['min']=_0x359dcf[_0x52c3d3(0x27b)]??0x1,_0x359dcf[_0x52c3d3(0x1d6)][_0x52c3d3(0x243)]=_0x359dcf['levmax']??0x1,_0x359dcf['U']={},_0x359dcf['U'][_0x52c3d3(0x25c)]=new Float32Array(_0x359dcf[_0x52c3d3(0x22a)]),_0x359dcf['U']['min']=_0x359dcf[_0x52c3d3(0x263)]??Math['min'](..._0x359dcf['udata']),_0x359dcf['U']['max']=_0x359dcf['umax']??Math['max'](..._0x359dcf['udata']),_0x359dcf['V']={},_0x359dcf['V']['array']=new Float32Array(_0x359dcf[_0x52c3d3(0x1a7)]),_0x359dcf['V'][_0x52c3d3(0x240)]=_0x359dcf['vmin']??Math['min'](..._0x359dcf[_0x52c3d3(0x1a7)]),_0x359dcf['V']['max']=_0x359dcf['vmax']??Math['max'](..._0x359dcf['vdata'])),this[_0x52c3d3(0x1eb)]=_0x359dcf,this['options']=_0x5f0031,this[_0x52c3d3(0x1a0)]=_0xce6304,this['particlesComputing']=new ParticlesComputing(this[_0x52c3d3(0x19f)],this[_0x52c3d3(0x1eb)],this['options'],this[_0x52c3d3(0x1a0)]),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this[_0x52c3d3(0x1a0)],this[_0x52c3d3(0x1f1)]);}[_0x4d081e(0x247)](_0x3c36b8){const _0x1be302=_0x4d081e;this['particlesComputing']['destroyParticlesTextures'](),Object[_0x1be302(0x27d)](this['particlesComputing']['windTextures'])['forEach'](_0x1bf910=>{this['particlesComputing']['windTextures'][_0x1bf910]['destroy']();}),this['particlesRendering']['textures'][_0x1be302(0x22e)]['destroy'](),Object[_0x1be302(0x27d)](this['particlesRendering']['framebuffers'])['forEach'](_0x4c7eeb=>{const _0x23e7b3=_0x1be302;this[_0x23e7b3(0x1b2)]['framebuffers'][_0x4c7eeb]['destroy']();}),this['context']=_0x3c36b8,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0x1be302(0x1e0)],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0xabd415=_0x4d081e,_0x2dfdb4=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0xabd415(0x1cf)]['OPAQUE']});Object['keys'](this[_0xabd415(0x1b2)]['framebuffers'])['forEach'](_0x39a298=>{const _0x28d58a=_0xabd415;_0x2dfdb4['framebuffer']=this['particlesRendering']['framebuffers'][_0x39a298],_0x2dfdb4[_0x28d58a(0x202)](this['context']);});}['refreshParticles'](_0x2e2ce5){const _0x4862c6=_0x4d081e;this['clearFramebuffers'](),this['particlesComputing']['destroyParticlesTextures'](),this['particlesComputing']['createParticlesTextures'](this[_0x4862c6(0x19f)],this[_0x4862c6(0x1e0)],this['viewerParameters']);if(_0x2e2ce5){var _0x5d1ab1,_0x4826ff;const _0x1144fb=this['particlesRendering'][_0x4862c6(0x1fb)](this[_0x4862c6(0x1e0)]);this['particlesRendering'][_0x4862c6(0x261)]['segments']['geometry']=_0x1144fb;const _0x1b355e=Cesium$2['VertexArray'][_0x4862c6(0x19a)]({'context':this[_0x4862c6(0x19f)],'geometry':_0x1144fb,'attributeLocations':this['particlesRendering']['primitives'][_0x4862c6(0x1f7)]['attributeLocations'],'bufferUsage':Cesium$2[_0x4862c6(0x212)]['STATIC_DRAW']});(_0x5d1ab1=this['particlesRendering']['primitives'])!==null&&_0x5d1ab1!==void 0x0&&(_0x4826ff=_0x5d1ab1['segments'])!==null&&_0x4826ff!==void 0x0&&_0x4826ff[_0x4862c6(0x19e)]&&(this[_0x4862c6(0x1b2)]['primitives']['segments']['commandToExecute']['vertexArray']=_0x1b355e);}}[_0x4d081e(0x1ac)](_0x3b87cd){let _0x7386c2=![];this['options']['maxParticles']!==_0x3b87cd['maxParticles']&&(_0x7386c2=!![]),Object['keys'](_0x3b87cd)['forEach'](_0x33bc69=>{this['options'][_0x33bc69]=_0x3b87cd[_0x33bc69];}),this['refreshParticles'](_0x7386c2);}['applyViewerParameters'](_0x55cf8e){const _0x430c55=_0x4d081e;Object[_0x430c55(0x27d)](_0x55cf8e)['forEach'](_0x3a596a=>{this['viewerParameters'][_0x3a596a]=_0x55cf8e[_0x3a596a];}),this[_0x430c55(0x203)](![]);}[_0x4d081e(0x1b4)](){const _0x5e0464=_0x4d081e;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](_0x5b7c31=>{const _0x2c86fc=_0x4e28;this[_0x2c86fc(0x1f1)]['windTextures'][_0x5b7c31]['destroy']();}),this['particlesRendering']['textures']['colorTable'][_0x5e0464(0x1b4)](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0xa42240=>{const _0x45e5ec=_0x5e0464;this[_0x45e5ec(0x1b2)]['framebuffers'][_0xa42240]['destroy']();});for(const _0x145716 in this){delete this[_0x145716];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x4d081e(0x274)]['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(_0x5b92ef={}){_0x5b92ef={...DEF_OPTIONS,..._0x5b92ef},super(_0x5b92ef),this['_setOptionsHook'](_0x5b92ef);}get['layer'](){const _0x476b2d=_0x4d081e;return this[_0x476b2d(0x261)];}get['data'](){return this['_data'];}set['data'](_0x3d03f6){this['setData'](_0x3d03f6);}get['colors'](){return this['options']['colors'];}set['colors'](_0x258c6a){const _0x1bb215=_0x4d081e;this['options'][_0x1bb215(0x25f)]=_0x258c6a,this['particleSystem']&&this[_0x1bb215(0x234)]['setOptions']({'colors':_0x258c6a}),this['resize']();}[_0x4d081e(0x235)](){}['_addedHook'](){const _0x38937b=_0x4d081e;this['scene']=this['_map'][_0x38937b(0x236)],this['camera']=this[_0x38937b(0x246)]['camera'],this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map']['scene']['primitives']['add'](this['primitives']),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this[_0x38937b(0x1da)]=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x38937b(0x251)]['mouseUp'],this[_0x38937b(0x1f0)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x38937b(0x278)],this),this['_data']&&this['setData'](this[_0x38937b(0x24a)]);}['_removedHook'](){const _0x20816f=_0x4d081e;window[_0x20816f(0x24d)]('resize',this['resize']),this[_0x20816f(0x246)][_0x20816f(0x257)](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x20816f(0x246)][_0x20816f(0x257)](mars3d__namespace['EventType'][_0x20816f(0x1c8)],this[_0x20816f(0x27c)],this),this['_map']['off'](mars3d__namespace['EventType'][_0x20816f(0x1b8)],this['_onMouseUpEvent'],this),this[_0x20816f(0x246)]['off'](mars3d__namespace[_0x20816f(0x251)]['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives'][_0x20816f(0x22d)](),this['_map']['scene']['primitives']['remove'](this['primitives']);}[_0x4d081e(0x232)](){const _0x2d19c9=_0x4d081e;if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this['primitives']['removeAll'](),this['_map']['once'](mars3d__namespace['EventType'][_0x2d19c9(0x23d)],this[_0x2d19c9(0x1d8)],this);}['_onMap_preRenderEvent'](_0x478ad0){const _0x2e723c=_0x4d081e;this['particleSystem'][_0x2e723c(0x247)](this['scene'][_0x2e723c(0x19f)]),this[_0x2e723c(0x1ab)](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x2f0627){const _0x383bfe=_0x4d081e;clearTimeout(this[_0x383bfe(0x1fa)]);if(!this['show']||!this[_0x383bfe(0x234)])return;this['primitives']['show']=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x3bf371){this['mouse_down']=!![];}[_0x4d081e(0x278)](_0x409791){const _0x51a915=_0x4d081e;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this[_0x51a915(0x261)]['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x3c49b4){const _0x486c1a=_0x4d081e;if(!this['show']||!this['particleSystem'])return;this[_0x486c1a(0x1cb)]&&this[_0x486c1a(0x1ae)]&&this['redraw'](),this['primitives'][_0x486c1a(0x1f5)]=!![],this['mouse_down']=![],this['mouse_move']=![];}[_0x4d081e(0x25e)](){const _0x369cd5=_0x4d081e;if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this[_0x369cd5(0x234)][_0x369cd5(0x21b)](this['viewerParameters']),this['primitives'][_0x369cd5(0x1f5)]=!![];}['setData'](_0x5405d9){const _0x4d341a=_0x4d081e;this['_data']=_0x5405d9,this[_0x4d341a(0x234)]&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this['scene'][_0x4d341a(0x19f)],_0x5405d9,this[_0x4d341a(0x23c)](),this[_0x4d341a(0x1a0)]),this['addPrimitives']();}['_setOptionsHook'](_0x1bb011,_0x2ab584){const _0x670129=_0x4d081e;if(_0x1bb011)for(const _0x12371b in _0x1bb011){this[_0x12371b]=_0x1bb011[_0x12371b];}this[_0x670129(0x234)]&&this['particleSystem']['setOptions'](this[_0x670129(0x23c)]());}[_0x4d081e(0x23c)](){const _0x2c36d8=_0x4d081e,_0xaa52ce=Math['ceil'](Math['sqrt'](this['particlesNumber']));return this['particlesNumber']=_0xaa52ce*_0xaa52ce,{'particlesTextureSize':_0xaa52ce,'maxParticles':this[_0x2c36d8(0x217)],'particleHeight':this[_0x2c36d8(0x1ad)],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this[_0x2c36d8(0x1d1)],'colors':this['colors']};}['addPrimitives'](){const _0x26e45d=_0x4d081e;this[_0x26e45d(0x261)]['add'](this['particleSystem']['particlesComputing']['primitives']['getWind']),this['primitives'][_0x26e45d(0x1a2)](this['particleSystem']['particlesComputing'][_0x26e45d(0x261)]['updateSpeed']),this['primitives']['add'](this[_0x26e45d(0x234)]['particlesComputing']['primitives']['updatePosition']),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives'][_0x26e45d(0x27a)]),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives'][_0x26e45d(0x1a2)](this[_0x26e45d(0x234)]['particlesRendering'][_0x26e45d(0x261)]['segments']),this[_0x26e45d(0x261)]['add'](this['particleSystem']['particlesRendering']['primitives']['trails']),this['primitives']['add'](this['particleSystem']['particlesRendering'][_0x26e45d(0x261)][_0x26e45d(0x24e)]);}['updateViewerParameters'](){const _0x14cc6b=_0x4d081e;let _0x486e8f=this['camera'][_0x14cc6b(0x220)](this[_0x14cc6b(0x236)]['globe']['ellipsoid']);if(!_0x486e8f){const _0x233c85=this[_0x14cc6b(0x246)]['getExtent']();_0x486e8f=Cesium$1['Rectangle']['fromDegrees'](_0x233c85[_0x14cc6b(0x213)],_0x233c85['ymin'],_0x233c85[_0x14cc6b(0x229)],_0x233c85[_0x14cc6b(0x210)]);}const _0x297b25=Util[_0x14cc6b(0x224)](_0x486e8f);this['viewerParameters'][_0x14cc6b(0x1ca)]['x']=_0x297b25['lon']['min'],this[_0x14cc6b(0x1a0)][_0x14cc6b(0x1ca)]['y']=_0x297b25['lon']['max'],this[_0x14cc6b(0x1a0)][_0x14cc6b(0x1e1)]['x']=_0x297b25['lat']['min'],this['viewerParameters'][_0x14cc6b(0x1e1)]['y']=_0x297b25['lat']['max'];const _0x39c116=this['camera'][_0x14cc6b(0x1c1)](this[_0x14cc6b(0x1da)],this['scene']['drawingBufferWidth'],this[_0x14cc6b(0x236)]['drawingBufferHeight']);_0x39c116>0x0&&(this['viewerParameters']['pixelSize']=_0x39c116);}}mars3d__namespace[_0x4d081e(0x1b9)]['register']('wind',WindLayer),mars3d__namespace[_0x4d081e(0x274)][_0x4d081e(0x228)]=WindLayer;class CanvasParticle{constructor(){const _0x46ea71=_0x4d081e;this['lng']=null,this['lat']=null,this[_0x46ea71(0x23e)]=null,this[_0x46ea71(0x1bb)]=null,this['age']=null,this['speed']=null;}['destroy'](){for(const _0x1f0967 in this){delete this[_0x1f0967];}}}class CanvasWindField{constructor(_0x4b4c87){this['setOptions'](_0x4b4c87);}get['speedRate'](){const _0x1d2a0f=_0x4d081e;return this[_0x1d2a0f(0x198)];}set['speedRate'](_0x1644d8){const _0x242c64=_0x4d081e;this['_speedRate']=(0x64-(_0x1644d8>0x63?0x63:_0x1644d8))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this[_0x242c64(0x210)]-this['ymin'])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set[_0x4d081e(0x20a)](_0xe2e2eb){this['_maxAge']=_0xe2e2eb;}['setOptions'](_0x214683){const _0x1b5afc=_0x4d081e;this['options']=_0x214683,this[_0x1b5afc(0x20a)]=_0x214683['maxAge']||0x78,this['speedRate']=_0x214683['speedRate']||0x32,this[_0x1b5afc(0x252)]=[];const _0x405d2a=_0x214683[_0x1b5afc(0x217)]||0x1000;for(let _0x1f1ce5=0x0;_0x1f1ce5<_0x405d2a;_0x1f1ce5++){const _0x277a9a=this[_0x1b5afc(0x1df)](new CanvasParticle());this['particles']['push'](_0x277a9a);}}[_0x4d081e(0x273)](_0x494b43){const _0x27b954=_0x4d081e;this['rows']=_0x494b43[_0x27b954(0x1c3)],this[_0x27b954(0x22f)]=_0x494b43[_0x27b954(0x22f)],this[_0x27b954(0x213)]=_0x494b43[_0x27b954(0x213)],this[_0x27b954(0x229)]=_0x494b43['xmax'],this['ymin']=_0x494b43[_0x27b954(0x26d)],this['ymax']=_0x494b43[_0x27b954(0x210)],this['grid']=[];const _0x2ac3a1=_0x494b43['udata'],_0x3af1d9=_0x494b43['vdata'];let _0x2a0a14=![];_0x2ac3a1[_0x27b954(0x233)]===this['rows']&&_0x2ac3a1[0x0]['length']===this['cols']&&(_0x2a0a14=!![]);let _0x24159f=0x0,_0x1014da=null,_0x10ceb3=null;for(let _0x15a40e=0x0;_0x15a40e<this['rows'];_0x15a40e++){_0x1014da=[];for(let _0x38be82=0x0;_0x38be82<this[_0x27b954(0x22f)];_0x38be82++,_0x24159f++){_0x2a0a14?_0x10ceb3=this['_calcUV'](_0x2ac3a1[_0x15a40e][_0x38be82],_0x3af1d9[_0x15a40e][_0x38be82]):_0x10ceb3=this['_calcUV'](_0x2ac3a1[_0x24159f],_0x3af1d9[_0x24159f]),_0x1014da[_0x27b954(0x270)](_0x10ceb3);}this['grid'][_0x27b954(0x270)](_0x1014da);}this['options']['reverseY']&&this['grid']['reverse']();}[_0x4d081e(0x21c)](){const _0x33a5d3=_0x4d081e;delete this['rows'],delete this['cols'],delete this[_0x33a5d3(0x213)],delete this['xmax'],delete this[_0x33a5d3(0x26d)],delete this['ymax'],delete this['grid'],delete this['particles'];}[_0x4d081e(0x223)](_0x283a15,_0xabad6c){const _0x4cc4e5=_0x4d081e,_0x2c2fb6=(_0x283a15-this[_0x4cc4e5(0x213)])/(this[_0x4cc4e5(0x229)]-this['xmin'])*(this[_0x4cc4e5(0x22f)]-0x1),_0x8bbbc3=(this['ymax']-_0xabad6c)/(this[_0x4cc4e5(0x210)]-this[_0x4cc4e5(0x26d)])*(this['rows']-0x1);return[_0x2c2fb6,_0x8bbbc3];}[_0x4d081e(0x199)](_0x31eca9,_0x5a5d22){const _0x14addb=_0x4d081e;if(_0x31eca9<0x0||_0x31eca9>=this['cols']||_0x5a5d22>=this['rows'])return[0x0,0x0,0x0];const _0x8ac5fb=Math['floor'](_0x31eca9),_0xf491aa=Math['floor'](_0x5a5d22);if(_0x8ac5fb===_0x31eca9&&_0xf491aa===_0x5a5d22)return this['grid'][_0x5a5d22][_0x31eca9];const _0x9c65f7=_0x8ac5fb+0x1,_0x1211a6=_0xf491aa+0x1,_0x4c05ae=this[_0x14addb(0x199)](_0x8ac5fb,_0xf491aa),_0x45a120=this[_0x14addb(0x199)](_0x9c65f7,_0xf491aa),_0x42bd19=this[_0x14addb(0x199)](_0x8ac5fb,_0x1211a6),_0x1258f2=this['getUVByXY'](_0x9c65f7,_0x1211a6);let _0x225a01=null;try{_0x225a01=this[_0x14addb(0x1de)](_0x31eca9-_0x8ac5fb,_0x5a5d22-_0xf491aa,_0x4c05ae,_0x45a120,_0x42bd19,_0x1258f2);}catch(_0x48e938){console['log'](_0x31eca9,_0x5a5d22);}return _0x225a01;}[_0x4d081e(0x1de)](_0x53f604,_0x2a21c5,_0xdada1f,_0x255d53,_0x3d7f96,_0x2970d5){const _0x5372c5=0x1-_0x53f604,_0x396372=0x1-_0x2a21c5,_0x30c2ba=_0x5372c5*_0x396372,_0x21e82b=_0x53f604*_0x396372,_0x3656b7=_0x5372c5*_0x2a21c5,_0x319824=_0x53f604*_0x2a21c5,_0x4e615a=_0xdada1f[0x0]*_0x30c2ba+_0x255d53[0x0]*_0x21e82b+_0x3d7f96[0x0]*_0x3656b7+_0x2970d5[0x0]*_0x319824,_0x22dcab=_0xdada1f[0x1]*_0x30c2ba+_0x255d53[0x1]*_0x21e82b+_0x3d7f96[0x1]*_0x3656b7+_0x2970d5[0x1]*_0x319824;return this['_calcUV'](_0x4e615a,_0x22dcab);}['_calcUV'](_0x380c1e,_0x6f2229){const _0x45c250=_0x4d081e;return[+_0x380c1e,+_0x6f2229,Math[_0x45c250(0x1af)](_0x380c1e*_0x380c1e+_0x6f2229*_0x6f2229)];}['getUVByPoint'](_0x150af5,_0x95f32a){const _0x10eb2e=_0x4d081e;if(!this[_0x10eb2e(0x1aa)](_0x150af5,_0x95f32a))return null;const _0x25ee40=this['toGridXY'](_0x150af5,_0x95f32a),_0x99bcf9=this[_0x10eb2e(0x199)](_0x25ee40[0x0],_0x25ee40[0x1]);return _0x99bcf9;}['isInExtent'](_0x35766f,_0x4ccc6e){const _0x3380c4=_0x4d081e;return _0x35766f>=this['xmin']&&_0x35766f<=this[_0x3380c4(0x229)]&&_0x4ccc6e>=this['ymin']&&_0x4ccc6e<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x341ead=fRandomByfloat(this['xmin'],this['xmax']),_0x1119f1=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x1119f1,'lng':_0x341ead};}['getParticles'](){const _0x18a4a6=_0x4d081e;let _0x5d3dea,_0x2c5c96,_0x4f574e;for(let _0x512630=0x0,_0x383379=this[_0x18a4a6(0x252)]['length'];_0x512630<_0x383379;_0x512630++){let _0x2d9e05=this[_0x18a4a6(0x252)][_0x512630];_0x2d9e05['age']<=0x0&&(_0x2d9e05=this['_randomParticle'](_0x2d9e05));if(_0x2d9e05[_0x18a4a6(0x1ea)]>0x0){const _0x507243=_0x2d9e05['tlng'],_0x1c6971=_0x2d9e05['tlat'];_0x4f574e=this['getUVByPoint'](_0x507243,_0x1c6971),_0x4f574e?(_0x5d3dea=_0x507243+this['_calc_speedRate'][0x0]*_0x4f574e[0x0],_0x2c5c96=_0x1c6971+this['_calc_speedRate'][0x1]*_0x4f574e[0x1],_0x2d9e05['lng']=_0x507243,_0x2d9e05['lat']=_0x1c6971,_0x2d9e05['tlng']=_0x5d3dea,_0x2d9e05['tlat']=_0x2c5c96,_0x2d9e05['speed']=_0x4f574e[0x2],_0x2d9e05[_0x18a4a6(0x1ea)]--):_0x2d9e05['age']=0x0;}}return this['particles'];}[_0x4d081e(0x1df)](_0x7db3ba){const _0x2da08e=_0x4d081e;let _0x261e7a,_0x3908f4;for(let _0x31ea2b=0x0;_0x31ea2b<0x1e;_0x31ea2b++){_0x261e7a=this['getRandomLatLng'](),_0x3908f4=this[_0x2da08e(0x21d)](_0x261e7a['lng'],_0x261e7a['lat']);if(_0x3908f4&&_0x3908f4[0x2]>0x0)break;}if(!_0x3908f4)return _0x7db3ba;const _0x54c4cd=_0x261e7a['lng']+this['_calc_speedRate'][0x0]*_0x3908f4[0x0],_0x4f83e8=_0x261e7a['lat']+this['_calc_speedRate'][0x1]*_0x3908f4[0x1];return _0x7db3ba[_0x2da08e(0x208)]=_0x261e7a['lng'],_0x7db3ba[_0x2da08e(0x258)]=_0x261e7a['lat'],_0x7db3ba['tlng']=_0x54c4cd,_0x7db3ba[_0x2da08e(0x1bb)]=_0x4f83e8,_0x7db3ba['age']=Math['round'](Math['random']()*this['maxAge']),_0x7db3ba['speed']=_0x3908f4[0x2],_0x7db3ba;}['destroy'](){for(const _0x28b511 in this){delete this[_0x28b511];}}}function fRandomByfloat(_0x505736,_0x5614bd){return _0x505736+Math['random']()*(_0x5614bd-_0x505736);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer'][_0x4d081e(0x222)];class CanvasWindLayer extends BaseLayer{constructor(_0x1e27f4={}){const _0x4b5a99=_0x4d081e;super(_0x1e27f4),this['_setOptionsHook'](_0x1e27f4),this[_0x4b5a99(0x1be)]=null,_0x1e27f4['colors']&&_0x1e27f4['steps']&&(this[_0x4b5a99(0x1e6)]=new mars3d__namespace['ColorRamp'](_0x1e27f4));}['_setOptionsHook'](_0x372118,_0x1050a2){const _0x42e3b4=_0x4d081e;this['frameTime']=0x3e8/(_0x372118['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x372118['color']||'#ffffff',this['lineWidth']=_0x372118['lineWidth']||0x1,this[_0x42e3b4(0x1ad)]=_0x372118['fixedHeight']??0x0,this['reverseY']=_0x372118['reverseY']??![],this[_0x42e3b4(0x279)]&&this[_0x42e3b4(0x279)][_0x42e3b4(0x1ac)](_0x372118);}get['layer'](){const _0x41f801=_0x4d081e;return this[_0x41f801(0x1be)];}get['canvasWidth'](){const _0x4b82d3=_0x4d081e;return this[_0x4b82d3(0x246)][_0x4b82d3(0x236)]['canvas']['clientWidth'];}get['canvasHeight'](){const _0x3dc44e=_0x4d081e;return this['_map'][_0x3dc44e(0x236)]['canvas']['clientHeight'];}get['pointerEvents'](){const _0x10aa53=_0x4d081e;return this[_0x10aa53(0x1d3)];}set['pointerEvents'](_0x16f242){const _0x22e4e2=_0x4d081e;this['_pointerEvents']=_0x16f242;if(!this['canvas'])return;_0x16f242?this['canvas']['style']['pointer-events']=_0x22e4e2(0x1ba):this['canvas'][_0x22e4e2(0x1e5)]['pointer-events']='none';}get['particlesNumber'](){return this['options']['particlesNumber'];}set['particlesNumber'](_0x25b99c){const _0x462cac=_0x4d081e;this[_0x462cac(0x1e0)]['particlesNumber']=_0x25b99c,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set[_0x4d081e(0x1d0)](_0x344e2d){const _0x3c5cd1=_0x4d081e;this[_0x3c5cd1(0x1e0)][_0x3c5cd1(0x1d0)]=_0x344e2d,this['windField']&&(this['windField']['speedRate']=_0x344e2d);}get['maxAge'](){return this['options']['maxAge'];}set['maxAge'](_0x19a807){const _0x3fa8fd=_0x4d081e;this[_0x3fa8fd(0x1e0)][_0x3fa8fd(0x20a)]=_0x19a807,this['windField']&&(this['windField']['maxAge']=_0x19a807);}get['data'](){return this['windData'];}set['data'](_0x38fb94){const _0x1cee07=_0x4d081e;this[_0x1cee07(0x1bf)](_0x38fb94);}[_0x4d081e(0x267)](_0x2df999){const _0x454911=_0x4d081e;_0x2df999?this['_addedHook']():(this['windData']&&(this['options'][_0x454911(0x1eb)]=this[_0x454911(0x1f6)]),this['_removedHook']());}['_mountedHook'](){const _0x34ecc3=_0x4d081e;this[_0x34ecc3(0x1e0)]['worker']?this['initWorker']():this[_0x34ecc3(0x279)]=new CanvasWindField(this['options']);}['_addedHook'](){const _0x2877a9=_0x4d081e;this['canvas']=this['_createCanvas'](),this[_0x2877a9(0x266)]=this[_0x2877a9(0x1be)]['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options']['data']&&this['setData'](this['options'][_0x2877a9(0x1eb)]);}['_removedHook'](){const _0x50f746=_0x4d081e;this['clear'](),this['unbindEvent'](),this['canvas']&&(this['_map']['container']['removeChild'](this[_0x50f746(0x1be)]),delete this['canvas']);}['_createCanvas'](){const _0x45512a=_0x4d081e,_0x3435a9=mars3d__namespace['DomUtil']['create'](_0x45512a(0x1be),_0x45512a(0x1a5),this['_map']['container']);return _0x3435a9['style'][_0x45512a(0x230)]=_0x45512a(0x1cc),_0x3435a9['style']['top']='0px',_0x3435a9['style']['left']=_0x45512a(0x1b3),_0x3435a9[_0x45512a(0x1e5)]['width']=this['_map']['scene']['canvas'][_0x45512a(0x231)]+'px',_0x3435a9[_0x45512a(0x1e5)]['height']=this[_0x45512a(0x246)][_0x45512a(0x236)]['canvas']['clientHeight']+'px',_0x3435a9['style'][_0x45512a(0x23f)]=this['_pointerEvents']?'auto':'none',_0x3435a9['style']['zIndex']=this['options']['zIndex']??0x9,_0x3435a9[_0x45512a(0x25b)]=this['_map'][_0x45512a(0x236)]['canvas'][_0x45512a(0x231)],_0x3435a9[_0x45512a(0x23b)]=this[_0x45512a(0x246)]['scene']['canvas']['clientHeight'],_0x3435a9;}['resize'](){const _0x4ea2e1=_0x4d081e;this['canvas']&&(this[_0x4ea2e1(0x1be)]['style']['width']=this['_map']['scene'][_0x4ea2e1(0x1be)]['clientWidth']+'px',this['canvas']['style']['height']=this['_map']['scene']['canvas']['clientHeight']+'px',this[_0x4ea2e1(0x1be)][_0x4ea2e1(0x25b)]=this['_map']['scene'][_0x4ea2e1(0x1be)]['clientWidth'],this['canvas'][_0x4ea2e1(0x23b)]=this['_map'][_0x4ea2e1(0x236)]['canvas']['clientHeight']);}['bindEvent'](){const _0x399d96=_0x4d081e,_0x58536f=this;let _0x160e28=Date['now']();(function _0x3b4d09(){const _0x547651=_0x4e28;_0x58536f[_0x547651(0x226)]=window['requestAnimationFrame'](_0x3b4d09);if(_0x58536f[_0x547651(0x1f5)]&&_0x58536f[_0x547651(0x279)]){const _0x1d939b=Date[_0x547651(0x259)](),_0x1e79a9=_0x1d939b-_0x160e28;_0x1e79a9>_0x58536f['frameTime']&&(_0x160e28=_0x1d939b-_0x1e79a9%_0x58536f[_0x547651(0x1c4)],_0x58536f[_0x547651(0x206)]());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options'][_0x399d96(0x272)]&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x399d96(0x246)]['on'](mars3d__namespace['EventType'][_0x399d96(0x1b8)],this['_onMouseUpEvent'],this)));}[_0x4d081e(0x1c6)](){const _0x1664c6=_0x4d081e;window['cancelAnimationFrame'](this['animateFrame']),delete this['animateFrame'],window[_0x1664c6(0x24d)](_0x1664c6(0x232),this['resize']),this['options']['mouseHidden']&&(this['_map']['off'](mars3d__namespace['EventType'][_0x1664c6(0x20e)],this[_0x1664c6(0x268)],this),this['_map'][_0x1664c6(0x257)](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map'][_0x1664c6(0x257)](mars3d__namespace[_0x1664c6(0x251)]['mouseUp'],this[_0x1664c6(0x1f0)],this),this['_map'][_0x1664c6(0x257)](mars3d__namespace[_0x1664c6(0x251)]['mouseMove'],this['_onMouseMoveEvent'],this));}[_0x4d081e(0x268)](_0x3507b5){const _0x5b4626=_0x4d081e;clearTimeout(this[_0x5b4626(0x1fa)]);if(!this[_0x5b4626(0x1f5)]||!this[_0x5b4626(0x1be)])return;this['canvas'][_0x5b4626(0x1e5)]['visibility']='hidden',this[_0x5b4626(0x1fa)]=setTimeout(()=>{const _0x4fa7ca=_0x5b4626;if(!this[_0x4fa7ca(0x1f5)])return;this[_0x4fa7ca(0x25e)](),this['canvas']['style']['visibility']=_0x4fa7ca(0x218);},0xc8);}['_onMouseDownEvent'](_0x1d112e){const _0x2dacc5=_0x4d081e;this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace[_0x2dacc5(0x251)]['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x3fe26e){const _0x458f65=_0x4d081e;if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this[_0x458f65(0x1be)]['style']['visibility']='hidden',this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x3c2728){const _0x731f34=_0x4d081e;if(!this['show']||!this[_0x731f34(0x1be)])return;this[_0x731f34(0x246)][_0x731f34(0x257)](mars3d__namespace['EventType'][_0x731f34(0x1e9)],this['_onMouseMoveEvent'],this),this['mouse_down']&&this[_0x731f34(0x1ae)]&&this['redraw'](),this['canvas'][_0x731f34(0x1e5)][_0x731f34(0x26a)]='visible',this[_0x731f34(0x1cb)]=![],this['mouse_move']=![];}[_0x4d081e(0x1bf)](_0x36ac04){const _0x267b0d=_0x4d081e;this['clear'](),this['windData']=_0x36ac04,this['windField']['setDate'](_0x36ac04),this[_0x267b0d(0x25e)]();}['redraw'](){const _0x388821=_0x4d081e;if(!this['show'])return;this['windField']['setOptions'](this[_0x388821(0x1e0)]),this['update']();}[_0x4d081e(0x206)](){const _0x2ebd74=_0x4d081e;if(this[_0x2ebd74(0x26e)])return;this[_0x2ebd74(0x26e)]=!![];if(this['worker'])this['windField']['update']();else{const _0x343698=this[_0x2ebd74(0x279)]['getParticles']();this['_drawLines'](_0x343698);}this['_updateIng']=![];}['_drawLines'](_0x294e1d){const _0x1b8d44=_0x4d081e;this['canvasContext']['globalCompositeOperation']='destination-in',this[_0x1b8d44(0x266)][_0x1b8d44(0x1d5)](0x0,0x0,this[_0x1b8d44(0x1d2)],this[_0x1b8d44(0x1bd)]),this[_0x1b8d44(0x266)]['globalCompositeOperation']='lighter',this[_0x1b8d44(0x266)][_0x1b8d44(0x22c)]=0.9;const _0x263767=this['_map']['scene']['mode']!==Cesium['SceneMode']['SCENE3D'],_0x5ab03b=this['canvasWidth']*0.25;if(this['_colorRamp'])for(let _0x13c230=0x0,_0x34e38c=_0x294e1d[_0x1b8d44(0x233)];_0x13c230<_0x34e38c;_0x13c230++){const _0x57b7d3=_0x294e1d[_0x13c230],_0x10e76e=this[_0x1b8d44(0x1b7)](_0x57b7d3[_0x1b8d44(0x208)],_0x57b7d3['lat'],_0x57b7d3),_0xa4ab22=this[_0x1b8d44(0x1b7)](_0x57b7d3['tlng'],_0x57b7d3[_0x1b8d44(0x1bb)],_0x57b7d3);if(!_0x10e76e||!_0xa4ab22)continue;if(_0x263767&&Math['abs'](_0x10e76e[0x0]-_0xa4ab22[0x0])>=_0x5ab03b)continue;this[_0x1b8d44(0x266)]['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this[_0x1b8d44(0x266)]['strokeStyle']=this['_colorRamp']['getColor'](_0x57b7d3['speed']),this['canvasContext']['moveTo'](_0x10e76e[0x0],_0x10e76e[0x1]),this['canvasContext'][_0x1b8d44(0x19c)](_0xa4ab22[0x0],_0xa4ab22[0x1]),this['canvasContext']['stroke']();}else{this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x1b8d44(0x1d1)],this['canvasContext']['strokeStyle']=this['color'];for(let _0x26fd41=0x0,_0x4a5287=_0x294e1d[_0x1b8d44(0x233)];_0x26fd41<_0x4a5287;_0x26fd41++){const _0x15468a=_0x294e1d[_0x26fd41],_0x2392cf=this['_tomap'](_0x15468a[_0x1b8d44(0x208)],_0x15468a[_0x1b8d44(0x258)],_0x15468a),_0xfbd96d=this['_tomap'](_0x15468a[_0x1b8d44(0x23e)],_0x15468a['tlat'],_0x15468a);if(!_0x2392cf||!_0xfbd96d)continue;if(_0x263767&&Math['abs'](_0x2392cf[0x0]-_0xfbd96d[0x0])>=_0x5ab03b)continue;this['canvasContext']['moveTo'](_0x2392cf[0x0],_0x2392cf[0x1]),this['canvasContext']['lineTo'](_0xfbd96d[0x0],_0xfbd96d[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x2745f8,_0x528211,_0x41e22a){const _0xa95081=_0x4d081e,_0x156009=Cesium['Cartesian3']['fromDegrees'](_0x2745f8,_0x528211,this['fixedHeight']),_0x3b20e8=this['_map']['scene'];if(_0x3b20e8['mode']===Cesium['SceneMode']['SCENE3D']){const _0x4aabd8=new Cesium[(_0xa95081(0x1e7))](_0x3b20e8[_0xa95081(0x21e)]['ellipsoid'],_0x3b20e8['camera']['positionWC']),_0x7dc48=_0x4aabd8['isPointVisible'](_0x156009);if(!_0x7dc48)return _0x41e22a['age']=0x0,null;}const _0x4c33fd=Cesium['SceneTransforms']['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x156009);return _0x4c33fd?[_0x4c33fd['x'],_0x4c33fd['y']]:null;}['clear'](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){const _0x3d4279=_0x4d081e;this[_0x3d4279(0x1e3)]=new Worker(this[_0x3d4279(0x1e0)]['worker']),this['worker'][_0x3d4279(0x1fc)]=_0x12bef4=>{const _0x342c6e=_0x3d4279;this['_drawLines'](_0x12bef4['data'][_0x342c6e(0x252)]),this['_updateIng2']=![];},this[_0x3d4279(0x279)]={'init':_0x259d63=>{const _0x30d96b=_0x3d4279;this[_0x30d96b(0x1e3)]['postMessage']({'type':'init','options':_0x259d63});},'setOptions':_0x355c42=>{const _0x391fbe=_0x3d4279;this[_0x391fbe(0x1e3)][_0x391fbe(0x1fd)]({'type':'setOptions','options':_0x355c42});},'setDate':_0x1fa720=>{const _0x104e30=_0x3d4279;this[_0x104e30(0x1e3)][_0x104e30(0x1fd)]({'type':'setDate','data':_0x1fa720});},'update':()=>{const _0x534ef6=_0x3d4279;if(this['_updateIng2'])return;this[_0x534ef6(0x1dd)]=!![],this['worker']['postMessage']({'type':_0x534ef6(0x206)});},'clear':()=>{const _0xb065d9=_0x3d4279;this[_0xb065d9(0x1e3)]['postMessage']({'type':'clear'});}},this['windField']['init'](this['options']);}}mars3d__namespace['LayerUtil']['register'](_0x4d081e(0x276),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace[_0x4d081e(0x1ce)]=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports[_0x4d081e(0x228)]=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.8",
3
+ "version": "3.6.9",
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.8"
11
+ "mars3d": "~3.6.9"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"