mars3d-wind 3.7.6 → 3.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mars3d-wind.js +3 -3
- package/package.json +2 -2
package/dist/mars3d-wind.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
|
|
3
3
|
*
|
|
4
|
-
* 版本信息:v3.7.
|
|
5
|
-
* 编译日期:2024-03-
|
|
4
|
+
* 版本信息:v3.7.7
|
|
5
|
+
* 编译日期:2024-03-19 15:55:30
|
|
6
6
|
* 版权所有:Copyright by 火星科技 http://mars3d.cn
|
|
7
7
|
* 使用单位:免费公开版 ,2024-01-15
|
|
8
8
|
*/
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
|
|
12
12
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
|
|
13
13
|
})(this, (function (exports, mars3d) {
|
|
14
|
-
'use strict';const _0x1f0c71=_0x5921;(function(_0x5dd249,_0x590245){const _0x1c3e49=_0x5921,_0x450145=_0x5dd249();while(!![]){try{const _0x44ae43=-parseInt(_0x1c3e49(0xcd))/0x1+-parseInt(_0x1c3e49(0xf1))/0x2+-parseInt(_0x1c3e49(0xc9))/0x3+parseInt(_0x1c3e49(0x189))/0x4+-parseInt(_0x1c3e49(0x1ad))/0x5*(parseInt(_0x1c3e49(0x190))/0x6)+parseInt(_0x1c3e49(0x107))/0x7+parseInt(_0x1c3e49(0x1b2))/0x8*(parseInt(_0x1c3e49(0x120))/0x9);if(_0x44ae43===_0x590245)break;else _0x450145['push'](_0x450145['shift']());}catch(_0x5f5ae4){_0x450145['push'](_0x450145['shift']());}}}(_0x4f24,0xc183e));function _0x4f24(){const _0x3a691b=['segments','mode','_removedHook','createSegmentsGeometry','BufferUsage','lng','absolute','lineTo','geometry','framebuffers','lat','getOwnPropertyDescriptor','updatePosition','_calc_speedRate','_speedRate','lev','5774664NBAlUi','style','LINEAR','Texture','drawingBufferWidth','DrawCommand','attributeLocations','pow','createParticlesTextures','push','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','animateFrame','_data','ShaderSource','strokeStyle','width','particleSystem','onmessage','vdata','shaderProgram','createTexture','nextTrailsColor','ymax','getWind','_updateIng2','16713LetdcD','canvasWidth','canvasContext','random','depthTest','maxAge','clampToLatitudeRange','Compute','max','camera','wind','resize','add','clearFramebuffers','EllipsoidalOccluder','data','getColor','clientHeight','EventType','height','keys','createRenderingTextures','_calcUV','rawRenderState','forEach','arrayBufferView','hidden','defined','_showHook','framebuffer','nextParticlesPosition','speedRate','_onMapWhellEvent','stroke','viewerParameters','trails','toGridXY','GeometryAttributes','Cesium','moveTo','getContext','currentParticlesPosition','default','red','color','toRadians','blending','grid','worker','particlesNumber','_updateIng','destroyParticlesTextures','Draw','drawingBufferHeight','fromCache','getRandomLatLng','ComponentDatatype','addEventListener','addPrimitives','_onMap_preRenderEvent','uniformMap','windField','nextTrails','ellipsoid','_randomParticle','source','depthTexture','Framebuffer','get','_onMouseMoveEvent','getOptions','//\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','udata','particlesTextures','colorTable','createRenderingFramebuffers','speed','DepthFunction','WindUtil','_setOptionsHook','fragmentShaderSource','cols','colors','_drawLines','mouseDown','destroy','setOptions','xmax','canvasResize','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','UNSIGNED_INT','windData','toDegrees','PrimitiveType','createComputingPrimitives','applyViewerParameters','autoClear','bind','SceneTransforms','postProcessingSpeed','lon','lighter','viewport','options','scene','2196864pJrOlp','Appearance','particlesWind','top','Color','currentParticlesSpeed','layer','786JDhOzQ','_bilinearInterpolation','setData','Math','latRange','min','abs','getDefaultRenderState','Pass','zIndex','mouseUp','register','left','ColorRamp','mouse_down','cancelAnimationFrame','clear','tlat','viewRectangleToLonLatRange','show','context','_createCanvas','outputTexture','reverseY','Matrix4','particlesComputing','dimensions','createCommand','_map','8105JKlvmF','floor','canvas','particleHeight','east','12832rLjllD','postMessage','TRIANGLES','PrimitiveCollection','xmin','length','GeometryAttribute','cos','SCENE3D','RGBA','levmin','NEAREST','WindLayer','Geometry','off','_onMouseDownEvent','windTextures','_tomap','preRender','segmentsColor','2319075jkfTag','update','commandToExecute','commandType','1290806dHbJSl','fromCssColorString','_onMouseUpEvent','textures','_canrefresh','age','particles','getUVByXY','preExecute','BaseLayer','globeBoundingSphere','PixelDatatype','destroyObject','clientWidth','lineWidth','rows','postProcessingPosition','removeChild','visible','ymin','bindEvent','updateViewerParameters','DEPTH_COMPONENT','vertexArray','wheel','tlng','particlesRendering','CanvasWindField','array','PixelFormat','Sampler','sqrt','getUVByPoint','redraw','Cartesian3','log','2567952bVzhaQ','maxParticles','primitives','particlesTextureSize','steps','OPAQUE'];_0x4f24=function(){return _0x3a691b;};return _0x4f24();}function _interopNamespace(_0x366d8a){const _0x332a71=_0x5921;if(_0x366d8a&&_0x366d8a['__esModule'])return _0x366d8a;var _0x1114bd=Object['create'](null);return _0x366d8a&&Object['keys'](_0x366d8a)[_0x332a71(0x138)](function(_0xf2f1b1){const _0x4cf5fa=_0x332a71;if(_0xf2f1b1!==_0x4cf5fa(0x14a)){var _0x1c01e4=Object[_0x4cf5fa(0x102)](_0x366d8a,_0xf2f1b1);Object['defineProperty'](_0x1114bd,_0xf2f1b1,_0x1c01e4[_0x4cf5fa(0x164)]?_0x1c01e4:{'enumerable':!![],'get':function(){return _0x366d8a[_0xf2f1b1];}});}}),_0x1114bd['default']=_0x366d8a,_0x1114bd;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace[_0x1f0c71(0x146)];function getU(_0x2f6255,_0x37ec0f){const _0x178fd2=_0x1f0c71,_0x500ccd=_0x2f6255*Math[_0x178fd2(0x1b9)](Cesium$7['Math']['toRadians'](_0x37ec0f));return _0x500ccd;}function getV(_0x193ee4,_0x335f30){const _0x29c9ce=_0x1f0c71,_0x4a9ed7=_0x193ee4*Math['sin'](Cesium$7['Math'][_0x29c9ce(0x14d)](_0x335f30));return _0x4a9ed7;}function getSpeed(_0x45b7aa,_0x3ef99b){const _0x588763=_0x1f0c71,_0x2e4a4a=Math['sqrt'](Math[_0x588763(0x10e)](_0x45b7aa,0x2)+Math['pow'](_0x3ef99b,0x2));return _0x2e4a4a;}function getDirection(_0xae176a,_0x3bc662){const _0x30f497=_0x1f0c71;let _0x30230b=Cesium$7[_0x30f497(0x193)]['toDegrees'](Math['atan2'](_0x3bc662,_0xae176a));return _0x30230b+=_0x30230b<0x0?0x168:0x0,_0x30230b;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x45818e){const _0x1226fc=_0x1f0c71;this['commandType']=_0x45818e[_0x1226fc(0xcc)],this[_0x1226fc(0xff)]=_0x45818e[_0x1226fc(0xff)],this['attributeLocations']=_0x45818e['attributeLocations'],this['primitiveType']=_0x45818e['primitiveType'],this['uniformMap']=_0x45818e['uniformMap'],this['vertexShaderSource']=_0x45818e['vertexShaderSource'],this[_0x1226fc(0x170)]=_0x45818e['fragmentShaderSource'],this['rawRenderState']=_0x45818e[_0x1226fc(0x137)],this[_0x1226fc(0x13d)]=_0x45818e[_0x1226fc(0x13d)],this['outputTexture']=_0x45818e[_0x1226fc(0x1a6)],this['autoClear']=_0x45818e[_0x1226fc(0x180)]??![],this[_0x1226fc(0xd5)]=_0x45818e['preExecute'],this['show']=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this[_0x1226fc(0x180)]&&(this['clearCommand']=new Cesium$6['ClearCommand']({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x1226fc(0x198)]['OPAQUE']}));}[_0x1f0c71(0x1ab)](_0x35d488){const _0x3ade4e=_0x1f0c71;switch(this['commandType']){case _0x3ade4e(0x154):{const _0x344e53=Cesium$6['VertexArray']['fromGeometry']({'context':_0x35d488,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x1216cb=Cesium$6['ShaderProgram'][_0x3ade4e(0x156)]({'context':_0x35d488,'attributeLocations':this[_0x3ade4e(0x10d)],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this[_0x3ade4e(0x170)]}),_0x4ddb72=Cesium$6['RenderState'][_0x3ade4e(0x156)](this['rawRenderState']);return new Cesium$6[(_0x3ade4e(0x10c))]({'primitiveType':this['primitiveType'],'shaderProgram':_0x1216cb,'vertexArray':_0x344e53,'modelMatrix':Cesium$6[_0x3ade4e(0x1a8)]['IDENTITY'],'renderState':_0x4ddb72,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this[_0x3ade4e(0x13d)],'pass':Cesium$6[_0x3ade4e(0x198)]['OPAQUE'],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this[_0x3ade4e(0x15c)],'outputTexture':this['outputTexture'],'persists':!![]});}}}['setGeometry'](_0x11e9e4,_0x41250b){const _0x2cde05=_0x1f0c71;this[_0x2cde05(0xff)]=_0x41250b;const _0x592523=Cesium$6['VertexArray']['fromGeometry']({'context':_0x11e9e4,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6[_0x2cde05(0xfb)]['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x592523;}['update'](_0x545da1){const _0xb11643=_0x1f0c71;if(!this['show'])return;if(_0x545da1[_0xb11643(0xf8)]!==Cesium$6['SceneMode'][_0xb11643(0x1ba)])return;!Cesium$6['defined'](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x545da1[_0xb11643(0x1a4)])),Cesium$6['defined'](this[_0xb11643(0xd5)])&&this['preExecute'](),Cesium$6[_0xb11643(0x13b)](this['clearCommand'])&&_0x545da1['commandList'][_0xb11643(0x110)](this['clearCommand']),_0x545da1['commandList']['push'](this['commandToExecute']);}['isDestroyed'](){return![];}[_0x1f0c71(0x175)](){const _0x343052=_0x1f0c71;if(this['clearCommand']){var _0x1de060,_0x239dde;(_0x1de060=this['clearCommand'])!==null&&_0x1de060!==void 0x0&&_0x1de060['vertexArray']&&this['clearCommand']['vertexArray'][_0x343052(0x175)](),(_0x239dde=this['clearCommand'])!==null&&_0x239dde!==void 0x0&&_0x239dde['shaderProgram']&&this['clearCommand']['shaderProgram'][_0x343052(0x175)](),delete this['clearCommand'];}return this[_0x343052(0xcb)]&&(this['commandToExecute'][_0x343052(0xe4)]&&this[_0x343052(0xcb)]['vertexArray'][_0x343052(0x175)](),this[_0x343052(0xcb)][_0x343052(0x11a)]&&this[_0x343052(0xcb)]['shaderProgram'][_0x343052(0x175)](),delete this['commandToExecute']),Cesium$6[_0x343052(0xd9)](this);}}const Cesium$5=mars3d__namespace[_0x1f0c71(0x146)],Util=(function(){const _0x3599ec=function(){const _0x127685=_0x5921,_0x193c70=new Cesium$5[(_0x127685(0x1bf))]({'attributes':new Cesium$5[(_0x127685(0x145))]({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5[_0x127685(0x158)]['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5[(_0x127685(0x1b8))]({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x193c70;},_0x5dcb77=function(_0x1677b6,_0x507b2f){const _0x1fa290=_0x5921;if(Cesium$5['defined'](_0x507b2f)){const _0x5e90f2={};_0x5e90f2[_0x1fa290(0x139)]=_0x507b2f,_0x1677b6[_0x1fa290(0x161)]=_0x5e90f2;}const _0x30075b=new Cesium$5[(_0x1fa290(0x10a))](_0x1677b6);return _0x30075b;},_0x4356fb=function(_0x55a201,_0x11cc72,_0x56ebc4){const _0x4e6e84=_0x5921,_0x4863ff=new Cesium$5[(_0x4e6e84(0x163))]({'context':_0x55a201,'colorTextures':[_0x11cc72],'depthTexture':_0x56ebc4});return _0x4863ff;},_0x557468=function(_0x37f496){const _0x1ef682=_0x5921,_0x461362=!![],_0x2d4d6b=![],_0x4231da={'viewport':_0x37f496[_0x1ef682(0x186)],'depthTest':_0x37f496[_0x1ef682(0x124)],'depthMask':_0x37f496['depthMask'],'blending':_0x37f496[_0x1ef682(0x14e)]},_0x47dcfd=Cesium$5[_0x1ef682(0x18a)][_0x1ef682(0x197)](_0x461362,_0x2d4d6b,_0x4231da);return _0x47dcfd;},_0x418160=function(_0x6cd57a){const _0xab991=_0x5921,_0x4a121c={},_0x409f99=Cesium$5['Math']['mod'](_0x6cd57a['west'],Cesium$5['Math']['TWO_PI']),_0x297839=Cesium$5['Math']['mod'](_0x6cd57a[_0xab991(0x1b1)],Cesium$5['Math']['TWO_PI']),_0x3178a0=_0x6cd57a['width'];let _0x10ffcf,_0x1aeaf6;_0x3178a0>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x10ffcf=0x0,_0x1aeaf6=Cesium$5['Math']['TWO_PI']):_0x297839-_0x409f99<_0x3178a0?(_0x10ffcf=_0x409f99,_0x1aeaf6=_0x409f99+_0x3178a0):(_0x10ffcf=_0x409f99,_0x1aeaf6=_0x297839);_0x4a121c['lon']={'min':Cesium$5['Math']['toDegrees'](_0x10ffcf),'max':Cesium$5['Math'][_0xab991(0x17c)](_0x1aeaf6)};const _0x411b99=_0x6cd57a['south'],_0x382160=_0x6cd57a['north'],_0x5e1468=_0x6cd57a[_0xab991(0x133)],_0x2a6145=_0x5e1468>Cesium$5['Math']['PI']/0xc?_0x5e1468/0x2:0x0;let _0x3ec348=Cesium$5['Math']['clampToLatitudeRange'](_0x411b99-_0x2a6145),_0x4724e6=Cesium$5['Math'][_0xab991(0x126)](_0x382160+_0x2a6145);return _0x3ec348<-Cesium$5[_0xab991(0x193)]['PI_OVER_THREE']&&(_0x3ec348=-Cesium$5['Math']['PI_OVER_TWO']),_0x4724e6>Cesium$5[_0xab991(0x193)]['PI_OVER_THREE']&&(_0x4724e6=Cesium$5['Math']['PI_OVER_TWO']),_0x4a121c[_0xab991(0x101)]={'min':Cesium$5['Math']['toDegrees'](_0x3ec348),'max':Cesium$5[_0xab991(0x193)]['toDegrees'](_0x4724e6)},_0x4a121c;};return{'getFullscreenQuad':_0x3599ec,'createTexture':_0x5dcb77,'createFramebuffer':_0x4356fb,'createRawRenderState':_0x557468,'viewRectangleToLonLatRange':_0x418160};}());var segmentDraw_vert='in\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20postProcessingSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0aout\x20float\x20speedNormalization;\x0a\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x0a\x20\x20\x20\x20float\x20e2\x20=\x206.69437999014e-3;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20\x20\x20float\x20h\x20=\x20particleHeight;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x0a\x20\x20\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0);\x0a\x20\x20\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calcProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0,\x20360.0)\x20-\x20180.0;\x0a\x20\x20\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0);\x0a\x20\x20\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calcOffset(vec4\x20currentProjectedCoordinate,\x20vec4\x20nextProjectedCoordinate,\x20float\x20offsetSign)\x20{\x0a\x20\x20\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0);\x0a\x20\x20\x20\x20vec2\x20currentXY\x20=\x20(currentProjectedCoordinate.xy\x20/\x20currentProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x20\x20\x20\x20vec2\x20nextXY\x20=\x20(nextProjectedCoordinate.xy\x20/\x20nextProjectedCoordinate.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0;\x0a\x20\x20\x20\x20vec2\x20direction\x20=\x20normalize(nextXY\x20-\x20currentXY);\x0a\x20\x20\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0,\x200.0);\x0a\x20\x20\x20\x20return\x20offset;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex);\x0a\x0a\x20\x20\x20\x20vec4\x20currentProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20vec4\x20nextProjectedCoordinate\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20if\x20(nextPosition.w\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20currentProjectedCoordinate\x20=\x20calcProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextProjectedCoordinate\x20=\x20calcProjectedCoordinate(nextPosition.xyz);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20float\x20pointToUse\x20=\x20normal.x;\x20//\x20-1\x20is\x20currentProjectedCoordinate\x20and\x20+1\x20is\x20nextProjectedCoordinate\x0a\x20\x20\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x0a\x20\x20\x20\x20vec4\x20offset\x20=\x20pixelSize\x20*\x20calcOffset(currentProjectedCoordinate,\x20nextProjectedCoordinate,\x20offsetSign);\x0a\x20\x20\x20\x20if\x20(pointToUse\x20<\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20currentProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_Position\x20=\x20nextProjectedCoordinate\x20+\x20offset;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20speedNormalization\x20=\x20texture(postProcessingSpeed,\x20particleIndex).a;\x0a}\x0a',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0ain\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20out_FragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}\x0a',fullscreen_vert=_0x1f0c71(0x179),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(_0x4024a3,_0x26237e,_0x322952,_0x495f96,_0x4b0dc0){this['createRenderingTextures'](_0x4024a3,_0x26237e,_0x322952['colors']),this['createRenderingFramebuffers'](_0x4024a3),this['createRenderingPrimitives'](_0x4024a3,_0x322952,_0x495f96,_0x4b0dc0);}[_0x1f0c71(0x135)](_0x1eb228,_0x2eea58,_0x48c145){const _0x5b5cde=_0x1f0c71,_0x4c43a1={'context':_0x1eb228,'width':_0x1eb228['drawingBufferWidth'],'height':_0x1eb228['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x5b5cde(0xea)]['RGBA'],'pixelDatatype':Cesium$4[_0x5b5cde(0xd8)]['UNSIGNED_BYTE']},_0x4c8c00={'context':_0x1eb228,'width':_0x1eb228[_0x5b5cde(0x10b)],'height':_0x1eb228['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat'][_0x5b5cde(0xe3)],'pixelDatatype':Cesium$4['PixelDatatype'][_0x5b5cde(0x17a)]},_0x5b9ca3=_0x48c145['length'],_0x24280e=new Float32Array(_0x5b9ca3*0x3);for(let _0xa923d8=0x0;_0xa923d8<_0x5b9ca3;_0xa923d8++){const _0x356e44=Cesium$4['Color'][_0x5b5cde(0xce)](_0x48c145[_0xa923d8]);_0x24280e[0x3*_0xa923d8]=_0x356e44[_0x5b5cde(0x14b)],_0x24280e[0x3*_0xa923d8+0x1]=_0x356e44['green'],_0x24280e[0x3*_0xa923d8+0x2]=_0x356e44['blue'];}const _0x163ff0={'context':_0x1eb228,'width':_0x5b9ca3,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4[_0x5b5cde(0xd8)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter'][_0x5b5cde(0x109)]})};this[_0x5b5cde(0xd0)]={'segmentsColor':Util[_0x5b5cde(0x11b)](_0x4c43a1),'segmentsDepth':Util['createTexture'](_0x4c8c00),'currentTrailsColor':Util[_0x5b5cde(0x11b)](_0x4c43a1),'currentTrailsDepth':Util['createTexture'](_0x4c8c00),'nextTrailsColor':Util['createTexture'](_0x4c43a1),'nextTrailsDepth':Util[_0x5b5cde(0x11b)](_0x4c8c00),'colorTable':Util['createTexture'](_0x163ff0,_0x24280e)};}[_0x1f0c71(0x16b)](_0x438651){const _0x4bc40d=_0x1f0c71;this['framebuffers']={'segments':Util['createFramebuffer'](_0x438651,this['textures']['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x438651,this['textures']['currentTrailsColor'],this['textures']['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x438651,this['textures'][_0x4bc40d(0x11c)],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x5583e5){const _0x5bbf8d=_0x1f0c71,_0x5dd229=0x4;let _0x318432=[];for(let _0xafcfa8=0x0;_0xafcfa8<_0x5583e5['particlesTextureSize'];_0xafcfa8++){for(let _0x3fc4fd=0x0;_0x3fc4fd<_0x5583e5[_0x5bbf8d(0xf4)];_0x3fc4fd++){for(let _0x16fece=0x0;_0x16fece<_0x5dd229;_0x16fece++){_0x318432['push'](_0xafcfa8/_0x5583e5['particlesTextureSize']),_0x318432['push'](_0x3fc4fd/_0x5583e5['particlesTextureSize']);}}}_0x318432=new Float32Array(_0x318432);let _0xb1666e=[];const _0x4308f0=[-0x1,0x1],_0x15c611=[-0x1,0x1];for(let _0x44dd43=0x0;_0x44dd43<_0x5583e5['maxParticles'];_0x44dd43++){for(let _0x4c67a3=0x0;_0x4c67a3<_0x5dd229/0x2;_0x4c67a3++){for(let _0x4c8e99=0x0;_0x4c8e99<_0x5dd229/0x2;_0x4c8e99++){_0xb1666e['push'](_0x4308f0[_0x4c67a3]),_0xb1666e[_0x5bbf8d(0x110)](_0x15c611[_0x4c8e99]),_0xb1666e['push'](0x0);}}}_0xb1666e=new Float32Array(_0xb1666e);const _0x2f60eb=0x6*_0x5583e5[_0x5bbf8d(0xf2)],_0x1db0a6=new Uint32Array(_0x2f60eb);for(let _0x65fbc9=0x0,_0x3d4646=0x0,_0x15f076=0x0;_0x65fbc9<_0x5583e5[_0x5bbf8d(0xf2)];_0x65fbc9++){_0x1db0a6[_0x3d4646++]=_0x15f076+0x0,_0x1db0a6[_0x3d4646++]=_0x15f076+0x1,_0x1db0a6[_0x3d4646++]=_0x15f076+0x2,_0x1db0a6[_0x3d4646++]=_0x15f076+0x2,_0x1db0a6[_0x3d4646++]=_0x15f076+0x1,_0x1db0a6[_0x3d4646++]=_0x15f076+0x3,_0x15f076+=0x4;}const _0x573f86=new Cesium$4['Geometry']({'attributes':new Cesium$4[(_0x5bbf8d(0x145))]({'st':new Cesium$4[(_0x5bbf8d(0x1b8))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x318432}),'normal':new Cesium$4[(_0x5bbf8d(0x1b8))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0xb1666e})}),'indices':_0x1db0a6});return _0x573f86;}['createRenderingPrimitives'](_0x30d8f0,_0x4624d5,_0x131e49,_0x27f364){const _0x1492e7=_0x1f0c71,_0x1d9263=this;this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x4624d5),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){const _0x3266f5=_0x5921;return _0x27f364['particlesTextures'][_0x3266f5(0x149)];},'postProcessingPosition':function(){const _0x3b1afc=_0x5921;return _0x27f364['particlesTextures'][_0x3b1afc(0xdd)];},'postProcessingSpeed':function(){return _0x27f364['particlesTextures']['postProcessingSpeed'];},'colorTable':function(){return _0x1d9263['textures']['colorTable'];},'aspect':function(){const _0x5a2ad5=_0x5921;return _0x30d8f0['drawingBufferWidth']/_0x30d8f0[_0x5a2ad5(0x155)];},'pixelSize':function(){return _0x131e49['pixelSize'];},'lineWidth':function(){return _0x4624d5['lineWidth'];},'particleHeight':function(){const _0x1ac94e=_0x5921;return _0x4624d5[_0x1ac94e(0x1b0)];}},'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[_0x1492e7(0x100)]['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':_0x1492e7(0x154),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x1492e7(0x17d)]['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){const _0x2922aa=_0x1492e7;return _0x1d9263[_0x2922aa(0xd0)][_0x2922aa(0xc8)];},'segmentsDepthTexture':function(){return _0x1d9263['textures']['segmentsDepth'];},'currentTrailsColor':function(){const _0x49b9ca=_0x1492e7;return _0x1d9263[_0x49b9ca(0x100)]['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){return _0x1d9263['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0x4624d5['fadeOpacity'];}},'vertexShaderSource':new Cesium$4[(_0x1492e7(0x114))]({'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[_0x1492e7(0x16d)]['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x1492e7(0x15e)],'autoClear':!![],'preExecute':function(){const _0x212bb5=_0x1492e7,_0xbb5b91=_0x1d9263['framebuffers']['currentTrails'];_0x1d9263['framebuffers']['currentTrails']=_0x1d9263[_0x212bb5(0x100)][_0x212bb5(0x15e)],_0x1d9263[_0x212bb5(0x100)]['nextTrails']=_0xbb5b91,_0x1d9263[_0x212bb5(0xf3)]['trails'][_0x212bb5(0xcb)]['framebuffer']=_0x1d9263['framebuffers']['nextTrails'],_0x1d9263['primitives']['trails']['clearCommand']['framebuffer']=_0x1d9263['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0x1492e7(0x154),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType'][_0x1492e7(0x1b4)],'uniformMap':{'trailsColorTexture':function(){return _0x1d9263['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x31a1ee=_0x1492e7;return _0x1d9263[_0x31a1ee(0x100)]['nextTrails'][_0x31a1ee(0x162)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0x1492e7(0x114))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag=_0x1f0c71(0x167),updateSpeed_frag=_0x1f0c71(0x111),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='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';function _0x5921(_0x3dfa12,_0x4ea523){const _0x4f2422=_0x4f24();return _0x5921=function(_0x59212b,_0x175a0f){_0x59212b=_0x59212b-0xc3;let _0x1d4b76=_0x4f2422[_0x59212b];return _0x1d4b76;},_0x5921(_0x3dfa12,_0x4ea523);}const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0xd1487c,_0xdb652d,_0x415e6f,_0xd0f61d){const _0xfc86a8=_0x1f0c71;this[_0xfc86a8(0x12f)]=_0xdb652d,this['createWindTextures'](_0xd1487c,_0xdb652d),this['createParticlesTextures'](_0xd1487c,_0x415e6f,_0xd0f61d),this[_0xfc86a8(0x17e)](_0xdb652d,_0x415e6f,_0xd0f61d);}['createWindTextures'](_0x2730cf,_0x15f373){const _0x118f36=_0x1f0c71,_0x4d9d81={'context':_0x2730cf,'width':_0x15f373['dimensions']['lon'],'height':_0x15f373['dimensions'][_0x118f36(0x101)]*(_0x15f373[_0x118f36(0x1aa)][_0x118f36(0x106)]||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3[_0x118f36(0xd8)]['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x118f36(0xeb))]({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x118f36(0x1bd)]})};this['windTextures']={'U':Util[_0x118f36(0x11b)](_0x4d9d81,_0x15f373['U'][_0x118f36(0xe9)]),'V':Util['createTexture'](_0x4d9d81,_0x15f373['V'][_0x118f36(0xe9)])};}['createParticlesTextures'](_0x21c6c4,_0x4548ea,_0x45cb25){const _0x3514a8=_0x1f0c71,_0x14b675={'context':_0x21c6c4,'width':_0x4548ea[_0x3514a8(0xf4)],'height':_0x4548ea['particlesTextureSize'],'pixelFormat':Cesium$3[_0x3514a8(0xea)][_0x3514a8(0x1bb)],'pixelDatatype':Cesium$3[_0x3514a8(0xd8)]['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x3514a8(0x1bd)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x3514a8(0x1bd)]})},_0x4cc51e=this['randomizeParticles'](_0x4548ea['maxParticles'],_0x45cb25),_0x153b61=new Float32Array(0x4*_0x4548ea['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util[_0x3514a8(0x11b)](_0x14b675),'currentParticlesPosition':Util['createTexture'](_0x14b675,_0x4cc51e),'nextParticlesPosition':Util['createTexture'](_0x14b675,_0x4cc51e),'currentParticlesSpeed':Util['createTexture'](_0x14b675,_0x153b61),'nextParticlesSpeed':Util['createTexture'](_0x14b675,_0x153b61),'postProcessingPosition':Util['createTexture'](_0x14b675,_0x4cc51e),'postProcessingSpeed':Util['createTexture'](_0x14b675,_0x153b61)};}['randomizeParticles'](_0x185836,_0xf8c95e){const _0x54c831=_0x1f0c71,_0x17d897=new Float32Array(0x4*_0x185836);for(let _0x2b4645=0x0;_0x2b4645<_0x185836;_0x2b4645++){_0x17d897[0x4*_0x2b4645]=Cesium$3['Math']['randomBetween'](_0xf8c95e['lonRange']['x'],_0xf8c95e['lonRange']['y']),_0x17d897[0x4*_0x2b4645+0x1]=Cesium$3['Math']['randomBetween'](_0xf8c95e[_0x54c831(0x194)]['x'],_0xf8c95e['latRange']['y']),_0x17d897[0x4*_0x2b4645+0x2]=Cesium$3['Math']['randomBetween'](this['data']['lev']['min'],this['data'][_0x54c831(0x106)]['max']),_0x17d897[0x4*_0x2b4645+0x3]=0x0;}return _0x17d897;}['destroyParticlesTextures'](){Object['keys'](this['particlesTextures'])['forEach'](_0x42c57d=>{const _0x228950=_0x5921;this[_0x228950(0x169)][_0x42c57d]['destroy']();});}['createComputingPrimitives'](_0x467655,_0x8799d2,_0x1ea4c9){const _0x483168=_0x1f0c71,_0x397ea1=new Cesium$3['Cartesian3'](_0x467655['dimensions']['lon'],_0x467655['dimensions']['lat'],_0x467655['dimensions'][_0x483168(0x106)]),_0x238339=new Cesium$3['Cartesian3'](_0x467655['lon'][_0x483168(0x195)],_0x467655['lat']['min'],_0x467655['lev']['min']),_0x40f983=new Cesium$3['Cartesian3'](_0x467655[_0x483168(0x184)][_0x483168(0x128)],_0x467655[_0x483168(0x101)]['max'],_0x467655['lev']['max']),_0x76f0c0=new Cesium$3[(_0x483168(0xef))]((_0x40f983['x']-_0x238339['x'])/(_0x397ea1['x']-0x1),(_0x40f983['y']-_0x238339['y'])/(_0x397ea1['y']-0x1),_0x397ea1['z']>0x1?(_0x40f983['z']-_0x238339['z'])/(_0x397ea1['z']-0x1):0x1),_0x3f75a5=new Cesium$3['Cartesian2'](_0x467655['U']['min'],_0x467655['U']['max']),_0x4c7894=new Cesium$3['Cartesian2'](_0x467655['V']['min'],_0x467655['V'][_0x483168(0x128)]),_0xfaaac4=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':_0x483168(0x127),'uniformMap':{'U':function(){const _0x14eedc=_0x483168;return _0xfaaac4[_0x14eedc(0xc5)]['U'];},'V':function(){return _0xfaaac4['windTextures']['V'];},'currentParticlesPosition':function(){return _0xfaaac4['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x397ea1;},'minimum':function(){return _0x238339;},'maximum':function(){return _0x40f983;},'interval':function(){return _0x76f0c0;}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[getWind_frag]}),'outputTexture':this[_0x483168(0x169)][_0x483168(0x18b)],'preExecute':function(){_0xfaaac4['primitives']['getWind']['commandToExecute']['outputTexture']=_0xfaaac4['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){const _0x26a701=_0x483168;return _0xfaaac4['particlesTextures'][_0x26a701(0x18e)];},'particlesWind':function(){return _0xfaaac4['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x3f75a5;},'vSpeedRange':function(){return _0x4c7894;},'pixelSize':function(){return _0x1ea4c9['pixelSize'];},'speedFactor':function(){return _0x8799d2['speedFactor'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updateSpeed_frag]}),'outputTexture':this[_0x483168(0x169)]['nextParticlesSpeed'],'preExecute':function(){const _0x31f4b7=_0x483168,_0x21e789=_0xfaaac4['particlesTextures']['currentParticlesSpeed'];_0xfaaac4['particlesTextures']['currentParticlesSpeed']=_0xfaaac4['particlesTextures']['postProcessingSpeed'],_0xfaaac4['particlesTextures']['postProcessingSpeed']=_0x21e789,_0xfaaac4[_0x31f4b7(0xf3)]['updateSpeed']['commandToExecute'][_0x31f4b7(0x1a6)]=_0xfaaac4['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x4e45fd=_0x483168;return _0xfaaac4[_0x4e45fd(0x169)][_0x4e45fd(0x149)];},'currentParticlesSpeed':function(){const _0x56cc81=_0x483168;return _0xfaaac4['particlesTextures'][_0x56cc81(0x18e)];}},'fragmentShaderSource':new Cesium$3[(_0x483168(0x114))]({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures'][_0x483168(0x13e)],'preExecute':function(){const _0x5c086e=_0x483168,_0x443e15=_0xfaaac4[_0x5c086e(0x169)]['currentParticlesPosition'];_0xfaaac4['particlesTextures'][_0x5c086e(0x149)]=_0xfaaac4[_0x5c086e(0x169)][_0x5c086e(0xdd)],_0xfaaac4[_0x5c086e(0x169)]['postProcessingPosition']=_0x443e15,_0xfaaac4['primitives'][_0x5c086e(0x103)][_0x5c086e(0xcb)]['outputTexture']=_0xfaaac4[_0x5c086e(0x169)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){const _0x15f78a=_0x483168;return _0xfaaac4[_0x15f78a(0x169)]['nextParticlesPosition'];},'nextParticlesSpeed':function(){return _0xfaaac4['particlesTextures']['nextParticlesSpeed'];},'lonRange':function(){return _0x1ea4c9['lonRange'];},'latRange':function(){return _0x1ea4c9['latRange'];},'randomCoefficient':function(){const _0x2c4e90=Math['random']();return _0x2c4e90;},'dropRate':function(){return _0x8799d2['dropRate'];},'dropRateBump':function(){return _0x8799d2['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures'][_0x483168(0xdd)],'preExecute':function(){const _0x12734e=_0x483168;_0xfaaac4[_0x12734e(0xf3)]['postProcessingPosition']['commandToExecute'][_0x12734e(0x1a6)]=_0xfaaac4['particlesTextures'][_0x12734e(0xdd)];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x483168(0x127),'uniformMap':{'postProcessingPosition':function(){const _0x54522d=_0x483168;return _0xfaaac4[_0x54522d(0x169)]['postProcessingPosition'];},'nextParticlesSpeed':function(){const _0x6fbe7e=_0x483168;return _0xfaaac4[_0x6fbe7e(0x169)]['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x483168(0x183)],'preExecute':function(){const _0x218e4b=_0x483168;_0xfaaac4['primitives']['postProcessingSpeed'][_0x218e4b(0xcb)][_0x218e4b(0x1a6)]=_0xfaaac4['particlesTextures'][_0x218e4b(0x183)];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0xf35fcd,_0x4392bf,_0xa1aa07,_0xbd005e){const _0xbdd30f=_0x1f0c71;this[_0xbdd30f(0x1a4)]=_0xf35fcd,_0x4392bf={..._0x4392bf},_0x4392bf[_0xbdd30f(0x168)]&&_0x4392bf['vdata']&&(_0x4392bf['dimensions']={},_0x4392bf['dimensions']['lon']=_0x4392bf['cols'],_0x4392bf['dimensions']['lat']=_0x4392bf['rows'],_0x4392bf['dimensions']['lev']=_0x4392bf[_0xbdd30f(0x106)]||0x1,_0x4392bf[_0xbdd30f(0x184)]={},_0x4392bf[_0xbdd30f(0x184)][_0xbdd30f(0x195)]=_0x4392bf['xmin'],_0x4392bf['lon']['max']=_0x4392bf['xmax'],_0x4392bf['lat']={},_0x4392bf[_0xbdd30f(0x101)]['min']=_0x4392bf['ymin'],_0x4392bf['lat']['max']=_0x4392bf['ymax'],_0x4392bf['lev']={},_0x4392bf['lev'][_0xbdd30f(0x195)]=_0x4392bf[_0xbdd30f(0x1bc)]??0x1,_0x4392bf['lev']['max']=_0x4392bf['levmax']??0x1,_0x4392bf['U']={},_0x4392bf['U']['array']=new Float32Array(_0x4392bf[_0xbdd30f(0x168)]),_0x4392bf['U']['min']=_0x4392bf['umin']??Math['min'](..._0x4392bf['udata']),_0x4392bf['U'][_0xbdd30f(0x128)]=_0x4392bf['umax']??Math['max'](..._0x4392bf['udata']),_0x4392bf['V']={},_0x4392bf['V']['array']=new Float32Array(_0x4392bf['vdata']),_0x4392bf['V'][_0xbdd30f(0x195)]=_0x4392bf['vmin']??Math['min'](..._0x4392bf['vdata']),_0x4392bf['V'][_0xbdd30f(0x128)]=_0x4392bf['vmax']??Math[_0xbdd30f(0x128)](..._0x4392bf[_0xbdd30f(0x119)])),this['data']=_0x4392bf,this['options']=_0xa1aa07,this[_0xbdd30f(0x142)]=_0xbd005e,this[_0xbdd30f(0x1a9)]=new ParticlesComputing(this['context'],this['data'],this['options'],this[_0xbdd30f(0x142)]),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0xbdd30f(0x12f)],this['options'],this[_0xbdd30f(0x142)],this['particlesComputing']);}['canvasResize'](_0x2da627){const _0x45ec38=_0x1f0c71;this['particlesComputing']['destroyParticlesTextures'](),Object[_0x45ec38(0x134)](this['particlesComputing'][_0x45ec38(0xc5)])[_0x45ec38(0x138)](_0x52326c=>{this['particlesComputing']['windTextures'][_0x52326c]['destroy']();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object[_0x45ec38(0x134)](this['particlesRendering']['framebuffers'])['forEach'](_0x5512ce=>{this['particlesRendering']['framebuffers'][_0x5512ce]['destroy']();}),this['context']=_0x2da627,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this[_0x45ec38(0x142)]),this[_0x45ec38(0xe7)]=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}[_0x1f0c71(0x12d)](){const _0x494e06=_0x1f0c71,_0x80aebb=new Cesium$2['ClearCommand']({'color':new Cesium$2[(_0x494e06(0x18d))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass'][_0x494e06(0xf6)]});Object['keys'](this['particlesRendering'][_0x494e06(0x100)])['forEach'](_0x55a9f5=>{_0x80aebb['framebuffer']=this['particlesRendering']['framebuffers'][_0x55a9f5],_0x80aebb['execute'](this['context']);});}['refreshParticles'](_0x1ab6b9){const _0x5483cc=_0x1f0c71;this['clearFramebuffers'](),this['particlesComputing'][_0x5483cc(0x153)](),this['particlesComputing'][_0x5483cc(0x10f)](this['context'],this[_0x5483cc(0x187)],this['viewerParameters']);if(_0x1ab6b9){var _0xdbad5e;const _0x5024c9=this['particlesRendering'][_0x5483cc(0xfa)](this['options']);this['particlesRendering'][_0x5483cc(0xf3)]['segments']['geometry']=_0x5024c9;const _0x5b3545=Cesium$2['VertexArray']['fromGeometry']({'context':this['context'],'geometry':_0x5024c9,'attributeLocations':this['particlesRendering']['primitives']['segments']['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0xdbad5e=this[_0x5483cc(0xe7)][_0x5483cc(0xf3)])!==null&&_0xdbad5e!==void 0x0&&(_0xdbad5e=_0xdbad5e['segments'])!==null&&_0xdbad5e!==void 0x0&&_0xdbad5e[_0x5483cc(0xcb)]&&(this['particlesRendering']['primitives'][_0x5483cc(0xf7)]['commandToExecute']['vertexArray']=_0x5b3545);}}[_0x1f0c71(0x176)](_0x5935df){let _0x24975d=![];this['options']['maxParticles']!==_0x5935df['maxParticles']&&(_0x24975d=!![]),Object['keys'](_0x5935df)['forEach'](_0x5658b3=>{this['options'][_0x5658b3]=_0x5935df[_0x5658b3];}),this['refreshParticles'](_0x24975d);}[_0x1f0c71(0x17f)](_0x30cee3){const _0x35292c=_0x1f0c71;Object[_0x35292c(0x134)](_0x30cee3)['forEach'](_0x21d678=>{this['viewerParameters'][_0x21d678]=_0x30cee3[_0x21d678];}),this['refreshParticles'](![]);}[_0x1f0c71(0x175)](){const _0x67251d=_0x1f0c71;clearTimeout(this['canrefresh']),this[_0x67251d(0x1a9)][_0x67251d(0x153)](),Object['keys'](this['particlesComputing']['windTextures'])[_0x67251d(0x138)](_0x25f11c=>{const _0x765678=_0x67251d;this['particlesComputing'][_0x765678(0xc5)][_0x25f11c][_0x765678(0x175)]();}),this[_0x67251d(0xe7)]['textures'][_0x67251d(0x16a)][_0x67251d(0x175)](),Object['keys'](this[_0x67251d(0xe7)]['framebuffers'])['forEach'](_0x15aee4=>{const _0x4e4010=_0x67251d;this['particlesRendering'][_0x4e4010(0x100)][_0x15aee4]['destroy']();});for(const _0x1a994c in this){delete this[_0x1a994c];}}}const Cesium$1=mars3d__namespace[_0x1f0c71(0x146)],BaseLayer$1=mars3d__namespace[_0x1f0c71(0x18f)][_0x1f0c71(0xd6)],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(_0x2c824d={}){const _0x226e92=_0x1f0c71;_0x2c824d={...DEF_OPTIONS,..._0x2c824d},super(_0x2c824d),this[_0x226e92(0x16f)](_0x2c824d);}get['layer'](){return this['primitives'];}get['data'](){return this['_data'];}set['data'](_0x56ed0f){this['setData'](_0x56ed0f);}get[_0x1f0c71(0x172)](){const _0x38f413=_0x1f0c71;return this['options'][_0x38f413(0x172)];}set['colors'](_0xd8fb11){const _0x294b02=_0x1f0c71;this[_0x294b02(0x187)]['colors']=_0xd8fb11,this['particleSystem']&&this[_0x294b02(0x117)][_0x294b02(0x176)]({'colors':_0xd8fb11}),this['resize']();}['_mountedHook'](){}['_addedHook'](){const _0x58cd6a=_0x1f0c71;this['scene']=this['_map']['scene'],this[_0x58cd6a(0x129)]=this[_0x58cd6a(0x1ac)]['camera'],this['primitives']=new Cesium$1[(_0x58cd6a(0x1b5))](),this['_map']['scene']['primitives']['add'](this['primitives']),this[_0x58cd6a(0x142)]={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this[_0x58cd6a(0xd7)]=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this[_0x58cd6a(0xe2)](),window[_0x58cd6a(0x159)]('resize',this['resize'][_0x58cd6a(0x181)](this),![]),this[_0x58cd6a(0x19e)]=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace[_0x58cd6a(0x132)][_0x58cd6a(0xe5)],this[_0x58cd6a(0x140)],this),this['_map']['on'](mars3d__namespace[_0x58cd6a(0x132)]['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x58cd6a(0x132)][_0x58cd6a(0x19a)],this['_onMouseUpEvent'],this),this[_0x58cd6a(0x1ac)]['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x58cd6a(0x165)],this),this['_data']&&this['setData'](this['_data']);}[_0x1f0c71(0xf9)](){const _0x21c77d=_0x1f0c71;window['removeEventListener'](_0x21c77d(0x12b),this['resize']),this[_0x21c77d(0x1ac)]['off'](mars3d__namespace[_0x21c77d(0x132)][_0x21c77d(0xc7)],this[_0x21c77d(0x15b)],this),this['_map']['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this[_0x21c77d(0xcf)],this),this['_map']['off'](mars3d__namespace[_0x21c77d(0x132)]['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this['_map']['scene']['primitives']['remove'](this['primitives']);}['resize'](){const _0x3bc0a4=_0x1f0c71;if(!this['show']||!this[_0x3bc0a4(0x117)])return;this[_0x3bc0a4(0xf3)]['show']=![],this['primitives']['removeAll'](),this['_map']['once'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this);}['_onMap_preRenderEvent'](_0xdb5a68){const _0x4a00c1=_0x1f0c71;this[_0x4a00c1(0x117)][_0x4a00c1(0x178)](this[_0x4a00c1(0x188)][_0x4a00c1(0x1a4)]),this[_0x4a00c1(0x15a)](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x4fc55){const _0x4f5f41=_0x1f0c71;clearTimeout(this['refreshTimer']);if(!this['show']||!this[_0x4f5f41(0x117)])return;this['primitives']['show']=![],this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}[_0x1f0c71(0xc4)](_0x3b45c1){const _0x193cdc=_0x1f0c71;this[_0x193cdc(0x19e)]=!![];}[_0x1f0c71(0x165)](_0x3669b7){const _0x392e1d=_0x1f0c71;if(!this['show']||!this['particleSystem'])return;this[_0x392e1d(0x19e)]&&(this['primitives'][_0x392e1d(0x1a3)]=![],this['mouse_move']=!![]);}[_0x1f0c71(0xcf)](_0x315b0a){const _0x4197e4=_0x1f0c71;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this[_0x4197e4(0xf3)]['show']=!![],this[_0x4197e4(0x19e)]=![],this['mouse_move']=![];}[_0x1f0c71(0xee)](){const _0x3da512=_0x1f0c71;if(!this['_map']||!this[_0x3da512(0x1a3)])return;this['updateViewerParameters'](),this['particleSystem'][_0x3da512(0x17f)](this['viewerParameters']),this[_0x3da512(0xf3)][_0x3da512(0x1a3)]=!![];}['setData'](_0x2d19a7){const _0x2a15af=_0x1f0c71;this[_0x2a15af(0x113)]=_0x2d19a7,this['particleSystem']&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this['scene']['context'],_0x2d19a7,this['getOptions'](),this[_0x2a15af(0x142)]),this['addPrimitives']();}[_0x1f0c71(0x16f)](_0x4d1524,_0x258042){const _0x3b7059=_0x1f0c71;if(_0x4d1524)for(const _0x596c4b in _0x4d1524){this[_0x596c4b]=_0x4d1524[_0x596c4b];}this['particleSystem']&&this[_0x3b7059(0x117)][_0x3b7059(0x176)](this['getOptions']());}[_0x1f0c71(0x166)](){const _0x116cff=_0x1f0c71,_0x27cbc6=Math['ceil'](Math[_0x116cff(0xec)](this['particlesNumber']));return this['particlesNumber']=_0x27cbc6*_0x27cbc6,{'particlesTextureSize':_0x27cbc6,'maxParticles':this[_0x116cff(0x151)],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this['colors']};}['addPrimitives'](){const _0x30629c=_0x1f0c71;this[_0x30629c(0xf3)]['add'](this['particleSystem']['particlesComputing']['primitives'][_0x30629c(0x11e)]),this['primitives']['add'](this['particleSystem']['particlesComputing'][_0x30629c(0xf3)]['updateSpeed']),this['primitives'][_0x30629c(0x12c)](this[_0x30629c(0x117)][_0x30629c(0x1a9)]['primitives']['updatePosition']),this[_0x30629c(0xf3)][_0x30629c(0x12c)](this[_0x30629c(0x117)][_0x30629c(0x1a9)]['primitives'][_0x30629c(0xdd)]),this['primitives'][_0x30629c(0x12c)](this['particleSystem']['particlesComputing']['primitives']['postProcessingSpeed']),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['segments']),this['primitives']['add'](this['particleSystem']['particlesRendering'][_0x30629c(0xf3)][_0x30629c(0x143)]),this[_0x30629c(0xf3)]['add'](this['particleSystem']['particlesRendering']['primitives']['screen']);}['updateViewerParameters'](){const _0x4c2e8b=_0x1f0c71;let _0x315868=this['camera']['computeViewRectangle'](this['scene']['globe']['ellipsoid']);if(!_0x315868){const _0x4eb3a1=this['_map']['getExtent']();_0x315868=Cesium$1['Rectangle']['fromDegrees'](_0x4eb3a1['xmin'],_0x4eb3a1[_0x4c2e8b(0xe0)],_0x4eb3a1[_0x4c2e8b(0x177)],_0x4eb3a1['ymax']);}const _0x36f60d=Util[_0x4c2e8b(0x1a2)](_0x315868);this[_0x4c2e8b(0x142)]['lonRange']['x']=_0x36f60d[_0x4c2e8b(0x184)]['min'],this['viewerParameters']['lonRange']['y']=_0x36f60d['lon']['max'],this['viewerParameters']['latRange']['x']=_0x36f60d[_0x4c2e8b(0x101)]['min'],this[_0x4c2e8b(0x142)]['latRange']['y']=_0x36f60d['lat']['max'];const _0x314105=this[_0x4c2e8b(0x129)]['getPixelSize'](this['globeBoundingSphere'],this[_0x4c2e8b(0x188)]['drawingBufferWidth'],this[_0x4c2e8b(0x188)][_0x4c2e8b(0x155)]);_0x314105>0x0&&(this['viewerParameters']['pixelSize']=_0x314105);}}mars3d__namespace['LayerUtil']['register'](_0x1f0c71(0x12a),WindLayer),mars3d__namespace['layer'][_0x1f0c71(0x1be)]=WindLayer;class CanvasParticle{constructor(){const _0x9c6b9e=_0x1f0c71;this[_0x9c6b9e(0xfc)]=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this['age']=null,this[_0x9c6b9e(0x16c)]=null;}[_0x1f0c71(0x175)](){for(const _0x2902a3 in this){delete this[_0x2902a3];}}}class CanvasWindField{constructor(_0x2323de){const _0x1d213f=_0x1f0c71;this[_0x1d213f(0x176)](_0x2323de);}get['speedRate'](){return this['_speedRate'];}set['speedRate'](_0x9e2a97){const _0x2027dc=_0x1f0c71;this['_speedRate']=(0x64-(_0x9e2a97>0x63?0x63:_0x9e2a97))*0x64,this['_calc_speedRate']=[(this['xmax']-this[_0x2027dc(0x1b6)])/this['_speedRate'],(this['ymax']-this['ymin'])/this[_0x2027dc(0x105)]];}get['maxAge'](){return this['_maxAge'];}set[_0x1f0c71(0x125)](_0x1c43ef){this['_maxAge']=_0x1c43ef;}['setOptions'](_0x233f8f){const _0x1b7d5b=_0x1f0c71;this[_0x1b7d5b(0x187)]=_0x233f8f,this[_0x1b7d5b(0x125)]=_0x233f8f[_0x1b7d5b(0x125)]||0x78,this['speedRate']=_0x233f8f['speedRate']||0x32,this[_0x1b7d5b(0xd3)]=[];const _0x37b0a4=_0x233f8f['particlesNumber']||0x1000;for(let _0x4b0374=0x0;_0x4b0374<_0x37b0a4;_0x4b0374++){const _0x1f8068=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x1f8068);}}['setDate'](_0x1effe9){const _0x458b81=_0x1f0c71;this[_0x458b81(0xdc)]=_0x1effe9['rows'],this['cols']=_0x1effe9[_0x458b81(0x171)],this['xmin']=_0x1effe9[_0x458b81(0x1b6)],this['xmax']=_0x1effe9[_0x458b81(0x177)],this[_0x458b81(0xe0)]=_0x1effe9['ymin'],this[_0x458b81(0x11d)]=_0x1effe9['ymax'],this['grid']=[];const _0x37f838=_0x1effe9[_0x458b81(0x168)],_0x91bad4=_0x1effe9[_0x458b81(0x119)];let _0x4bbb23=![];_0x37f838['length']===this[_0x458b81(0xdc)]&&_0x37f838[0x0]['length']===this[_0x458b81(0x171)]&&(_0x4bbb23=!![]);let _0x449663=0x0,_0x571e31=null,_0x489a97=null;for(let _0x2f09a6=0x0;_0x2f09a6<this['rows'];_0x2f09a6++){_0x571e31=[];for(let _0x3dcb5f=0x0;_0x3dcb5f<this['cols'];_0x3dcb5f++,_0x449663++){_0x4bbb23?_0x489a97=this['_calcUV'](_0x37f838[_0x2f09a6][_0x3dcb5f],_0x91bad4[_0x2f09a6][_0x3dcb5f]):_0x489a97=this[_0x458b81(0x136)](_0x37f838[_0x449663],_0x91bad4[_0x449663]),_0x571e31['push'](_0x489a97);}this['grid']['push'](_0x571e31);}this['options'][_0x458b81(0x1a7)]&&this['grid']['reverse']();}['clear'](){const _0x44cec7=_0x1f0c71;delete this['rows'],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this['ymax'],delete this[_0x44cec7(0x14f)],delete this['particles'];}['toGridXY'](_0x215571,_0x14b07c){const _0x453311=_0x1f0c71,_0x46885b=(_0x215571-this[_0x453311(0x1b6)])/(this['xmax']-this[_0x453311(0x1b6)])*(this[_0x453311(0x171)]-0x1),_0x587e94=(this['ymax']-_0x14b07c)/(this['ymax']-this[_0x453311(0xe0)])*(this['rows']-0x1);return[_0x46885b,_0x587e94];}[_0x1f0c71(0xd4)](_0x35da86,_0x4c8215){const _0x574690=_0x1f0c71;if(_0x35da86<0x0||_0x35da86>=this['cols']||_0x4c8215>=this['rows'])return[0x0,0x0,0x0];const _0x2479ee=Math['floor'](_0x35da86),_0x479a2e=Math[_0x574690(0x1ae)](_0x4c8215);if(_0x2479ee===_0x35da86&&_0x479a2e===_0x4c8215)return this[_0x574690(0x14f)][_0x4c8215][_0x35da86];const _0x252511=_0x2479ee+0x1,_0x57e318=_0x479a2e+0x1,_0x207663=this['getUVByXY'](_0x2479ee,_0x479a2e),_0x133976=this[_0x574690(0xd4)](_0x252511,_0x479a2e),_0x21e814=this[_0x574690(0xd4)](_0x2479ee,_0x57e318),_0x5c6d44=this['getUVByXY'](_0x252511,_0x57e318);let _0x5c895b=null;try{_0x5c895b=this[_0x574690(0x191)](_0x35da86-_0x2479ee,_0x4c8215-_0x479a2e,_0x207663,_0x133976,_0x21e814,_0x5c6d44);}catch(_0x1a125b){console[_0x574690(0xf0)](_0x35da86,_0x4c8215);}return _0x5c895b;}['_bilinearInterpolation'](_0x238ce8,_0x42aac5,_0x224ae2,_0x1a9881,_0x364453,_0x286a5e){const _0x10018b=0x1-_0x238ce8,_0xa4fc32=0x1-_0x42aac5,_0x45f4de=_0x10018b*_0xa4fc32,_0x4cce68=_0x238ce8*_0xa4fc32,_0x23def2=_0x10018b*_0x42aac5,_0x51492e=_0x238ce8*_0x42aac5,_0x593e1f=_0x224ae2[0x0]*_0x45f4de+_0x1a9881[0x0]*_0x4cce68+_0x364453[0x0]*_0x23def2+_0x286a5e[0x0]*_0x51492e,_0x2c8465=_0x224ae2[0x1]*_0x45f4de+_0x1a9881[0x1]*_0x4cce68+_0x364453[0x1]*_0x23def2+_0x286a5e[0x1]*_0x51492e;return this['_calcUV'](_0x593e1f,_0x2c8465);}['_calcUV'](_0x55a8fa,_0x11b89a){return[+_0x55a8fa,+_0x11b89a,Math['sqrt'](_0x55a8fa*_0x55a8fa+_0x11b89a*_0x11b89a)];}['getUVByPoint'](_0x278382,_0x5a9fe8){const _0x47ce06=_0x1f0c71;if(!this['isInExtent'](_0x278382,_0x5a9fe8))return null;const _0x560dfb=this[_0x47ce06(0x144)](_0x278382,_0x5a9fe8),_0x58dc55=this['getUVByXY'](_0x560dfb[0x0],_0x560dfb[0x1]);return _0x58dc55;}['isInExtent'](_0x3a6287,_0x235cf8){const _0x5c9036=_0x1f0c71;return _0x3a6287>=this[_0x5c9036(0x1b6)]&&_0x3a6287<=this['xmax']&&_0x235cf8>=this[_0x5c9036(0xe0)]&&_0x235cf8<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x334f49=_0x1f0c71,_0x2a30b1=fRandomByfloat(this[_0x334f49(0x1b6)],this['xmax']),_0x75ae7f=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x75ae7f,'lng':_0x2a30b1};}['getParticles'](){const _0x5aefe4=_0x1f0c71;let _0x42cff8,_0x124b24,_0x48e10d;for(let _0x1db04d=0x0,_0x1515ac=this['particles']['length'];_0x1db04d<_0x1515ac;_0x1db04d++){let _0x51ccf0=this['particles'][_0x1db04d];_0x51ccf0['age']<=0x0&&(_0x51ccf0=this['_randomParticle'](_0x51ccf0));if(_0x51ccf0['age']>0x0){const _0x2f91da=_0x51ccf0['tlng'],_0x23ec90=_0x51ccf0[_0x5aefe4(0x1a1)];_0x48e10d=this[_0x5aefe4(0xed)](_0x2f91da,_0x23ec90),_0x48e10d?(_0x42cff8=_0x2f91da+this['_calc_speedRate'][0x0]*_0x48e10d[0x0],_0x124b24=_0x23ec90+this['_calc_speedRate'][0x1]*_0x48e10d[0x1],_0x51ccf0['lng']=_0x2f91da,_0x51ccf0['lat']=_0x23ec90,_0x51ccf0[_0x5aefe4(0xe6)]=_0x42cff8,_0x51ccf0[_0x5aefe4(0x1a1)]=_0x124b24,_0x51ccf0['speed']=_0x48e10d[0x2],_0x51ccf0['age']--):_0x51ccf0['age']=0x0;}}return this['particles'];}[_0x1f0c71(0x160)](_0x29e724){const _0x59e9fe=_0x1f0c71;let _0x1ad72f,_0x16aa85;for(let _0x229bbb=0x0;_0x229bbb<0x1e;_0x229bbb++){_0x1ad72f=this[_0x59e9fe(0x157)](),_0x16aa85=this['getUVByPoint'](_0x1ad72f['lng'],_0x1ad72f[_0x59e9fe(0x101)]);if(_0x16aa85&&_0x16aa85[0x2]>0x0)break;}if(!_0x16aa85)return _0x29e724;const _0x6b1c0=_0x1ad72f['lng']+this[_0x59e9fe(0x104)][0x0]*_0x16aa85[0x0],_0x1effb7=_0x1ad72f['lat']+this[_0x59e9fe(0x104)][0x1]*_0x16aa85[0x1];return _0x29e724[_0x59e9fe(0xfc)]=_0x1ad72f[_0x59e9fe(0xfc)],_0x29e724[_0x59e9fe(0x101)]=_0x1ad72f['lat'],_0x29e724['tlng']=_0x6b1c0,_0x29e724['tlat']=_0x1effb7,_0x29e724['age']=Math['round'](Math['random']()*this['maxAge']),_0x29e724[_0x59e9fe(0x16c)]=_0x16aa85[0x2],_0x29e724;}[_0x1f0c71(0x175)](){for(const _0x4e54b2 in this){delete this[_0x4e54b2];}}}function fRandomByfloat(_0x257fa1,_0x1ac3cc){const _0x382af8=_0x1f0c71;return _0x257fa1+Math[_0x382af8(0x123)]()*(_0x1ac3cc-_0x257fa1);}const Cesium=mars3d__namespace[_0x1f0c71(0x146)],BaseLayer=mars3d__namespace[_0x1f0c71(0x18f)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x53879f={}){const _0x823ee=_0x1f0c71;super(_0x53879f),this['_setOptionsHook'](_0x53879f),this[_0x823ee(0x1af)]=null,_0x53879f['colors']&&_0x53879f[_0x823ee(0xf5)]&&(this['_colorRamp']=new mars3d__namespace[(_0x823ee(0x19d))](_0x53879f));}['_setOptionsHook'](_0x298cf6,_0x5de9b0){const _0x55ff7b=_0x1f0c71;this['frameTime']=0x3e8/(_0x298cf6['frameRate']||0xa),this['_pointerEvents']=this['options']['pointerEvents']??![],this['color']=_0x298cf6['color']||'#ffffff',this['lineWidth']=_0x298cf6[_0x55ff7b(0xdb)]||0x1,this['fixedHeight']=_0x298cf6['fixedHeight']??0x0,this[_0x55ff7b(0x1a7)]=_0x298cf6['reverseY']??![],this['windField']&&this['windField'][_0x55ff7b(0x176)](_0x298cf6);}get['layer'](){return this['canvas'];}get['canvasWidth'](){const _0x33953c=_0x1f0c71;return this['_map']['scene'][_0x33953c(0x1af)]['clientWidth'];}get['canvasHeight'](){return this['_map']['scene']['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x5a4fb2){const _0x51c3fc=_0x1f0c71;this['_pointerEvents']=_0x5a4fb2;if(!this[_0x51c3fc(0x1af)])return;_0x5a4fb2?this[_0x51c3fc(0x1af)][_0x51c3fc(0x108)]['pointer-events']='all':this['canvas']['style']['pointer-events']='none';}get[_0x1f0c71(0x151)](){return this['options']['particlesNumber'];}set[_0x1f0c71(0x151)](_0x3f538d){const _0x5474b6=_0x1f0c71;this['options']['particlesNumber']=_0x3f538d,clearTimeout(this[_0x5474b6(0xd1)]),this[_0x5474b6(0xd1)]=setTimeout(()=>{this['redraw']();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set['speedRate'](_0x5d53bf){const _0x15d44e=_0x1f0c71;this['options'][_0x15d44e(0x13f)]=_0x5d53bf,this[_0x15d44e(0x15d)]&&(this['windField']['speedRate']=_0x5d53bf);}get['maxAge'](){return this['options']['maxAge'];}set[_0x1f0c71(0x125)](_0x123537){const _0xbfdc53=_0x1f0c71;this['options'][_0xbfdc53(0x125)]=_0x123537,this['windField']&&(this['windField']['maxAge']=_0x123537);}get['data'](){const _0x57aac3=_0x1f0c71;return this[_0x57aac3(0x17b)];}set['data'](_0x1d3427){this['setData'](_0x1d3427);}[_0x1f0c71(0x13c)](_0x1f83a4){const _0x1ef159=_0x1f0c71;_0x1f83a4?this['_addedHook']():(this['windData']&&(this['options'][_0x1ef159(0x12f)]=this[_0x1ef159(0x17b)]),this['_removedHook']());}['_mountedHook'](){const _0x277339=_0x1f0c71;this['options'][_0x277339(0x150)]?this['initWorker']():this['windField']=new CanvasWindField(this[_0x277339(0x187)]);}['_addedHook'](){const _0x47c535=_0x1f0c71;this['canvas']=this[_0x47c535(0x1a5)](),this['canvasContext']=this[_0x47c535(0x1af)][_0x47c535(0x148)]('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options'][_0x47c535(0x12f)]&&this['setData'](this['options']['data']);}['_removedHook'](){const _0x2b1c2d=_0x1f0c71;this['clear'](),this['unbindEvent'](),this['canvas']&&(this[_0x2b1c2d(0x1ac)]['container'][_0x2b1c2d(0xde)](this[_0x2b1c2d(0x1af)]),delete this[_0x2b1c2d(0x1af)]);}['_createCanvas'](){const _0x54bdbd=_0x1f0c71,_0x2744ae=mars3d__namespace['DomUtil']['create']('canvas','mars3d-canvasWind',this[_0x54bdbd(0x1ac)]['container']);return _0x2744ae['style']['position']=_0x54bdbd(0xfd),_0x2744ae['style'][_0x54bdbd(0x18c)]='0px',_0x2744ae[_0x54bdbd(0x108)][_0x54bdbd(0x19c)]='0px',_0x2744ae['style'][_0x54bdbd(0x116)]=this['_map']['scene'][_0x54bdbd(0x1af)][_0x54bdbd(0xda)]+'px',_0x2744ae['style'][_0x54bdbd(0x133)]=this[_0x54bdbd(0x1ac)]['scene']['canvas'][_0x54bdbd(0x131)]+'px',_0x2744ae[_0x54bdbd(0x108)]['pointerEvents']=this['_pointerEvents']?'auto':'none',_0x2744ae['style']['zIndex']=this[_0x54bdbd(0x187)][_0x54bdbd(0x199)]??0x9,_0x2744ae['width']=this['_map']['scene']['canvas'][_0x54bdbd(0xda)],_0x2744ae['height']=this['_map']['scene']['canvas']['clientHeight'],_0x2744ae;}['resize'](){const _0x31e3d7=_0x1f0c71;this['canvas']&&(this['canvas']['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',this[_0x31e3d7(0x1af)]['style']['height']=this['_map']['scene']['canvas']['clientHeight']+'px',this['canvas']['width']=this['_map']['scene']['canvas'][_0x31e3d7(0xda)],this['canvas'][_0x31e3d7(0x133)]=this['_map'][_0x31e3d7(0x188)]['canvas'][_0x31e3d7(0x131)]);}[_0x1f0c71(0xe1)](){const _0x2947d5=_0x1f0c71,_0x69475e=this;let _0x335a51=Date['now']();(function _0x1a9781(){const _0x238898=_0x5921;_0x69475e['animateFrame']=window['requestAnimationFrame'](_0x1a9781);if(_0x69475e['show']&&_0x69475e[_0x238898(0x15d)]){const _0x27c622=Date['now'](),_0x258196=_0x27c622-_0x335a51;_0x258196>_0x69475e['frameTime']&&(_0x335a51=_0x27c622-_0x258196%_0x69475e['frameTime'],_0x69475e[_0x238898(0xca)]());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this[_0x2947d5(0x19e)]=![],this['mouse_move']=![],this[_0x2947d5(0x187)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x2947d5(0x1ac)]['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x2947d5(0xc4)],this),this[_0x2947d5(0x1ac)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){const _0x311849=_0x1f0c71;window[_0x311849(0x19f)](this[_0x311849(0x112)]),delete this[_0x311849(0x112)],window['removeEventListener']('resize',this['resize']),this[_0x311849(0x187)]['mouseHidden']&&(this['_map']['off'](mars3d__namespace['EventType'][_0x311849(0xe5)],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x311849(0x174)],this['_onMouseDownEvent'],this),this['_map'][_0x311849(0xc3)](mars3d__namespace['EventType'][_0x311849(0x19a)],this[_0x311849(0xcf)],this),this[_0x311849(0x1ac)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x14f8ec){const _0x213a6e=_0x1f0c71;clearTimeout(this['refreshTimer']);if(!this[_0x213a6e(0x1a3)]||!this['canvas'])return;this['canvas'][_0x213a6e(0x108)]['visibility']=_0x213a6e(0x13a),this['refreshTimer']=setTimeout(()=>{const _0x1a205c=_0x213a6e;if(!this['show'])return;this['redraw'](),this['canvas'][_0x1a205c(0x108)]['visibility']=_0x1a205c(0xdf);},0xc8);}['_onMouseDownEvent'](_0x94ba52){const _0x59ecf8=_0x1f0c71;this[_0x59ecf8(0x19e)]=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x59ecf8(0x165)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}[_0x1f0c71(0x165)](_0x1db1e8){const _0x3cb928=_0x1f0c71;if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this['canvas'][_0x3cb928(0x108)]['visibility']='hidden',this['mouse_move']=!![]);}[_0x1f0c71(0xcf)](_0x9533f4){const _0x474f4d=_0x1f0c71;if(!this['show']||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['canvas'][_0x474f4d(0x108)]['visibility']='visible',this['mouse_down']=![],this['mouse_move']=![];}[_0x1f0c71(0x192)](_0x1007c8){const _0x25670d=_0x1f0c71;this[_0x25670d(0x1a0)](),this['windData']=_0x1007c8,this['windField']['setDate'](_0x1007c8),this[_0x25670d(0xee)]();}['redraw'](){const _0x2acd37=_0x1f0c71;if(!this['show'])return;this[_0x2acd37(0x15d)]['setOptions'](this['options']),this['update']();}['update'](){const _0x55a878=_0x1f0c71;if(this['_updateIng'])return;this[_0x55a878(0x152)]=!![];if(this[_0x55a878(0x150)])this['windField']['update']();else{const _0x5bae0d=this['windField']['getParticles']();this['_drawLines'](_0x5bae0d);}this[_0x55a878(0x152)]=![];}['_drawLines'](_0x474764){const _0x578804=_0x1f0c71;this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']=_0x578804(0x185),this['canvasContext']['globalAlpha']=0.9;const _0x116463=this[_0x578804(0x1ac)][_0x578804(0x188)]['mode']!==Cesium['SceneMode']['SCENE3D'],_0x282357=this[_0x578804(0x121)]*0.25;if(this['_colorRamp'])for(let _0x8bd9a3=0x0,_0x29d053=_0x474764['length'];_0x8bd9a3<_0x29d053;_0x8bd9a3++){const _0x2383b8=_0x474764[_0x8bd9a3],_0x53f5aa=this['_tomap'](_0x2383b8['lng'],_0x2383b8['lat'],_0x2383b8),_0x4cb62d=this[_0x578804(0xc6)](_0x2383b8[_0x578804(0xe6)],_0x2383b8[_0x578804(0x1a1)],_0x2383b8);if(!_0x53f5aa||!_0x4cb62d)continue;if(_0x116463&&Math[_0x578804(0x196)](_0x53f5aa[0x0]-_0x4cb62d[0x0])>=_0x282357)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this['canvasContext']['strokeStyle']=this['_colorRamp'][_0x578804(0x130)](_0x2383b8[_0x578804(0x16c)]),this['canvasContext'][_0x578804(0x147)](_0x53f5aa[0x0],_0x53f5aa[0x1]),this['canvasContext']['lineTo'](_0x4cb62d[0x0],_0x4cb62d[0x1]),this['canvasContext']['stroke']();}else{this['canvasContext']['beginPath'](),this[_0x578804(0x122)]['lineWidth']=this[_0x578804(0xdb)],this['canvasContext'][_0x578804(0x115)]=this[_0x578804(0x14c)];for(let _0x63460a=0x0,_0x28ac0d=_0x474764[_0x578804(0x1b7)];_0x63460a<_0x28ac0d;_0x63460a++){const _0x1f392a=_0x474764[_0x63460a],_0x3f47b7=this['_tomap'](_0x1f392a['lng'],_0x1f392a[_0x578804(0x101)],_0x1f392a),_0x5951cc=this[_0x578804(0xc6)](_0x1f392a['tlng'],_0x1f392a['tlat'],_0x1f392a);if(!_0x3f47b7||!_0x5951cc)continue;if(_0x116463&&Math['abs'](_0x3f47b7[0x0]-_0x5951cc[0x0])>=_0x282357)continue;this[_0x578804(0x122)][_0x578804(0x147)](_0x3f47b7[0x0],_0x3f47b7[0x1]),this['canvasContext'][_0x578804(0xfe)](_0x5951cc[0x0],_0x5951cc[0x1]);}this['canvasContext'][_0x578804(0x141)]();}}['_tomap'](_0x4910dc,_0x55b786,_0x5948ed){const _0x5da754=_0x1f0c71,_0x1abea0=Cesium['Cartesian3']['fromDegrees'](_0x4910dc,_0x55b786,this['fixedHeight']),_0x1cd2b4=this['_map']['scene'];if(_0x1cd2b4['mode']===Cesium['SceneMode'][_0x5da754(0x1ba)]){const _0x3ca34e=new Cesium[(_0x5da754(0x12e))](_0x1cd2b4['globe'][_0x5da754(0x15f)],_0x1cd2b4['camera']['positionWC']),_0x54acd7=_0x3ca34e['isPointVisible'](_0x1abea0);if(!_0x54acd7)return _0x5948ed[_0x5da754(0xd2)]=0x0,null;}const _0xe18587=Cesium[_0x5da754(0x182)]['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x1abea0);return _0xe18587?[_0xe18587['x'],_0xe18587['y']]:null;}[_0x1f0c71(0x1a0)](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){const _0x9b4a95=_0x1f0c71;this['worker']=new Worker(this['options']['worker']),this['worker'][_0x9b4a95(0x118)]=_0x357654=>{const _0x51f4e4=_0x9b4a95;this[_0x51f4e4(0x173)](_0x357654[_0x51f4e4(0x12f)]['particles']),this[_0x51f4e4(0x11f)]=![];},this['windField']={'init':_0x5ec998=>{const _0xb1c74f=_0x9b4a95;this[_0xb1c74f(0x150)]['postMessage']({'type':'init','options':_0x5ec998});},'setOptions':_0xd42b04=>{const _0x56d749=_0x9b4a95;this['worker'][_0x56d749(0x1b3)]({'type':'setOptions','options':_0xd42b04});},'setDate':_0x4ee5ef=>{this['worker']['postMessage']({'type':'setDate','data':_0x4ee5ef});},'update':()=>{const _0x23ddfb=_0x9b4a95;if(this['_updateIng2'])return;this[_0x23ddfb(0x11f)]=!![],this['worker']['postMessage']({'type':_0x23ddfb(0xca)});},'clear':()=>{const _0x3a75cd=_0x9b4a95;this[_0x3a75cd(0x150)]['postMessage']({'type':'clear'});}},this[_0x9b4a95(0x15d)]['init'](this[_0x9b4a95(0x187)]);}}mars3d__namespace['LayerUtil'][_0x1f0c71(0x19b)]('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports[_0x1f0c71(0xe8)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x1f0c71(0x16e)]=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
|
|
14
|
+
'use strict';const _0xf860f5=_0xdac7;(function(_0x422564,_0x5177ff){const _0x41e0d8=_0xdac7,_0x154d8e=_0x422564();while(!![]){try{const _0x3211ac=-parseInt(_0x41e0d8(0x1e7))/0x1*(parseInt(_0x41e0d8(0x1e6))/0x2)+parseInt(_0x41e0d8(0x242))/0x3*(-parseInt(_0x41e0d8(0x228))/0x4)+parseInt(_0x41e0d8(0x24a))/0x5+parseInt(_0x41e0d8(0x2b0))/0x6+-parseInt(_0x41e0d8(0x2dc))/0x7*(-parseInt(_0x41e0d8(0x222))/0x8)+parseInt(_0x41e0d8(0x238))/0x9*(parseInt(_0x41e0d8(0x219))/0xa)+-parseInt(_0x41e0d8(0x207))/0xb;if(_0x3211ac===_0x5177ff)break;else _0x154d8e['push'](_0x154d8e['shift']());}catch(_0x283ca0){_0x154d8e['push'](_0x154d8e['shift']());}}}(_0x4980,0xe479e));function _interopNamespace(_0xd66430){const _0x5a626e=_0xdac7;if(_0xd66430&&_0xd66430[_0x5a626e(0x215)])return _0xd66430;var _0x43b578=Object[_0x5a626e(0x27a)](null);return _0xd66430&&Object[_0x5a626e(0x28c)](_0xd66430)['forEach'](function(_0x12a5a4){if(_0x12a5a4!=='default'){var _0x4f793f=Object['getOwnPropertyDescriptor'](_0xd66430,_0x12a5a4);Object['defineProperty'](_0x43b578,_0x12a5a4,_0x4f793f['get']?_0x4f793f:{'enumerable':!![],'get':function(){return _0xd66430[_0x12a5a4];}});}}),_0x43b578[_0x5a626e(0x212)]=_0xd66430,_0x43b578;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x83e115,_0x4b82be){const _0x599efd=_0xdac7,_0x4e5c2d=_0x83e115*Math['cos'](Cesium$7[_0x599efd(0x1ed)]['toRadians'](_0x4b82be));return _0x4e5c2d;}function getV(_0x2df9f1,_0x5b68b0){const _0x3d14d0=_0x2df9f1*Math['sin'](Cesium$7['Math']['toRadians'](_0x5b68b0));return _0x3d14d0;}function getSpeed(_0x835d95,_0x18b427){const _0x19372b=Math['sqrt'](Math['pow'](_0x835d95,0x2)+Math['pow'](_0x18b427,0x2));return _0x19372b;}function getDirection(_0x2431d8,_0x1f4763){const _0x55bc45=_0xdac7;let _0x47a365=Cesium$7['Math'][_0x55bc45(0x2b7)](Math['atan2'](_0x1f4763,_0x2431d8));return _0x47a365+=_0x47a365<0x0?0x168:0x0,_0x47a365;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x189695){const _0x738a05=_0xdac7;this[_0x738a05(0x296)]=_0x189695['commandType'],this[_0x738a05(0x20e)]=_0x189695[_0x738a05(0x20e)],this[_0x738a05(0x20d)]=_0x189695['attributeLocations'],this['primitiveType']=_0x189695[_0x738a05(0x1ea)],this['uniformMap']=_0x189695['uniformMap'],this['vertexShaderSource']=_0x189695['vertexShaderSource'],this['fragmentShaderSource']=_0x189695['fragmentShaderSource'],this['rawRenderState']=_0x189695[_0x738a05(0x233)],this['framebuffer']=_0x189695['framebuffer'],this['outputTexture']=_0x189695[_0x738a05(0x202)],this['autoClear']=_0x189695[_0x738a05(0x2c1)]??![],this[_0x738a05(0x24d)]=_0x189695[_0x738a05(0x24d)],this['show']=!![],this[_0x738a05(0x1e9)]=undefined,this['clearCommand']=undefined,this[_0x738a05(0x2c1)]&&(this[_0x738a05(0x22a)]=new Cesium$6[(_0x738a05(0x236))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass'][_0x738a05(0x248)]}));}[_0xf860f5(0x2be)](_0x525751){const _0x3899d6=_0xf860f5;switch(this['commandType']){case _0x3899d6(0x243):{const _0x4de1cf=Cesium$6['VertexArray'][_0x3899d6(0x1f2)]({'context':_0x525751,'geometry':this['geometry'],'attributeLocations':this[_0x3899d6(0x20d)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x455e61=Cesium$6[_0x3899d6(0x260)]['fromCache']({'context':_0x525751,'attributeLocations':this[_0x3899d6(0x20d)],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x190fc3=Cesium$6['RenderState']['fromCache'](this['rawRenderState']);return new Cesium$6[(_0x3899d6(0x245))]({'primitiveType':this['primitiveType'],'shaderProgram':_0x455e61,'vertexArray':_0x4de1cf,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x190fc3,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE'],'pickOnly':!![],'owner':this});}case'Compute':{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this[_0x3899d6(0x202)],'persists':!![]});}}}['setGeometry'](_0x7c89b8,_0x3d7ffd){const _0x32f0fb=_0xf860f5;this['geometry']=_0x3d7ffd;const _0x592795=Cesium$6['VertexArray']['fromGeometry']({'context':_0x7c89b8,'geometry':this['geometry'],'attributeLocations':this[_0x32f0fb(0x20d)],'bufferUsage':Cesium$6[_0x32f0fb(0x249)]['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x592795;}['update'](_0x59093e){const _0x35222c=_0xf860f5;if(!this['show'])return;if(_0x59093e[_0x35222c(0x22b)]!==Cesium$6[_0x35222c(0x1ee)]['SCENE3D'])return;!Cesium$6['defined'](this[_0x35222c(0x1e9)])&&(this['commandToExecute']=this['createCommand'](_0x59093e['context'])),Cesium$6['defined'](this['preExecute'])&&this['preExecute'](),Cesium$6['defined'](this[_0x35222c(0x22a)])&&_0x59093e['commandList']['push'](this['clearCommand']),_0x59093e[_0x35222c(0x1f3)][_0x35222c(0x2c6)](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){const _0x361fde=_0xf860f5;if(this[_0x361fde(0x22a)]){var _0x25f3d3,_0x9f0ee9;(_0x25f3d3=this[_0x361fde(0x22a)])!==null&&_0x25f3d3!==void 0x0&&_0x25f3d3['vertexArray']&&this['clearCommand'][_0x361fde(0x1ec)]['destroy'](),(_0x9f0ee9=this['clearCommand'])!==null&&_0x9f0ee9!==void 0x0&&_0x9f0ee9[_0x361fde(0x271)]&&this[_0x361fde(0x22a)]['shaderProgram']['destroy'](),delete this[_0x361fde(0x22a)];}return this['commandToExecute']&&(this[_0x361fde(0x1e9)]['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this['commandToExecute'][_0x361fde(0x271)]&&this['commandToExecute']['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x360489=function(){const _0x10213c=_0xdac7,_0x3ab927=new Cesium$5[(_0x10213c(0x22e))]({'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[(_0x10213c(0x261))]({'componentDatatype':Cesium$5['ComponentDatatype'][_0x10213c(0x241)],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x3ab927;},_0x2d84f2=function(_0x177f0d,_0x269690){const _0x15431a=_0xdac7;if(Cesium$5[_0x15431a(0x20c)](_0x269690)){const _0x1996d2={};_0x1996d2['arrayBufferView']=_0x269690,_0x177f0d['source']=_0x1996d2;}const _0x2de1b9=new Cesium$5['Texture'](_0x177f0d);return _0x2de1b9;},_0x165752=function(_0x251e6b,_0x9892c1,_0x3431df){const _0x380c41=new Cesium$5['Framebuffer']({'context':_0x251e6b,'colorTextures':[_0x9892c1],'depthTexture':_0x3431df});return _0x380c41;},_0x5e42be=function(_0x542652){const _0x1c35b5=_0xdac7,_0x210846=!![],_0xad1a81=![],_0x23b902={'viewport':_0x542652[_0x1c35b5(0x293)],'depthTest':_0x542652[_0x1c35b5(0x2ca)],'depthMask':_0x542652['depthMask'],'blending':_0x542652[_0x1c35b5(0x284)]},_0x1b557c=Cesium$5['Appearance']['getDefaultRenderState'](_0x210846,_0xad1a81,_0x23b902);return _0x1b557c;},_0x4af3d6=function(_0x4a882a){const _0x51ecfe=_0xdac7,_0x1b264f={},_0x3c8ef7=Cesium$5[_0x51ecfe(0x1ed)][_0x51ecfe(0x28b)](_0x4a882a[_0x51ecfe(0x25d)],Cesium$5[_0x51ecfe(0x1ed)]['TWO_PI']),_0x284b9f=Cesium$5['Math']['mod'](_0x4a882a['east'],Cesium$5[_0x51ecfe(0x1ed)][_0x51ecfe(0x291)]),_0x1aebda=_0x4a882a['width'];let _0x389198,_0x41a761;_0x1aebda>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x389198=0x0,_0x41a761=Cesium$5['Math']['TWO_PI']):_0x284b9f-_0x3c8ef7<_0x1aebda?(_0x389198=_0x3c8ef7,_0x41a761=_0x3c8ef7+_0x1aebda):(_0x389198=_0x3c8ef7,_0x41a761=_0x284b9f);_0x1b264f['lon']={'min':Cesium$5[_0x51ecfe(0x1ed)][_0x51ecfe(0x2b7)](_0x389198),'max':Cesium$5['Math']['toDegrees'](_0x41a761)};const _0xe1af90=_0x4a882a[_0x51ecfe(0x231)],_0x1daca0=_0x4a882a[_0x51ecfe(0x21a)],_0x4c0dc9=_0x4a882a[_0x51ecfe(0x2c2)],_0x3dc637=_0x4c0dc9>Cesium$5[_0x51ecfe(0x1ed)]['PI']/0xc?_0x4c0dc9/0x2:0x0;let _0x56ba62=Cesium$5[_0x51ecfe(0x1ed)][_0x51ecfe(0x2cd)](_0xe1af90-_0x3dc637),_0x29b1e9=Cesium$5['Math']['clampToLatitudeRange'](_0x1daca0+_0x3dc637);return _0x56ba62<-Cesium$5[_0x51ecfe(0x1ed)]['PI_OVER_THREE']&&(_0x56ba62=-Cesium$5['Math']['PI_OVER_TWO']),_0x29b1e9>Cesium$5[_0x51ecfe(0x1ed)]['PI_OVER_THREE']&&(_0x29b1e9=Cesium$5['Math'][_0x51ecfe(0x214)]),_0x1b264f['lat']={'min':Cesium$5['Math'][_0x51ecfe(0x2b7)](_0x56ba62),'max':Cesium$5['Math'][_0x51ecfe(0x2b7)](_0x29b1e9)},_0x1b264f;};return{'getFullscreenQuad':_0x360489,'createTexture':_0x2d84f2,'createFramebuffer':_0x165752,'createRawRenderState':_0x5e42be,'viewRectangleToLonLatRange':_0x4af3d6};}());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=_0xf860f5(0x2b8),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=_0xf860f5(0x2d2),screenDraw_frag=_0xf860f5(0x2a4);function _0xdac7(_0x3811bf,_0x216756){const _0x4980d5=_0x4980();return _0xdac7=function(_0xdac760,_0x3cc0bf){_0xdac760=_0xdac760-0x1e4;let _0xf74fb3=_0x4980d5[_0xdac760];return _0xf74fb3;},_0xdac7(_0x3811bf,_0x216756);}const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0x1e3f5f,_0x176b5b,_0x314c5b,_0x3fcf5f,_0x19cbfa){this['createRenderingTextures'](_0x1e3f5f,_0x176b5b,_0x314c5b['colors']),this['createRenderingFramebuffers'](_0x1e3f5f),this['createRenderingPrimitives'](_0x1e3f5f,_0x314c5b,_0x3fcf5f,_0x19cbfa);}[_0xf860f5(0x25c)](_0x441186,_0x38d57b,_0x4a4a3f){const _0x5afafe=_0xf860f5,_0x45cfea={'context':_0x441186,'width':_0x441186['drawingBufferWidth'],'height':_0x441186[_0x5afafe(0x289)],'pixelFormat':Cesium$4['PixelFormat']['RGBA'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_BYTE']},_0xeb0962={'context':_0x441186,'width':_0x441186['drawingBufferWidth'],'height':_0x441186['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4[_0x5afafe(0x237)]['UNSIGNED_INT']},_0x54be72=_0x4a4a3f['length'],_0x1cbb93=new Float32Array(_0x54be72*0x3);for(let _0x4176bb=0x0;_0x4176bb<_0x54be72;_0x4176bb++){const _0x573389=Cesium$4[_0x5afafe(0x21e)][_0x5afafe(0x2bc)](_0x4a4a3f[_0x4176bb]);_0x1cbb93[0x3*_0x4176bb]=_0x573389['red'],_0x1cbb93[0x3*_0x4176bb+0x1]=_0x573389[_0x5afafe(0x206)],_0x1cbb93[0x3*_0x4176bb+0x2]=_0x573389[_0x5afafe(0x2a9)];}const _0x4dd735={'context':_0x441186,'width':_0x54be72,'height':0x1,'pixelFormat':Cesium$4['PixelFormat'][_0x5afafe(0x2d6)],'pixelDatatype':Cesium$4['PixelDatatype']['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter']['LINEAR'],'magnificationFilter':Cesium$4[_0x5afafe(0x276)]['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x45cfea),'segmentsDepth':Util[_0x5afafe(0x24e)](_0xeb0962),'currentTrailsColor':Util['createTexture'](_0x45cfea),'currentTrailsDepth':Util['createTexture'](_0xeb0962),'nextTrailsColor':Util[_0x5afafe(0x24e)](_0x45cfea),'nextTrailsDepth':Util['createTexture'](_0xeb0962),'colorTable':Util[_0x5afafe(0x24e)](_0x4dd735,_0x1cbb93)};}['createRenderingFramebuffers'](_0x210046){const _0x2bdde4=_0xf860f5;this['framebuffers']={'segments':Util['createFramebuffer'](_0x210046,this['textures'][_0x2bdde4(0x22f)],this['textures'][_0x2bdde4(0x26e)]),'currentTrails':Util[_0x2bdde4(0x2b9)](_0x210046,this['textures']['currentTrailsColor'],this['textures']['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x210046,this['textures'][_0x2bdde4(0x226)],this['textures'][_0x2bdde4(0x278)])};}[_0xf860f5(0x1e8)](_0x54700d){const _0x55ccbf=_0xf860f5,_0x292816=0x4;let _0x13fefc=[];for(let _0x2c4e88=0x0;_0x2c4e88<_0x54700d['particlesTextureSize'];_0x2c4e88++){for(let _0x4ac061=0x0;_0x4ac061<_0x54700d['particlesTextureSize'];_0x4ac061++){for(let _0x5e77af=0x0;_0x5e77af<_0x292816;_0x5e77af++){_0x13fefc['push'](_0x2c4e88/_0x54700d[_0x55ccbf(0x26c)]),_0x13fefc[_0x55ccbf(0x2c6)](_0x4ac061/_0x54700d['particlesTextureSize']);}}}_0x13fefc=new Float32Array(_0x13fefc);let _0x472a5a=[];const _0x4791fe=[-0x1,0x1],_0x16d575=[-0x1,0x1];for(let _0x38db7f=0x0;_0x38db7f<_0x54700d[_0x55ccbf(0x23e)];_0x38db7f++){for(let _0x147372=0x0;_0x147372<_0x292816/0x2;_0x147372++){for(let _0x15d238=0x0;_0x15d238<_0x292816/0x2;_0x15d238++){_0x472a5a['push'](_0x4791fe[_0x147372]),_0x472a5a['push'](_0x16d575[_0x15d238]),_0x472a5a['push'](0x0);}}}_0x472a5a=new Float32Array(_0x472a5a);const _0x429643=0x6*_0x54700d[_0x55ccbf(0x23e)],_0x13e149=new Uint32Array(_0x429643);for(let _0x411254=0x0,_0x59d3a4=0x0,_0x93431c=0x0;_0x411254<_0x54700d['maxParticles'];_0x411254++){_0x13e149[_0x59d3a4++]=_0x93431c+0x0,_0x13e149[_0x59d3a4++]=_0x93431c+0x1,_0x13e149[_0x59d3a4++]=_0x93431c+0x2,_0x13e149[_0x59d3a4++]=_0x93431c+0x2,_0x13e149[_0x59d3a4++]=_0x93431c+0x1,_0x13e149[_0x59d3a4++]=_0x93431c+0x3,_0x93431c+=0x4;}const _0x3a1e4d=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4[(_0x55ccbf(0x261))]({'componentDatatype':Cesium$4[_0x55ccbf(0x2d0)]['FLOAT'],'componentsPerAttribute':0x2,'values':_0x13fefc}),'normal':new Cesium$4[(_0x55ccbf(0x261))]({'componentDatatype':Cesium$4['ComponentDatatype'][_0x55ccbf(0x241)],'componentsPerAttribute':0x3,'values':_0x472a5a})}),'indices':_0x13e149});return _0x3a1e4d;}['createRenderingPrimitives'](_0x34ab6b,_0x5ec266,_0x4f3b23,_0x5f408a){const _0xa704ca=_0xf860f5,_0x332f63=this;this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x5ec266),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function(){const _0x3c9d5e=_0xdac7;return _0x5f408a['particlesTextures'][_0x3c9d5e(0x2ae)];},'postProcessingPosition':function(){const _0x355b32=_0xdac7;return _0x5f408a[_0x355b32(0x230)][_0x355b32(0x1ff)];},'postProcessingSpeed':function(){return _0x5f408a['particlesTextures']['postProcessingSpeed'];},'colorTable':function(){const _0x10c21f=_0xdac7;return _0x332f63[_0x10c21f(0x2a5)]['colorTable'];},'aspect':function(){return _0x34ab6b['drawingBufferWidth']/_0x34ab6b['drawingBufferHeight'];},'pixelSize':function(){return _0x4f3b23['pixelSize'];},'lineWidth':function(){const _0xc6a80c=_0xdac7;return _0x5ec266[_0xc6a80c(0x26f)];},'particleHeight':function(){return _0x5ec266['particleHeight'];}},'vertexShaderSource':new Cesium$4[(_0xa704ca(0x2c7))]({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this[_0xa704ca(0x252)]['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':_0xa704ca(0x243),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util[_0xa704ca(0x217)](),'primitiveType':Cesium$4['PrimitiveType'][_0xa704ca(0x2d1)],'uniformMap':{'segmentsColorTexture':function(){const _0x24d30e=_0xa704ca;return _0x332f63['textures'][_0x24d30e(0x22f)];},'segmentsDepthTexture':function(){return _0x332f63['textures']['segmentsDepth'];},'currentTrailsColor':function(){return _0x332f63['framebuffers']['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){const _0x276876=_0xa704ca;return _0x332f63['framebuffers']['currentTrails'][_0x276876(0x2aa)];},'fadeOpacity':function(){return _0x5ec266['fadeOpacity'];}},'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':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0xa704ca(0x2dd)],'autoClear':!![],'preExecute':function(){const _0x571ad2=_0xa704ca,_0x3fbc10=_0x332f63[_0x571ad2(0x252)]['currentTrails'];_0x332f63['framebuffers']['currentTrails']=_0x332f63['framebuffers']['nextTrails'],_0x332f63['framebuffers']['nextTrails']=_0x3fbc10,_0x332f63['primitives']['trails']['commandToExecute'][_0x571ad2(0x1e4)]=_0x332f63['framebuffers']['nextTrails'],_0x332f63['primitives']['trails']['clearCommand'][_0x571ad2(0x1e4)]=_0x332f63['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){const _0x357b7d=_0xa704ca;return _0x332f63['framebuffers']['nextTrails'][_0x357b7d(0x247)](0x0);},'trailsDepthTexture':function(){return _0x332f63['framebuffers']['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0xa704ca(0x2c7))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util[_0xa704ca(0x2b4)]({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}var getWind_frag=_0xf860f5(0x2a7),updateSpeed_frag=_0xf860f5(0x287),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=_0xf860f5(0x28e),postProcessingSpeed_frag=_0xf860f5(0x201);const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x3a4504,_0x3bb34e,_0xba7fdf,_0x4520a5){const _0x2836b1=_0xf860f5;this['data']=_0x3bb34e,this[_0x2836b1(0x2a0)](_0x3a4504,_0x3bb34e),this[_0x2836b1(0x2a6)](_0x3a4504,_0xba7fdf,_0x4520a5),this['createComputingPrimitives'](_0x3bb34e,_0xba7fdf,_0x4520a5);}['createWindTextures'](_0x2cffb0,_0x2876b3){const _0x307a9e=_0xf860f5,_0x44e6a6={'context':_0x2cffb0,'width':_0x2876b3['dimensions']['lon'],'height':_0x2876b3['dimensions']['lat']*(_0x2876b3['dimensions']['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x307a9e(0x2a3))]({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})};this['windTextures']={'U':Util['createTexture'](_0x44e6a6,_0x2876b3['U'][_0x307a9e(0x267)]),'V':Util[_0x307a9e(0x24e)](_0x44e6a6,_0x2876b3['V']['array'])};}['createParticlesTextures'](_0x1ab62f,_0x8d9829,_0x5b359b){const _0x261a6b=_0xf860f5,_0x237cab={'context':_0x1ab62f,'width':_0x8d9829['particlesTextureSize'],'height':_0x8d9829[_0x261a6b(0x26c)],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3[_0x261a6b(0x237)]['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x261a6b(0x24f)]})},_0x4ae511=this['randomizeParticles'](_0x8d9829['maxParticles'],_0x5b359b),_0x1d5736=new Float32Array(0x4*_0x8d9829[_0x261a6b(0x23e)])[_0x261a6b(0x259)](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x237cab),'currentParticlesPosition':Util[_0x261a6b(0x24e)](_0x237cab,_0x4ae511),'nextParticlesPosition':Util['createTexture'](_0x237cab,_0x4ae511),'currentParticlesSpeed':Util[_0x261a6b(0x24e)](_0x237cab,_0x1d5736),'nextParticlesSpeed':Util[_0x261a6b(0x24e)](_0x237cab,_0x1d5736),'postProcessingPosition':Util[_0x261a6b(0x24e)](_0x237cab,_0x4ae511),'postProcessingSpeed':Util['createTexture'](_0x237cab,_0x1d5736)};}['randomizeParticles'](_0x36d2d7,_0x40a96f){const _0x2518f4=_0xf860f5,_0x373299=new Float32Array(0x4*_0x36d2d7);for(let _0x390a8a=0x0;_0x390a8a<_0x36d2d7;_0x390a8a++){_0x373299[0x4*_0x390a8a]=Cesium$3[_0x2518f4(0x1ed)]['randomBetween'](_0x40a96f['lonRange']['x'],_0x40a96f['lonRange']['y']),_0x373299[0x4*_0x390a8a+0x1]=Cesium$3['Math'][_0x2518f4(0x265)](_0x40a96f[_0x2518f4(0x299)]['x'],_0x40a96f['latRange']['y']),_0x373299[0x4*_0x390a8a+0x2]=Cesium$3['Math'][_0x2518f4(0x265)](this[_0x2518f4(0x258)][_0x2518f4(0x290)]['min'],this[_0x2518f4(0x258)]['lev']['max']),_0x373299[0x4*_0x390a8a+0x3]=0x0;}return _0x373299;}['destroyParticlesTextures'](){Object['keys'](this['particlesTextures'])['forEach'](_0x10a5f7=>{this['particlesTextures'][_0x10a5f7]['destroy']();});}[_0xf860f5(0x221)](_0x400d28,_0x306d69,_0x2f9483){const _0x4c8da0=_0xf860f5,_0x167fdb=new Cesium$3[(_0x4c8da0(0x2b1))](_0x400d28[_0x4c8da0(0x2ce)][_0x4c8da0(0x2a2)],_0x400d28[_0x4c8da0(0x2ce)]['lat'],_0x400d28['dimensions']['lev']),_0x5f4658=new Cesium$3['Cartesian3'](_0x400d28['lon'][_0x4c8da0(0x23c)],_0x400d28[_0x4c8da0(0x2c0)]['min'],_0x400d28['lev']['min']),_0x5deaa0=new Cesium$3['Cartesian3'](_0x400d28[_0x4c8da0(0x2a2)]['max'],_0x400d28['lat']['max'],_0x400d28['lev']['max']),_0x55f68b=new Cesium$3['Cartesian3']((_0x5deaa0['x']-_0x5f4658['x'])/(_0x167fdb['x']-0x1),(_0x5deaa0['y']-_0x5f4658['y'])/(_0x167fdb['y']-0x1),_0x167fdb['z']>0x1?(_0x5deaa0['z']-_0x5f4658['z'])/(_0x167fdb['z']-0x1):0x1),_0x5ec2e9=new Cesium$3['Cartesian2'](_0x400d28['U']['min'],_0x400d28['U']['max']),_0x4fd070=new Cesium$3[(_0x4c8da0(0x2cf))](_0x400d28['V']['min'],_0x400d28['V']['max']),_0x336c0c=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function(){return _0x336c0c['windTextures']['U'];},'V':function(){return _0x336c0c['windTextures']['V'];},'currentParticlesPosition':function(){return _0x336c0c['particlesTextures']['currentParticlesPosition'];},'dimension':function(){return _0x167fdb;},'minimum':function(){return _0x5f4658;},'maximum':function(){return _0x5deaa0;},'interval':function(){return _0x55f68b;}},'fragmentShaderSource':new Cesium$3[(_0x4c8da0(0x2c7))]({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures'][_0x4c8da0(0x26a)],'preExecute':function(){const _0x14591a=_0x4c8da0;_0x336c0c['primitives']['getWind'][_0x14591a(0x1e9)]['outputTexture']=_0x336c0c['particlesTextures']['particlesWind'];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function(){const _0x6d92d7=_0x4c8da0;return _0x336c0c['particlesTextures'][_0x6d92d7(0x275)];},'particlesWind':function(){return _0x336c0c['particlesTextures']['particlesWind'];},'uSpeedRange':function(){return _0x5ec2e9;},'vSpeedRange':function(){return _0x4fd070;},'pixelSize':function(){const _0x4b3a7a=_0x4c8da0;return _0x2f9483[_0x4b3a7a(0x28f)];},'speedFactor':function(){const _0x46f5b8=_0x4c8da0;return _0x306d69[_0x46f5b8(0x1f7)];}},'fragmentShaderSource':new Cesium$3[(_0x4c8da0(0x2c7))]({'sources':[updateSpeed_frag]}),'outputTexture':this[_0x4c8da0(0x230)]['nextParticlesSpeed'],'preExecute':function(){const _0x4f56bb=_0x4c8da0,_0xb1b564=_0x336c0c['particlesTextures'][_0x4f56bb(0x275)];_0x336c0c['particlesTextures']['currentParticlesSpeed']=_0x336c0c[_0x4f56bb(0x230)]['postProcessingSpeed'],_0x336c0c['particlesTextures'][_0x4f56bb(0x29e)]=_0xb1b564,_0x336c0c['primitives']['updateSpeed'][_0x4f56bb(0x1e9)][_0x4f56bb(0x202)]=_0x336c0c['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function(){const _0x194206=_0x4c8da0;return _0x336c0c[_0x194206(0x230)]['currentParticlesPosition'];},'currentParticlesSpeed':function(){return _0x336c0c['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function(){const _0x535be8=_0x4c8da0,_0x2e3638=_0x336c0c[_0x535be8(0x230)][_0x535be8(0x2ae)];_0x336c0c['particlesTextures']['currentParticlesPosition']=_0x336c0c['particlesTextures']['postProcessingPosition'],_0x336c0c[_0x535be8(0x230)]['postProcessingPosition']=_0x2e3638,_0x336c0c['primitives'][_0x535be8(0x21b)]['commandToExecute'][_0x535be8(0x202)]=_0x336c0c[_0x535be8(0x230)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x4c8da0(0x227),'uniformMap':{'nextParticlesPosition':function(){return _0x336c0c['particlesTextures']['nextParticlesPosition'];},'nextParticlesSpeed':function(){const _0x34b2c8=_0x4c8da0;return _0x336c0c[_0x34b2c8(0x230)]['nextParticlesSpeed'];},'lonRange':function(){const _0x16c0da=_0x4c8da0;return _0x2f9483[_0x16c0da(0x224)];},'latRange':function(){return _0x2f9483['latRange'];},'randomCoefficient':function(){const _0x3b2593=_0x4c8da0,_0x5faff6=Math[_0x3b2593(0x2da)]();return _0x5faff6;},'dropRate':function(){const _0x221c84=_0x4c8da0;return _0x306d69[_0x221c84(0x270)];},'dropRateBump':function(){return _0x306d69['dropRateBump'];}},'fragmentShaderSource':new Cesium$3[(_0x4c8da0(0x2c7))]({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures'][_0x4c8da0(0x1ff)],'preExecute':function(){const _0x5f4e88=_0x4c8da0;_0x336c0c['primitives'][_0x5f4e88(0x1ff)][_0x5f4e88(0x1e9)][_0x5f4e88(0x202)]=_0x336c0c[_0x5f4e88(0x230)][_0x5f4e88(0x1ff)];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x4c8da0(0x227),'uniformMap':{'postProcessingPosition':function(){const _0x30ccda=_0x4c8da0;return _0x336c0c[_0x30ccda(0x230)][_0x30ccda(0x1ff)];},'nextParticlesSpeed':function(){return _0x336c0c['particlesTextures']['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function(){const _0xde6ca6=_0x4c8da0;_0x336c0c['primitives']['postProcessingSpeed'][_0xde6ca6(0x1e9)]['outputTexture']=_0x336c0c[_0xde6ca6(0x230)]['postProcessingSpeed'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x1e210a,_0xb1ee8f,_0xf2c370,_0x117e56){const _0x27600a=_0xf860f5;this['context']=_0x1e210a,_0xb1ee8f={..._0xb1ee8f},_0xb1ee8f['udata']&&_0xb1ee8f['vdata']&&(_0xb1ee8f['dimensions']={},_0xb1ee8f[_0x27600a(0x2ce)]['lon']=_0xb1ee8f['cols'],_0xb1ee8f['dimensions']['lat']=_0xb1ee8f['rows'],_0xb1ee8f['dimensions'][_0x27600a(0x290)]=_0xb1ee8f['lev']||0x1,_0xb1ee8f[_0x27600a(0x2a2)]={},_0xb1ee8f['lon'][_0x27600a(0x23c)]=_0xb1ee8f['xmin'],_0xb1ee8f['lon']['max']=_0xb1ee8f[_0x27600a(0x2b6)],_0xb1ee8f[_0x27600a(0x2c0)]={},_0xb1ee8f['lat']['min']=_0xb1ee8f[_0x27600a(0x286)],_0xb1ee8f[_0x27600a(0x2c0)]['max']=_0xb1ee8f[_0x27600a(0x251)],_0xb1ee8f['lev']={},_0xb1ee8f[_0x27600a(0x290)]['min']=_0xb1ee8f['levmin']??0x1,_0xb1ee8f['lev']['max']=_0xb1ee8f['levmax']??0x1,_0xb1ee8f['U']={},_0xb1ee8f['U']['array']=new Float32Array(_0xb1ee8f['udata']),_0xb1ee8f['U'][_0x27600a(0x23c)]=_0xb1ee8f[_0x27600a(0x263)]??Math['min'](..._0xb1ee8f['udata']),_0xb1ee8f['U']['max']=_0xb1ee8f[_0x27600a(0x2d4)]??Math['max'](..._0xb1ee8f['udata']),_0xb1ee8f['V']={},_0xb1ee8f['V']['array']=new Float32Array(_0xb1ee8f['vdata']),_0xb1ee8f['V']['min']=_0xb1ee8f['vmin']??Math[_0x27600a(0x23c)](..._0xb1ee8f['vdata']),_0xb1ee8f['V']['max']=_0xb1ee8f[_0x27600a(0x20a)]??Math['max'](..._0xb1ee8f['vdata'])),this['data']=_0xb1ee8f,this['options']=_0xf2c370,this['viewerParameters']=_0x117e56,this[_0x27600a(0x204)]=new ParticlesComputing(this['context'],this['data'],this[_0x27600a(0x209)],this['viewerParameters']),this[_0x27600a(0x273)]=new ParticlesRendering(this['context'],this[_0x27600a(0x258)],this['options'],this[_0x27600a(0x272)],this['particlesComputing']);}['canvasResize'](_0x5dfd4b){const _0x59679c=_0xf860f5;this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this[_0x59679c(0x204)][_0x59679c(0x1ef)])['forEach'](_0x3e2b1d=>{const _0x52df13=_0x59679c;this['particlesComputing']['windTextures'][_0x3e2b1d][_0x52df13(0x21c)]();}),this['particlesRendering']['textures'][_0x59679c(0x1fa)][_0x59679c(0x21c)](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x57782f=>{this['particlesRendering']['framebuffers'][_0x57782f]['destroy']();}),this['context']=_0x5dfd4b,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this[_0x59679c(0x204)]);}[_0xf860f5(0x2c9)](){const _0x21fe26=_0xf860f5,_0x4d29e0=new Cesium$2['ClearCommand']({'color':new Cesium$2[(_0x21fe26(0x21e))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});Object['keys'](this['particlesRendering']['framebuffers'])[_0x21fe26(0x22c)](_0x2bf749=>{const _0x574b83=_0x21fe26;_0x4d29e0[_0x574b83(0x1e4)]=this['particlesRendering'][_0x574b83(0x252)][_0x2bf749],_0x4d29e0['execute'](this['context']);});}['refreshParticles'](_0x2eb341){const _0x20da42=_0xf860f5;this['clearFramebuffers'](),this['particlesComputing']['destroyParticlesTextures'](),this['particlesComputing'][_0x20da42(0x2a6)](this[_0x20da42(0x255)],this[_0x20da42(0x209)],this['viewerParameters']);if(_0x2eb341){var _0x4d04cc;const _0x18c175=this['particlesRendering']['createSegmentsGeometry'](this['options']);this['particlesRendering'][_0x20da42(0x2d7)]['segments']['geometry']=_0x18c175;const _0x83cbb5=Cesium$2[_0x20da42(0x24b)]['fromGeometry']({'context':this[_0x20da42(0x255)],'geometry':_0x18c175,'attributeLocations':this['particlesRendering']['primitives']['segments']['attributeLocations'],'bufferUsage':Cesium$2[_0x20da42(0x249)][_0x20da42(0x28d)]});(_0x4d04cc=this['particlesRendering']['primitives'])!==null&&_0x4d04cc!==void 0x0&&(_0x4d04cc=_0x4d04cc[_0x20da42(0x292)])!==null&&_0x4d04cc!==void 0x0&&_0x4d04cc['commandToExecute']&&(this[_0x20da42(0x273)]['primitives']['segments'][_0x20da42(0x1e9)]['vertexArray']=_0x83cbb5);}}['setOptions'](_0x4ce85b){const _0x1627de=_0xf860f5;let _0x581ca4=![];this['options'][_0x1627de(0x23e)]!==_0x4ce85b[_0x1627de(0x23e)]&&(_0x581ca4=!![]),Object['keys'](_0x4ce85b)['forEach'](_0x2e4e7d=>{const _0x58eb60=_0x1627de;this[_0x58eb60(0x209)][_0x2e4e7d]=_0x4ce85b[_0x2e4e7d];}),this['refreshParticles'](_0x581ca4);}['applyViewerParameters'](_0x37704b){const _0x15e837=_0xf860f5;Object['keys'](_0x37704b)[_0x15e837(0x22c)](_0x185ca8=>{const _0x52c5dd=_0x15e837;this[_0x52c5dd(0x272)][_0x185ca8]=_0x37704b[_0x185ca8];}),this['refreshParticles'](![]);}[_0xf860f5(0x21c)](){const _0x1e55f8=_0xf860f5;clearTimeout(this['canrefresh']),this['particlesComputing'][_0x1e55f8(0x20f)](),Object['keys'](this[_0x1e55f8(0x204)]['windTextures'])['forEach'](_0x209a9d=>{const _0x5615d8=_0x1e55f8;this[_0x5615d8(0x204)]['windTextures'][_0x209a9d][_0x5615d8(0x21c)]();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object['keys'](this['particlesRendering'][_0x1e55f8(0x252)])['forEach'](_0x10be53=>{const _0x522ac7=_0x1e55f8;this['particlesRendering']['framebuffers'][_0x10be53][_0x522ac7(0x21c)]();});for(const _0x573ec3 in this){delete this[_0x573ec3];}}}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':[_0xf860f5(0x244)]};class WindLayer extends BaseLayer$1{constructor(_0x43c51f={}){_0x43c51f={...DEF_OPTIONS,..._0x43c51f},super(_0x43c51f),this['_setOptionsHook'](_0x43c51f);}get['layer'](){return this['primitives'];}get[_0xf860f5(0x258)](){return this['_data'];}set['data'](_0x1f3b47){this['setData'](_0x1f3b47);}get['colors'](){return this['options']['colors'];}set['colors'](_0x13144e){const _0x11bfde=_0xf860f5;this['options'][_0x11bfde(0x2e2)]=_0x13144e,this[_0x11bfde(0x211)]&&this['particleSystem'][_0x11bfde(0x29a)]({'colors':_0x13144e}),this['resize']();}['_mountedHook'](){}[_0xf860f5(0x21f)](){const _0x2d687c=_0xf860f5;this['scene']=this['_map']['scene'],this['camera']=this[_0x2d687c(0x1f8)]['camera'],this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map']['scene'][_0x2d687c(0x2d7)]['add'](this[_0x2d687c(0x2d7)]),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this['globeBoundingSphere']=new Cesium$1['BoundingSphere'](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this[_0x2d687c(0x29b)](),window[_0x2d687c(0x239)]('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace[_0x2d687c(0x294)][_0x2d687c(0x27c)],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this[_0x2d687c(0x257)]&&this['setData'](this['_data']);}['_removedHook'](){const _0x593051=_0xf860f5;window['removeEventListener']('resize',this['resize']),this[_0x593051(0x1f8)][_0x593051(0x246)](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this['_map'][_0x593051(0x246)](mars3d__namespace[_0x593051(0x294)]['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType'][_0x593051(0x1e5)],this['_onMouseDownEvent'],this),this[_0x593051(0x1f8)]['off'](mars3d__namespace['EventType'][_0x593051(0x250)],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this['_map']['scene']['primitives']['remove'](this['primitives']);}['resize'](){const _0x1220c3=_0xf860f5;if(!this['show']||!this['particleSystem'])return;this[_0x1220c3(0x2d7)]['show']=![],this[_0x1220c3(0x2d7)][_0x1220c3(0x2ac)](),this['_map'][_0x1220c3(0x2b2)](mars3d__namespace['EventType'][_0x1220c3(0x2d3)],this[_0x1220c3(0x281)],this);}['_onMap_preRenderEvent'](_0xc5ebb0){const _0x17b8ca=_0xf860f5;this[_0x17b8ca(0x211)]['canvasResize'](this['scene']['context']),this[_0x17b8ca(0x266)](),this[_0x17b8ca(0x2d7)]['show']=!![];}['_onMapWhellEvent'](_0x33e852){const _0x109f40=_0xf860f5;clearTimeout(this[_0x109f40(0x27f)]);if(!this['show']||!this[_0x109f40(0x211)])return;this[_0x109f40(0x2d7)][_0x109f40(0x25e)]=![],this[_0x109f40(0x27f)]=setTimeout(()=>{const _0x53dcec=_0x109f40;if(!this['show'])return;this[_0x53dcec(0x200)]();},0xc8);}['_onMouseDownEvent'](_0x4ed0a9){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x51911c){const _0x4613f0=_0xf860f5;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this['primitives'][_0x4613f0(0x25e)]=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x291577){const _0x53094f=_0xf860f5;if(!this[_0x53094f(0x25e)]||!this['particleSystem'])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this[_0x53094f(0x2d7)][_0x53094f(0x25e)]=!![],this['mouse_down']=![],this['mouse_move']=![];}['redraw'](){const _0x142216=_0xf860f5;if(!this[_0x142216(0x1f8)]||!this[_0x142216(0x25e)])return;this[_0x142216(0x29b)](),this[_0x142216(0x211)]['applyViewerParameters'](this['viewerParameters']),this[_0x142216(0x2d7)][_0x142216(0x25e)]=!![];}['setData'](_0x4a8c9e){const _0x4b85a6=_0xf860f5;this['_data']=_0x4a8c9e,this['particleSystem']&&this['particleSystem']['destroy'](),this['particleSystem']=new ParticleSystem(this['scene']['context'],_0x4a8c9e,this['getOptions'](),this[_0x4b85a6(0x272)]),this[_0x4b85a6(0x266)]();}[_0xf860f5(0x2c3)](_0x2c4143,_0x183954){if(_0x2c4143)for(const _0x57ca0f in _0x2c4143){this[_0x57ca0f]=_0x2c4143[_0x57ca0f];}this['particleSystem']&&this['particleSystem']['setOptions'](this['getOptions']());}['getOptions'](){const _0x22f7e3=_0xf860f5,_0x59fcca=Math[_0x22f7e3(0x2b3)](Math['sqrt'](this['particlesNumber']));return this['particlesNumber']=_0x59fcca*_0x59fcca,{'particlesTextureSize':_0x59fcca,'maxParticles':this['particlesNumber'],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this[_0x22f7e3(0x253)],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this[_0x22f7e3(0x2e2)]};}['addPrimitives'](){const _0x23a232=_0xf860f5;this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives']['getWind']),this['primitives'][_0x23a232(0x1f0)](this['particleSystem']['particlesComputing']['primitives'][_0x23a232(0x2a1)]),this[_0x23a232(0x2d7)]['add'](this[_0x23a232(0x211)][_0x23a232(0x204)]['primitives']['updatePosition']),this['primitives']['add'](this[_0x23a232(0x211)]['particlesComputing']['primitives']['postProcessingPosition']),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives'][_0x23a232(0x29e)]),this[_0x23a232(0x2d7)]['add'](this[_0x23a232(0x211)][_0x23a232(0x273)]['primitives']['segments']),this['primitives']['add'](this['particleSystem'][_0x23a232(0x273)][_0x23a232(0x2d7)][_0x23a232(0x2e3)]),this['primitives'][_0x23a232(0x1f0)](this['particleSystem']['particlesRendering']['primitives']['screen']);}[_0xf860f5(0x29b)](){const _0x14f5c1=_0xf860f5;let _0xecb9b6=this['camera']['computeViewRectangle'](this[_0x14f5c1(0x20b)][_0x14f5c1(0x1f6)][_0x14f5c1(0x225)]);if(!_0xecb9b6){const _0x8184b4=this[_0x14f5c1(0x1f8)]['getExtent']();_0xecb9b6=Cesium$1['Rectangle']['fromDegrees'](_0x8184b4['xmin'],_0x8184b4['ymin'],_0x8184b4['xmax'],_0x8184b4['ymax']);}const _0x5404a4=Util['viewRectangleToLonLatRange'](_0xecb9b6);this['viewerParameters']['lonRange']['x']=_0x5404a4['lon'][_0x14f5c1(0x23c)],this[_0x14f5c1(0x272)]['lonRange']['y']=_0x5404a4['lon']['max'],this['viewerParameters']['latRange']['x']=_0x5404a4['lat']['min'],this['viewerParameters'][_0x14f5c1(0x299)]['y']=_0x5404a4[_0x14f5c1(0x2c0)]['max'];const _0x346954=this['camera']['getPixelSize'](this[_0x14f5c1(0x21d)],this[_0x14f5c1(0x20b)]['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0x346954>0x0&&(this['viewerParameters'][_0x14f5c1(0x28f)]=_0x346954);}}mars3d__namespace['LayerUtil']['register'](_0xf860f5(0x262),WindLayer),mars3d__namespace[_0xf860f5(0x29c)][_0xf860f5(0x280)]=WindLayer;class CanvasParticle{constructor(){const _0xbce162=_0xf860f5;this['lng']=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this['age']=null,this[_0xbce162(0x26d)]=null;}['destroy'](){for(const _0x2c1ade in this){delete this[_0x2c1ade];}}}class CanvasWindField{constructor(_0x1b721d){const _0x3e0255=_0xf860f5;this[_0x3e0255(0x29a)](_0x1b721d);}get[_0xf860f5(0x1fc)](){return this['_speedRate'];}set[_0xf860f5(0x1fc)](_0x35caf4){const _0x309689=_0xf860f5;this[_0x309689(0x220)]=(0x64-(_0x35caf4>0x63?0x63:_0x35caf4))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}get[_0xf860f5(0x277)](){const _0x35083b=_0xf860f5;return this[_0x35083b(0x23a)];}set['maxAge'](_0x4d2a52){this['_maxAge']=_0x4d2a52;}['setOptions'](_0x1bae44){const _0xefed3e=_0xf860f5;this['options']=_0x1bae44,this['maxAge']=_0x1bae44[_0xefed3e(0x277)]||0x78,this['speedRate']=_0x1bae44['speedRate']||0x32,this['particles']=[];const _0xd7edea=_0x1bae44[_0xefed3e(0x298)]||0x1000;for(let _0x4cc9bf=0x0;_0x4cc9bf<_0xd7edea;_0x4cc9bf++){const _0x13f39a=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x13f39a);}}['setDate'](_0x3534d7){const _0x3b207e=_0xf860f5;this['rows']=_0x3534d7[_0x3b207e(0x269)],this[_0x3b207e(0x254)]=_0x3534d7['cols'],this['xmin']=_0x3534d7[_0x3b207e(0x2c5)],this['xmax']=_0x3534d7['xmax'],this['ymin']=_0x3534d7['ymin'],this['ymax']=_0x3534d7['ymax'],this['grid']=[];const _0x328899=_0x3534d7['udata'],_0xde1a52=_0x3534d7['vdata'];let _0x3cd851=![];_0x328899[_0x3b207e(0x283)]===this[_0x3b207e(0x269)]&&_0x328899[0x0][_0x3b207e(0x283)]===this['cols']&&(_0x3cd851=!![]);let _0xb6b4f1=0x0,_0x402e54=null,_0x4639b=null;for(let _0x3d3be3=0x0;_0x3d3be3<this['rows'];_0x3d3be3++){_0x402e54=[];for(let _0x39b0bc=0x0;_0x39b0bc<this['cols'];_0x39b0bc++,_0xb6b4f1++){_0x3cd851?_0x4639b=this['_calcUV'](_0x328899[_0x3d3be3][_0x39b0bc],_0xde1a52[_0x3d3be3][_0x39b0bc]):_0x4639b=this['_calcUV'](_0x328899[_0xb6b4f1],_0xde1a52[_0xb6b4f1]),_0x402e54['push'](_0x4639b);}this['grid']['push'](_0x402e54);}this['options']['reverseY']&&this['grid']['reverse']();}['clear'](){const _0x47e628=_0xf860f5;delete this['rows'],delete this[_0x47e628(0x254)],delete this['xmin'],delete this['xmax'],delete this[_0x47e628(0x286)],delete this[_0x47e628(0x251)],delete this[_0x47e628(0x240)],delete this['particles'];}[_0xf860f5(0x2db)](_0x13b1c8,_0x3825e6){const _0x42cf62=_0xf860f5,_0x1ca47d=(_0x13b1c8-this[_0x42cf62(0x2c5)])/(this['xmax']-this['xmin'])*(this[_0x42cf62(0x254)]-0x1),_0x5c01a9=(this['ymax']-_0x3825e6)/(this['ymax']-this['ymin'])*(this['rows']-0x1);return[_0x1ca47d,_0x5c01a9];}['getUVByXY'](_0x47c243,_0x4eaecb){const _0x2803d1=_0xf860f5;if(_0x47c243<0x0||_0x47c243>=this['cols']||_0x4eaecb>=this['rows'])return[0x0,0x0,0x0];const _0x52a31d=Math[_0x2803d1(0x2a8)](_0x47c243),_0x3d91f4=Math['floor'](_0x4eaecb);if(_0x52a31d===_0x47c243&&_0x3d91f4===_0x4eaecb)return this['grid'][_0x4eaecb][_0x47c243];const _0x3dc6d0=_0x52a31d+0x1,_0x4791e2=_0x3d91f4+0x1,_0xbcadc7=this['getUVByXY'](_0x52a31d,_0x3d91f4),_0x3a408c=this['getUVByXY'](_0x3dc6d0,_0x3d91f4),_0x4913f3=this['getUVByXY'](_0x52a31d,_0x4791e2),_0x31d30e=this['getUVByXY'](_0x3dc6d0,_0x4791e2);let _0x251949=null;try{_0x251949=this[_0x2803d1(0x2d5)](_0x47c243-_0x52a31d,_0x4eaecb-_0x3d91f4,_0xbcadc7,_0x3a408c,_0x4913f3,_0x31d30e);}catch(_0x22635a){console[_0x2803d1(0x27e)](_0x47c243,_0x4eaecb);}return _0x251949;}['_bilinearInterpolation'](_0x3b2fe4,_0x2b8940,_0x462ff8,_0xf245e1,_0x3b60b2,_0xca2623){const _0x11f944=0x1-_0x3b2fe4,_0x72ec6c=0x1-_0x2b8940,_0x32a386=_0x11f944*_0x72ec6c,_0x313f5c=_0x3b2fe4*_0x72ec6c,_0x5498f2=_0x11f944*_0x2b8940,_0x290e11=_0x3b2fe4*_0x2b8940,_0x3df253=_0x462ff8[0x0]*_0x32a386+_0xf245e1[0x0]*_0x313f5c+_0x3b60b2[0x0]*_0x5498f2+_0xca2623[0x0]*_0x290e11,_0x3c736c=_0x462ff8[0x1]*_0x32a386+_0xf245e1[0x1]*_0x313f5c+_0x3b60b2[0x1]*_0x5498f2+_0xca2623[0x1]*_0x290e11;return this['_calcUV'](_0x3df253,_0x3c736c);}[_0xf860f5(0x2d9)](_0x423918,_0xbefc7d){const _0x451e42=_0xf860f5;return[+_0x423918,+_0xbefc7d,Math[_0x451e42(0x2df)](_0x423918*_0x423918+_0xbefc7d*_0xbefc7d)];}['getUVByPoint'](_0x2f8061,_0xdeb59b){const _0x2072f7=_0xf860f5;if(!this['isInExtent'](_0x2f8061,_0xdeb59b))return null;const _0x51b7d3=this['toGridXY'](_0x2f8061,_0xdeb59b),_0x53390b=this[_0x2072f7(0x2d8)](_0x51b7d3[0x0],_0x51b7d3[0x1]);return _0x53390b;}['isInExtent'](_0x552d07,_0x1aeac7){return _0x552d07>=this['xmin']&&_0x552d07<=this['xmax']&&_0x1aeac7>=this['ymin']&&_0x1aeac7<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x3e4bd4=fRandomByfloat(this['xmin'],this['xmax']),_0x1de2f4=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x1de2f4,'lng':_0x3e4bd4};}['getParticles'](){const _0x3aefe6=_0xf860f5;let _0xfe24a1,_0x324b70,_0x3e9675;for(let _0x5a3789=0x0,_0x3bb526=this[_0x3aefe6(0x2bf)][_0x3aefe6(0x283)];_0x5a3789<_0x3bb526;_0x5a3789++){let _0xb37f3f=this['particles'][_0x5a3789];_0xb37f3f['age']<=0x0&&(_0xb37f3f=this['_randomParticle'](_0xb37f3f));if(_0xb37f3f['age']>0x0){const _0x5c0d12=_0xb37f3f['tlng'],_0x329837=_0xb37f3f['tlat'];_0x3e9675=this['getUVByPoint'](_0x5c0d12,_0x329837),_0x3e9675?(_0xfe24a1=_0x5c0d12+this['_calc_speedRate'][0x0]*_0x3e9675[0x0],_0x324b70=_0x329837+this['_calc_speedRate'][0x1]*_0x3e9675[0x1],_0xb37f3f['lng']=_0x5c0d12,_0xb37f3f['lat']=_0x329837,_0xb37f3f[_0x3aefe6(0x297)]=_0xfe24a1,_0xb37f3f['tlat']=_0x324b70,_0xb37f3f['speed']=_0x3e9675[0x2],_0xb37f3f['age']--):_0xb37f3f['age']=0x0;}}return this['particles'];}['_randomParticle'](_0x54f828){const _0x3ac049=_0xf860f5;let _0x23cc3b,_0x5cf6bf;for(let _0x368349=0x0;_0x368349<0x1e;_0x368349++){_0x23cc3b=this[_0x3ac049(0x2ab)](),_0x5cf6bf=this['getUVByPoint'](_0x23cc3b['lng'],_0x23cc3b[_0x3ac049(0x2c0)]);if(_0x5cf6bf&&_0x5cf6bf[0x2]>0x0)break;}if(!_0x5cf6bf)return _0x54f828;const _0x1ef30d=_0x23cc3b['lng']+this['_calc_speedRate'][0x0]*_0x5cf6bf[0x0],_0xb4c976=_0x23cc3b['lat']+this[_0x3ac049(0x2c8)][0x1]*_0x5cf6bf[0x1];return _0x54f828[_0x3ac049(0x29d)]=_0x23cc3b['lng'],_0x54f828[_0x3ac049(0x2c0)]=_0x23cc3b['lat'],_0x54f828[_0x3ac049(0x297)]=_0x1ef30d,_0x54f828['tlat']=_0xb4c976,_0x54f828[_0x3ac049(0x23f)]=Math['round'](Math[_0x3ac049(0x2da)]()*this['maxAge']),_0x54f828['speed']=_0x5cf6bf[0x2],_0x54f828;}['destroy'](){for(const _0x37b1a4 in this){delete this[_0x37b1a4];}}}function fRandomByfloat(_0x32b42c,_0x4c7b2f){const _0x13b321=_0xf860f5;return _0x32b42c+Math[_0x13b321(0x2da)]()*(_0x4c7b2f-_0x32b42c);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x359050={}){const _0xaf732e=_0xf860f5;super(_0x359050),this[_0xaf732e(0x2c3)](_0x359050),this['canvas']=null,_0x359050['colors']&&_0x359050['steps']&&(this['_colorRamp']=new mars3d__namespace[(_0xaf732e(0x234))](_0x359050));}['_setOptionsHook'](_0x3778ef,_0x2c6ef2){const _0xb9cec1=_0xf860f5;this[_0xb9cec1(0x2cc)]=0x3e8/(_0x3778ef['frameRate']||0xa),this[_0xb9cec1(0x27d)]=this[_0xb9cec1(0x209)][_0xb9cec1(0x2e0)]??![],this['color']=_0x3778ef['color']||'#ffffff',this[_0xb9cec1(0x26f)]=_0x3778ef['lineWidth']||0x1,this['fixedHeight']=_0x3778ef['fixedHeight']??0x0,this['reverseY']=_0x3778ef[_0xb9cec1(0x2e1)]??![],this['windField']&&this['windField'][_0xb9cec1(0x29a)](_0x3778ef);}get['layer'](){return this['canvas'];}get['canvasWidth'](){const _0x496415=_0xf860f5;return this['_map']['scene'][_0x496415(0x2ba)]['clientWidth'];}get[_0xf860f5(0x256)](){const _0x13881a=_0xf860f5;return this[_0x13881a(0x1f8)][_0x13881a(0x20b)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set['pointerEvents'](_0x3d86f6){const _0x44a111=_0xf860f5;this['_pointerEvents']=_0x3d86f6;if(!this['canvas'])return;_0x3d86f6?this[_0x44a111(0x2ba)][_0x44a111(0x268)][_0x44a111(0x232)]=_0x44a111(0x210):this['canvas']['style']['pointer-events']='none';}get['particlesNumber'](){const _0x42b478=_0xf860f5;return this['options'][_0x42b478(0x298)];}set['particlesNumber'](_0x11cf03){const _0x570cea=_0xf860f5;this['options']['particlesNumber']=_0x11cf03,clearTimeout(this[_0x570cea(0x288)]),this['_canrefresh']=setTimeout(()=>{const _0x2fc32b=_0x570cea;this[_0x2fc32b(0x200)]();},0x1f4);}get['speedRate'](){const _0x6cd6ba=_0xf860f5;return this[_0x6cd6ba(0x209)]['speedRate'];}set['speedRate'](_0x46e947){const _0x2844af=_0xf860f5;this['options']['speedRate']=_0x46e947,this[_0x2844af(0x1fd)]&&(this['windField']['speedRate']=_0x46e947);}get[_0xf860f5(0x277)](){const _0x1a73ae=_0xf860f5;return this[_0x1a73ae(0x209)]['maxAge'];}set['maxAge'](_0x2279f1){const _0x3b10cc=_0xf860f5;this[_0x3b10cc(0x209)][_0x3b10cc(0x277)]=_0x2279f1,this[_0x3b10cc(0x1fd)]&&(this['windField']['maxAge']=_0x2279f1);}get['data'](){const _0x381303=_0xf860f5;return this[_0x381303(0x1f5)];}set[_0xf860f5(0x258)](_0x10faa5){this['setData'](_0x10faa5);}['_showHook'](_0x296eeb){const _0x521900=_0xf860f5;_0x296eeb?this['_addedHook']():(this[_0x521900(0x1f5)]&&(this[_0x521900(0x209)]['data']=this['windData']),this[_0x521900(0x25f)]());}[_0xf860f5(0x218)](){this['options']['worker']?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}['_addedHook'](){const _0x1742fb=_0xf860f5;this[_0x1742fb(0x2ba)]=this['_createCanvas'](),this['canvasContext']=this['canvas'][_0x1742fb(0x1fe)]('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options'][_0x1742fb(0x258)]&&this['setData'](this[_0x1742fb(0x209)]['data']);}['_removedHook'](){const _0x3ed6f5=_0xf860f5;this['clear'](),this['unbindEvent'](),this[_0x3ed6f5(0x2ba)]&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x15cd88=_0xf860f5,_0x17bd91=mars3d__namespace['DomUtil']['create']('canvas','mars3d-canvasWind',this['_map']['container']);return _0x17bd91[_0x15cd88(0x268)]['position']='absolute',_0x17bd91['style']['top']='0px',_0x17bd91['style']['left']=_0x15cd88(0x223),_0x17bd91['style']['width']=this['_map']['scene']['canvas']['clientWidth']+'px',_0x17bd91[_0x15cd88(0x268)][_0x15cd88(0x2c2)]=this['_map'][_0x15cd88(0x20b)]['canvas']['clientHeight']+'px',_0x17bd91['style']['pointerEvents']=this['_pointerEvents']?'auto':'none',_0x17bd91['style'][_0x15cd88(0x24c)]=this['options']['zIndex']??0x9,_0x17bd91[_0x15cd88(0x205)]=this['_map']['scene']['canvas']['clientWidth'],_0x17bd91['height']=this['_map'][_0x15cd88(0x20b)][_0x15cd88(0x2ba)][_0x15cd88(0x2af)],_0x17bd91;}[_0xf860f5(0x2cb)](){const _0x3bf136=_0xf860f5;this['canvas']&&(this['canvas']['style']['width']=this['_map'][_0x3bf136(0x20b)]['canvas']['clientWidth']+'px',this[_0x3bf136(0x2ba)]['style']['height']=this[_0x3bf136(0x1f8)]['scene']['canvas']['clientHeight']+'px',this['canvas'][_0x3bf136(0x205)]=this['_map']['scene']['canvas']['clientWidth'],this['canvas'][_0x3bf136(0x2c2)]=this['_map']['scene']['canvas']['clientHeight']);}['bindEvent'](){const _0x5bf950=_0xf860f5,_0x4180ff=this;let _0xfb467b=Date[_0x5bf950(0x29f)]();(function _0x394c01(){const _0xdd2dd9=_0x5bf950;_0x4180ff[_0xdd2dd9(0x1fb)]=window['requestAnimationFrame'](_0x394c01);if(_0x4180ff['show']&&_0x4180ff[_0xdd2dd9(0x1fd)]){const _0x485914=Date[_0xdd2dd9(0x29f)](),_0x5948ba=_0x485914-_0xfb467b;_0x5948ba>_0x4180ff['frameTime']&&(_0xfb467b=_0x485914-_0x5948ba%_0x4180ff[_0xdd2dd9(0x2cc)],_0x4180ff['update']());}}(),window['addEventListener']('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this[_0x5bf950(0x2b5)]=![],this[_0x5bf950(0x209)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType'][_0x5bf950(0x27c)],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x5bf950(0x295)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}['unbindEvent'](){const _0x30f7c8=_0xf860f5;window[_0x30f7c8(0x26b)](this['animateFrame']),delete this['animateFrame'],window[_0x30f7c8(0x25b)]('resize',this['resize']),this[_0x30f7c8(0x209)][_0x30f7c8(0x2ad)]&&(this['_map']['off'](mars3d__namespace[_0x30f7c8(0x294)]['wheel'],this['_onMapWhellEvent'],this),this['_map'][_0x30f7c8(0x246)](mars3d__namespace[_0x30f7c8(0x294)][_0x30f7c8(0x1e5)],this[_0x30f7c8(0x295)],this),this['_map']['off'](mars3d__namespace[_0x30f7c8(0x294)]['mouseUp'],this[_0x30f7c8(0x2e4)],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x30f7c8(0x2de)],this));}['_onMapWhellEvent'](_0x1bf4b8){const _0x3ff651=_0xf860f5;clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;this['canvas']['style']['visibility']='hidden',this[_0x3ff651(0x27f)]=setTimeout(()=>{const _0x469f9e=_0x3ff651;if(!this['show'])return;this[_0x469f9e(0x200)](),this['canvas'][_0x469f9e(0x268)]['visibility']='visible';},0xc8);}[_0xf860f5(0x295)](_0xb317c1){const _0x3e7166=_0xf860f5;this['mouse_down']=!![],this[_0x3e7166(0x1f8)]['off'](mars3d__namespace['EventType'][_0x3e7166(0x235)],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x315f56){const _0x451f5a=_0xf860f5;if(!this['show']||!this[_0x451f5a(0x2ba)])return;this[_0x451f5a(0x216)]&&(this['canvas']['style']['visibility']=_0x451f5a(0x213),this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x1f117c){const _0x2fa561=_0xf860f5;if(!this['show']||!this[_0x2fa561(0x2ba)])return;this[_0x2fa561(0x1f8)][_0x2fa561(0x246)](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['canvas'][_0x2fa561(0x268)]['visibility']='visible',this[_0x2fa561(0x216)]=![],this[_0x2fa561(0x2b5)]=![];}['setData'](_0x1cb982){this['clear'](),this['windData']=_0x1cb982,this['windField']['setDate'](_0x1cb982),this['redraw']();}['redraw'](){const _0x8a8bf8=_0xf860f5;if(!this[_0x8a8bf8(0x25e)])return;this['windField'][_0x8a8bf8(0x29a)](this['options']),this['update']();}['update'](){const _0x822404=_0xf860f5;if(this['_updateIng'])return;this['_updateIng']=!![];if(this['worker'])this['windField']['update']();else{const _0x38bf15=this[_0x822404(0x1fd)]['getParticles']();this[_0x822404(0x25a)](_0x38bf15);}this['_updateIng']=![];}['_drawLines'](_0x35f88a){const _0x26271d=_0xf860f5;this['canvasContext']['globalCompositeOperation']='destination-in',this[_0x26271d(0x229)][_0x26271d(0x22d)](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this[_0x26271d(0x229)]['globalCompositeOperation']='lighter',this['canvasContext']['globalAlpha']=0.9;const _0x3ed105=this['_map'][_0x26271d(0x20b)]['mode']!==Cesium['SceneMode'][_0x26271d(0x285)],_0x3cdf6c=this['canvasWidth']*0.25;if(this['_colorRamp'])for(let _0x4b4b82=0x0,_0x284c05=_0x35f88a['length'];_0x4b4b82<_0x284c05;_0x4b4b82++){const _0x3c02d3=_0x35f88a[_0x4b4b82],_0x5acfea=this[_0x26271d(0x264)](_0x3c02d3['lng'],_0x3c02d3['lat'],_0x3c02d3),_0x4ca6b4=this['_tomap'](_0x3c02d3[_0x26271d(0x297)],_0x3c02d3['tlat'],_0x3c02d3);if(!_0x5acfea||!_0x4ca6b4)continue;if(_0x3ed105&&Math['abs'](_0x5acfea[0x0]-_0x4ca6b4[0x0])>=_0x3cdf6c)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x26271d(0x26f)],this[_0x26271d(0x229)][_0x26271d(0x274)]=this['_colorRamp']['getColor'](_0x3c02d3['speed']),this[_0x26271d(0x229)][_0x26271d(0x1eb)](_0x5acfea[0x0],_0x5acfea[0x1]),this['canvasContext']['lineTo'](_0x4ca6b4[0x0],_0x4ca6b4[0x1]),this['canvasContext'][_0x26271d(0x2bb)]();}else{this[_0x26271d(0x229)]['beginPath'](),this[_0x26271d(0x229)][_0x26271d(0x26f)]=this['lineWidth'],this['canvasContext'][_0x26271d(0x274)]=this[_0x26271d(0x279)];for(let _0x48f5c6=0x0,_0x5492a4=_0x35f88a['length'];_0x48f5c6<_0x5492a4;_0x48f5c6++){const _0x4793b2=_0x35f88a[_0x48f5c6],_0x538f6f=this['_tomap'](_0x4793b2[_0x26271d(0x29d)],_0x4793b2[_0x26271d(0x2c0)],_0x4793b2),_0x5bca4c=this['_tomap'](_0x4793b2['tlng'],_0x4793b2[_0x26271d(0x28a)],_0x4793b2);if(!_0x538f6f||!_0x5bca4c)continue;if(_0x3ed105&&Math['abs'](_0x538f6f[0x0]-_0x5bca4c[0x0])>=_0x3cdf6c)continue;this['canvasContext'][_0x26271d(0x1eb)](_0x538f6f[0x0],_0x538f6f[0x1]),this['canvasContext']['lineTo'](_0x5bca4c[0x0],_0x5bca4c[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x1c0826,_0x43aafd,_0x48b294){const _0x25fca2=_0xf860f5,_0x4028ed=Cesium['Cartesian3']['fromDegrees'](_0x1c0826,_0x43aafd,this['fixedHeight']),_0x3ef3cb=this['_map']['scene'];if(_0x3ef3cb[_0x25fca2(0x22b)]===Cesium['SceneMode']['SCENE3D']){const _0x37937d=new Cesium[(_0x25fca2(0x2bd))](_0x3ef3cb['globe']['ellipsoid'],_0x3ef3cb['camera'][_0x25fca2(0x1f9)]),_0x25d433=_0x37937d['isPointVisible'](_0x4028ed);if(!_0x25d433)return _0x48b294['age']=0x0,null;}const _0x54d933=Cesium['SceneTransforms'][_0x25fca2(0x1f4)](this[_0x25fca2(0x1f8)]['scene'],_0x4028ed);return _0x54d933?[_0x54d933['x'],_0x54d933['y']]:null;}['clear'](){this['windField']['clear'](),delete this['windData'];}['initWorker'](){const _0x1318bf=_0xf860f5;this['worker']=new Worker(this['options'][_0x1318bf(0x282)]),this['worker'][_0x1318bf(0x23b)]=_0x316fab=>{const _0x5a0b43=_0x1318bf;this[_0x5a0b43(0x25a)](_0x316fab['data']['particles']),this[_0x5a0b43(0x1f1)]=![];},this[_0x1318bf(0x1fd)]={'init':_0x293336=>{this['worker']['postMessage']({'type':'init','options':_0x293336});},'setOptions':_0x4ac87b=>{this['worker']['postMessage']({'type':'setOptions','options':_0x4ac87b});},'setDate':_0x458279=>{const _0x40f565=_0x1318bf;this['worker']['postMessage']({'type':_0x40f565(0x208),'data':_0x458279});},'update':()=>{const _0x572629=_0x1318bf;if(this['_updateIng2'])return;this[_0x572629(0x1f1)]=!![],this['worker']['postMessage']({'type':_0x572629(0x2c4)});},'clear':()=>{const _0x31ea83=_0x1318bf;this[_0x31ea83(0x282)][_0x31ea83(0x23d)]({'type':_0x31ea83(0x203)});}},this['windField']['init'](this[_0x1318bf(0x209)]);}}mars3d__namespace['LayerUtil']['register']('canvasWind',CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports[_0xf860f5(0x280)]=WindLayer,exports['WindUtil']=WindUtil,Object[_0xf860f5(0x27b)](exports,_0xf860f5(0x215),{'value':!![]});function _0x4980(){const _0x157a82=['DrawCommand','off','getColorTexture','OPAQUE','BufferUsage','8282580oSqITf','VertexArray','zIndex','preExecute','createTexture','NEAREST','mouseUp','ymax','framebuffers','dropRateBump','cols','context','canvasHeight','_data','data','fill','_drawLines','removeEventListener','createRenderingTextures','west','show','_removedHook','ShaderProgram','GeometryAttribute','wind','umin','_tomap','randomBetween','addPrimitives','array','style','rows','particlesWind','cancelAnimationFrame','particlesTextureSize','speed','segmentsDepth','lineWidth','dropRate','shaderProgram','viewerParameters','particlesRendering','strokeStyle','currentParticlesSpeed','TextureMagnificationFilter','maxAge','nextTrailsDepth','color','create','defineProperty','wheel','_pointerEvents','log','refreshTimer','WindLayer','_onMap_preRenderEvent','worker','length','blending','SCENE3D','ymin','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','_canrefresh','drawingBufferHeight','tlat','mod','keys','STATIC_DRAW','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','pixelSize','lev','TWO_PI','segments','viewport','EventType','_onMouseDownEvent','commandType','tlng','particlesNumber','latRange','setOptions','updateViewerParameters','layer','lng','postProcessingSpeed','now','createWindTextures','updateSpeed','lon','Sampler','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','textures','createParticlesTextures','//\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','floor','blue','depthTexture','getRandomLatLng','removeAll','mouseHidden','currentParticlesPosition','clientHeight','2367228gtkbWi','Cartesian3','once','ceil','createRawRenderState','mouse_move','xmax','toDegrees','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','createFramebuffer','canvas','stroke','fromCssColorString','EllipsoidalOccluder','createCommand','particles','lat','autoClear','height','_setOptionsHook','update','xmin','push','ShaderSource','_calc_speedRate','clearFramebuffers','depthTest','resize','frameTime','clampToLatitudeRange','dimensions','Cartesian2','ComponentDatatype','TRIANGLES','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','preRender','umax','_bilinearInterpolation','RGB','primitives','getUVByXY','_calcUV','random','toGridXY','119aXZsvK','nextTrails','_onMouseMoveEvent','sqrt','pointerEvents','reverseY','colors','trails','_onMouseUpEvent','framebuffer','mouseDown','915794Wkhcer','3julzTx','createSegmentsGeometry','commandToExecute','primitiveType','moveTo','vertexArray','Math','SceneMode','windTextures','add','_updateIng2','fromGeometry','commandList','wgs84ToWindowCoordinates','windData','globe','speedFactor','_map','positionWC','colorTable','animateFrame','speedRate','windField','getContext','postProcessingPosition','redraw','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','outputTexture','clear','particlesComputing','width','green','10856120bFUZUz','setDate','options','vmax','scene','defined','attributeLocations','geometry','destroyParticlesTextures','all','particleSystem','default','hidden','PI_OVER_TWO','__esModule','mouse_down','getFullscreenQuad','_mountedHook','69810TqnkiO','north','updatePosition','destroy','globeBoundingSphere','Color','_addedHook','_speedRate','createComputingPrimitives','667192vIMMex','0px','lonRange','ellipsoid','nextTrailsColor','Compute','404eXKzVs','canvasContext','clearCommand','mode','forEach','fillRect','Geometry','segmentsColor','particlesTextures','south','pointer-events','rawRenderState','ColorRamp','mouseMove','ClearCommand','PixelDatatype','999ndrQxK','addEventListener','_maxAge','onmessage','min','postMessage','maxParticles','age','grid','FLOAT','28137TwxeZZ','Draw','rgb(206,255,255)'];_0x4980=function(){return _0x157a82;};return _0x4980();}
|
|
15
15
|
}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mars3d-wind",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.7",
|
|
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.7.
|
|
11
|
+
"mars3d": "~3.7.7"
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
14
|
"lint": "eslint ./src/**/*.{js,ts} --fix"
|