mars3d-wind 3.4.22 → 3.4.24
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.4.
|
|
5
|
-
* 编译日期:2023-02-
|
|
4
|
+
* 版本信息:v3.4.24
|
|
5
|
+
* 编译日期:2023-02-27 18:13:09
|
|
6
6
|
* 版权所有:Copyright by 火星科技 http://mars3d.cn
|
|
7
7
|
* 使用单位:免费公开版 ,2022-06-01
|
|
8
8
|
*/
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
|
|
12
12
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
|
|
13
13
|
})(this, (function (exports, mars3d) {
|
|
14
|
-
'use strict';var _0x28e3fd=_0x2ed4;function _0x2ed4(_0x5721e4,_0x15000d){var _0x3b5ba6=_0x3b5b();return _0x2ed4=function(_0x2ed45d,_0x2b6463){_0x2ed45d=_0x2ed45d-0x6b;var _0x3cd2dc=_0x3b5ba6[_0x2ed45d];return _0x3cd2dc;},_0x2ed4(_0x5721e4,_0x15000d);}(function(_0x463c40,_0x4e2603){var _0x5b44c8=_0x2ed4,_0x44dba6=_0x463c40();while(!![]){try{var _0x3b48a1=parseInt(_0x5b44c8(0x12b))/0x1+-parseInt(_0x5b44c8(0x80))/0x2*(parseInt(_0x5b44c8(0x7c))/0x3)+parseInt(_0x5b44c8(0x13c))/0x4+-parseInt(_0x5b44c8(0x14c))/0x5*(parseInt(_0x5b44c8(0xe5))/0x6)+parseInt(_0x5b44c8(0xd8))/0x7+parseInt(_0x5b44c8(0x151))/0x8*(parseInt(_0x5b44c8(0x8a))/0x9)+-parseInt(_0x5b44c8(0x10d))/0xa;if(_0x3b48a1===_0x4e2603)break;else _0x44dba6['push'](_0x44dba6['shift']());}catch(_0x179353){_0x44dba6['push'](_0x44dba6['shift']());}}}(_0x3b5b,0xed841));function _interopNamespace(_0x4ac792){var _0x49878f=_0x2ed4;if(_0x4ac792&&_0x4ac792[_0x49878f(0xf5)])return _0x4ac792;var _0x561a33=Object[_0x49878f(0xa6)](null);return _0x4ac792&&Object['keys'](_0x4ac792)['forEach'](function(_0x1c690e){if(_0x1c690e!=='default'){var _0x363574=Object['getOwnPropertyDescriptor'](_0x4ac792,_0x1c690e);Object['defineProperty'](_0x561a33,_0x1c690e,_0x363574['get']?_0x363574:{'enumerable':!![],'get':function(){return _0x4ac792[_0x1c690e];}});}}),_0x561a33['default']=_0x4ac792,_0x561a33;}var mars3d__namespace=_interopNamespace(mars3d),Cesium$7=mars3d__namespace['Cesium'];function getU(_0x22b278,_0x2e0fa8){var _0x490d9e=_0x2ed4,_0x4ebc96=_0x22b278*Math[_0x490d9e(0x138)](Cesium$7['Math']['toRadians'](_0x2e0fa8));return _0x4ebc96;}function getV(_0x201320,_0x4c593a){var _0x1e7ebe=_0x201320*Math['sin'](Cesium$7['Math']['toRadians'](_0x4c593a));return _0x1e7ebe;}function getSpeed(_0x352b04,_0x2c2e02){var _0x22dbf9=_0x2ed4,_0x52935e=Math['sqrt'](Math[_0x22dbf9(0x15e)](_0x352b04,0x2)+Math['pow'](_0x2c2e02,0x2));return _0x52935e;}function getDirection(_0x17b6a8,_0x582d71){var _0x3fde5d=_0x2ed4,_0x36167f=Cesium$7[_0x3fde5d(0x11e)][_0x3fde5d(0x154)](Math['atan2'](_0x582d71,_0x17b6a8));return _0x36167f+=_0x36167f<0x0?0x168:0x0,_0x36167f;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};function ownKeys(_0x2389f8,_0x3160a8){var _0x96d754=_0x2ed4,_0x5244e3=Object['keys'](_0x2389f8);if(Object['getOwnPropertySymbols']){var _0x3db1c8=Object[_0x96d754(0x6c)](_0x2389f8);_0x3160a8&&(_0x3db1c8=_0x3db1c8['filter'](function(_0x2fd11c){var _0x4d6766=_0x96d754;return Object['getOwnPropertyDescriptor'](_0x2389f8,_0x2fd11c)[_0x4d6766(0x6d)];})),_0x5244e3[_0x96d754(0xcb)]['apply'](_0x5244e3,_0x3db1c8);}return _0x5244e3;}function _objectSpread2(_0x4f945d){var _0x533722=_0x2ed4;for(var _0x486b5b=0x1;_0x486b5b<arguments[_0x533722(0x146)];_0x486b5b++){var _0x14999b=null!=arguments[_0x486b5b]?arguments[_0x486b5b]:{};_0x486b5b%0x2?ownKeys(Object(_0x14999b),!0x0)['forEach'](function(_0x4f67fa){_defineProperty(_0x4f945d,_0x4f67fa,_0x14999b[_0x4f67fa]);}):Object['getOwnPropertyDescriptors']?Object[_0x533722(0x156)](_0x4f945d,Object['getOwnPropertyDescriptors'](_0x14999b)):ownKeys(Object(_0x14999b))['forEach'](function(_0x518413){var _0x377d72=_0x533722;Object[_0x377d72(0xb5)](_0x4f945d,_0x518413,Object['getOwnPropertyDescriptor'](_0x14999b,_0x518413));});}return _0x4f945d;}function _classCallCheck(_0x6afdff,_0x22efc2){if(!(_0x6afdff instanceof _0x22efc2))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _defineProperties(_0x2c2cfc,_0x4c0085){var _0x4e09b7=_0x2ed4;for(var _0x2b547c=0x0;_0x2b547c<_0x4c0085['length'];_0x2b547c++){var _0x41cac0=_0x4c0085[_0x2b547c];_0x41cac0[_0x4e09b7(0x6d)]=_0x41cac0['enumerable']||![],_0x41cac0[_0x4e09b7(0x6f)]=!![];if('value'in _0x41cac0)_0x41cac0[_0x4e09b7(0xa1)]=!![];Object['defineProperty'](_0x2c2cfc,_0x41cac0['key'],_0x41cac0);}}function _0x3b5b(){var _0x18e271=['_calc_speedRate','getUVByPoint','frameRate','globalAlpha','depthMask','context','getUVByXY','_drawLines','sqrt','randomizeParticles','vertexArray','postProcessingSpeed','4172196uikWfH','dropRateBump','_setOptionsHook','maxAge','top','class','currentParticlesPosition','scene','_mountedHook','dimensions','ymax','ymin','defined','6rXmlga','particlesNumber','isInExtent','canvasHeight','createWindTextures','createRawRenderState','latRange','computeViewRectangle','unbindEvent','age','data','Invalid\x20attempt\x20to\x20spread\x20non-iterable\x20instance.\x0aIn\x20order\x20to\x20be\x20iterable,\x20non-array\x20objects\x20must\x20have\x20a\x20[Symbol.iterator]()\x20method.','primitives','PrimitiveType','particlesTextureSize','PrimitiveCollection','__esModule','rawRenderState','bindEvent','clearCommand','WindLayer','getWind','segments','redraw','isPointVisible','keys','particlesWind','commandList','nextTrails','undefined','clientHeight','clearFramebuffers','removeAll','mouseUp','getColorTexture','ComponentDatatype','getOptions','wind','windTextures','forEach','11921720uYVSth','fromDegrees','setAttribute','segmentsDepth','trails','max','pointerEvents','_tomap','fromCssColorString','Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function','FLOAT','Compute','options','currentTrails','mod','_pointerEvents','postMessage','Math','destroyParticlesTextures','currentParticlesSpeed','maxParticles','lonRange','applyViewerParameters','Texture','canvasContext','createTexture','depthTexture','viewerParameters','lng','shaderProgram','1053168okDcLj','globalCompositeOperation','postProcessingPosition','particlesComputing','initWorker','windField','_updateIng','createFramebuffer','particlesTextures','visibility','abs','nextTrailsDepth','attributeLocations','cos','SceneMode','commandType','lev','5332072Vnhmbl','addPrimitives','pointer-events','destroy','speedRate','NEAREST','lineWidth','Pass','BoundingSphere','Cartesian3','length','from','drawingBufferWidth','segmentsColor','getPrototypeOf','setOptions','7766455bfRnnE','geometry','preExecute','color','mouse_move','6358768RieCXC','prototype','requestAnimationFrame','toDegrees','isDestroyed','defineProperties','_calcUV','red','grid','valueOf','show','STATIC_DRAW','LayerUtil','pow','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\x0avarying\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=\x20texture2D(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture2D(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20nextSpeed;\x0a}','resize','log','clampToLatitudeRange','tlat','addEventListener','wheel','//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x20\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\x0avarying\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=\x20texture2D(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=\x20texture2D(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}','fromGeometry','apply','_onMouseMoveEvent','viewport','execute','_showHook','pixelSize','call','createComputingPrimitives','TextureMagnificationFilter','100%','mouse_down','SCENE3D','getOwnPropertySymbols','enumerable','_map','configurable','clear','toGridXY','reverseY','lat','uniform\x20sampler2D\x20segmentsColorTexture;\x0d\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0d\x0a\x0d\x0auniform\x20sampler2D\x20currentTrailsColor;\x0d\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0d\x0a\x0d\x0auniform\x20float\x20fadeOpacity;\x0d\x0a\x0d\x0avarying\x20vec2\x20textureCoordinate;\x0d\x0a\x0d\x0avoid\x20main()\x20{\x0d\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture2D(segmentsColorTexture,\x20textureCoordinate);\x0d\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture2D(currentTrailsColor,\x20textureCoordinate);\x0d\x0a\x0d\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\x0d\x0a\x0d\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture2D(segmentsDepthTexture,\x20textureCoordinate).r;\x0d\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture2D(trailsDepthTexture,\x20textureCoordinate).r;\x0d\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture2D(czm_globeDepthTexture,\x20textureCoordinate));\x0d\x0a\x0d\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(0.0);\x0d\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20gl_FragColor\x20+\x20pointsColor;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20gl_FragColor\x20+\x20trailsColor;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20gl_FragDepthEXT\x20=\x20min(pointsDepth,\x20trailsDepth);\x0d\x0a}','constructor','min','slice','udata','PI_OVER_TWO','createRenderingPrimitives','EventType','12KOSPlg','outputTexture','PixelDatatype','currentTrailsDepth','29366pqroUs','GeometryAttribute','0px','canvas','green','textures','Appearance','windData','container','Object','9yPHZYW','setDate','Cartesian2','particles','update','xmax','add','vmax','_onMouseUpEvent','uniformMap','layer','particleSystem','ShaderSource','tlng','refreshParticles','camera','createRenderingTextures','createParticlesTextures','_addedHook','fillRect','drawingBufferHeight','globeBoundingSphere','Cesium','writable','framebuffer','CanvasWindLayer','nextParticlesPosition','setData','create','canvasWind','screen','Draw','west','random','xmin','@@iterator','beginPath','style','lighter','lon','LUMINANCE','LINEAR','register','defineProperty','array','construct','blue','bind','off','_onMapWhellEvent','mouseDown','mode','canvasWidth','rows','vdata','colors','EllipsoidalOccluder','commandToExecute','hidden','none','particlesRendering','cols','framebuffers','removeChild','DepthFunction','push'];_0x3b5b=function(){return _0x18e271;};return _0x3b5b();}function _createClass(_0x2a4844,_0x1e2eea,_0x8b36da){var _0x18cc6a=_0x2ed4;if(_0x1e2eea)_defineProperties(_0x2a4844[_0x18cc6a(0x152)],_0x1e2eea);if(_0x8b36da)_defineProperties(_0x2a4844,_0x8b36da);return Object[_0x18cc6a(0xb5)](_0x2a4844,'prototype',{'writable':![]}),_0x2a4844;}function _defineProperty(_0x110358,_0x496646,_0x1948e2){return _0x496646 in _0x110358?Object['defineProperty'](_0x110358,_0x496646,{'value':_0x1948e2,'enumerable':!![],'configurable':!![],'writable':!![]}):_0x110358[_0x496646]=_0x1948e2,_0x110358;}function _inherits(_0x3bab90,_0x4c0437){var _0x239ca4=_0x2ed4;if(typeof _0x4c0437!=='function'&&_0x4c0437!==null)throw new TypeError(_0x239ca4(0x116));_0x3bab90['prototype']=Object[_0x239ca4(0xa6)](_0x4c0437&&_0x4c0437[_0x239ca4(0x152)],{'constructor':{'value':_0x3bab90,'writable':!![],'configurable':!![]}}),Object['defineProperty'](_0x3bab90,_0x239ca4(0x152),{'writable':![]});if(_0x4c0437)_setPrototypeOf(_0x3bab90,_0x4c0437);}function _getPrototypeOf(_0xdb70dc){var _0x3e6a4d=_0x2ed4;return _getPrototypeOf=Object['setPrototypeOf']?Object['getPrototypeOf'][_0x3e6a4d(0xb9)]():function _0x5cc829(_0x2b8ae6){var _0x585895=_0x3e6a4d;return _0x2b8ae6['__proto__']||Object[_0x585895(0x14a)](_0x2b8ae6);},_getPrototypeOf(_0xdb70dc);}function _setPrototypeOf(_0x236f7c,_0x2ffd61){return _setPrototypeOf=Object['setPrototypeOf']?Object['setPrototypeOf']['bind']():function _0x1db957(_0x2eeb9f,_0x2b6897){return _0x2eeb9f['__proto__']=_0x2b6897,_0x2eeb9f;},_setPrototypeOf(_0x236f7c,_0x2ffd61);}function _isNativeReflectConstruct(){var _0x577b25=_0x2ed4;if(typeof Reflect==='undefined'||!Reflect['construct'])return![];if(Reflect[_0x577b25(0xb7)]['sham'])return![];if(typeof Proxy==='function')return!![];try{return Boolean['prototype'][_0x577b25(0x15a)]['call'](Reflect['construct'](Boolean,[],function(){})),!![];}catch(_0x217d1f){return![];}}function _assertThisInitialized(_0x41b446){if(_0x41b446===void 0x0)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x41b446;}function _possibleConstructorReturn(_0x475b41,_0xfdca3a){if(_0xfdca3a&&(typeof _0xfdca3a==='object'||typeof _0xfdca3a==='function'))return _0xfdca3a;else{if(_0xfdca3a!==void 0x0)throw new TypeError('Derived\x20constructors\x20may\x20only\x20return\x20object\x20or\x20undefined');}return _assertThisInitialized(_0x475b41);}function _createSuper(_0x194b9b){var _0x583d0f=_isNativeReflectConstruct();return function _0x4fcc39(){var _0x23a888=_getPrototypeOf(_0x194b9b),_0x5deb71;if(_0x583d0f){var _0x5cbf3d=_getPrototypeOf(this)['constructor'];_0x5deb71=Reflect['construct'](_0x23a888,arguments,_0x5cbf3d);}else _0x5deb71=_0x23a888['apply'](this,arguments);return _possibleConstructorReturn(this,_0x5deb71);};}function _toConsumableArray(_0x2190b8){return _arrayWithoutHoles(_0x2190b8)||_iterableToArray(_0x2190b8)||_unsupportedIterableToArray(_0x2190b8)||_nonIterableSpread();}function _arrayWithoutHoles(_0x23ed51){if(Array['isArray'](_0x23ed51))return _arrayLikeToArray(_0x23ed51);}function _iterableToArray(_0x4548ef){var _0x434fce=_0x2ed4;if(typeof Symbol!==_0x434fce(0x102)&&_0x4548ef[Symbol['iterator']]!=null||_0x4548ef[_0x434fce(0xad)]!=null)return Array['from'](_0x4548ef);}function _unsupportedIterableToArray(_0x40a3dc,_0x342107){var _0x1d053b=_0x2ed4;if(!_0x40a3dc)return;if(typeof _0x40a3dc==='string')return _arrayLikeToArray(_0x40a3dc,_0x342107);var _0xf89f84=Object[_0x1d053b(0x152)]['toString']['call'](_0x40a3dc)[_0x1d053b(0x77)](0x8,-0x1);if(_0xf89f84===_0x1d053b(0x89)&&_0x40a3dc[_0x1d053b(0x75)])_0xf89f84=_0x40a3dc['constructor']['name'];if(_0xf89f84==='Map'||_0xf89f84==='Set')return Array[_0x1d053b(0x147)](_0x40a3dc);if(_0xf89f84==='Arguments'||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0xf89f84))return _arrayLikeToArray(_0x40a3dc,_0x342107);}function _arrayLikeToArray(_0x36fd20,_0xac09e2){var _0x5e8b7b=_0x2ed4;if(_0xac09e2==null||_0xac09e2>_0x36fd20[_0x5e8b7b(0x146)])_0xac09e2=_0x36fd20['length'];for(var _0x36b009=0x0,_0x15f16b=new Array(_0xac09e2);_0x36b009<_0xac09e2;_0x36b009++)_0x15f16b[_0x36b009]=_0x36fd20[_0x36b009];return _0x15f16b;}function _nonIterableSpread(){var _0x14dae1=_0x2ed4;throw new TypeError(_0x14dae1(0xf0));}var Cesium$6=mars3d__namespace[_0x28e3fd(0xa0)],CustomPrimitive=(function(){var _0x589272=_0x28e3fd;function _0x5f0601(_0xda9079){var _0x390ce0=_0x2ed4,_0x3a117c;_classCallCheck(this,_0x5f0601),this[_0x390ce0(0x13a)]=_0xda9079[_0x390ce0(0x13a)],this[_0x390ce0(0x14d)]=_0xda9079['geometry'],this[_0x390ce0(0x137)]=_0xda9079['attributeLocations'],this['primitiveType']=_0xda9079['primitiveType'],this[_0x390ce0(0x93)]=_0xda9079['uniformMap'],this['vertexShaderSource']=_0xda9079['vertexShaderSource'],this['fragmentShaderSource']=_0xda9079['fragmentShaderSource'],this['rawRenderState']=_0xda9079[_0x390ce0(0xf6)],this[_0x390ce0(0xa2)]=_0xda9079['framebuffer'],this[_0x390ce0(0x7d)]=_0xda9079['outputTexture'],this['autoClear']=(_0x3a117c=_0xda9079['autoClear'])!==null&&_0x3a117c!==void 0x0?_0x3a117c:![],this['preExecute']=_0xda9079[_0x390ce0(0x14e)],this[_0x390ce0(0x15b)]=!![],this['commandToExecute']=undefined,this[_0x390ce0(0xf8)]=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6['ClearCommand']({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this['framebuffer'],'pass':Cesium$6[_0x390ce0(0x143)]['OPAQUE']}));}return _createClass(_0x5f0601,[{'key':'createCommand','value':function _0x11a855(_0x246056){var _0x565c2d=_0x2ed4;switch(this['commandType']){case _0x565c2d(0xa9):{var _0x5a3184=Cesium$6['VertexArray']['fromGeometry']({'context':_0x246056,'geometry':this['geometry'],'attributeLocations':this[_0x565c2d(0x137)],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0x315a3b=Cesium$6['ShaderProgram']['fromCache']({'context':_0x246056,'attributeLocations':this[_0x565c2d(0x137)],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x3298bf=Cesium$6['RenderState']['fromCache'](this['rawRenderState']);return new Cesium$6['DrawCommand']({'primitiveType':this['primitiveType'],'shaderProgram':_0x315a3b,'vertexArray':_0x5a3184,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x3298bf,'uniformMap':this[_0x565c2d(0x93)],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE'],'pickOnly':!![],'owner':this});}case _0x565c2d(0x118):{return new Cesium$6['ComputeCommand']({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this['outputTexture'],'persists':!![]});}}}},{'key':'setGeometry','value':function _0x57b0a9(_0x5071f2,_0xf33a8c){var _0x398662=_0x2ed4;this[_0x398662(0x14d)]=_0xf33a8c;var _0x2325f6=Cesium$6['VertexArray'][_0x398662(0x167)]({'context':_0x5071f2,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this[_0x398662(0xc3)][_0x398662(0xd6)]=_0x2325f6;}},{'key':'update','value':function _0x177ff1(_0x54cf32){var _0xc68a08=_0x2ed4;if(!this['show'])return;if(_0x54cf32[_0xc68a08(0xbd)]!==Cesium$6['SceneMode'][_0xc68a08(0x6b)])return;!Cesium$6['defined'](this[_0xc68a08(0xc3)])&&(this['commandToExecute']=this['createCommand'](_0x54cf32[_0xc68a08(0xd1)])),Cesium$6['defined'](this['preExecute'])&&this['preExecute'](),Cesium$6[_0xc68a08(0xe4)](this[_0xc68a08(0xf8)])&&_0x54cf32['commandList']['push'](this['clearCommand']),_0x54cf32[_0xc68a08(0x100)][_0xc68a08(0xcb)](this['commandToExecute']);}},{'key':_0x589272(0x155),'value':function _0x26ab18(){return![];}},{'key':'destroy','value':function _0x136857(){var _0x26ef1c=_0x589272;if(this[_0x26ef1c(0xf8)]){var _0x14b50f,_0x4d5d42;(_0x14b50f=this['clearCommand'])!==null&&_0x14b50f!==void 0x0&&_0x14b50f['vertexArray']&&this['clearCommand'][_0x26ef1c(0xd6)]['destroy'](),(_0x4d5d42=this[_0x26ef1c(0xf8)])!==null&&_0x4d5d42!==void 0x0&&_0x4d5d42[_0x26ef1c(0x12a)]&&this[_0x26ef1c(0xf8)][_0x26ef1c(0x12a)]['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray'][_0x26ef1c(0x13f)](),this[_0x26ef1c(0xc3)]['shaderProgram']&&this['commandToExecute']['shaderProgram'][_0x26ef1c(0x13f)](),delete this[_0x26ef1c(0xc3)]),Cesium$6['destroyObject'](this);}}]),_0x5f0601;}()),Cesium$5=mars3d__namespace['Cesium'],Util=(function(){var _0x5239ec=function _0x197c19(){var _0x38fc65=_0x2ed4,_0x2b7ce3=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5[(_0x38fc65(0x81))]({'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[(_0x38fc65(0x81))]({'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 _0x2b7ce3;},_0x4f77b0=function _0x25ec52(_0x1e6de8,_0x1973f5){var _0x2f01bf=_0x2ed4;if(Cesium$5['defined'](_0x1973f5)){var _0x2cf70f={};_0x2cf70f['arrayBufferView']=_0x1973f5,_0x1e6de8['source']=_0x2cf70f;}var _0x42310c=new Cesium$5[(_0x2f01bf(0x124))](_0x1e6de8);return _0x42310c;},_0xfb4dcd=function _0x48e0da(_0x2c4f33,_0x325882,_0x61e66){var _0xddd049=new Cesium$5['Framebuffer']({'context':_0x2c4f33,'colorTextures':[_0x325882],'depthTexture':_0x61e66});return _0xddd049;},_0x5d53f7=function _0x8936d4(_0x6c34bf){var _0x1c8a59=_0x2ed4,_0x43cdfc=!![],_0x207c6c=![],_0x799f20={'viewport':_0x6c34bf[_0x1c8a59(0x16a)],'depthTest':_0x6c34bf['depthTest'],'depthMask':_0x6c34bf[_0x1c8a59(0xd0)],'blending':_0x6c34bf['blending']},_0x2da349=Cesium$5[_0x1c8a59(0x86)]['getDefaultRenderState'](_0x43cdfc,_0x207c6c,_0x799f20);return _0x2da349;},_0x2d84e1=function _0x254d59(_0x1c8867){var _0x40a565=_0x2ed4,_0x56591f={},_0x5140eb=Cesium$5['Math']['mod'](_0x1c8867[_0x40a565(0xaa)],Cesium$5[_0x40a565(0x11e)]['TWO_PI']),_0x202f7b=Cesium$5[_0x40a565(0x11e)][_0x40a565(0x11b)](_0x1c8867['east'],Cesium$5['Math']['TWO_PI']),_0x39924a=_0x1c8867['width'],_0x5585c7,_0xdf88c7;_0x39924a>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x5585c7=0x0,_0xdf88c7=Cesium$5['Math']['TWO_PI']):_0x202f7b-_0x5140eb<_0x39924a?(_0x5585c7=_0x5140eb,_0xdf88c7=_0x5140eb+_0x39924a):(_0x5585c7=_0x5140eb,_0xdf88c7=_0x202f7b);_0x56591f['lon']={'min':Cesium$5['Math']['toDegrees'](_0x5585c7),'max':Cesium$5['Math']['toDegrees'](_0xdf88c7)};var _0x289e5b=_0x1c8867['south'],_0x13999d=_0x1c8867['north'],_0xb91477=_0x1c8867['height'],_0x4fec69=_0xb91477>Cesium$5['Math']['PI']/0xc?_0xb91477/0x2:0x0,_0x3be5f0=Cesium$5['Math'][_0x40a565(0x162)](_0x289e5b-_0x4fec69),_0x1fb930=Cesium$5['Math']['clampToLatitudeRange'](_0x13999d+_0x4fec69);return _0x3be5f0<-Cesium$5['Math']['PI_OVER_THREE']&&(_0x3be5f0=-Cesium$5['Math'][_0x40a565(0x79)]),_0x1fb930>Cesium$5['Math']['PI_OVER_THREE']&&(_0x1fb930=Cesium$5['Math'][_0x40a565(0x79)]),_0x56591f['lat']={'min':Cesium$5['Math']['toDegrees'](_0x3be5f0),'max':Cesium$5['Math']['toDegrees'](_0x1fb930)},_0x56591f;};return{'getFullscreenQuad':_0x5239ec,'createTexture':_0x4f77b0,'createFramebuffer':_0xfb4dcd,'createRawRenderState':_0x5d53f7,'viewRectangleToLonLatRange':_0x2d84e1};}()),segmentDraw_vert='attribute\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0aattribute\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\x0avarying\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\x20\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x20\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x20\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=\x20texture2D(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture2D(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=\x20texture2D(postProcessingSpeed,\x20particleIndex).a;\x0a}',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0avarying\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20texture2D(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}',fullscreen_vert='attribute\x20vec3\x20position;\x0d\x0aattribute\x20vec2\x20st;\x0d\x0a\x0d\x0avarying\x20vec2\x20textureCoordinate;\x0d\x0a\x0d\x0avoid\x20main()\x20{\x0d\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0d\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0d\x0a}',trailDraw_frag=_0x28e3fd(0x74),screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0d\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0d\x0a\x0d\x0avarying\x20vec2\x20textureCoordinate;\x0d\x0a\x0d\x0avoid\x20main()\x20{\x0d\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture2D(trailsColorTexture,\x20textureCoordinate);\x0d\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture2D(trailsDepthTexture,\x20textureCoordinate).r;\x0d\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture2D(czm_globeDepthTexture,\x20textureCoordinate));\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20trailsColor;\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(0.0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}',Cesium$4=mars3d__namespace['Cesium'],ParticlesRendering=(function(){var _0x1af34e=_0x28e3fd;function _0x27bf07(_0x593fcf,_0x3de59f,_0x2ddf52,_0x38b102,_0x16848b){_classCallCheck(this,_0x27bf07),this['createRenderingTextures'](_0x593fcf,_0x3de59f,_0x2ddf52['colors']),this['createRenderingFramebuffers'](_0x593fcf),this['createRenderingPrimitives'](_0x593fcf,_0x2ddf52,_0x38b102,_0x16848b);}return _createClass(_0x27bf07,[{'key':_0x1af34e(0x9a),'value':function _0x26ad32(_0x5dc46f,_0x32771f,_0x153137){var _0x4bd959=_0x1af34e,_0x26e750={'context':_0x5dc46f,'width':_0x5dc46f['drawingBufferWidth'],'height':_0x5dc46f[_0x4bd959(0x9e)],'pixelFormat':Cesium$4['PixelFormat']['RGBA'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_BYTE']},_0xdf81d2={'context':_0x5dc46f,'width':_0x5dc46f['drawingBufferWidth'],'height':_0x5dc46f['drawingBufferHeight'],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x359a7a=_0x153137[_0x4bd959(0x146)],_0x1e09d2=new Float32Array(_0x359a7a*0x3);for(var _0x18c3cb=0x0;_0x18c3cb<_0x359a7a;_0x18c3cb++){var _0x2d603b=Cesium$4['Color'][_0x4bd959(0x115)](_0x153137[_0x18c3cb]);_0x1e09d2[0x3*_0x18c3cb]=_0x2d603b[_0x4bd959(0x158)],_0x1e09d2[0x3*_0x18c3cb+0x1]=_0x2d603b[_0x4bd959(0x84)],_0x1e09d2[0x3*_0x18c3cb+0x2]=_0x2d603b[_0x4bd959(0xb8)];}var _0x50ffff={'context':_0x5dc46f,'width':_0x359a7a,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype'][_0x4bd959(0x117)],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter'][_0x4bd959(0xb3)],'magnificationFilter':Cesium$4[_0x4bd959(0x170)]['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x26e750),'segmentsDepth':Util['createTexture'](_0xdf81d2),'currentTrailsColor':Util['createTexture'](_0x26e750),'currentTrailsDepth':Util['createTexture'](_0xdf81d2),'nextTrailsColor':Util[_0x4bd959(0x126)](_0x26e750),'nextTrailsDepth':Util['createTexture'](_0xdf81d2),'colorTable':Util['createTexture'](_0x50ffff,_0x1e09d2)};}},{'key':'createRenderingFramebuffers','value':function _0xb6e8e3(_0x430ec9){var _0x20daa6=_0x1af34e;this['framebuffers']={'segments':Util[_0x20daa6(0x132)](_0x430ec9,this['textures']['segmentsColor'],this['textures'][_0x20daa6(0x110)]),'currentTrails':Util['createFramebuffer'](_0x430ec9,this[_0x20daa6(0x85)]['currentTrailsColor'],this[_0x20daa6(0x85)][_0x20daa6(0x7f)]),'nextTrails':Util['createFramebuffer'](_0x430ec9,this['textures']['nextTrailsColor'],this['textures'][_0x20daa6(0x136)])};}},{'key':'createSegmentsGeometry','value':function _0x494028(_0x5cdf41){var _0x2c8cd1=_0x1af34e,_0x1c3bb5=0x4,_0x5b95b7=[];for(var _0x4ab0ea=0x0;_0x4ab0ea<_0x5cdf41['particlesTextureSize'];_0x4ab0ea++){for(var _0x281969=0x0;_0x281969<_0x5cdf41['particlesTextureSize'];_0x281969++){for(var _0x30c026=0x0;_0x30c026<_0x1c3bb5;_0x30c026++){_0x5b95b7['push'](_0x4ab0ea/_0x5cdf41['particlesTextureSize']),_0x5b95b7[_0x2c8cd1(0xcb)](_0x281969/_0x5cdf41[_0x2c8cd1(0xf3)]);}}}_0x5b95b7=new Float32Array(_0x5b95b7);var _0xc5e9ee=[],_0x4f21c2=[-0x1,0x1],_0x2e4f31=[-0x1,0x1];for(var _0x152afa=0x0;_0x152afa<_0x5cdf41['maxParticles'];_0x152afa++){for(var _0x7053dd=0x0;_0x7053dd<_0x1c3bb5/0x2;_0x7053dd++){for(var _0x59baf5=0x0;_0x59baf5<_0x1c3bb5/0x2;_0x59baf5++){_0xc5e9ee['push'](_0x4f21c2[_0x7053dd]),_0xc5e9ee['push'](_0x2e4f31[_0x59baf5]),_0xc5e9ee['push'](0x0);}}}_0xc5e9ee=new Float32Array(_0xc5e9ee);var _0x4143de=0x6*_0x5cdf41[_0x2c8cd1(0x121)],_0x1b97f7=new Uint32Array(_0x4143de);for(var _0x285343=0x0,_0x1c4330=0x0,_0x338867=0x0;_0x285343<_0x5cdf41[_0x2c8cd1(0x121)];_0x285343++){_0x1b97f7[_0x1c4330++]=_0x338867+0x0,_0x1b97f7[_0x1c4330++]=_0x338867+0x1,_0x1b97f7[_0x1c4330++]=_0x338867+0x2,_0x1b97f7[_0x1c4330++]=_0x338867+0x2,_0x1b97f7[_0x1c4330++]=_0x338867+0x1,_0x1b97f7[_0x1c4330++]=_0x338867+0x3,_0x338867+=0x4;}var _0x40663c=new Cesium$4['Geometry']({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4[(_0x2c8cd1(0x81))]({'componentDatatype':Cesium$4['ComponentDatatype'][_0x2c8cd1(0x117)],'componentsPerAttribute':0x2,'values':_0x5b95b7}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4[_0x2c8cd1(0x108)]['FLOAT'],'componentsPerAttribute':0x3,'values':_0xc5e9ee})}),'indices':_0x1b97f7});return _0x40663c;}},{'key':_0x1af34e(0x7a),'value':function _0x448faf(_0x1a45e3,_0x144213,_0x58cd80,_0x2402d){var _0x1c6e3c=_0x1af34e,_0x486292=this;this[_0x1c6e3c(0xf1)]={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'st':0x0,'normal':0x1},'geometry':this['createSegmentsGeometry'](_0x144213),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function _0x45b3c7(){var _0x7026fb=_0x1c6e3c;return _0x2402d['particlesTextures'][_0x7026fb(0xde)];},'postProcessingPosition':function _0x4c8779(){var _0x39b344=_0x1c6e3c;return _0x2402d[_0x39b344(0x133)]['postProcessingPosition'];},'postProcessingSpeed':function _0x2b3933(){var _0x655df0=_0x1c6e3c;return _0x2402d[_0x655df0(0x133)]['postProcessingSpeed'];},'colorTable':function _0x27809e(){return _0x486292['textures']['colorTable'];},'aspect':function _0x31fbb9(){var _0x5a3356=_0x1c6e3c;return _0x1a45e3[_0x5a3356(0x148)]/_0x1a45e3[_0x5a3356(0x9e)];},'pixelSize':function _0x39f8b7(){return _0x58cd80['pixelSize'];},'lineWidth':function _0x79eadb(){return _0x144213['lineWidth'];},'particleHeight':function _0x4e18c8(){return _0x144213['particleHeight'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_frag]}),'rawRenderState':Util[_0x1c6e3c(0xea)]({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers'][_0x1c6e3c(0xfb)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function _0x45ae75(){var _0x2076b6=_0x1c6e3c;return _0x486292['textures'][_0x2076b6(0x149)];},'segmentsDepthTexture':function _0x308dba(){return _0x486292['textures']['segmentsDepth'];},'currentTrailsColor':function _0x3bd09a(){var _0x44cc7d=_0x1c6e3c;return _0x486292[_0x44cc7d(0xc8)][_0x44cc7d(0x11a)][_0x44cc7d(0x107)](0x0);},'trailsDepthTexture':function _0x552e65(){var _0x440dfa=_0x1c6e3c;return _0x486292[_0x440dfa(0xc8)]['currentTrails']['depthTexture'];},'fadeOpacity':function _0x3430ba(){return _0x144213['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0x1c6e3c(0x96))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x1c6e3c(0xca)]['ALWAYS']},'depthMask':!![]}),'framebuffer':this[_0x1c6e3c(0xc8)]['nextTrails'],'autoClear':!![],'preExecute':function _0x2ce99f(){var _0x161fe7=_0x1c6e3c,_0x17cd1f=_0x486292['framebuffers']['currentTrails'];_0x486292['framebuffers'][_0x161fe7(0x11a)]=_0x486292['framebuffers']['nextTrails'],_0x486292['framebuffers']['nextTrails']=_0x17cd1f,_0x486292[_0x161fe7(0xf1)]['trails']['commandToExecute']['framebuffer']=_0x486292['framebuffers']['nextTrails'],_0x486292['primitives'][_0x161fe7(0x111)]['clearCommand']['framebuffer']=_0x486292[_0x161fe7(0xc8)][_0x161fe7(0x101)];}}),'screen':new CustomPrimitive({'commandType':_0x1c6e3c(0xa9),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x1c6e3c(0xf2)]['TRIANGLES'],'uniformMap':{'trailsColorTexture':function _0x5a34e5(){var _0x553ad4=_0x1c6e3c;return _0x486292[_0x553ad4(0xc8)][_0x553ad4(0x101)]['getColorTexture'](0x0);},'trailsDepthTexture':function _0x52c5ab(){var _0x447a6d=_0x1c6e3c;return _0x486292['framebuffers']['nextTrails'][_0x447a6d(0x127)];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util[_0x1c6e3c(0xea)]({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}]),_0x27bf07;}()),getWind_frag=_0x28e3fd(0x166),updateSpeed_frag=_0x28e3fd(0x15f),updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0avarying\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\x20gl_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=\x20texture2D(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture2D(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\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\x0avarying\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=\x20texture2D(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture2D(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\x20gl_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\x20gl_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}',postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0avarying\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture2D(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture2D(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}',Cesium$3=mars3d__namespace['Cesium'],ParticlesComputing=(function(){var _0x13e042=_0x28e3fd;function _0x3e791(_0x5e4ae5,_0x28551a,_0x253d5d,_0x149d2c){var _0x335c7a=_0x2ed4;_classCallCheck(this,_0x3e791),this['data']=_0x28551a,this['createWindTextures'](_0x5e4ae5,_0x28551a),this[_0x335c7a(0x9b)](_0x5e4ae5,_0x253d5d,_0x149d2c),this['createComputingPrimitives'](_0x28551a,_0x253d5d,_0x149d2c);}return _createClass(_0x3e791,[{'key':_0x13e042(0xe9),'value':function _0xd9f58f(_0x2f28ef,_0x37c214){var _0x3756e7=_0x13e042,_0x441636={'context':_0x2f28ef,'width':_0x37c214['dimensions']['lon'],'height':_0x37c214['dimensions']['lat']*(_0x37c214['dimensions'][_0x3756e7(0x13b)]||0x1),'pixelFormat':Cesium$3['PixelFormat'][_0x3756e7(0xb2)],'pixelDatatype':Cesium$3[_0x3756e7(0x7e)]['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3[_0x3756e7(0x170)]['NEAREST']})};this[_0x3756e7(0x10b)]={'U':Util['createTexture'](_0x441636,_0x37c214['U']['array']),'V':Util['createTexture'](_0x441636,_0x37c214['V'][_0x3756e7(0xb6)])};}},{'key':'createParticlesTextures','value':function _0x37b530(_0x1280a8,_0x4a227b,_0xa826dd){var _0x10cdad=_0x13e042,_0xdba324={'context':_0x1280a8,'width':_0x4a227b['particlesTextureSize'],'height':_0x4a227b['particlesTextureSize'],'pixelFormat':Cesium$3['PixelFormat']['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x10cdad(0x141)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x10cdad(0x141)]})},_0x185d43=this['randomizeParticles'](_0x4a227b[_0x10cdad(0x121)],_0xa826dd),_0x48f2fc=new Float32Array(0x4*_0x4a227b['maxParticles'])['fill'](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0xdba324),'currentParticlesPosition':Util['createTexture'](_0xdba324,_0x185d43),'nextParticlesPosition':Util['createTexture'](_0xdba324,_0x185d43),'currentParticlesSpeed':Util[_0x10cdad(0x126)](_0xdba324,_0x48f2fc),'nextParticlesSpeed':Util['createTexture'](_0xdba324,_0x48f2fc),'postProcessingPosition':Util['createTexture'](_0xdba324,_0x185d43),'postProcessingSpeed':Util[_0x10cdad(0x126)](_0xdba324,_0x48f2fc)};}},{'key':_0x13e042(0xd5),'value':function _0x4e6e1b(_0x537113,_0x161503){var _0x114cb4=_0x13e042,_0x43f64d=new Float32Array(0x4*_0x537113);for(var _0x3d272b=0x0;_0x3d272b<_0x537113;_0x3d272b++){_0x43f64d[0x4*_0x3d272b]=Cesium$3['Math']['randomBetween'](_0x161503['lonRange']['x'],_0x161503['lonRange']['y']),_0x43f64d[0x4*_0x3d272b+0x1]=Cesium$3['Math']['randomBetween'](_0x161503['latRange']['x'],_0x161503[_0x114cb4(0xeb)]['y']),_0x43f64d[0x4*_0x3d272b+0x2]=Cesium$3['Math']['randomBetween'](this['data'][_0x114cb4(0x13b)]['min'],this['data']['lev']['max']),_0x43f64d[0x4*_0x3d272b+0x3]=0x0;}return _0x43f64d;}},{'key':'destroyParticlesTextures','value':function _0x33d59e(){var _0x5809ac=_0x13e042,_0xbb5577=this;Object[_0x5809ac(0xfe)](this[_0x5809ac(0x133)])[_0x5809ac(0x10c)](function(_0x46e90b){var _0x42d528=_0x5809ac;_0xbb5577[_0x42d528(0x133)][_0x46e90b][_0x42d528(0x13f)]();});}},{'key':_0x13e042(0x16f),'value':function _0x37234a(_0x4591bf,_0x5cb3f6,_0x55668a){var _0x3e67aa=_0x13e042,_0x234f1f=new Cesium$3['Cartesian3'](_0x4591bf['dimensions']['lon'],_0x4591bf['dimensions']['lat'],_0x4591bf['dimensions'][_0x3e67aa(0x13b)]),_0x49bcfc=new Cesium$3['Cartesian3'](_0x4591bf[_0x3e67aa(0xb1)]['min'],_0x4591bf[_0x3e67aa(0x73)][_0x3e67aa(0x76)],_0x4591bf['lev'][_0x3e67aa(0x76)]),_0x123f03=new Cesium$3['Cartesian3'](_0x4591bf['lon'][_0x3e67aa(0x112)],_0x4591bf['lat'][_0x3e67aa(0x112)],_0x4591bf[_0x3e67aa(0x13b)]['max']),_0x420f2e=new Cesium$3['Cartesian3']((_0x123f03['x']-_0x49bcfc['x'])/(_0x234f1f['x']-0x1),(_0x123f03['y']-_0x49bcfc['y'])/(_0x234f1f['y']-0x1),_0x234f1f['z']>0x1?(_0x123f03['z']-_0x49bcfc['z'])/(_0x234f1f['z']-0x1):0x1),_0x51611c=new Cesium$3['Cartesian2'](_0x4591bf['U']['min'],_0x4591bf['U']['max']),_0x1aa25b=new Cesium$3['Cartesian2'](_0x4591bf['V'][_0x3e67aa(0x76)],_0x4591bf['V']['max']),_0x4f8598=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':_0x3e67aa(0x118),'uniformMap':{'U':function _0x2e7fb3(){return _0x4f8598['windTextures']['U'];},'V':function _0x44fda9(){var _0x181c5a=_0x3e67aa;return _0x4f8598[_0x181c5a(0x10b)]['V'];},'currentParticlesPosition':function _0x58d54f(){var _0x2a7246=_0x3e67aa;return _0x4f8598['particlesTextures'][_0x2a7246(0xde)];},'dimension':function _0x16d654(){return _0x234f1f;},'minimum':function _0x4a6c48(){return _0x49bcfc;},'maximum':function _0x43d4be(){return _0x123f03;},'interval':function _0x114e2c(){return _0x420f2e;}},'fragmentShaderSource':new Cesium$3[(_0x3e67aa(0x96))]({'sources':[getWind_frag]}),'outputTexture':this['particlesTextures'][_0x3e67aa(0xff)],'preExecute':function _0x28839b(){var _0x4cbd3d=_0x3e67aa;_0x4f8598[_0x4cbd3d(0xf1)]['getWind']['commandToExecute'][_0x4cbd3d(0x7d)]=_0x4f8598[_0x4cbd3d(0x133)][_0x4cbd3d(0xff)];}}),'updateSpeed':new CustomPrimitive({'commandType':_0x3e67aa(0x118),'uniformMap':{'currentParticlesSpeed':function _0x2fab38(){return _0x4f8598['particlesTextures']['currentParticlesSpeed'];},'particlesWind':function _0x2e4b08(){var _0x48f57a=_0x3e67aa;return _0x4f8598['particlesTextures'][_0x48f57a(0xff)];},'uSpeedRange':function _0x5ef2fc(){return _0x51611c;},'vSpeedRange':function _0x49526e(){return _0x1aa25b;},'pixelSize':function _0x5b55f8(){var _0x3bb187=_0x3e67aa;return _0x55668a[_0x3bb187(0x16d)];},'speedFactor':function _0x440ba6(){return _0x5cb3f6['speedFactor'];}},'fragmentShaderSource':new Cesium$3[(_0x3e67aa(0x96))]({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function _0x2e0209(){var _0x1ac6bd=_0x3e67aa,_0x2aa9c2=_0x4f8598['particlesTextures']['currentParticlesSpeed'];_0x4f8598['particlesTextures'][_0x1ac6bd(0x120)]=_0x4f8598['particlesTextures']['postProcessingSpeed'],_0x4f8598[_0x1ac6bd(0x133)]['postProcessingSpeed']=_0x2aa9c2,_0x4f8598[_0x1ac6bd(0xf1)]['updateSpeed'][_0x1ac6bd(0xc3)]['outputTexture']=_0x4f8598[_0x1ac6bd(0x133)]['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function _0x24db43(){return _0x4f8598['particlesTextures']['currentParticlesPosition'];},'currentParticlesSpeed':function _0x436a06(){var _0x3c89f6=_0x3e67aa;return _0x4f8598[_0x3c89f6(0x133)]['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x3e67aa(0x96))]({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function _0x450f20(){var _0x309955=_0x3e67aa,_0x38c154=_0x4f8598['particlesTextures']['currentParticlesPosition'];_0x4f8598[_0x309955(0x133)]['currentParticlesPosition']=_0x4f8598['particlesTextures']['postProcessingPosition'],_0x4f8598['particlesTextures'][_0x309955(0x12d)]=_0x38c154,_0x4f8598['primitives']['updatePosition']['commandToExecute']['outputTexture']=_0x4f8598['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function _0x3cbcae(){var _0x10e5c8=_0x3e67aa;return _0x4f8598['particlesTextures'][_0x10e5c8(0xa4)];},'nextParticlesSpeed':function _0x585a79(){return _0x4f8598['particlesTextures']['nextParticlesSpeed'];},'lonRange':function _0x2733ea(){return _0x55668a['lonRange'];},'latRange':function _0x1aeea9(){var _0x1bee29=_0x3e67aa;return _0x55668a[_0x1bee29(0xeb)];},'randomCoefficient':function _0x2e6df1(){var _0x540148=Math['random']();return _0x540148;},'dropRate':function _0x14ee76(){return _0x5cb3f6['dropRate'];},'dropRateBump':function _0x33de58(){var _0xada776=_0x3e67aa;return _0x5cb3f6[_0xada776(0xd9)];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures'][_0x3e67aa(0x12d)],'preExecute':function _0x1374b2(){var _0x3b9832=_0x3e67aa;_0x4f8598['primitives'][_0x3b9832(0x12d)]['commandToExecute']['outputTexture']=_0x4f8598['particlesTextures'][_0x3b9832(0x12d)];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'postProcessingPosition':function _0xe8cf0d(){return _0x4f8598['particlesTextures']['postProcessingPosition'];},'nextParticlesSpeed':function _0x43b803(){var _0x307b01=_0x3e67aa;return _0x4f8598[_0x307b01(0x133)]['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures'][_0x3e67aa(0xd7)],'preExecute':function _0xfe1a3b(){var _0x12c1e8=_0x3e67aa;_0x4f8598['primitives']['postProcessingSpeed']['commandToExecute']['outputTexture']=_0x4f8598[_0x12c1e8(0x133)]['postProcessingSpeed'];}})};}}]),_0x3e791;}()),Cesium$2=mars3d__namespace['Cesium'],ParticleSystem=(function(){var _0x22daf5=_0x28e3fd;function _0xb43e8d(_0x44a4f5,_0x39a2de,_0x4c5967,_0x4d761f){var _0x2a4b9c=_0x2ed4;_classCallCheck(this,_0xb43e8d),this[_0x2a4b9c(0xd1)]=_0x44a4f5,_0x39a2de=_objectSpread2({},_0x39a2de);if(_0x39a2de['udata']&&_0x39a2de['vdata']){var _0x3b0337,_0x21c08e,_0x1c70f2,_0x5f28f3,_0xe860a6,_0x195d55;_0x39a2de[_0x2a4b9c(0xe1)]={},_0x39a2de['dimensions'][_0x2a4b9c(0xb1)]=_0x39a2de['cols'],_0x39a2de['dimensions']['lat']=_0x39a2de[_0x2a4b9c(0xbf)],_0x39a2de['dimensions']['lev']=_0x39a2de['lev']||0x1,_0x39a2de[_0x2a4b9c(0xb1)]={},_0x39a2de['lon'][_0x2a4b9c(0x76)]=_0x39a2de['xmin'],_0x39a2de['lon']['max']=_0x39a2de['xmax'],_0x39a2de['lat']={},_0x39a2de[_0x2a4b9c(0x73)]['min']=_0x39a2de['ymin'],_0x39a2de['lat']['max']=_0x39a2de['ymax'],_0x39a2de[_0x2a4b9c(0x13b)]={},_0x39a2de['lev'][_0x2a4b9c(0x76)]=(_0x3b0337=_0x39a2de['levmin'])!==null&&_0x3b0337!==void 0x0?_0x3b0337:0x1,_0x39a2de['lev'][_0x2a4b9c(0x112)]=(_0x21c08e=_0x39a2de['levmax'])!==null&&_0x21c08e!==void 0x0?_0x21c08e:0x1,_0x39a2de['U']={},_0x39a2de['U'][_0x2a4b9c(0xb6)]=new Float32Array(_0x39a2de['udata']),_0x39a2de['U']['min']=(_0x1c70f2=_0x39a2de['umin'])!==null&&_0x1c70f2!==void 0x0?_0x1c70f2:Math['min']['apply'](Math,_toConsumableArray(_0x39a2de[_0x2a4b9c(0x78)])),_0x39a2de['U'][_0x2a4b9c(0x112)]=(_0x5f28f3=_0x39a2de['umax'])!==null&&_0x5f28f3!==void 0x0?_0x5f28f3:Math['max'][_0x2a4b9c(0x168)](Math,_toConsumableArray(_0x39a2de['udata'])),_0x39a2de['V']={},_0x39a2de['V']['array']=new Float32Array(_0x39a2de[_0x2a4b9c(0xc0)]),_0x39a2de['V'][_0x2a4b9c(0x76)]=(_0xe860a6=_0x39a2de['vmin'])!==null&&_0xe860a6!==void 0x0?_0xe860a6:Math['min']['apply'](Math,_toConsumableArray(_0x39a2de[_0x2a4b9c(0xc0)])),_0x39a2de['V']['max']=(_0x195d55=_0x39a2de[_0x2a4b9c(0x91)])!==null&&_0x195d55!==void 0x0?_0x195d55:Math[_0x2a4b9c(0x112)]['apply'](Math,_toConsumableArray(_0x39a2de['vdata']));}this['data']=_0x39a2de,this[_0x2a4b9c(0x119)]=_0x4c5967,this['viewerParameters']=_0x4d761f,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this[_0x2a4b9c(0xd1)],this[_0x2a4b9c(0xef)],this['options'],this[_0x2a4b9c(0x128)],this['particlesComputing']);}return _createClass(_0xb43e8d,[{'key':'canvasResize','value':function _0x55fe98(_0x2b84e3){var _0x56e8c8=_0x2ed4,_0x105daa=this;this[_0x56e8c8(0x12e)][_0x56e8c8(0x11f)](),Object['keys'](this[_0x56e8c8(0x12e)]['windTextures'])['forEach'](function(_0x2b04ce){var _0x10db8f=_0x56e8c8;_0x105daa['particlesComputing']['windTextures'][_0x2b04ce][_0x10db8f(0x13f)]();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object[_0x56e8c8(0xfe)](this['particlesRendering']['framebuffers'])['forEach'](function(_0x2dc8cf){var _0x35732a=_0x56e8c8;_0x105daa[_0x35732a(0xc6)]['framebuffers'][_0x2dc8cf][_0x35732a(0x13f)]();}),this['context']=_0x2b84e3,this[_0x56e8c8(0x12e)]=new ParticlesComputing(this['context'],this[_0x56e8c8(0xef)],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0x56e8c8(0xef)],this['options'],this['viewerParameters'],this[_0x56e8c8(0x12e)]);}},{'key':_0x22daf5(0x104),'value':function _0x3ed04c(){var _0x2f360a=_0x22daf5,_0x512a94=this,_0x21e8d6=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});Object[_0x2f360a(0xfe)](this['particlesRendering']['framebuffers'])[_0x2f360a(0x10c)](function(_0x33cc80){var _0x2a9066=_0x2f360a;_0x21e8d6[_0x2a9066(0xa2)]=_0x512a94['particlesRendering'][_0x2a9066(0xc8)][_0x33cc80],_0x21e8d6[_0x2a9066(0x16b)](_0x512a94['context']);});}},{'key':_0x22daf5(0x98),'value':function _0x99b2a(_0x4b89d9){var _0x437b95=_0x22daf5;this['clearFramebuffers'](),this[_0x437b95(0x12e)]['destroyParticlesTextures'](),this['particlesComputing']['createParticlesTextures'](this['context'],this[_0x437b95(0x119)],this['viewerParameters']);if(_0x4b89d9){var _0x3e857e=this['particlesRendering']['createSegmentsGeometry'](this[_0x437b95(0x119)]);this['particlesRendering']['primitives']['segments']['geometry']=_0x3e857e;var _0x4d86b4=Cesium$2['VertexArray'][_0x437b95(0x167)]({'context':this['context'],'geometry':_0x3e857e,'attributeLocations':this[_0x437b95(0xc6)]['primitives']['segments'][_0x437b95(0x137)],'bufferUsage':Cesium$2['BufferUsage'][_0x437b95(0x15c)]});this['particlesRendering'][_0x437b95(0xf1)]['segments']['commandToExecute'][_0x437b95(0xd6)]=_0x4d86b4;}}},{'key':'setOptions','value':function _0x45d2a3(_0x4a2a16){var _0x3c76c5=_0x22daf5,_0x252a19=this,_0x9bae92=![];this['options']['maxParticles']!==_0x4a2a16[_0x3c76c5(0x121)]&&(_0x9bae92=!![]),Object['keys'](_0x4a2a16)[_0x3c76c5(0x10c)](function(_0x42c632){var _0x5ba9e2=_0x3c76c5;_0x252a19[_0x5ba9e2(0x119)][_0x42c632]=_0x4a2a16[_0x42c632];}),this[_0x3c76c5(0x98)](_0x9bae92);}},{'key':'applyViewerParameters','value':function _0x1b5419(_0x3c6e9a){var _0x41fd88=_0x22daf5,_0x4aac8a=this;Object['keys'](_0x3c6e9a)['forEach'](function(_0x27461f){var _0x45c18b=_0x2ed4;_0x4aac8a[_0x45c18b(0x128)][_0x27461f]=_0x3c6e9a[_0x27461f];}),this[_0x41fd88(0x98)](![]);}},{'key':'destroy','value':function _0x42e9a2(){var _0x1a5324=_0x22daf5,_0x5f161b=this;clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing'][_0x1a5324(0x10b)])['forEach'](function(_0x54677e){var _0xcf72e1=_0x1a5324;_0x5f161b['particlesComputing'][_0xcf72e1(0x10b)][_0x54677e]['destroy']();}),this['particlesRendering'][_0x1a5324(0x85)]['colorTable']['destroy'](),Object['keys'](this[_0x1a5324(0xc6)][_0x1a5324(0xc8)])[_0x1a5324(0x10c)](function(_0x9f7a91){var _0x49c6af=_0x1a5324;_0x5f161b['particlesRendering'][_0x49c6af(0xc8)][_0x9f7a91]['destroy']();});for(var _0x55b0d7 in this){delete this[_0x55b0d7];}}}]),_0xb43e8d;}()),Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer']['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':['rgb(206,255,255)']},WindLayer=function(_0xf2bec){var _0x334db8=_0x28e3fd;_inherits(_0x42bca0,_0xf2bec);var _0x54f972=_createSuper(_0x42bca0);function _0x42bca0(){var _0x5603a5=_0x2ed4,_0x440f99,_0x200cad=arguments[_0x5603a5(0x146)]>0x0&&arguments[0x0]!==undefined?arguments[0x0]:{};return _classCallCheck(this,_0x42bca0),_0x200cad=_objectSpread2(_objectSpread2({},DEF_OPTIONS),_0x200cad),_0x440f99=_0x54f972['call'](this,_0x200cad),_0x440f99['_setOptionsHook'](_0x200cad),_0x440f99;}return _createClass(_0x42bca0,[{'key':'layer','get':function _0x5ae681(){return this['primitives'];}},{'key':_0x334db8(0xef),'get':function _0x2e4839(){return this['_data'];},'set':function _0x4be966(_0x10cd2d){var _0x1b3e4f=_0x334db8;this[_0x1b3e4f(0xa5)](_0x10cd2d);}},{'key':_0x334db8(0xc1),'get':function _0x44b72d(){return this['options']['colors'];},'set':function _0xd32c96(_0x386e5e){this['options']['colors']=_0x386e5e,this['particleSystem']&&this['particleSystem']['setOptions']({'colors':_0x386e5e}),this['resize']();}},{'key':'_mountedHook','value':function _0x24c86d(){}},{'key':_0x334db8(0x9c),'value':function _0x522e56(){var _0x4849d2=_0x334db8;this['scene']=this['_map'][_0x4849d2(0xdf)],this['camera']=this['_map']['camera'],this['primitives']=new Cesium$1[(_0x4849d2(0xf4))](),this['_map']['scene']['primitives']['add'](this['primitives']),this['viewerParameters']={'lonRange':new Cesium$1[(_0x4849d2(0x8c))](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0},this[_0x4849d2(0x9f)]=new Cesium$1[(_0x4849d2(0x144))](Cesium$1[_0x4849d2(0x145)]['ZERO'],0.99*0x615299),this['updateViewerParameters'](),window[_0x4849d2(0x164)](_0x4849d2(0x160),this[_0x4849d2(0x160)][_0x4849d2(0xb9)](this),![]),this[_0x4849d2(0x172)]=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace[_0x4849d2(0x7b)]['wheel'],this['_onMapWhellEvent'],this),this[_0x4849d2(0x6e)]['on'](mars3d__namespace[_0x4849d2(0x7b)]['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x4849d2(0x7b)]['mouseUp'],this['_onMouseUpEvent'],this),this[_0x4849d2(0x6e)]['on'](mars3d__namespace['EventType']['mouseMove'],this[_0x4849d2(0x169)],this),this['_data']&&this['setData'](this['_data']);}},{'key':'_removedHook','value':function _0x174118(){var _0x5ec0dc=_0x334db8;window['removeEventListener'](_0x5ec0dc(0x160),this['resize']),this[_0x5ec0dc(0x6e)]['off'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this[_0x5ec0dc(0x6e)]['off'](mars3d__namespace['EventType']['wheel'],this[_0x5ec0dc(0xbb)],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map'][_0x5ec0dc(0xba)](mars3d__namespace[_0x5ec0dc(0x7b)]['mouseUp'],this['_onMouseUpEvent'],this),this[_0x5ec0dc(0x6e)][_0x5ec0dc(0xba)](mars3d__namespace['EventType']['mouseMove'],this[_0x5ec0dc(0x169)],this),this['primitives'][_0x5ec0dc(0x105)](),this['_map'][_0x5ec0dc(0xdf)]['primitives']['remove'](this['primitives']);}},{'key':'resize','value':function _0x3fdc18(){var _0x326791=_0x334db8;if(!this['show']||!this[_0x326791(0x95)])return;this['primitives']['show']=![],this['primitives']['removeAll'](),this[_0x326791(0x6e)]['once'](mars3d__namespace[_0x326791(0x7b)]['preRender'],this['_onMap_preRenderEvent'],this);}},{'key':'_onMap_preRenderEvent','value':function _0x55b423(_0x4da68c){var _0x26a6e0=_0x334db8;this[_0x26a6e0(0x95)]['canvasResize'](this['scene']['context']),this[_0x26a6e0(0x13d)](),this['primitives'][_0x26a6e0(0x15b)]=!![];}},{'key':_0x334db8(0xbb),'value':function _0x3f8484(_0x200a32){var _0x3d4bb2=this;clearTimeout(this['refreshTimer']);if(!this['show']||!this['particleSystem'])return;this['primitives']['show']=![],this['refreshTimer']=setTimeout(function(){if(!_0x3d4bb2['show'])return;_0x3d4bb2['redraw']();},0xc8);}},{'key':'_onMouseDownEvent','value':function _0x4987fb(_0x5809ba){var _0x32d9b1=_0x334db8;this[_0x32d9b1(0x172)]=!![];}},{'key':_0x334db8(0x169),'value':function _0x2bbe2e(_0x3db7e3){var _0x12a4d8=_0x334db8;if(!this['show']||!this['particleSystem'])return;this[_0x12a4d8(0x172)]&&(this['primitives']['show']=![],this[_0x12a4d8(0x150)]=!![]);}},{'key':'_onMouseUpEvent','value':function _0x5427cf(_0x57443a){var _0x16999e=_0x334db8;if(!this['show']||!this[_0x16999e(0x95)])return;this['mouse_down']&&this['mouse_move']&&this['redraw'](),this['primitives']['show']=!![],this['mouse_down']=![],this['mouse_move']=![];}},{'key':_0x334db8(0xfc),'value':function _0x1062c3(){var _0x22964d=_0x334db8;if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this['particleSystem'][_0x22964d(0x123)](this[_0x22964d(0x128)]),this['primitives']['show']=!![];}},{'key':_0x334db8(0xa5),'value':function _0x37838e(_0x343350){var _0xd75078=_0x334db8;this['_data']=_0x343350,this[_0xd75078(0x95)]&&this[_0xd75078(0x95)][_0xd75078(0x13f)](),this[_0xd75078(0x95)]=new ParticleSystem(this[_0xd75078(0xdf)][_0xd75078(0xd1)],_0x343350,this['getOptions'](),this[_0xd75078(0x128)]),this['addPrimitives']();}},{'key':'_setOptionsHook','value':function _0x3c8c05(_0x16d816,_0x4f85ad){var _0x274cca=_0x334db8;if(_0x16d816)for(var _0x10f16f in _0x16d816){this[_0x10f16f]=_0x16d816[_0x10f16f];}this[_0x274cca(0x95)]&&this['particleSystem']['setOptions'](this['getOptions']());}},{'key':_0x334db8(0x109),'value':function _0x2f014d(){var _0x400491=_0x334db8,_0x43f125=Math['ceil'](Math[_0x400491(0xd4)](this['particlesNumber']));return this['particlesNumber']=_0x43f125*_0x43f125,{'particlesTextureSize':_0x43f125,'maxParticles':this[_0x400491(0xe6)],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this['dropRateBump'],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this['colors']};}},{'key':'addPrimitives','value':function _0x518396(){var _0x26d9c4=_0x334db8;this['primitives'][_0x26d9c4(0x90)](this['particleSystem'][_0x26d9c4(0x12e)][_0x26d9c4(0xf1)][_0x26d9c4(0xfa)]),this[_0x26d9c4(0xf1)]['add'](this['particleSystem']['particlesComputing']['primitives']['updateSpeed']),this['primitives'][_0x26d9c4(0x90)](this['particleSystem']['particlesComputing']['primitives']['updatePosition']),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives'][_0x26d9c4(0x12d)]),this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives'][_0x26d9c4(0xd7)]),this[_0x26d9c4(0xf1)]['add'](this[_0x26d9c4(0x95)]['particlesRendering']['primitives']['segments']),this['primitives']['add'](this['particleSystem']['particlesRendering'][_0x26d9c4(0xf1)][_0x26d9c4(0x111)]),this['primitives']['add'](this[_0x26d9c4(0x95)]['particlesRendering']['primitives'][_0x26d9c4(0xa8)]);}},{'key':'updateViewerParameters','value':function _0x3a9390(){var _0xf75719=_0x334db8,_0x2c7ab4=this['camera'][_0xf75719(0xec)](this['scene']['globe']['ellipsoid']);if(!_0x2c7ab4){var _0x2376b9=this['_map']['getExtent']();_0x2c7ab4=Cesium$1['Rectangle']['fromDegrees'](_0x2376b9['xmin'],_0x2376b9[_0xf75719(0xe3)],_0x2376b9[_0xf75719(0x8f)],_0x2376b9['ymax']);}var _0x47f4af=Util['viewRectangleToLonLatRange'](_0x2c7ab4);this['viewerParameters']['lonRange']['x']=_0x47f4af['lon']['min'],this['viewerParameters'][_0xf75719(0x122)]['y']=_0x47f4af[_0xf75719(0xb1)]['max'],this[_0xf75719(0x128)][_0xf75719(0xeb)]['x']=_0x47f4af['lat']['min'],this['viewerParameters']['latRange']['y']=_0x47f4af[_0xf75719(0x73)][_0xf75719(0x112)];var _0x1bc6c6=this[_0xf75719(0x99)]['getPixelSize'](this['globeBoundingSphere'],this['scene']['drawingBufferWidth'],this[_0xf75719(0xdf)]['drawingBufferHeight']);_0x1bc6c6>0x0&&(this['viewerParameters']['pixelSize']=_0x1bc6c6);}}]),_0x42bca0;}(BaseLayer$1);mars3d__namespace['LayerUtil']['register'](_0x28e3fd(0x10a),WindLayer),mars3d__namespace[_0x28e3fd(0x94)][_0x28e3fd(0xf9)]=WindLayer;var CanvasParticle=(function(){function _0x5f4bbd(){var _0x187ad3=_0x2ed4;_classCallCheck(this,_0x5f4bbd),this['lng']=null,this['lat']=null,this['tlng']=null,this[_0x187ad3(0x163)]=null,this[_0x187ad3(0xee)]=null;}return _createClass(_0x5f4bbd,[{'key':'destroy','value':function _0x37b35f(){for(var _0x34d7cf in this){delete this[_0x34d7cf];}}}]),_0x5f4bbd;}()),CanvasWindField=(function(){var _0x299bb4=_0x28e3fd;function _0x2ee272(_0x31308c){_classCallCheck(this,_0x2ee272),this['setOptions'](_0x31308c);}return _createClass(_0x2ee272,[{'key':'speedRate','get':function _0x26d6ef(){return this['_speedRate'];},'set':function _0x289f33(_0x54cfd0){var _0x32fd1b=_0x2ed4;this['_speedRate']=(0x64-(_0x54cfd0>0x63?0x63:_0x54cfd0))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this[_0x32fd1b(0xe2)]-this['ymin'])/this['_speedRate']];}},{'key':_0x299bb4(0xdb),'get':function _0x2a655c(){return this['_maxAge'];},'set':function _0x3a8a19(_0x439885){this['_maxAge']=_0x439885;}},{'key':'setOptions','value':function _0x59c519(_0xed3dd9){var _0x419285=_0x299bb4;this['options']=_0xed3dd9,this['maxAge']=_0xed3dd9['maxAge']||0x78,this['speedRate']=_0xed3dd9['speedRate']||0x32,this[_0x419285(0x8d)]=[];var _0x2d66ff=_0xed3dd9[_0x419285(0xe6)]||0x1000;for(var _0x52ad3e=0x0;_0x52ad3e<_0x2d66ff;_0x52ad3e++){var _0x3f9cb3=this['_randomParticle'](new CanvasParticle());this['particles'][_0x419285(0xcb)](_0x3f9cb3);}}},{'key':'setDate','value':function _0x369e56(_0x4964f4){var _0x368cae=_0x299bb4;this['rows']=_0x4964f4[_0x368cae(0xbf)],this['cols']=_0x4964f4['cols'],this[_0x368cae(0xac)]=_0x4964f4[_0x368cae(0xac)],this['xmax']=_0x4964f4[_0x368cae(0x8f)],this['ymin']=_0x4964f4['ymin'],this['ymax']=_0x4964f4['ymax'],this['grid']=[];var _0x4803ab=_0x4964f4['udata'],_0x4d236f=_0x4964f4[_0x368cae(0xc0)],_0x39451f=![];_0x4803ab[_0x368cae(0x146)]===this['rows']&&_0x4803ab[0x0]['length']===this['cols']&&(_0x39451f=!![]);var _0x5ed29f=0x0,_0x88c98a=null,_0x5e0ad1=null;for(var _0x2cb1e5=0x0;_0x2cb1e5<this[_0x368cae(0xbf)];_0x2cb1e5++){_0x88c98a=[];for(var _0xed0dda=0x0;_0xed0dda<this['cols'];_0xed0dda++,_0x5ed29f++){_0x39451f?_0x5e0ad1=this[_0x368cae(0x157)](_0x4803ab[_0x2cb1e5][_0xed0dda],_0x4d236f[_0x2cb1e5][_0xed0dda]):_0x5e0ad1=this[_0x368cae(0x157)](_0x4803ab[_0x5ed29f],_0x4d236f[_0x5ed29f]),_0x88c98a[_0x368cae(0xcb)](_0x5e0ad1);}this[_0x368cae(0x159)]['push'](_0x88c98a);}this['options']['reverseY']&&this['grid']['reverse']();}},{'key':_0x299bb4(0x70),'value':function _0x416b57(){var _0x476489=_0x299bb4;delete this[_0x476489(0xbf)],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this[_0x476489(0xe3)],delete this['ymax'],delete this['grid'],delete this['particles'];}},{'key':_0x299bb4(0x71),'value':function _0x59288c(_0x4e4e36,_0x547fe7){var _0x396824=_0x299bb4,_0x251dad=(_0x4e4e36-this['xmin'])/(this['xmax']-this[_0x396824(0xac)])*(this['cols']-0x1),_0x420b3e=(this['ymax']-_0x547fe7)/(this['ymax']-this[_0x396824(0xe3)])*(this['rows']-0x1);return[_0x251dad,_0x420b3e];}},{'key':'getUVByXY','value':function _0x42b4ba(_0xec8350,_0xcd6e8b){var _0x5305fe=_0x299bb4;if(_0xec8350<0x0||_0xec8350>=this[_0x5305fe(0xc7)]||_0xcd6e8b>=this['rows'])return[0x0,0x0,0x0];var _0x125dbc=Math['floor'](_0xec8350),_0x13ef6f=Math['floor'](_0xcd6e8b);if(_0x125dbc===_0xec8350&&_0x13ef6f===_0xcd6e8b)return this[_0x5305fe(0x159)][_0xcd6e8b][_0xec8350];var _0x94a0f=_0x125dbc+0x1,_0x4fcc71=_0x13ef6f+0x1,_0x2c0efc=this['getUVByXY'](_0x125dbc,_0x13ef6f),_0x2d7403=this['getUVByXY'](_0x94a0f,_0x13ef6f),_0x42e354=this[_0x5305fe(0xd2)](_0x125dbc,_0x4fcc71),_0x3f975e=this['getUVByXY'](_0x94a0f,_0x4fcc71),_0x4c6983=null;try{_0x4c6983=this['_bilinearInterpolation'](_0xec8350-_0x125dbc,_0xcd6e8b-_0x13ef6f,_0x2c0efc,_0x2d7403,_0x42e354,_0x3f975e);}catch(_0x3295f4){console[_0x5305fe(0x161)](_0xec8350,_0xcd6e8b);}return _0x4c6983;}},{'key':'_bilinearInterpolation','value':function _0xfd09e8(_0x13a544,_0x2f70b6,_0x400713,_0x7d4e7f,_0x1b6f04,_0xd73640){var _0x1a0727=_0x299bb4,_0x578996=0x1-_0x13a544,_0x1f1d3d=0x1-_0x2f70b6,_0x53373c=_0x578996*_0x1f1d3d,_0x2eeece=_0x13a544*_0x1f1d3d,_0xa1bda0=_0x578996*_0x2f70b6,_0x57a205=_0x13a544*_0x2f70b6,_0x28b9a5=_0x400713[0x0]*_0x53373c+_0x7d4e7f[0x0]*_0x2eeece+_0x1b6f04[0x0]*_0xa1bda0+_0xd73640[0x0]*_0x57a205,_0x33900e=_0x400713[0x1]*_0x53373c+_0x7d4e7f[0x1]*_0x2eeece+_0x1b6f04[0x1]*_0xa1bda0+_0xd73640[0x1]*_0x57a205;return this[_0x1a0727(0x157)](_0x28b9a5,_0x33900e);}},{'key':'_calcUV','value':function _0x3b57e1(_0x5ed277,_0x178990){return[+_0x5ed277,+_0x178990,Math['sqrt'](_0x5ed277*_0x5ed277+_0x178990*_0x178990)];}},{'key':_0x299bb4(0xcd),'value':function _0x9b7fa8(_0x201ed5,_0xeeba57){var _0x609934=_0x299bb4;if(!this[_0x609934(0xe7)](_0x201ed5,_0xeeba57))return null;var _0x542889=this['toGridXY'](_0x201ed5,_0xeeba57),_0x1b3f8c=this['getUVByXY'](_0x542889[0x0],_0x542889[0x1]);return _0x1b3f8c;}},{'key':_0x299bb4(0xe7),'value':function _0x2e3cf7(_0x53a61c,_0x5a1a92){var _0x1fcc15=_0x299bb4;return _0x53a61c>=this['xmin']&&_0x53a61c<=this[_0x1fcc15(0x8f)]&&_0x5a1a92>=this['ymin']&&_0x5a1a92<=this['ymax']?!![]:![];}},{'key':'getRandomLatLng','value':function _0x44a1bd(){var _0x4b72e0=fRandomByfloat(this['xmin'],this['xmax']),_0x4010d6=fRandomByfloat(this['ymin'],this['ymax']);return{'lat':_0x4010d6,'lng':_0x4b72e0};}},{'key':'getParticles','value':function _0x15cdc3(){var _0x3ea8bb=_0x299bb4,_0x5ccd09,_0x3dc23b,_0x40fc46;for(var _0x318813=0x0,_0x13a06f=this['particles']['length'];_0x318813<_0x13a06f;_0x318813++){var _0x356265=this['particles'][_0x318813];_0x356265['age']<=0x0&&(_0x356265=this['_randomParticle'](_0x356265));if(_0x356265['age']>0x0){var _0x3e4ae7=_0x356265['tlng'],_0x32c98a=_0x356265[_0x3ea8bb(0x163)];_0x40fc46=this['getUVByPoint'](_0x3e4ae7,_0x32c98a),_0x40fc46?(_0x5ccd09=_0x3e4ae7+this[_0x3ea8bb(0xcc)][0x0]*_0x40fc46[0x0],_0x3dc23b=_0x32c98a+this[_0x3ea8bb(0xcc)][0x1]*_0x40fc46[0x1],_0x356265['lng']=_0x3e4ae7,_0x356265['lat']=_0x32c98a,_0x356265[_0x3ea8bb(0x97)]=_0x5ccd09,_0x356265['tlat']=_0x3dc23b,_0x356265['age']--):_0x356265['age']=0x0;}}return this['particles'];}},{'key':'_randomParticle','value':function _0x1fda63(_0x501c49){var _0x13d8fd=_0x299bb4,_0x24ac7c,_0x1c2ca5;for(var _0x5e1d3c=0x0;_0x5e1d3c<0x1e;_0x5e1d3c++){_0x24ac7c=this['getRandomLatLng'](),_0x1c2ca5=this['getUVByPoint'](_0x24ac7c[_0x13d8fd(0x129)],_0x24ac7c[_0x13d8fd(0x73)]);if(_0x1c2ca5&&_0x1c2ca5[0x2]>0x0)break;}if(!_0x1c2ca5)return _0x501c49;var _0x2039e5=_0x24ac7c[_0x13d8fd(0x129)]+this[_0x13d8fd(0xcc)][0x0]*_0x1c2ca5[0x0],_0x284571=_0x24ac7c['lat']+this['_calc_speedRate'][0x1]*_0x1c2ca5[0x1];return _0x501c49['lng']=_0x24ac7c['lng'],_0x501c49['lat']=_0x24ac7c['lat'],_0x501c49['tlng']=_0x2039e5,_0x501c49['tlat']=_0x284571,_0x501c49['age']=Math['round'](Math[_0x13d8fd(0xab)]()*this['maxAge']),_0x501c49;}},{'key':_0x299bb4(0x13f),'value':function _0x2acfd9(){for(var _0x5b44d1 in this){delete this[_0x5b44d1];}}}]),_0x2ee272;}());function fRandomByfloat(_0x184997,_0x3b5030){return _0x184997+Math['random']()*(_0x3b5030-_0x184997);}var Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'],CanvasWindLayer=function(_0x461d81){var _0x1f335f=_0x28e3fd;_inherits(_0xd5c692,_0x461d81);var _0x1d4eff=_createSuper(_0xd5c692);function _0xd5c692(){var _0x45b7e3=_0x2ed4,_0x278ca5,_0x13b242=arguments['length']>0x0&&arguments[0x0]!==undefined?arguments[0x0]:{};return _classCallCheck(this,_0xd5c692),_0x278ca5=_0x1d4eff[_0x45b7e3(0x16e)](this,_0x13b242),_0x278ca5[_0x45b7e3(0xda)](_0x13b242),_0x278ca5['canvas']=null,_0x278ca5;}return _createClass(_0xd5c692,[{'key':_0x1f335f(0xda),'value':function _0x3a262f(_0x304aa5,_0x309361){var _0x5e6d3e=_0x1f335f,_0x252563,_0x9b216d,_0x414c32;this['frameTime']=0x3e8/(_0x304aa5[_0x5e6d3e(0xce)]||0xa),this['_pointerEvents']=(_0x252563=this[_0x5e6d3e(0x119)]['pointerEvents'])!==null&&_0x252563!==void 0x0?_0x252563:![],this[_0x5e6d3e(0x14f)]=_0x304aa5['color']||'#ffffff',this[_0x5e6d3e(0x142)]=_0x304aa5['lineWidth']||0x1,this['fixedHeight']=(_0x9b216d=_0x304aa5['fixedHeight'])!==null&&_0x9b216d!==void 0x0?_0x9b216d:0x0,this['reverseY']=(_0x414c32=_0x304aa5[_0x5e6d3e(0x72)])!==null&&_0x414c32!==void 0x0?_0x414c32:![],this['windField']&&this['windField']['setOptions'](_0x304aa5);}},{'key':_0x1f335f(0x94),'get':function _0x1f44a4(){return this['canvas'];}},{'key':'canvasWidth','get':function _0x568fbd(){return this['_map']['scene']['canvas']['clientWidth'];}},{'key':'canvasHeight','get':function _0x35f4db(){var _0x587387=_0x1f335f;return this[_0x587387(0x6e)]['scene']['canvas']['clientHeight'];}},{'key':_0x1f335f(0x113),'get':function _0x4a294c(){return this['_pointerEvents'];},'set':function _0x12f451(_0x26aca7){var _0x536bbb=_0x1f335f;this['_pointerEvents']=_0x26aca7;if(!this['canvas'])return;_0x26aca7?this['canvas']['style'][_0x536bbb(0x13e)]='all':this['canvas'][_0x536bbb(0xaf)]['pointer-events']='none';}},{'key':'particlesNumber','get':function _0x2e9f4a(){var _0xe21712=_0x1f335f;return this[_0xe21712(0x119)][_0xe21712(0xe6)];},'set':function _0x39790e(_0x6c366a){var _0x2754b9=_0x1f335f,_0x281f6a=this;this['options'][_0x2754b9(0xe6)]=_0x6c366a,clearTimeout(this['_canrefresh']),this['_canrefresh']=setTimeout(function(){var _0x527642=_0x2754b9;_0x281f6a[_0x527642(0xfc)]();},0x1f4);}},{'key':'speedRate','get':function _0x124415(){var _0x14fbfa=_0x1f335f;return this['options'][_0x14fbfa(0x140)];},'set':function _0x24bf98(_0x253fe8){var _0x104d99=_0x1f335f;this['options']['speedRate']=_0x253fe8,this[_0x104d99(0x130)]&&(this['windField']['speedRate']=_0x253fe8);}},{'key':'maxAge','get':function _0x37d333(){var _0x4f3bca=_0x1f335f;return this[_0x4f3bca(0x119)][_0x4f3bca(0xdb)];},'set':function _0x5e7509(_0x30e5bc){var _0x71c984=_0x1f335f;this['options'][_0x71c984(0xdb)]=_0x30e5bc,this[_0x71c984(0x130)]&&(this['windField']['maxAge']=_0x30e5bc);}},{'key':'data','get':function _0x5e9c7c(){return this['windData'];},'set':function _0x53f1be(_0x3c70a5){this['setData'](_0x3c70a5);}},{'key':_0x1f335f(0x16c),'value':function _0x215ccb(_0x249190){var _0x43d8cd=_0x1f335f;_0x249190?this['_addedHook']():(this['windData']&&(this[_0x43d8cd(0x119)][_0x43d8cd(0xef)]=this[_0x43d8cd(0x87)]),this['_removedHook']());}},{'key':_0x1f335f(0xe0),'value':function _0x4d0427(){var _0x19139b=_0x1f335f;this[_0x19139b(0x119)]['worker']?this['initWorker']():this[_0x19139b(0x130)]=new CanvasWindField(this['options']);}},{'key':_0x1f335f(0x9c),'value':function _0x7350b2(){this['canvas']=this['_createCanvas'](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options']['data']&&this['setData'](this['options']['data']);}},{'key':'_removedHook','value':function _0x3d9fcb(){var _0x236921=_0x1f335f;this['clear'](),this[_0x236921(0xed)](),this['canvas']&&(this[_0x236921(0x6e)]['container'][_0x236921(0xc9)](this['canvas']),delete this['canvas']);}},{'key':'_createCanvas','value':function _0x33911e(){var _0x156942=_0x1f335f,_0xb13fae=document['createElement']('canvas');_0xb13fae['style']['position']='absolute',_0xb13fae[_0x156942(0xaf)][_0x156942(0xdc)]='0px',_0xb13fae['style']['left']=_0x156942(0x82),_0xb13fae[_0x156942(0xaf)]['width']=_0x156942(0x171),_0xb13fae[_0x156942(0xaf)]['height']='100%',_0xb13fae['style']['pointerEvents']=this[_0x156942(0x11c)]?'auto':_0x156942(0xc5),_0xb13fae['style']['zIndex']=0xa,_0xb13fae['setAttribute']('id','canvasWindy'),_0xb13fae[_0x156942(0x10f)](_0x156942(0xdd),'canvasWindy'),this['_map'][_0x156942(0x88)]['appendChild'](_0xb13fae);var _0x5801eb=this[_0x156942(0x6e)]['scene'];return _0xb13fae['width']=_0x5801eb[_0x156942(0x83)]['clientWidth'],_0xb13fae['height']=_0x5801eb['canvas'][_0x156942(0x103)],_0xb13fae;}},{'key':'resize','value':function _0x46afc7(){var _0x477500=_0x1f335f;this['canvas']&&(this['canvas']['width']=this[_0x477500(0xbe)],this[_0x477500(0x83)]['height']=this['canvasHeight']);}},{'key':_0x1f335f(0xf7),'value':function _0x103f05(){var _0x32aede=_0x1f335f,_0x9ee27=this,_0x290efd=Date['now']();(function _0x20dd46(){var _0x3469b3=_0x2ed4;_0x9ee27['animateFrame']=window[_0x3469b3(0x153)](_0x20dd46);if(_0x9ee27[_0x3469b3(0x15b)]&&_0x9ee27['windField']){var _0x4b7d05=Date['now'](),_0x2e2cc5=_0x4b7d05-_0x290efd;_0x2e2cc5>_0x9ee27['frameTime']&&(_0x290efd=_0x4b7d05-_0x2e2cc5%_0x9ee27['frameTime'],_0x9ee27['update']());}}(),window['addEventListener']('resize',this['resize'][_0x32aede(0xb9)](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this[_0x32aede(0x6e)]['on'](mars3d__namespace['EventType'][_0x32aede(0x165)],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace[_0x32aede(0x7b)]['mouseDown'],this['_onMouseDownEvent'],this),this[_0x32aede(0x6e)]['on'](mars3d__namespace[_0x32aede(0x7b)]['mouseUp'],this[_0x32aede(0x92)],this)));}},{'key':'unbindEvent','value':function _0x18d2b9(){var _0x83cf0b=_0x1f335f;window['cancelAnimationFrame'](this['animateFrame']),delete this['animateFrame'],window['removeEventListener'](_0x83cf0b(0x160),this['resize']),this[_0x83cf0b(0x119)]['mouseHidden']&&(this[_0x83cf0b(0x6e)][_0x83cf0b(0xba)](mars3d__namespace['EventType'][_0x83cf0b(0x165)],this['_onMapWhellEvent'],this),this['_map'][_0x83cf0b(0xba)](mars3d__namespace['EventType'][_0x83cf0b(0xbc)],this['_onMouseDownEvent'],this),this[_0x83cf0b(0x6e)]['off'](mars3d__namespace['EventType'][_0x83cf0b(0x106)],this['_onMouseUpEvent'],this),this['_map'][_0x83cf0b(0xba)](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}},{'key':'_onMapWhellEvent','value':function _0x5b8390(_0x416c54){var _0x44197c=_0x1f335f,_0x47c8d4=this;clearTimeout(this['refreshTimer']);if(!this[_0x44197c(0x15b)]||!this['canvas'])return;this['canvas'][_0x44197c(0xaf)]['visibility']=_0x44197c(0xc4),this['refreshTimer']=setTimeout(function(){var _0x57b167=_0x44197c;if(!_0x47c8d4['show'])return;_0x47c8d4['redraw'](),_0x47c8d4['canvas'][_0x57b167(0xaf)]['visibility']='visible';},0xc8);}},{'key':'_onMouseDownEvent','value':function _0x5d55e0(_0xea44b1){var _0x29cadc=_0x1f335f;this['mouse_down']=!![],this['_map'][_0x29cadc(0xba)](mars3d__namespace['EventType']['mouseMove'],this[_0x29cadc(0x169)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}},{'key':'_onMouseMoveEvent','value':function _0x39bef6(_0x506201){var _0x4e24cb=_0x1f335f;if(!this[_0x4e24cb(0x15b)]||!this[_0x4e24cb(0x83)])return;this[_0x4e24cb(0x172)]&&(this['canvas'][_0x4e24cb(0xaf)][_0x4e24cb(0x134)]='hidden',this[_0x4e24cb(0x150)]=!![]);}},{'key':'_onMouseUpEvent','value':function _0x4e8740(_0x5ec17f){var _0x5779de=_0x1f335f;if(!this['show']||!this['canvas'])return;this[_0x5779de(0x6e)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this[_0x5779de(0x172)]&&this['mouse_move']&&this['redraw'](),this[_0x5779de(0x83)]['style']['visibility']='visible',this['mouse_down']=![],this['mouse_move']=![];}},{'key':'setData','value':function _0x28c718(_0x5cad2d){var _0x296b6e=_0x1f335f;this['clear'](),this['windData']=_0x5cad2d,this['windField']['setDate'](_0x5cad2d),this[_0x296b6e(0xfc)]();}},{'key':_0x1f335f(0xfc),'value':function _0x5e913d(){var _0x59388c=_0x1f335f;if(!this['show'])return;this[_0x59388c(0x130)]['setOptions'](this['options']),this['update']();}},{'key':'update','value':function _0x12010f(){var _0x4619b1=_0x1f335f;if(this['_updateIng'])return;this[_0x4619b1(0x131)]=!![];if(this['worker'])this['windField'][_0x4619b1(0x8e)]();else{var _0x26df39=this['windField']['getParticles']();this['_drawLines'](_0x26df39);}this[_0x4619b1(0x131)]=![];}},{'key':_0x1f335f(0xd3),'value':function _0x42fcf4(_0x13319d){var _0x168d1b=_0x1f335f;this['canvasContext'][_0x168d1b(0x12c)]='destination-in',this['canvasContext'][_0x168d1b(0x9d)](0x0,0x0,this['canvasWidth'],this[_0x168d1b(0xe8)]),this['canvasContext']['globalCompositeOperation']=_0x168d1b(0xb0),this['canvasContext'][_0x168d1b(0xcf)]=0.9,this['canvasContext'][_0x168d1b(0xae)](),this['canvasContext'][_0x168d1b(0x142)]=this['lineWidth'],this['canvasContext']['strokeStyle']=this['color'];var _0x231b88=this['_map']['scene']['mode']!==Cesium[_0x168d1b(0x139)]['SCENE3D'];for(var _0x3d1215=0x0,_0x4cfa1b=_0x13319d[_0x168d1b(0x146)];_0x3d1215<_0x4cfa1b;_0x3d1215++){var _0x1c069d=_0x13319d[_0x3d1215],_0x654b64=this['_tomap'](_0x1c069d['lng'],_0x1c069d['lat'],_0x1c069d),_0x30cdae=this['_tomap'](_0x1c069d['tlng'],_0x1c069d['tlat'],_0x1c069d);if(!_0x654b64||!_0x30cdae)continue;if(_0x231b88&&Math[_0x168d1b(0x135)](_0x654b64[0x0]-_0x30cdae[0x0])>=this['canvasWidth'])continue;this[_0x168d1b(0x125)]['moveTo'](_0x654b64[0x0],_0x654b64[0x1]),this[_0x168d1b(0x125)]['lineTo'](_0x30cdae[0x0],_0x30cdae[0x1]);}this['canvasContext']['stroke']();}},{'key':_0x1f335f(0x114),'value':function _0x1ad32b(_0x4665ee,_0x4cf3c1,_0x34d796){var _0x1b0584=_0x1f335f,_0x527f6e=Cesium['Cartesian3'][_0x1b0584(0x10e)](_0x4665ee,_0x4cf3c1,this['fixedHeight']),_0x3024ee=this[_0x1b0584(0x6e)]['scene'];if(_0x3024ee['mode']===Cesium['SceneMode']['SCENE3D']){var _0x144731=new Cesium[(_0x1b0584(0xc2))](_0x3024ee['globe']['ellipsoid'],_0x3024ee['camera']['positionWC']),_0x180fea=_0x144731[_0x1b0584(0xfd)](_0x527f6e);if(!_0x180fea)return _0x34d796[_0x1b0584(0xee)]=0x0,null;}var _0x4f67a3=Cesium['SceneTransforms']['wgs84ToWindowCoordinates'](this[_0x1b0584(0x6e)]['scene'],_0x527f6e);return _0x4f67a3?[_0x4f67a3['x'],_0x4f67a3['y']]:null;}},{'key':_0x1f335f(0x70),'value':function _0x435e0a(){var _0x2ad797=_0x1f335f;this['windField']['clear'](),delete this[_0x2ad797(0x87)];}},{'key':_0x1f335f(0x12f),'value':function _0x4e0bc3(){var _0x210aec=_0x1f335f,_0x56d7da=this;this['worker']=new Worker(this['options']['worker']),this['worker']['onmessage']=function(_0x3d9422){var _0x32fbbb=_0x2ed4;_0x56d7da[_0x32fbbb(0xd3)](_0x3d9422['data']['particles']),_0x56d7da['_updateIng2']=![];},this[_0x210aec(0x130)]={'init':function _0x2a559b(_0x31c770){_0x56d7da['worker']['postMessage']({'type':'init','options':_0x31c770});},'setOptions':function _0x1ca0ba(_0x4528ab){var _0xd0366b=_0x210aec;_0x56d7da['worker']['postMessage']({'type':_0xd0366b(0x14b),'options':_0x4528ab});},'setDate':function _0x241a67(_0x5739d7){var _0x55ae4d=_0x210aec;_0x56d7da['worker']['postMessage']({'type':_0x55ae4d(0x8b),'data':_0x5739d7});},'update':function _0x4608db(){var _0x3acec6=_0x210aec;if(_0x56d7da['_updateIng2'])return;_0x56d7da['_updateIng2']=!![],_0x56d7da['worker'][_0x3acec6(0x11d)]({'type':'update'});},'clear':function _0x254341(){var _0x3654ce=_0x210aec;_0x56d7da['worker']['postMessage']({'type':_0x3654ce(0x70)});}},this['windField']['init'](this['options']);}}]),_0xd5c692;}(BaseLayer);mars3d__namespace[_0x28e3fd(0x15d)][_0x28e3fd(0xb4)](_0x28e3fd(0xa7),CanvasWindLayer),mars3d__namespace[_0x28e3fd(0x94)]['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace['WindUtil']=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x28e3fd(0xa3)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports['WindUtil']=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
|
|
14
|
+
'use strict';var _0x1031ee=_0x4469;(function(_0x4e6bc5,_0x55925b){var _0x42a477=_0x4469,_0x179dad=_0x4e6bc5();while(!![]){try{var _0x16acbe=-parseInt(_0x42a477(0x1f0))/0x1*(-parseInt(_0x42a477(0x259))/0x2)+-parseInt(_0x42a477(0x298))/0x3+-parseInt(_0x42a477(0x1ca))/0x4*(parseInt(_0x42a477(0x22b))/0x5)+-parseInt(_0x42a477(0x28c))/0x6+-parseInt(_0x42a477(0x1c1))/0x7*(-parseInt(_0x42a477(0x22e))/0x8)+-parseInt(_0x42a477(0x24d))/0x9+parseInt(_0x42a477(0x288))/0xa;if(_0x16acbe===_0x55925b)break;else _0x179dad['push'](_0x179dad['shift']());}catch(_0xa13b03){_0x179dad['push'](_0x179dad['shift']());}}}(_0x4976,0xc67ce));function _interopNamespace(_0x383989){var _0x43fb1c=_0x4469;if(_0x383989&&_0x383989['__esModule'])return _0x383989;var _0x453d4e=Object[_0x43fb1c(0x1fc)](null);return _0x383989&&Object['keys'](_0x383989)[_0x43fb1c(0x1e7)](function(_0x33fcc7){if(_0x33fcc7!=='default'){var _0x24d8f7=Object['getOwnPropertyDescriptor'](_0x383989,_0x33fcc7);Object['defineProperty'](_0x453d4e,_0x33fcc7,_0x24d8f7['get']?_0x24d8f7:{'enumerable':!![],'get':function(){return _0x383989[_0x33fcc7];}});}}),_0x453d4e['default']=_0x383989,_0x453d4e;}var mars3d__namespace=_interopNamespace(mars3d),Cesium$7=mars3d__namespace[_0x1031ee(0x262)];function _0x4976(){var _0x3cc875=['refreshTimer','_maxAge','ComponentDatatype','Geometry','uniformMap','createFramebuffer','ALWAYS','//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x20\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\x0avarying\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=\x20texture2D(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=\x20texture2D(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20bicubic(lonLatLev);\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(windVector,\x200.0);\x0a}','Draw','forEach','rows','off','from','primitives','TRIANGLES','postMessage','PixelFormat','postProcessingPosition','233xOeJql','resize','age','shaderProgram','removeEventListener','segments','pointerEvents','vertexArray','PI_OVER_TWO','currentParticlesPosition','ComputeCommand','function','create','remove','canvas','this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called','drawingBufferWidth','rgb(206,255,255)','updateSpeed','globalCompositeOperation','north','particlesWind','ellipsoid','RGB','currentTrailsColor','createParticlesTextures','setAttribute','canvasContext','lev','DrawCommand','EventType','_onMapWhellEvent','nextTrails','isDestroyed','canvasResize','FLOAT','_calcUV','defineProperty','VertexArray','nextParticlesPosition','clearFramebuffers','visible','clear','getParticles','lighter','min','dimensions','_map','udata','enumerable','framebuffers','_onMouseUpEvent','_removedHook','STATIC_DRAW','commandToExecute','ymax','drawingBufferHeight','latRange','construct','29810ehozRM','update','options','8deAZSY','apply','outputTexture','addPrimitives','_onMouseDownEvent','prototype','autoClear','getUVByPoint','preExecute','maxAge','green','positionWC','getPrototypeOf','none','blue','scene','mouseHidden','getOptions','push','zIndex','lineWidth','depthTest','constructor','setData','data','toDegrees','mouse_down','setOptions','windField','PI_OVER_THREE','CanvasWindField','11870982pCIFzI','particlesComputing','visibility','absolute','length','style','framebuffer','fill','THREE_PI_OVER_TWO','register','preRender','valueOf','1238itRXAm','mouseUp','worker','bindEvent','height','BufferUsage','add','attributeLocations','frameRate','Cesium','clearCommand','floor','lat','Cartesian2','_updateIng','rawRenderState','clampToLatitudeRange','east','getRandomLatLng','iterator','RGBA','Cartesian3','xmin','BaseLayer','#ffffff','camera','createSegmentsGeometry','canrefresh','particlesRendering','_updateIng2','getOwnPropertySymbols','canvasHeight','NEAREST','SceneMode','_createCanvas','undefined','SCENE3D','GeometryAttribute','speedRate','vertexShaderSource','viewerParameters','init','OPAQUE','xmax','particles','_onMouseMoveEvent','ShaderSource','16398610ayFCai','primitiveType','destroy','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','3332784FANISy','createTexture','color','cols','destroyObject','commandList','textures','getOwnPropertyDescriptors','ShaderProgram','particleSystem','animateFrame','lon','1930623YRkgpP','random','top','lng','getOwnPropertyDescriptor','maxParticles','Texture','max','currentTrails','keys','Compute','createComputingPrimitives','Math','layer','tlng','fromCache','setPrototypeOf','dropRateBump','randomizeParticles','vdata','mouseMove','_tomap','createCommand','depthMask','particlesTextureSize','defined','lonRange','_data','createRenderingFramebuffers','windTextures','particlesNumber','Color','tlat','fragmentShaderSource','array','createRawRenderState','_setOptionsHook','11245787qFwJfN','PixelDatatype','particlesTextures','fromDegrees','context','mouseDown','commandType','vmax','colorTable','40zwMiLB','LINEAR','mouse_move','100%','destroyParticlesTextures','_canrefresh','Rectangle','isInExtent','geometry','show','execute','postProcessingSpeed','canvasWind','_speedRate','segmentsDepth','_calc_speedRate','currentParticlesSpeed','WindUtil','TextureMagnificationFilter','ymin'];_0x4976=function(){return _0x3cc875;};return _0x4976();}function getU(_0x316bef,_0x3c2364){var _0x44c744=_0x316bef*Math['cos'](Cesium$7['Math']['toRadians'](_0x3c2364));return _0x44c744;}function getV(_0xbc3c47,_0x24da79){var _0x57403d=_0xbc3c47*Math['sin'](Cesium$7['Math']['toRadians'](_0x24da79));return _0x57403d;}function getSpeed(_0x593a1b,_0xab0c87){var _0x18008f=Math['sqrt'](Math['pow'](_0x593a1b,0x2)+Math['pow'](_0xab0c87,0x2));return _0x18008f;}function getDirection(_0x4d80f6,_0x3c50d8){var _0x7c0a77=Cesium$7['Math']['toDegrees'](Math['atan2'](_0x3c50d8,_0x4d80f6));return _0x7c0a77+=_0x7c0a77<0x0?0x168:0x0,_0x7c0a77;}var WindUtil={'__proto__':null,'getU':getU,'getV':getV,'getSpeed':getSpeed,'getDirection':getDirection};function _0x4469(_0x2dcbba,_0x187afc){var _0x497685=_0x4976();return _0x4469=function(_0x446982,_0x4b8c9f){_0x446982=_0x446982-0x1a5;var _0x21d161=_0x497685[_0x446982];return _0x21d161;},_0x4469(_0x2dcbba,_0x187afc);}function ownKeys(_0x3afd53,_0x3034f){var _0x225ec4=_0x1031ee,_0x274775=Object['keys'](_0x3afd53);if(Object[_0x225ec4(0x277)]){var _0x4044e2=Object[_0x225ec4(0x277)](_0x3afd53);_0x3034f&&(_0x4044e2=_0x4044e2['filter'](function(_0x1d5085){var _0x5178a9=_0x225ec4;return Object[_0x5178a9(0x29c)](_0x3afd53,_0x1d5085)[_0x5178a9(0x221)];})),_0x274775['push']['apply'](_0x274775,_0x4044e2);}return _0x274775;}function _objectSpread2(_0x59260b){var _0x1299eb=_0x1031ee;for(var _0x287a4d=0x1;_0x287a4d<arguments['length'];_0x287a4d++){var _0x2dc954=null!=arguments[_0x287a4d]?arguments[_0x287a4d]:{};_0x287a4d%0x2?ownKeys(Object(_0x2dc954),!0x0)['forEach'](function(_0x18693d){_defineProperty(_0x59260b,_0x18693d,_0x2dc954[_0x18693d]);}):Object[_0x1299eb(0x293)]?Object['defineProperties'](_0x59260b,Object['getOwnPropertyDescriptors'](_0x2dc954)):ownKeys(Object(_0x2dc954))['forEach'](function(_0x226f51){Object['defineProperty'](_0x59260b,_0x226f51,Object['getOwnPropertyDescriptor'](_0x2dc954,_0x226f51));});}return _0x59260b;}function _classCallCheck(_0x5294fb,_0x5c50a2){if(!(_0x5294fb instanceof _0x5c50a2))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _defineProperties(_0x43ab85,_0x33685e){for(var _0x400497=0x0;_0x400497<_0x33685e['length'];_0x400497++){var _0x46c1bc=_0x33685e[_0x400497];_0x46c1bc['enumerable']=_0x46c1bc['enumerable']||![],_0x46c1bc['configurable']=!![];if('value'in _0x46c1bc)_0x46c1bc['writable']=!![];Object['defineProperty'](_0x43ab85,_0x46c1bc['key'],_0x46c1bc);}}function _createClass(_0x3ab965,_0x1bdf2c,_0x1bc541){if(_0x1bdf2c)_defineProperties(_0x3ab965['prototype'],_0x1bdf2c);if(_0x1bc541)_defineProperties(_0x3ab965,_0x1bc541);return Object['defineProperty'](_0x3ab965,'prototype',{'writable':![]}),_0x3ab965;}function _defineProperty(_0x546d50,_0xb6884a,_0x3d0a0b){var _0xd8fee=_0x1031ee;return _0xb6884a in _0x546d50?Object[_0xd8fee(0x215)](_0x546d50,_0xb6884a,{'value':_0x3d0a0b,'enumerable':!![],'configurable':!![],'writable':!![]}):_0x546d50[_0xb6884a]=_0x3d0a0b,_0x546d50;}function _inherits(_0x431858,_0x28e477){var _0x15bc7e=_0x1031ee;if(typeof _0x28e477!==_0x15bc7e(0x1fb)&&_0x28e477!==null)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x431858['prototype']=Object[_0x15bc7e(0x1fc)](_0x28e477&&_0x28e477[_0x15bc7e(0x233)],{'constructor':{'value':_0x431858,'writable':!![],'configurable':!![]}}),Object[_0x15bc7e(0x215)](_0x431858,'prototype',{'writable':![]});if(_0x28e477)_setPrototypeOf(_0x431858,_0x28e477);}function _getPrototypeOf(_0x17caad){return _getPrototypeOf=Object['setPrototypeOf']?Object['getPrototypeOf']['bind']():function _0x3bbf0e(_0x56e2f8){var _0x4e071=_0x4469;return _0x56e2f8['__proto__']||Object[_0x4e071(0x23a)](_0x56e2f8);},_getPrototypeOf(_0x17caad);}function _setPrototypeOf(_0x1d11be,_0x303828){var _0x488681=_0x1031ee;return _setPrototypeOf=Object[_0x488681(0x1ac)]?Object['setPrototypeOf']['bind']():function _0x3c8a88(_0x593677,_0x57e016){return _0x593677['__proto__']=_0x57e016,_0x593677;},_setPrototypeOf(_0x1d11be,_0x303828);}function _isNativeReflectConstruct(){var _0x403896=_0x1031ee;if(typeof Reflect==='undefined'||!Reflect['construct'])return![];if(Reflect['construct']['sham'])return![];if(typeof Proxy==='function')return!![];try{return Boolean['prototype'][_0x403896(0x258)]['call'](Reflect[_0x403896(0x22a)](Boolean,[],function(){})),!![];}catch(_0x32ac3d){return![];}}function _assertThisInitialized(_0x1875b6){var _0x36a238=_0x1031ee;if(_0x1875b6===void 0x0)throw new ReferenceError(_0x36a238(0x1ff));return _0x1875b6;}function _possibleConstructorReturn(_0x3ffa2b,_0x2d2098){if(_0x2d2098&&(typeof _0x2d2098==='object'||typeof _0x2d2098==='function'))return _0x2d2098;else{if(_0x2d2098!==void 0x0)throw new TypeError('Derived\x20constructors\x20may\x20only\x20return\x20object\x20or\x20undefined');}return _assertThisInitialized(_0x3ffa2b);}function _createSuper(_0x37f12a){var _0x54290d=_isNativeReflectConstruct();return function _0x26c513(){var _0x514979=_0x4469,_0x1af6dd=_getPrototypeOf(_0x37f12a),_0x13d9eb;if(_0x54290d){var _0xa9742e=_getPrototypeOf(this)['constructor'];_0x13d9eb=Reflect['construct'](_0x1af6dd,arguments,_0xa9742e);}else _0x13d9eb=_0x1af6dd[_0x514979(0x22f)](this,arguments);return _possibleConstructorReturn(this,_0x13d9eb);};}function _toConsumableArray(_0x170562){return _arrayWithoutHoles(_0x170562)||_iterableToArray(_0x170562)||_unsupportedIterableToArray(_0x170562)||_nonIterableSpread();}function _arrayWithoutHoles(_0xea64f0){if(Array['isArray'](_0xea64f0))return _arrayLikeToArray(_0xea64f0);}function _iterableToArray(_0x4074a0){var _0x30b15e=_0x1031ee;if(typeof Symbol!==_0x30b15e(0x27c)&&_0x4074a0[Symbol[_0x30b15e(0x26c)]]!=null||_0x4074a0['@@iterator']!=null)return Array['from'](_0x4074a0);}function _unsupportedIterableToArray(_0x1188d7,_0x4ae20b){var _0x3dfb8d=_0x1031ee;if(!_0x1188d7)return;if(typeof _0x1188d7==='string')return _arrayLikeToArray(_0x1188d7,_0x4ae20b);var _0x2f228f=Object['prototype']['toString']['call'](_0x1188d7)['slice'](0x8,-0x1);if(_0x2f228f==='Object'&&_0x1188d7[_0x3dfb8d(0x244)])_0x2f228f=_0x1188d7['constructor']['name'];if(_0x2f228f==='Map'||_0x2f228f==='Set')return Array[_0x3dfb8d(0x1ea)](_0x1188d7);if(_0x2f228f==='Arguments'||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x2f228f))return _arrayLikeToArray(_0x1188d7,_0x4ae20b);}function _arrayLikeToArray(_0x3c077b,_0x5b9659){if(_0x5b9659==null||_0x5b9659>_0x3c077b['length'])_0x5b9659=_0x3c077b['length'];for(var _0xa2ab0e=0x0,_0x43051b=new Array(_0x5b9659);_0xa2ab0e<_0x5b9659;_0xa2ab0e++)_0x43051b[_0xa2ab0e]=_0x3c077b[_0xa2ab0e];return _0x43051b;}function _nonIterableSpread(){throw new TypeError('Invalid\x20attempt\x20to\x20spread\x20non-iterable\x20instance.\x0aIn\x20order\x20to\x20be\x20iterable,\x20non-array\x20objects\x20must\x20have\x20a\x20[Symbol.iterator]()\x20method.');}var Cesium$6=mars3d__namespace['Cesium'],CustomPrimitive=(function(){var _0x2b7980=_0x1031ee;function _0x5d53c2(_0x400850){var _0x19fadc=_0x4469,_0x5a10cc;_classCallCheck(this,_0x5d53c2),this[_0x19fadc(0x1c7)]=_0x400850[_0x19fadc(0x1c7)],this[_0x19fadc(0x1d2)]=_0x400850[_0x19fadc(0x1d2)],this[_0x19fadc(0x260)]=_0x400850[_0x19fadc(0x260)],this[_0x19fadc(0x289)]=_0x400850['primitiveType'],this[_0x19fadc(0x1e2)]=_0x400850[_0x19fadc(0x1e2)],this['vertexShaderSource']=_0x400850[_0x19fadc(0x280)],this['fragmentShaderSource']=_0x400850[_0x19fadc(0x1bd)],this[_0x19fadc(0x268)]=_0x400850['rawRenderState'],this['framebuffer']=_0x400850[_0x19fadc(0x253)],this['outputTexture']=_0x400850['outputTexture'],this['autoClear']=(_0x5a10cc=_0x400850['autoClear'])!==null&&_0x5a10cc!==void 0x0?_0x5a10cc:![],this['preExecute']=_0x400850[_0x19fadc(0x236)],this['show']=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this[_0x19fadc(0x234)]&&(this['clearCommand']=new Cesium$6['ClearCommand']({'color':new Cesium$6[(_0x19fadc(0x1bb))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x19fadc(0x253)],'pass':Cesium$6['Pass']['OPAQUE']}));}return _createClass(_0x5d53c2,[{'key':'createCommand','value':function _0x22c733(_0x2469ef){var _0x5abe6c=_0x4469;switch(this[_0x5abe6c(0x1c7)]){case'Draw':{var _0x598325=Cesium$6[_0x5abe6c(0x216)]['fromGeometry']({'context':_0x2469ef,'geometry':this['geometry'],'attributeLocations':this[_0x5abe6c(0x260)],'bufferUsage':Cesium$6['BufferUsage'][_0x5abe6c(0x225)]}),_0x332184=Cesium$6[_0x5abe6c(0x294)]['fromCache']({'context':_0x2469ef,'attributeLocations':this[_0x5abe6c(0x260)],'vertexShaderSource':this['vertexShaderSource'],'fragmentShaderSource':this['fragmentShaderSource']}),_0x4988e6=Cesium$6['RenderState'][_0x5abe6c(0x1ab)](this['rawRenderState']);return new Cesium$6[(_0x5abe6c(0x20d))]({'primitiveType':this['primitiveType'],'shaderProgram':_0x332184,'vertexArray':_0x598325,'modelMatrix':Cesium$6['Matrix4']['IDENTITY'],'renderState':_0x4988e6,'uniformMap':this['uniformMap'],'castShadows':![],'receiveShadows':![],'framebuffer':this['framebuffer'],'pass':Cesium$6['Pass']['OPAQUE'],'pickOnly':!![],'owner':this});}case _0x5abe6c(0x1a6):{return new Cesium$6[(_0x5abe6c(0x1fa))]({'owner':this,'fragmentShaderSource':this['fragmentShaderSource'],'uniformMap':this['uniformMap'],'outputTexture':this[_0x5abe6c(0x230)],'persists':!![]});}}}},{'key':'setGeometry','value':function _0x4ded26(_0x7b1ad6,_0x36ef2d){var _0x248a7b=_0x4469;this['geometry']=_0x36ef2d;var _0x102088=Cesium$6['VertexArray']['fromGeometry']({'context':_0x7b1ad6,'geometry':this[_0x248a7b(0x1d2)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6[_0x248a7b(0x25e)][_0x248a7b(0x225)]});this[_0x248a7b(0x226)]['vertexArray']=_0x102088;}},{'key':'update','value':function _0x201cdc(_0x3a9350){var _0x549e40=_0x4469;if(!this['show'])return;if(_0x3a9350['mode']!==Cesium$6[_0x549e40(0x27a)]['SCENE3D'])return;!Cesium$6['defined'](this['commandToExecute'])&&(this[_0x549e40(0x226)]=this[_0x549e40(0x1b2)](_0x3a9350['context'])),Cesium$6['defined'](this['preExecute'])&&this[_0x549e40(0x236)](),Cesium$6[_0x549e40(0x1b5)](this[_0x549e40(0x263)])&&_0x3a9350['commandList']['push'](this[_0x549e40(0x263)]),_0x3a9350[_0x549e40(0x291)]['push'](this['commandToExecute']);}},{'key':_0x2b7980(0x211),'value':function _0x2d406d(){return![];}},{'key':'destroy','value':function _0x3628b0(){var _0x9d5d55=_0x2b7980;if(this[_0x9d5d55(0x263)]){var _0x25641c,_0x599678;(_0x25641c=this['clearCommand'])!==null&&_0x25641c!==void 0x0&&_0x25641c['vertexArray']&&this['clearCommand']['vertexArray'][_0x9d5d55(0x28a)](),(_0x599678=this['clearCommand'])!==null&&_0x599678!==void 0x0&&_0x599678['shaderProgram']&&this['clearCommand']['shaderProgram']['destroy'](),delete this[_0x9d5d55(0x263)];}return this[_0x9d5d55(0x226)]&&(this[_0x9d5d55(0x226)]['vertexArray']&&this[_0x9d5d55(0x226)]['vertexArray'][_0x9d5d55(0x28a)](),this[_0x9d5d55(0x226)]['shaderProgram']&&this[_0x9d5d55(0x226)][_0x9d5d55(0x1f3)]['destroy'](),delete this['commandToExecute']),Cesium$6[_0x9d5d55(0x290)](this);}}]),_0x5d53c2;}()),Cesium$5=mars3d__namespace['Cesium'],Util=(function(){var _0x26ea69=function _0x3c934d(){var _0x4044b9=_0x4469,_0x2596ae=new Cesium$5[(_0x4044b9(0x1e1))]({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5[(_0x4044b9(0x27e))]({'componentDatatype':Cesium$5[_0x4044b9(0x1e0)]['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5[_0x4044b9(0x1e0)][_0x4044b9(0x213)],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x2596ae;},_0x96b6fc=function _0x5acf90(_0x4f5da2,_0x1d47ff){var _0x115185=_0x4469;if(Cesium$5['defined'](_0x1d47ff)){var _0x3a97d8={};_0x3a97d8['arrayBufferView']=_0x1d47ff,_0x4f5da2['source']=_0x3a97d8;}var _0x334877=new Cesium$5[(_0x115185(0x29e))](_0x4f5da2);return _0x334877;},_0x57895f=function _0x8ab71a(_0x3539d3,_0x3af58e,_0x4b3ebd){var _0x4542d4=new Cesium$5['Framebuffer']({'context':_0x3539d3,'colorTextures':[_0x3af58e],'depthTexture':_0x4b3ebd});return _0x4542d4;},_0x377ce1=function _0x5bbc43(_0x1a657c){var _0x1cb78a=_0x4469,_0x924799=!![],_0x468c88=![],_0x2f3697={'viewport':_0x1a657c['viewport'],'depthTest':_0x1a657c[_0x1cb78a(0x243)],'depthMask':_0x1a657c[_0x1cb78a(0x1b3)],'blending':_0x1a657c['blending']},_0x467fb1=Cesium$5['Appearance']['getDefaultRenderState'](_0x924799,_0x468c88,_0x2f3697);return _0x467fb1;},_0x442b9a=function _0x12b5bd(_0xea98e6){var _0x27882c=_0x4469,_0x45f6eb={},_0x53ee56=Cesium$5[_0x27882c(0x1a8)]['mod'](_0xea98e6['west'],Cesium$5['Math']['TWO_PI']),_0x3fa1bf=Cesium$5['Math']['mod'](_0xea98e6[_0x27882c(0x26a)],Cesium$5['Math']['TWO_PI']),_0x21f723=_0xea98e6['width'],_0x1da0cc,_0x35eb99;_0x21f723>Cesium$5['Math'][_0x27882c(0x255)]?(_0x1da0cc=0x0,_0x35eb99=Cesium$5[_0x27882c(0x1a8)]['TWO_PI']):_0x3fa1bf-_0x53ee56<_0x21f723?(_0x1da0cc=_0x53ee56,_0x35eb99=_0x53ee56+_0x21f723):(_0x1da0cc=_0x53ee56,_0x35eb99=_0x3fa1bf);_0x45f6eb['lon']={'min':Cesium$5[_0x27882c(0x1a8)]['toDegrees'](_0x1da0cc),'max':Cesium$5['Math']['toDegrees'](_0x35eb99)};var _0x417351=_0xea98e6['south'],_0x170ba0=_0xea98e6[_0x27882c(0x204)],_0x5152d6=_0xea98e6['height'],_0x1c90f5=_0x5152d6>Cesium$5[_0x27882c(0x1a8)]['PI']/0xc?_0x5152d6/0x2:0x0,_0x17a996=Cesium$5[_0x27882c(0x1a8)][_0x27882c(0x269)](_0x417351-_0x1c90f5),_0x42de62=Cesium$5['Math']['clampToLatitudeRange'](_0x170ba0+_0x1c90f5);return _0x17a996<-Cesium$5[_0x27882c(0x1a8)][_0x27882c(0x24b)]&&(_0x17a996=-Cesium$5['Math']['PI_OVER_TWO']),_0x42de62>Cesium$5[_0x27882c(0x1a8)]['PI_OVER_THREE']&&(_0x42de62=Cesium$5['Math'][_0x27882c(0x1f8)]),_0x45f6eb[_0x27882c(0x265)]={'min':Cesium$5['Math'][_0x27882c(0x247)](_0x17a996),'max':Cesium$5['Math'][_0x27882c(0x247)](_0x42de62)},_0x45f6eb;};return{'getFullscreenQuad':_0x26ea69,'createTexture':_0x96b6fc,'createFramebuffer':_0x57895f,'createRawRenderState':_0x377ce1,'viewRectangleToLonLatRange':_0x442b9a};}()),segmentDraw_vert='attribute\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20normal\x0aattribute\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\x0avarying\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\x20\x0a\x20\x20\x20\x20float\x20a\x20=\x206378137.0;\x20//\x20Semi-major\x20axis\x20\x0a\x20\x20\x20\x20float\x20b\x20=\x206356752.3142;\x20//\x20Semi-minor\x20axis\x20\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=\x20texture2D(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20\x20\x20vec4\x20nextPosition\x20=\x20texture2D(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=\x20texture2D(postProcessingSpeed,\x20particleIndex).a;\x0a}',segmentDraw_frag='uniform\x20sampler2D\x20colorTable;\x0a\x0avarying\x20float\x20speedNormalization;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20texture2D(colorTable,\x20vec2(speedNormalization,\x200.0));\x0a}',fullscreen_vert='attribute\x20vec3\x20position;\x0d\x0aattribute\x20vec2\x20st;\x0d\x0a\x0d\x0avarying\x20vec2\x20textureCoordinate;\x0d\x0a\x0d\x0avoid\x20main()\x20{\x0d\x0a\x20\x20\x20\x20textureCoordinate\x20=\x20st;\x0d\x0a\x20\x20\x20\x20gl_Position\x20=\x20vec4(position,\x201.0);\x0d\x0a}',trailDraw_frag='uniform\x20sampler2D\x20segmentsColorTexture;\x0d\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0d\x0a\x0d\x0auniform\x20sampler2D\x20currentTrailsColor;\x0d\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0d\x0a\x0d\x0auniform\x20float\x20fadeOpacity;\x0d\x0a\x0d\x0avarying\x20vec2\x20textureCoordinate;\x0d\x0a\x0d\x0avoid\x20main()\x20{\x0d\x0a\x20\x20\x20\x20vec4\x20pointsColor\x20=\x20texture2D(segmentsColorTexture,\x20textureCoordinate);\x0d\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture2D(currentTrailsColor,\x20textureCoordinate);\x0d\x0a\x0d\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\x0d\x0a\x0d\x0a\x20\x20\x20\x20float\x20pointsDepth\x20=\x20texture2D(segmentsDepthTexture,\x20textureCoordinate).r;\x0d\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture2D(trailsDepthTexture,\x20textureCoordinate).r;\x0d\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture2D(czm_globeDepthTexture,\x20textureCoordinate));\x0d\x0a\x0d\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(0.0);\x0d\x0a\x20\x20\x20\x20if\x20(pointsDepth\x20<\x20globeDepth)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20gl_FragColor\x20+\x20pointsColor;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20gl_FragColor\x20+\x20trailsColor;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20gl_FragDepthEXT\x20=\x20min(pointsDepth,\x20trailsDepth);\x0d\x0a}',screenDraw_frag='uniform\x20sampler2D\x20trailsColorTexture;\x0d\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0d\x0a\x0d\x0avarying\x20vec2\x20textureCoordinate;\x0d\x0a\x0d\x0avoid\x20main()\x20{\x0d\x0a\x20\x20\x20\x20vec4\x20trailsColor\x20=\x20texture2D(trailsColorTexture,\x20textureCoordinate);\x0d\x0a\x20\x20\x20\x20float\x20trailsDepth\x20=\x20texture2D(trailsDepthTexture,\x20textureCoordinate).r;\x0d\x0a\x20\x20\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture2D(czm_globeDepthTexture,\x20textureCoordinate));\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20(trailsDepth\x20<\x20globeDepth)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20trailsColor;\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(0.0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}',Cesium$4=mars3d__namespace['Cesium'],ParticlesRendering=(function(){var _0x88e9d9=_0x1031ee;function _0x443bcd(_0x806839,_0x5702b6,_0x95245c,_0xe95244,_0x379b24){_classCallCheck(this,_0x443bcd),this['createRenderingTextures'](_0x806839,_0x5702b6,_0x95245c['colors']),this['createRenderingFramebuffers'](_0x806839),this['createRenderingPrimitives'](_0x806839,_0x95245c,_0xe95244,_0x379b24);}return _createClass(_0x443bcd,[{'key':'createRenderingTextures','value':function _0xdafb5(_0x267ea0,_0x3c3c63,_0x21656c){var _0x34f912=_0x4469,_0x321524={'context':_0x267ea0,'width':_0x267ea0['drawingBufferWidth'],'height':_0x267ea0['drawingBufferHeight'],'pixelFormat':Cesium$4[_0x34f912(0x1ee)]['RGBA'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_BYTE']},_0x51d355={'context':_0x267ea0,'width':_0x267ea0['drawingBufferWidth'],'height':_0x267ea0[_0x34f912(0x228)],'pixelFormat':Cesium$4['PixelFormat']['DEPTH_COMPONENT'],'pixelDatatype':Cesium$4['PixelDatatype']['UNSIGNED_INT']},_0x1e8995=_0x21656c['length'],_0x52e9ee=new Float32Array(_0x1e8995*0x3);for(var _0x8b3baf=0x0;_0x8b3baf<_0x1e8995;_0x8b3baf++){var _0x582182=Cesium$4['Color']['fromCssColorString'](_0x21656c[_0x8b3baf]);_0x52e9ee[0x3*_0x8b3baf]=_0x582182['red'],_0x52e9ee[0x3*_0x8b3baf+0x1]=_0x582182[_0x34f912(0x238)],_0x52e9ee[0x3*_0x8b3baf+0x2]=_0x582182[_0x34f912(0x23c)];}var _0x20a8c2={'context':_0x267ea0,'width':_0x1e8995,'height':0x1,'pixelFormat':Cesium$4['PixelFormat'][_0x34f912(0x207)],'pixelDatatype':Cesium$4[_0x34f912(0x1c2)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4['TextureMinificationFilter'][_0x34f912(0x1cb)],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this['textures']={'segmentsColor':Util['createTexture'](_0x321524),'segmentsDepth':Util[_0x34f912(0x28d)](_0x51d355),'currentTrailsColor':Util[_0x34f912(0x28d)](_0x321524),'currentTrailsDepth':Util['createTexture'](_0x51d355),'nextTrailsColor':Util['createTexture'](_0x321524),'nextTrailsDepth':Util[_0x34f912(0x28d)](_0x51d355),'colorTable':Util[_0x34f912(0x28d)](_0x20a8c2,_0x52e9ee)};}},{'key':_0x88e9d9(0x1b8),'value':function _0x18c978(_0x369c0e){var _0x3877a0=_0x88e9d9;this['framebuffers']={'segments':Util['createFramebuffer'](_0x369c0e,this['textures']['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util[_0x3877a0(0x1e3)](_0x369c0e,this['textures'][_0x3877a0(0x208)],this[_0x3877a0(0x292)]['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x369c0e,this['textures']['nextTrailsColor'],this['textures']['nextTrailsDepth'])};}},{'key':'createSegmentsGeometry','value':function _0x820053(_0x43b309){var _0x5d46e1=_0x88e9d9,_0x13df08=0x4,_0x34d420=[];for(var _0x4d95b3=0x0;_0x4d95b3<_0x43b309['particlesTextureSize'];_0x4d95b3++){for(var _0x56a79=0x0;_0x56a79<_0x43b309['particlesTextureSize'];_0x56a79++){for(var _0x40cad2=0x0;_0x40cad2<_0x13df08;_0x40cad2++){_0x34d420[_0x5d46e1(0x240)](_0x4d95b3/_0x43b309[_0x5d46e1(0x1b4)]),_0x34d420['push'](_0x56a79/_0x43b309['particlesTextureSize']);}}}_0x34d420=new Float32Array(_0x34d420);var _0x12ced5=[],_0x1fad28=[-0x1,0x1],_0x597c00=[-0x1,0x1];for(var _0x686827=0x0;_0x686827<_0x43b309[_0x5d46e1(0x29d)];_0x686827++){for(var _0x29fef9=0x0;_0x29fef9<_0x13df08/0x2;_0x29fef9++){for(var _0x436884=0x0;_0x436884<_0x13df08/0x2;_0x436884++){_0x12ced5['push'](_0x1fad28[_0x29fef9]),_0x12ced5[_0x5d46e1(0x240)](_0x597c00[_0x436884]),_0x12ced5[_0x5d46e1(0x240)](0x0);}}}_0x12ced5=new Float32Array(_0x12ced5);var _0x36e251=0x6*_0x43b309['maxParticles'],_0x58fbaa=new Uint32Array(_0x36e251);for(var _0x356cd3=0x0,_0x3ff4c0=0x0,_0x5f7dad=0x0;_0x356cd3<_0x43b309[_0x5d46e1(0x29d)];_0x356cd3++){_0x58fbaa[_0x3ff4c0++]=_0x5f7dad+0x0,_0x58fbaa[_0x3ff4c0++]=_0x5f7dad+0x1,_0x58fbaa[_0x3ff4c0++]=_0x5f7dad+0x2,_0x58fbaa[_0x3ff4c0++]=_0x5f7dad+0x2,_0x58fbaa[_0x3ff4c0++]=_0x5f7dad+0x1,_0x58fbaa[_0x3ff4c0++]=_0x5f7dad+0x3,_0x5f7dad+=0x4;}var _0x275a1d=new Cesium$4[(_0x5d46e1(0x1e1))]({'attributes':new Cesium$4['GeometryAttributes']({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x34d420}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype'][_0x5d46e1(0x213)],'componentsPerAttribute':0x3,'values':_0x12ced5})}),'indices':_0x58fbaa});return _0x275a1d;}},{'key':'createRenderingPrimitives','value':function _0x1d0ad9(_0x21fab6,_0x40121b,_0x34a9b2,_0x135691){var _0x32fe4a=_0x88e9d9,_0x443186=this;this[_0x32fe4a(0x1eb)]={'segments':new CustomPrimitive({'commandType':_0x32fe4a(0x1e6),'attributeLocations':{'st':0x0,'normal':0x1},'geometry':this[_0x32fe4a(0x273)](_0x40121b),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'currentParticlesPosition':function _0x561651(){var _0x529145=_0x32fe4a;return _0x135691[_0x529145(0x1c3)]['currentParticlesPosition'];},'postProcessingPosition':function _0x5bc13f(){return _0x135691['particlesTextures']['postProcessingPosition'];},'postProcessingSpeed':function _0x1466e0(){return _0x135691['particlesTextures']['postProcessingSpeed'];},'colorTable':function _0x7ba3ae(){var _0x637f3f=_0x32fe4a;return _0x443186['textures'][_0x637f3f(0x1c9)];},'aspect':function _0x2a7e27(){return _0x21fab6['drawingBufferWidth']/_0x21fab6['drawingBufferHeight'];},'pixelSize':function _0xe4ae11(){return _0x34a9b2['pixelSize'];},'lineWidth':function _0x816cbb(){var _0x1d9f27=_0x32fe4a;return _0x40121b[_0x1d9f27(0x242)];},'particleHeight':function _0x23bc5d(){return _0x40121b['particleHeight'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'sources':[segmentDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![]},'depthMask':!![]}),'framebuffer':this['framebuffers']['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':_0x32fe4a(0x1e6),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType'][_0x32fe4a(0x1ec)],'uniformMap':{'segmentsColorTexture':function _0x54ad1c(){var _0x1d441a=_0x32fe4a;return _0x443186[_0x1d441a(0x292)]['segmentsColor'];},'segmentsDepthTexture':function _0x104973(){var _0x53dc7f=_0x32fe4a;return _0x443186['textures'][_0x53dc7f(0x1d8)];},'currentTrailsColor':function _0x1501d9(){var _0x542988=_0x32fe4a;return _0x443186[_0x542988(0x222)]['currentTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function _0x26f174(){var _0x59eb4d=_0x32fe4a;return _0x443186[_0x59eb4d(0x222)]['currentTrails']['depthTexture'];},'fadeOpacity':function _0x369daf(){return _0x40121b['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4['ShaderSource']({'defines':[_0x32fe4a(0x28b)],'sources':[trailDraw_frag]}),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction'][_0x32fe4a(0x1e4)]},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function _0x345846(){var _0xa7f4ea=_0x32fe4a,_0x1ebcb2=_0x443186[_0xa7f4ea(0x222)][_0xa7f4ea(0x2a0)];_0x443186['framebuffers']['currentTrails']=_0x443186[_0xa7f4ea(0x222)]['nextTrails'],_0x443186[_0xa7f4ea(0x222)][_0xa7f4ea(0x210)]=_0x1ebcb2,_0x443186['primitives']['trails']['commandToExecute']['framebuffer']=_0x443186[_0xa7f4ea(0x222)]['nextTrails'],_0x443186[_0xa7f4ea(0x1eb)]['trails']['clearCommand'][_0xa7f4ea(0x253)]=_0x443186[_0xa7f4ea(0x222)]['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0x32fe4a(0x1e6),'attributeLocations':{'position':0x0,'st':0x1},'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function _0x5421f7(){return _0x443186['framebuffers']['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function _0x143af4(){var _0xba6b6=_0x32fe4a;return _0x443186['framebuffers'][_0xba6b6(0x210)]['depthTexture'];}},'vertexShaderSource':new Cesium$4['ShaderSource']({'defines':['DISABLE_GL_POSITION_LOG_DEPTH'],'sources':[fullscreen_vert]}),'fragmentShaderSource':new Cesium$4[(_0x32fe4a(0x287))]({'defines':['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],'sources':[screenDraw_frag]}),'rawRenderState':Util[_0x32fe4a(0x1bf)]({'viewport':undefined,'depthTest':{'enabled':![]},'depthMask':!![],'blending':{'enabled':!![]}}),'framebuffer':undefined})};}}]),_0x443bcd;}()),getWind_frag=_0x1031ee(0x1e5),updateSpeed_frag='uniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0auniform\x20sampler2D\x20particlesWind;\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20speedFactor;\x0a\x0avarying\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=\x20texture2D(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20windVector\x20=\x20texture2D(particlesWind,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20vec4(speedFactor\x20*\x20pixelSize\x20*\x20windVector,\x20calculateWindNorm(windVector));\x0a\x20\x20\x20\x20gl_FragColor\x20=\x20nextSpeed;\x0a}',updatePosition_frag='uniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20currentParticlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20normalization)\x0a\x0avarying\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\x20gl_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=\x20texture2D(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec3\x20speed\x20=\x20texture2D(currentParticlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x0a\x20\x20\x20\x20updatePosition(lonLatLev,\x20speed);\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\x0avarying\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=\x20texture2D(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20\x20\x20vec4\x20nextSpeed\x20=\x20texture2D(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\x20gl_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\x20gl_FragColor\x20=\x20vec4(nextParticle,\x200.0);\x0a\x20\x20\x20\x20}\x0a}',postProcessingSpeed_frag='uniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20nextParticlesSpeed;\x0a\x0avarying\x20vec2\x20v_textureCoordinates;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20vec4\x20randomParticle\x20=\x20texture2D(postProcessingPosition,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20vec4\x20particleSpeed\x20=\x20texture2D(nextParticlesSpeed,\x20v_textureCoordinates);\x0a\x0a\x20\x20\x20\x20if\x20(randomParticle.a\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20vec4(0.0);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragColor\x20=\x20particleSpeed;\x0a\x20\x20\x20\x20}\x0a}',Cesium$3=mars3d__namespace['Cesium'],ParticlesComputing=(function(){var _0x3ee9aa=_0x1031ee;function _0x22b5d2(_0x4933a7,_0x381e40,_0x3ae7fc,_0x328fd7){_classCallCheck(this,_0x22b5d2),this['data']=_0x381e40,this['createWindTextures'](_0x4933a7,_0x381e40),this['createParticlesTextures'](_0x4933a7,_0x3ae7fc,_0x328fd7),this['createComputingPrimitives'](_0x381e40,_0x3ae7fc,_0x328fd7);}return _createClass(_0x22b5d2,[{'key':'createWindTextures','value':function _0x24f503(_0x5a20b3,_0x2c2858){var _0x412e6a=_0x4469,_0x1a7d21={'context':_0x5a20b3,'width':_0x2c2858['dimensions'][_0x412e6a(0x297)],'height':_0x2c2858['dimensions']['lat']*(_0x2c2858['dimensions']['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat']['LUMINANCE'],'pixelDatatype':Cesium$3['PixelDatatype'][_0x412e6a(0x213)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3[_0x412e6a(0x1dc)]['NEAREST']})};this['windTextures']={'U':Util['createTexture'](_0x1a7d21,_0x2c2858['U']['array']),'V':Util['createTexture'](_0x1a7d21,_0x2c2858['V']['array'])};}},{'key':'createParticlesTextures','value':function _0x2f3abe(_0x263f69,_0x40efac,_0x522387){var _0x2d42c2=_0x4469,_0x473708={'context':_0x263f69,'width':_0x40efac['particlesTextureSize'],'height':_0x40efac['particlesTextureSize'],'pixelFormat':Cesium$3['PixelFormat'][_0x2d42c2(0x26d)],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x2d42c2(0x279)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x407f4d=this['randomizeParticles'](_0x40efac['maxParticles'],_0x522387),_0x866ecb=new Float32Array(0x4*_0x40efac['maxParticles'])[_0x2d42c2(0x254)](0x0);this['particlesTextures']={'particlesWind':Util['createTexture'](_0x473708),'currentParticlesPosition':Util[_0x2d42c2(0x28d)](_0x473708,_0x407f4d),'nextParticlesPosition':Util[_0x2d42c2(0x28d)](_0x473708,_0x407f4d),'currentParticlesSpeed':Util[_0x2d42c2(0x28d)](_0x473708,_0x866ecb),'nextParticlesSpeed':Util['createTexture'](_0x473708,_0x866ecb),'postProcessingPosition':Util[_0x2d42c2(0x28d)](_0x473708,_0x407f4d),'postProcessingSpeed':Util[_0x2d42c2(0x28d)](_0x473708,_0x866ecb)};}},{'key':_0x3ee9aa(0x1ae),'value':function _0x1faf8c(_0x45c773,_0x5f7ebe){var _0x5eec25=_0x3ee9aa,_0x338ab1=new Float32Array(0x4*_0x45c773);for(var _0x5d6428=0x0;_0x5d6428<_0x45c773;_0x5d6428++){_0x338ab1[0x4*_0x5d6428]=Cesium$3[_0x5eec25(0x1a8)]['randomBetween'](_0x5f7ebe['lonRange']['x'],_0x5f7ebe[_0x5eec25(0x1b6)]['y']),_0x338ab1[0x4*_0x5d6428+0x1]=Cesium$3['Math']['randomBetween'](_0x5f7ebe['latRange']['x'],_0x5f7ebe['latRange']['y']),_0x338ab1[0x4*_0x5d6428+0x2]=Cesium$3['Math']['randomBetween'](this['data']['lev']['min'],this[_0x5eec25(0x246)]['lev'][_0x5eec25(0x29f)]),_0x338ab1[0x4*_0x5d6428+0x3]=0x0;}return _0x338ab1;}},{'key':_0x3ee9aa(0x1ce),'value':function _0x2c3ae4(){var _0x3a542d=this;Object['keys'](this['particlesTextures'])['forEach'](function(_0x590e19){var _0x33c998=_0x4469;_0x3a542d[_0x33c998(0x1c3)][_0x590e19][_0x33c998(0x28a)]();});}},{'key':_0x3ee9aa(0x1a7),'value':function _0x1e12a9(_0x3ad850,_0xe9b3c4,_0x13ca17){var _0x5493ec=_0x3ee9aa,_0x122a7a=new Cesium$3['Cartesian3'](_0x3ad850[_0x5493ec(0x21e)]['lon'],_0x3ad850['dimensions']['lat'],_0x3ad850['dimensions']['lev']),_0x430dc7=new Cesium$3['Cartesian3'](_0x3ad850[_0x5493ec(0x297)]['min'],_0x3ad850['lat']['min'],_0x3ad850[_0x5493ec(0x20c)]['min']),_0x523912=new Cesium$3[(_0x5493ec(0x26e))](_0x3ad850['lon'][_0x5493ec(0x29f)],_0x3ad850[_0x5493ec(0x265)][_0x5493ec(0x29f)],_0x3ad850['lev'][_0x5493ec(0x29f)]),_0x442f7a=new Cesium$3['Cartesian3']((_0x523912['x']-_0x430dc7['x'])/(_0x122a7a['x']-0x1),(_0x523912['y']-_0x430dc7['y'])/(_0x122a7a['y']-0x1),_0x122a7a['z']>0x1?(_0x523912['z']-_0x430dc7['z'])/(_0x122a7a['z']-0x1):0x1),_0x2fc286=new Cesium$3['Cartesian2'](_0x3ad850['U'][_0x5493ec(0x21d)],_0x3ad850['U']['max']),_0x3cea40=new Cesium$3[(_0x5493ec(0x266))](_0x3ad850['V']['min'],_0x3ad850['V'][_0x5493ec(0x29f)]),_0x44aee5=this;this['primitives']={'getWind':new CustomPrimitive({'commandType':'Compute','uniformMap':{'U':function _0x40b977(){return _0x44aee5['windTextures']['U'];},'V':function _0x450ae5(){var _0x5f4890=_0x5493ec;return _0x44aee5[_0x5f4890(0x1b9)]['V'];},'currentParticlesPosition':function _0x2f3dc5(){var _0x3db28d=_0x5493ec;return _0x44aee5[_0x3db28d(0x1c3)][_0x3db28d(0x1f9)];},'dimension':function _0x4c4e68(){return _0x122a7a;},'minimum':function _0x4a95f9(){return _0x430dc7;},'maximum':function _0x3e30b4(){return _0x523912;},'interval':function _0x4d0e96(){return _0x442f7a;}},'fragmentShaderSource':new Cesium$3[(_0x5493ec(0x287))]({'sources':[getWind_frag]}),'outputTexture':this[_0x5493ec(0x1c3)]['particlesWind'],'preExecute':function _0x2ae021(){var _0x111b30=_0x5493ec;_0x44aee5['primitives']['getWind']['commandToExecute'][_0x111b30(0x230)]=_0x44aee5['particlesTextures'][_0x111b30(0x205)];}}),'updateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesSpeed':function _0x17365c(){var _0x282f75=_0x5493ec;return _0x44aee5[_0x282f75(0x1c3)][_0x282f75(0x1da)];},'particlesWind':function _0x23e1f5(){return _0x44aee5['particlesTextures']['particlesWind'];},'uSpeedRange':function _0x2407d5(){return _0x2fc286;},'vSpeedRange':function _0x38b70c(){return _0x3cea40;},'pixelSize':function _0x1b2fe0(){return _0x13ca17['pixelSize'];},'speedFactor':function _0x4b0f88(){return _0xe9b3c4['speedFactor'];}},'fragmentShaderSource':new Cesium$3[(_0x5493ec(0x287))]({'sources':[updateSpeed_frag]}),'outputTexture':this['particlesTextures']['nextParticlesSpeed'],'preExecute':function _0x5bf0b2(){var _0x35d29a=_0x5493ec,_0x27c70a=_0x44aee5['particlesTextures'][_0x35d29a(0x1da)];_0x44aee5['particlesTextures']['currentParticlesSpeed']=_0x44aee5['particlesTextures']['postProcessingSpeed'],_0x44aee5['particlesTextures']['postProcessingSpeed']=_0x27c70a,_0x44aee5['primitives'][_0x35d29a(0x202)][_0x35d29a(0x226)]['outputTexture']=_0x44aee5['particlesTextures']['nextParticlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'currentParticlesPosition':function _0x1f5a05(){var _0x19fe0f=_0x5493ec;return _0x44aee5['particlesTextures'][_0x19fe0f(0x1f9)];},'currentParticlesSpeed':function _0x2cc0a9(){return _0x44aee5['particlesTextures']['currentParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource']({'sources':[updatePosition_frag]}),'outputTexture':this['particlesTextures']['nextParticlesPosition'],'preExecute':function _0x399c30(){var _0xe27e4e=_0x5493ec,_0x521bb8=_0x44aee5['particlesTextures']['currentParticlesPosition'];_0x44aee5['particlesTextures']['currentParticlesPosition']=_0x44aee5['particlesTextures'][_0xe27e4e(0x1ef)],_0x44aee5['particlesTextures']['postProcessingPosition']=_0x521bb8,_0x44aee5['primitives']['updatePosition']['commandToExecute'][_0xe27e4e(0x230)]=_0x44aee5[_0xe27e4e(0x1c3)][_0xe27e4e(0x217)];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function _0x1c5e37(){var _0x599c8c=_0x5493ec;return _0x44aee5[_0x599c8c(0x1c3)]['nextParticlesPosition'];},'nextParticlesSpeed':function _0x4065d2(){return _0x44aee5['particlesTextures']['nextParticlesSpeed'];},'lonRange':function _0x5de428(){return _0x13ca17['lonRange'];},'latRange':function _0x26f1c5(){var _0x18c814=_0x5493ec;return _0x13ca17[_0x18c814(0x229)];},'randomCoefficient':function _0x11ad63(){var _0x16e5fd=Math['random']();return _0x16e5fd;},'dropRate':function _0x34bac0(){return _0xe9b3c4['dropRate'];},'dropRateBump':function _0x21c6bd(){return _0xe9b3c4['dropRateBump'];}},'fragmentShaderSource':new Cesium$3[(_0x5493ec(0x287))]({'sources':[postProcessingPosition_frag]}),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function _0x545b2f(){var _0x2e1d2c=_0x5493ec;_0x44aee5['primitives']['postProcessingPosition'][_0x2e1d2c(0x226)]['outputTexture']=_0x44aee5['particlesTextures'][_0x2e1d2c(0x1ef)];}}),'postProcessingSpeed':new CustomPrimitive({'commandType':_0x5493ec(0x1a6),'uniformMap':{'postProcessingPosition':function _0x40462b(){return _0x44aee5['particlesTextures']['postProcessingPosition'];},'nextParticlesSpeed':function _0xc96f10(){var _0x396ed6=_0x5493ec;return _0x44aee5[_0x396ed6(0x1c3)]['nextParticlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x5493ec(0x287))]({'sources':[postProcessingSpeed_frag]}),'outputTexture':this['particlesTextures']['postProcessingSpeed'],'preExecute':function _0x364736(){var _0x27f25b=_0x5493ec;_0x44aee5['primitives'][_0x27f25b(0x1d5)]['commandToExecute'][_0x27f25b(0x230)]=_0x44aee5[_0x27f25b(0x1c3)][_0x27f25b(0x1d5)];}})};}}]),_0x22b5d2;}()),Cesium$2=mars3d__namespace['Cesium'],ParticleSystem=(function(){var _0x39fbdf=_0x1031ee;function _0x3618f7(_0x39db22,_0x311d18,_0x1928d9,_0x4ec547){var _0x509e88=_0x4469;_classCallCheck(this,_0x3618f7),this['context']=_0x39db22,_0x311d18=_objectSpread2({},_0x311d18);if(_0x311d18['udata']&&_0x311d18[_0x509e88(0x1af)]){var _0x3ec065,_0x3ae1d3,_0x178b0c,_0x1eb377,_0x774e65,_0x548d3f;_0x311d18[_0x509e88(0x21e)]={},_0x311d18['dimensions'][_0x509e88(0x297)]=_0x311d18[_0x509e88(0x28f)],_0x311d18[_0x509e88(0x21e)]['lat']=_0x311d18[_0x509e88(0x1e8)],_0x311d18['dimensions']['lev']=_0x311d18['lev']||0x1,_0x311d18['lon']={},_0x311d18['lon']['min']=_0x311d18['xmin'],_0x311d18['lon'][_0x509e88(0x29f)]=_0x311d18['xmax'],_0x311d18['lat']={},_0x311d18['lat']['min']=_0x311d18['ymin'],_0x311d18['lat']['max']=_0x311d18['ymax'],_0x311d18['lev']={},_0x311d18['lev'][_0x509e88(0x21d)]=(_0x3ec065=_0x311d18['levmin'])!==null&&_0x3ec065!==void 0x0?_0x3ec065:0x1,_0x311d18['lev']['max']=(_0x3ae1d3=_0x311d18['levmax'])!==null&&_0x3ae1d3!==void 0x0?_0x3ae1d3:0x1,_0x311d18['U']={},_0x311d18['U'][_0x509e88(0x1be)]=new Float32Array(_0x311d18['udata']),_0x311d18['U'][_0x509e88(0x21d)]=(_0x178b0c=_0x311d18['umin'])!==null&&_0x178b0c!==void 0x0?_0x178b0c:Math['min']['apply'](Math,_toConsumableArray(_0x311d18[_0x509e88(0x220)])),_0x311d18['U']['max']=(_0x1eb377=_0x311d18['umax'])!==null&&_0x1eb377!==void 0x0?_0x1eb377:Math['max']['apply'](Math,_toConsumableArray(_0x311d18[_0x509e88(0x220)])),_0x311d18['V']={},_0x311d18['V']['array']=new Float32Array(_0x311d18['vdata']),_0x311d18['V']['min']=(_0x774e65=_0x311d18['vmin'])!==null&&_0x774e65!==void 0x0?_0x774e65:Math[_0x509e88(0x21d)]['apply'](Math,_toConsumableArray(_0x311d18['vdata'])),_0x311d18['V'][_0x509e88(0x29f)]=(_0x548d3f=_0x311d18[_0x509e88(0x1c8)])!==null&&_0x548d3f!==void 0x0?_0x548d3f:Math['max']['apply'](Math,_toConsumableArray(_0x311d18['vdata']));}this['data']=_0x311d18,this[_0x509e88(0x22d)]=_0x1928d9,this['viewerParameters']=_0x4ec547,this[_0x509e88(0x24e)]=new ParticlesComputing(this['context'],this[_0x509e88(0x246)],this['options'],this[_0x509e88(0x281)]),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}return _createClass(_0x3618f7,[{'key':_0x39fbdf(0x212),'value':function _0x34275c(_0x4cf863){var _0x3a956b=_0x39fbdf,_0x3e8cc8=this;this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](function(_0x189530){var _0x441483=_0x4469;_0x3e8cc8[_0x441483(0x24e)][_0x441483(0x1b9)][_0x189530]['destroy']();}),this['particlesRendering']['textures']['colorTable']['destroy'](),Object[_0x3a956b(0x1a5)](this[_0x3a956b(0x275)]['framebuffers'])['forEach'](function(_0x33c59d){var _0x1b1318=_0x3a956b;_0x3e8cc8['particlesRendering'][_0x1b1318(0x222)][_0x33c59d]['destroy']();}),this['context']=_0x4cf863,this['particlesComputing']=new ParticlesComputing(this[_0x3a956b(0x1c5)],this['data'],this[_0x3a956b(0x22d)],this['viewerParameters']),this[_0x3a956b(0x275)]=new ParticlesRendering(this['context'],this[_0x3a956b(0x246)],this['options'],this['viewerParameters'],this['particlesComputing']);}},{'key':_0x39fbdf(0x218),'value':function _0x425d06(){var _0x19f888=_0x39fbdf,_0xb53153=this,_0x59e0b5=new Cesium$2['ClearCommand']({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass'][_0x19f888(0x283)]});Object['keys'](this['particlesRendering'][_0x19f888(0x222)])['forEach'](function(_0x3dcc62){var _0x1b198b=_0x19f888;_0x59e0b5[_0x1b198b(0x253)]=_0xb53153[_0x1b198b(0x275)][_0x1b198b(0x222)][_0x3dcc62],_0x59e0b5[_0x1b198b(0x1d4)](_0xb53153['context']);});}},{'key':'refreshParticles','value':function _0x4caf8a(_0x32ac42){var _0xdef2b=_0x39fbdf;this['clearFramebuffers'](),this['particlesComputing']['destroyParticlesTextures'](),this['particlesComputing'][_0xdef2b(0x209)](this['context'],this['options'],this['viewerParameters']);if(_0x32ac42){var _0x2cae7a=this['particlesRendering'][_0xdef2b(0x273)](this[_0xdef2b(0x22d)]);this[_0xdef2b(0x275)]['primitives']['segments'][_0xdef2b(0x1d2)]=_0x2cae7a;var _0xa2a2a4=Cesium$2['VertexArray']['fromGeometry']({'context':this['context'],'geometry':_0x2cae7a,'attributeLocations':this[_0xdef2b(0x275)]['primitives'][_0xdef2b(0x1f5)][_0xdef2b(0x260)],'bufferUsage':Cesium$2[_0xdef2b(0x25e)]['STATIC_DRAW']});this['particlesRendering'][_0xdef2b(0x1eb)]['segments'][_0xdef2b(0x226)][_0xdef2b(0x1f7)]=_0xa2a2a4;}}},{'key':'setOptions','value':function _0x71951b(_0x438592){var _0x29f21e=_0x39fbdf,_0x3c25ad=this,_0x22f754=![];this['options'][_0x29f21e(0x29d)]!==_0x438592['maxParticles']&&(_0x22f754=!![]),Object['keys'](_0x438592)['forEach'](function(_0x52abd6){_0x3c25ad['options'][_0x52abd6]=_0x438592[_0x52abd6];}),this['refreshParticles'](_0x22f754);}},{'key':'applyViewerParameters','value':function _0x11e9bb(_0x1e8290){var _0x4cbc17=this;Object['keys'](_0x1e8290)['forEach'](function(_0x4c3f8a){_0x4cbc17['viewerParameters'][_0x4c3f8a]=_0x1e8290[_0x4c3f8a];}),this['refreshParticles'](![]);}},{'key':_0x39fbdf(0x28a),'value':function _0x222321(){var _0x46e685=_0x39fbdf,_0x3fad8a=this;clearTimeout(this[_0x46e685(0x274)]),this['particlesComputing']['destroyParticlesTextures'](),Object['keys'](this['particlesComputing']['windTextures'])['forEach'](function(_0x48c54f){var _0x3086dd=_0x46e685;_0x3fad8a[_0x3086dd(0x24e)][_0x3086dd(0x1b9)][_0x48c54f]['destroy']();}),this[_0x46e685(0x275)]['textures'][_0x46e685(0x1c9)]['destroy'](),Object[_0x46e685(0x1a5)](this['particlesRendering']['framebuffers'])['forEach'](function(_0x2d3623){_0x3fad8a['particlesRendering']['framebuffers'][_0x2d3623]['destroy']();});for(var _0x332f3a in this){delete this[_0x332f3a];}}}]),_0x3618f7;}()),Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace[_0x1031ee(0x1a9)]['BaseLayer'],DEF_OPTIONS={'particlesNumber':0x1000,'fixedHeight':0x0,'fadeOpacity':0.996,'dropRate':0.003,'dropRateBump':0.01,'speedFactor':0.5,'lineWidth':0x2,'colors':[_0x1031ee(0x201)]},WindLayer=function(_0x402b76){var _0x3f9901=_0x1031ee;_inherits(_0x573ab2,_0x402b76);var _0x202c80=_createSuper(_0x573ab2);function _0x573ab2(){var _0x19a327=_0x4469,_0x3b1844,_0x48338a=arguments[_0x19a327(0x251)]>0x0&&arguments[0x0]!==undefined?arguments[0x0]:{};return _classCallCheck(this,_0x573ab2),_0x48338a=_objectSpread2(_objectSpread2({},DEF_OPTIONS),_0x48338a),_0x3b1844=_0x202c80['call'](this,_0x48338a),_0x3b1844['_setOptionsHook'](_0x48338a),_0x3b1844;}return _createClass(_0x573ab2,[{'key':_0x3f9901(0x1a9),'get':function _0x1d78cb(){var _0x436adf=_0x3f9901;return this[_0x436adf(0x1eb)];}},{'key':'data','get':function _0x390f36(){var _0x2b61e2=_0x3f9901;return this[_0x2b61e2(0x1b7)];},'set':function _0x115912(_0x588b5e){var _0x6ac2b8=_0x3f9901;this[_0x6ac2b8(0x245)](_0x588b5e);}},{'key':'colors','get':function _0x3fe735(){return this['options']['colors'];},'set':function _0x1f39c2(_0x3e3a2b){var _0x4aadcc=_0x3f9901;this['options']['colors']=_0x3e3a2b,this[_0x4aadcc(0x295)]&&this['particleSystem']['setOptions']({'colors':_0x3e3a2b}),this['resize']();}},{'key':'_mountedHook','value':function _0x58e661(){}},{'key':'_addedHook','value':function _0x3a4304(){var _0x58e6f8=_0x3f9901;this['scene']=this['_map']['scene'],this[_0x58e6f8(0x272)]=this[_0x58e6f8(0x21f)][_0x58e6f8(0x272)],this[_0x58e6f8(0x1eb)]=new Cesium$1['PrimitiveCollection'](),this['_map']['scene'][_0x58e6f8(0x1eb)]['add'](this['primitives']),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['updateViewerParameters'](),window['addEventListener']('resize',this[_0x58e6f8(0x1f1)]['bind'](this),![]),this['mouse_down']=![],this[_0x58e6f8(0x1cc)]=![],this[_0x58e6f8(0x21f)]['on'](mars3d__namespace[_0x58e6f8(0x20e)]['wheel'],this['_onMapWhellEvent'],this),this[_0x58e6f8(0x21f)]['on'](mars3d__namespace[_0x58e6f8(0x20e)]['mouseDown'],this[_0x58e6f8(0x232)],this),this['_map']['on'](mars3d__namespace['EventType'][_0x58e6f8(0x25a)],this['_onMouseUpEvent'],this),this[_0x58e6f8(0x21f)]['on'](mars3d__namespace[_0x58e6f8(0x20e)][_0x58e6f8(0x1b0)],this[_0x58e6f8(0x286)],this),this['_data']&&this['setData'](this['_data']);}},{'key':'_removedHook','value':function _0x3e5fcd(){var _0x35e9c5=_0x3f9901;window[_0x35e9c5(0x1f4)](_0x35e9c5(0x1f1),this[_0x35e9c5(0x1f1)]),this['_map']['off'](mars3d__namespace[_0x35e9c5(0x20e)][_0x35e9c5(0x257)],this['_onMap_preRenderEvent'],this),this[_0x35e9c5(0x21f)]['off'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x35e9c5(0x21f)][_0x35e9c5(0x1e9)](mars3d__namespace[_0x35e9c5(0x20e)][_0x35e9c5(0x1c6)],this['_onMouseDownEvent'],this),this[_0x35e9c5(0x21f)][_0x35e9c5(0x1e9)](mars3d__namespace['EventType']['mouseUp'],this[_0x35e9c5(0x223)],this),this['_map'][_0x35e9c5(0x1e9)](mars3d__namespace[_0x35e9c5(0x20e)][_0x35e9c5(0x1b0)],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this['_map'][_0x35e9c5(0x23d)][_0x35e9c5(0x1eb)][_0x35e9c5(0x1fd)](this[_0x35e9c5(0x1eb)]);}},{'key':'resize','value':function _0x33e919(){var _0x4dde97=_0x3f9901;if(!this['show']||!this[_0x4dde97(0x295)])return;this['primitives']['show']=![],this[_0x4dde97(0x1eb)]['removeAll'](),this['_map']['once'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this);}},{'key':'_onMap_preRenderEvent','value':function _0x1cf033(_0x1e1a21){var _0xf3ea0b=_0x3f9901;this['particleSystem'][_0xf3ea0b(0x212)](this[_0xf3ea0b(0x23d)]['context']),this['addPrimitives'](),this['primitives']['show']=!![];}},{'key':_0x3f9901(0x20f),'value':function _0x526448(_0x73a7f){var _0x1b463b=_0x3f9901,_0x4d743d=this;clearTimeout(this['refreshTimer']);if(!this[_0x1b463b(0x1d3)]||!this['particleSystem'])return;this['primitives'][_0x1b463b(0x1d3)]=![],this[_0x1b463b(0x1de)]=setTimeout(function(){if(!_0x4d743d['show'])return;_0x4d743d['redraw']();},0xc8);}},{'key':'_onMouseDownEvent','value':function _0x40c2b8(_0x3fbf3f){this['mouse_down']=!![];}},{'key':'_onMouseMoveEvent','value':function _0x2fe6d6(_0x5e0b5b){var _0xafadf=_0x3f9901;if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&(this[_0xafadf(0x1eb)]['show']=![],this[_0xafadf(0x1cc)]=!![]);}},{'key':'_onMouseUpEvent','value':function _0x599f6a(_0x3d58f5){var _0x5f4201=_0x3f9901;if(!this['show']||!this['particleSystem'])return;this[_0x5f4201(0x248)]&&this[_0x5f4201(0x1cc)]&&this['redraw'](),this['primitives']['show']=!![],this['mouse_down']=![],this[_0x5f4201(0x1cc)]=![];}},{'key':'redraw','value':function _0x53bf80(){var _0x53d8e5=_0x3f9901;if(!this['_map']||!this['show'])return;this['updateViewerParameters'](),this[_0x53d8e5(0x295)]['applyViewerParameters'](this['viewerParameters']),this['primitives'][_0x53d8e5(0x1d3)]=!![];}},{'key':'setData','value':function _0x5d65c7(_0x2b2d62){var _0x58ef2b=_0x3f9901;this['_data']=_0x2b2d62,this[_0x58ef2b(0x295)]&&this['particleSystem'][_0x58ef2b(0x28a)](),this['particleSystem']=new ParticleSystem(this['scene'][_0x58ef2b(0x1c5)],_0x2b2d62,this['getOptions'](),this['viewerParameters']),this['addPrimitives']();}},{'key':_0x3f9901(0x1c0),'value':function _0x4983bc(_0x2a9cdb,_0x266cb6){var _0x3f5ffa=_0x3f9901;if(_0x2a9cdb)for(var _0x334614 in _0x2a9cdb){this[_0x334614]=_0x2a9cdb[_0x334614];}this['particleSystem']&&this['particleSystem']['setOptions'](this[_0x3f5ffa(0x23f)]());}},{'key':_0x3f9901(0x23f),'value':function _0x39ab39(){var _0x44cc39=_0x3f9901,_0x46bbce=Math['ceil'](Math['sqrt'](this['particlesNumber']));return this[_0x44cc39(0x1ba)]=_0x46bbce*_0x46bbce,{'particlesTextureSize':_0x46bbce,'maxParticles':this[_0x44cc39(0x1ba)],'particleHeight':this['fixedHeight'],'fadeOpacity':this['fadeOpacity'],'dropRate':this['dropRate'],'dropRateBump':this[_0x44cc39(0x1ad)],'speedFactor':this['speedFactor'],'lineWidth':this['lineWidth'],'colors':this['colors']};}},{'key':_0x3f9901(0x231),'value':function _0x4576d5(){var _0x41a236=_0x3f9901;this['primitives']['add'](this['particleSystem']['particlesComputing']['primitives']['getWind']),this['primitives'][_0x41a236(0x25f)](this['particleSystem']['particlesComputing'][_0x41a236(0x1eb)]['updateSpeed']),this[_0x41a236(0x1eb)][_0x41a236(0x25f)](this['particleSystem']['particlesComputing']['primitives']['updatePosition']),this['primitives'][_0x41a236(0x25f)](this['particleSystem']['particlesComputing']['primitives']['postProcessingPosition']),this['primitives'][_0x41a236(0x25f)](this['particleSystem'][_0x41a236(0x24e)][_0x41a236(0x1eb)]['postProcessingSpeed']),this[_0x41a236(0x1eb)]['add'](this['particleSystem']['particlesRendering']['primitives'][_0x41a236(0x1f5)]),this['primitives']['add'](this['particleSystem']['particlesRendering']['primitives']['trails']),this['primitives']['add'](this['particleSystem']['particlesRendering'][_0x41a236(0x1eb)]['screen']);}},{'key':'updateViewerParameters','value':function _0x3a1c3d(){var _0x186616=_0x3f9901,_0x586516=this['camera']['computeViewRectangle'](this['scene']['globe'][_0x186616(0x206)]);if(!_0x586516){var _0x54061e=this['_map']['getExtent']();_0x586516=Cesium$1[_0x186616(0x1d0)][_0x186616(0x1c4)](_0x54061e['xmin'],_0x54061e[_0x186616(0x1dd)],_0x54061e[_0x186616(0x284)],_0x54061e['ymax']);}var _0x467889=Util['viewRectangleToLonLatRange'](_0x586516);this['viewerParameters']['lonRange']['x']=_0x467889['lon'][_0x186616(0x21d)],this['viewerParameters']['lonRange']['y']=_0x467889['lon']['max'],this['viewerParameters']['latRange']['x']=_0x467889['lat'][_0x186616(0x21d)],this[_0x186616(0x281)]['latRange']['y']=_0x467889[_0x186616(0x265)]['max'];var _0x118cdb=this['camera']['getPixelSize'](this['globeBoundingSphere'],this['scene'][_0x186616(0x200)],this['scene'][_0x186616(0x228)]);_0x118cdb>0x0&&(this[_0x186616(0x281)]['pixelSize']=_0x118cdb);}}]),_0x573ab2;}(BaseLayer$1);mars3d__namespace['LayerUtil'][_0x1031ee(0x256)]('wind',WindLayer),mars3d__namespace[_0x1031ee(0x1a9)]['WindLayer']=WindLayer;var CanvasParticle=(function(){function _0x1c5af5(){_classCallCheck(this,_0x1c5af5),this['lng']=null,this['lat']=null,this['tlng']=null,this['tlat']=null,this['age']=null;}return _createClass(_0x1c5af5,[{'key':'destroy','value':function _0x6c9780(){for(var _0x51b0b3 in this){delete this[_0x51b0b3];}}}]),_0x1c5af5;}()),CanvasWindField=(function(){var _0x216115=_0x1031ee;function _0x38fb5d(_0x48da5c){_classCallCheck(this,_0x38fb5d),this['setOptions'](_0x48da5c);}return _createClass(_0x38fb5d,[{'key':'speedRate','get':function _0x447065(){var _0x358292=_0x4469;return this[_0x358292(0x1d7)];},'set':function _0x2a8953(_0x1d1e46){this['_speedRate']=(0x64-(_0x1d1e46>0x63?0x63:_0x1d1e46))*0x64,this['_calc_speedRate']=[(this['xmax']-this['xmin'])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}},{'key':_0x216115(0x237),'get':function _0x198d32(){return this['_maxAge'];},'set':function _0x2f4934(_0x3629fa){var _0x27db84=_0x216115;this[_0x27db84(0x1df)]=_0x3629fa;}},{'key':'setOptions','value':function _0x4433fe(_0x5a18e4){var _0x200518=_0x216115;this['options']=_0x5a18e4,this['maxAge']=_0x5a18e4['maxAge']||0x78,this['speedRate']=_0x5a18e4['speedRate']||0x32,this['particles']=[];var _0x3dd130=_0x5a18e4['particlesNumber']||0x1000;for(var _0x2842e0=0x0;_0x2842e0<_0x3dd130;_0x2842e0++){var _0x345dc0=this['_randomParticle'](new CanvasParticle());this[_0x200518(0x285)]['push'](_0x345dc0);}}},{'key':'setDate','value':function _0x2c4859(_0x4b4beb){var _0x20c609=_0x216115;this['rows']=_0x4b4beb[_0x20c609(0x1e8)],this['cols']=_0x4b4beb[_0x20c609(0x28f)],this[_0x20c609(0x26f)]=_0x4b4beb[_0x20c609(0x26f)],this['xmax']=_0x4b4beb['xmax'],this['ymin']=_0x4b4beb[_0x20c609(0x1dd)],this['ymax']=_0x4b4beb['ymax'],this['grid']=[];var _0x4a6f61=_0x4b4beb['udata'],_0x5a6e41=_0x4b4beb['vdata'],_0x339d3a=![];_0x4a6f61['length']===this['rows']&&_0x4a6f61[0x0][_0x20c609(0x251)]===this['cols']&&(_0x339d3a=!![]);var _0xfac696=0x0,_0x3e990c=null,_0x1fa64b=null;for(var _0x45bc86=0x0;_0x45bc86<this['rows'];_0x45bc86++){_0x3e990c=[];for(var _0x5b63b3=0x0;_0x5b63b3<this[_0x20c609(0x28f)];_0x5b63b3++,_0xfac696++){_0x339d3a?_0x1fa64b=this['_calcUV'](_0x4a6f61[_0x45bc86][_0x5b63b3],_0x5a6e41[_0x45bc86][_0x5b63b3]):_0x1fa64b=this[_0x20c609(0x214)](_0x4a6f61[_0xfac696],_0x5a6e41[_0xfac696]),_0x3e990c['push'](_0x1fa64b);}this['grid']['push'](_0x3e990c);}this['options']['reverseY']&&this['grid']['reverse']();}},{'key':_0x216115(0x21a),'value':function _0x50425b(){var _0x38e01c=_0x216115;delete this[_0x38e01c(0x1e8)],delete this['cols'],delete this['xmin'],delete this['xmax'],delete this[_0x38e01c(0x1dd)],delete this['ymax'],delete this['grid'],delete this['particles'];}},{'key':'toGridXY','value':function _0x4ea327(_0xb720a3,_0x4425c9){var _0x26227e=_0x216115,_0x5a851a=(_0xb720a3-this['xmin'])/(this['xmax']-this[_0x26227e(0x26f)])*(this['cols']-0x1),_0x1061fb=(this['ymax']-_0x4425c9)/(this['ymax']-this[_0x26227e(0x1dd)])*(this['rows']-0x1);return[_0x5a851a,_0x1061fb];}},{'key':'getUVByXY','value':function _0x11c121(_0x1230be,_0xe8e063){var _0x3eb682=_0x216115;if(_0x1230be<0x0||_0x1230be>=this[_0x3eb682(0x28f)]||_0xe8e063>=this['rows'])return[0x0,0x0,0x0];var _0x4b7fa1=Math[_0x3eb682(0x264)](_0x1230be),_0x1f94c9=Math['floor'](_0xe8e063);if(_0x4b7fa1===_0x1230be&&_0x1f94c9===_0xe8e063)return this['grid'][_0xe8e063][_0x1230be];var _0x3704d1=_0x4b7fa1+0x1,_0xec878=_0x1f94c9+0x1,_0x3e0f42=this['getUVByXY'](_0x4b7fa1,_0x1f94c9),_0x3d6a54=this['getUVByXY'](_0x3704d1,_0x1f94c9),_0x567c89=this['getUVByXY'](_0x4b7fa1,_0xec878),_0x5a7059=this['getUVByXY'](_0x3704d1,_0xec878),_0x250192=null;try{_0x250192=this['_bilinearInterpolation'](_0x1230be-_0x4b7fa1,_0xe8e063-_0x1f94c9,_0x3e0f42,_0x3d6a54,_0x567c89,_0x5a7059);}catch(_0x6740ac){console['log'](_0x1230be,_0xe8e063);}return _0x250192;}},{'key':'_bilinearInterpolation','value':function _0x332c05(_0x2945e7,_0x39c90c,_0x4a2268,_0x4d5152,_0x436cab,_0x5d2531){var _0x1e69db=_0x216115,_0x47d1e8=0x1-_0x2945e7,_0x5260b3=0x1-_0x39c90c,_0x275406=_0x47d1e8*_0x5260b3,_0x4b6970=_0x2945e7*_0x5260b3,_0x475149=_0x47d1e8*_0x39c90c,_0x53b896=_0x2945e7*_0x39c90c,_0x369166=_0x4a2268[0x0]*_0x275406+_0x4d5152[0x0]*_0x4b6970+_0x436cab[0x0]*_0x475149+_0x5d2531[0x0]*_0x53b896,_0xc3cea7=_0x4a2268[0x1]*_0x275406+_0x4d5152[0x1]*_0x4b6970+_0x436cab[0x1]*_0x475149+_0x5d2531[0x1]*_0x53b896;return this[_0x1e69db(0x214)](_0x369166,_0xc3cea7);}},{'key':_0x216115(0x214),'value':function _0x440f1d(_0x388a3e,_0x1694f3){return[+_0x388a3e,+_0x1694f3,Math['sqrt'](_0x388a3e*_0x388a3e+_0x1694f3*_0x1694f3)];}},{'key':_0x216115(0x235),'value':function _0x4db723(_0x1cc815,_0x312769){if(!this['isInExtent'](_0x1cc815,_0x312769))return null;var _0x39d652=this['toGridXY'](_0x1cc815,_0x312769),_0x4bd822=this['getUVByXY'](_0x39d652[0x0],_0x39d652[0x1]);return _0x4bd822;}},{'key':_0x216115(0x1d1),'value':function _0x595fc1(_0x2427ac,_0x37a26b){var _0x4650f7=_0x216115;return _0x2427ac>=this['xmin']&&_0x2427ac<=this[_0x4650f7(0x284)]&&_0x37a26b>=this[_0x4650f7(0x1dd)]&&_0x37a26b<=this['ymax']?!![]:![];}},{'key':'getRandomLatLng','value':function _0x3536d4(){var _0x287f9c=_0x216115,_0x5ee5d4=fRandomByfloat(this[_0x287f9c(0x26f)],this['xmax']),_0x62e177=fRandomByfloat(this[_0x287f9c(0x1dd)],this[_0x287f9c(0x227)]);return{'lat':_0x62e177,'lng':_0x5ee5d4};}},{'key':'getParticles','value':function _0x3bac7e(){var _0x10837b=_0x216115,_0x1aeff9,_0x5cbdf9,_0x58a932;for(var _0x3c29b7=0x0,_0x4b6945=this[_0x10837b(0x285)][_0x10837b(0x251)];_0x3c29b7<_0x4b6945;_0x3c29b7++){var _0x57b41c=this['particles'][_0x3c29b7];_0x57b41c[_0x10837b(0x1f2)]<=0x0&&(_0x57b41c=this['_randomParticle'](_0x57b41c));if(_0x57b41c[_0x10837b(0x1f2)]>0x0){var _0x63b2f3=_0x57b41c[_0x10837b(0x1aa)],_0x6775f=_0x57b41c['tlat'];_0x58a932=this['getUVByPoint'](_0x63b2f3,_0x6775f),_0x58a932?(_0x1aeff9=_0x63b2f3+this[_0x10837b(0x1d9)][0x0]*_0x58a932[0x0],_0x5cbdf9=_0x6775f+this['_calc_speedRate'][0x1]*_0x58a932[0x1],_0x57b41c[_0x10837b(0x29b)]=_0x63b2f3,_0x57b41c['lat']=_0x6775f,_0x57b41c['tlng']=_0x1aeff9,_0x57b41c['tlat']=_0x5cbdf9,_0x57b41c['age']--):_0x57b41c[_0x10837b(0x1f2)]=0x0;}}return this['particles'];}},{'key':'_randomParticle','value':function _0x23102e(_0xa52f6b){var _0xce44e1=_0x216115,_0x301764,_0xb308ca;for(var _0x4970c9=0x0;_0x4970c9<0x1e;_0x4970c9++){_0x301764=this[_0xce44e1(0x26b)](),_0xb308ca=this['getUVByPoint'](_0x301764['lng'],_0x301764[_0xce44e1(0x265)]);if(_0xb308ca&&_0xb308ca[0x2]>0x0)break;}if(!_0xb308ca)return _0xa52f6b;var _0x4a42aa=_0x301764['lng']+this['_calc_speedRate'][0x0]*_0xb308ca[0x0],_0x2e43e9=_0x301764[_0xce44e1(0x265)]+this['_calc_speedRate'][0x1]*_0xb308ca[0x1];return _0xa52f6b['lng']=_0x301764['lng'],_0xa52f6b['lat']=_0x301764['lat'],_0xa52f6b['tlng']=_0x4a42aa,_0xa52f6b['tlat']=_0x2e43e9,_0xa52f6b['age']=Math['round'](Math[_0xce44e1(0x299)]()*this['maxAge']),_0xa52f6b;}},{'key':'destroy','value':function _0x7b4693(){for(var _0x4adc7c in this){delete this[_0x4adc7c];}}}]),_0x38fb5d;}());function fRandomByfloat(_0x592a21,_0x572f25){return _0x592a21+Math['random']()*(_0x572f25-_0x592a21);}var Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x1031ee(0x1a9)][_0x1031ee(0x270)],CanvasWindLayer=function(_0x18a7b5){var _0x1b7044=_0x1031ee;_inherits(_0x25da6b,_0x18a7b5);var _0xd41217=_createSuper(_0x25da6b);function _0x25da6b(){var _0x10e963=_0x4469,_0x11ef07,_0x22cbf7=arguments[_0x10e963(0x251)]>0x0&&arguments[0x0]!==undefined?arguments[0x0]:{};return _classCallCheck(this,_0x25da6b),_0x11ef07=_0xd41217['call'](this,_0x22cbf7),_0x11ef07['_setOptionsHook'](_0x22cbf7),_0x11ef07['canvas']=null,_0x11ef07;}return _createClass(_0x25da6b,[{'key':_0x1b7044(0x1c0),'value':function _0xdf71ab(_0x3ac054,_0x353c8b){var _0x3ce24e=_0x1b7044,_0x57a275,_0x32d936,_0x53cbcd;this['frameTime']=0x3e8/(_0x3ac054[_0x3ce24e(0x261)]||0xa),this['_pointerEvents']=(_0x57a275=this['options']['pointerEvents'])!==null&&_0x57a275!==void 0x0?_0x57a275:![],this['color']=_0x3ac054[_0x3ce24e(0x28e)]||_0x3ce24e(0x271),this[_0x3ce24e(0x242)]=_0x3ac054['lineWidth']||0x1,this['fixedHeight']=(_0x32d936=_0x3ac054['fixedHeight'])!==null&&_0x32d936!==void 0x0?_0x32d936:0x0,this['reverseY']=(_0x53cbcd=_0x3ac054['reverseY'])!==null&&_0x53cbcd!==void 0x0?_0x53cbcd:![],this['windField']&&this['windField'][_0x3ce24e(0x249)](_0x3ac054);}},{'key':_0x1b7044(0x1a9),'get':function _0x3c58b7(){var _0x3fc3a0=_0x1b7044;return this[_0x3fc3a0(0x1fe)];}},{'key':'canvasWidth','get':function _0x55dc90(){var _0x3dc49b=_0x1b7044;return this['_map']['scene'][_0x3dc49b(0x1fe)]['clientWidth'];}},{'key':'canvasHeight','get':function _0x4cd922(){var _0x9a6ba6=_0x1b7044;return this['_map'][_0x9a6ba6(0x23d)][_0x9a6ba6(0x1fe)]['clientHeight'];}},{'key':'pointerEvents','get':function _0x1b840f(){return this['_pointerEvents'];},'set':function _0x2f03e7(_0x14ecbe){var _0x2898a7=_0x1b7044;this['_pointerEvents']=_0x14ecbe;if(!this[_0x2898a7(0x1fe)])return;_0x14ecbe?this[_0x2898a7(0x1fe)]['style']['pointer-events']='all':this[_0x2898a7(0x1fe)]['style']['pointer-events']=_0x2898a7(0x23b);}},{'key':'particlesNumber','get':function _0x1033b5(){return this['options']['particlesNumber'];},'set':function _0x13140a(_0xbdca33){var _0x15a7d5=_0x1b7044,_0x5bde91=this;this['options']['particlesNumber']=_0xbdca33,clearTimeout(this[_0x15a7d5(0x1cf)]),this['_canrefresh']=setTimeout(function(){_0x5bde91['redraw']();},0x1f4);}},{'key':'speedRate','get':function _0x5e2f29(){return this['options']['speedRate'];},'set':function _0x284ec2(_0x5199ba){var _0x13974e=_0x1b7044;this['options']['speedRate']=_0x5199ba,this[_0x13974e(0x24a)]&&(this['windField'][_0x13974e(0x27f)]=_0x5199ba);}},{'key':'maxAge','get':function _0x30659d(){return this['options']['maxAge'];},'set':function _0x57945c(_0x4d277e){var _0x32e8c4=_0x1b7044;this[_0x32e8c4(0x22d)][_0x32e8c4(0x237)]=_0x4d277e,this['windField']&&(this[_0x32e8c4(0x24a)]['maxAge']=_0x4d277e);}},{'key':_0x1b7044(0x246),'get':function _0x222b2f(){return this['windData'];},'set':function _0x42a7df(_0x338e74){var _0x37c46d=_0x1b7044;this[_0x37c46d(0x245)](_0x338e74);}},{'key':'_showHook','value':function _0x28ea2a(_0x4f4752){var _0x1e5b46=_0x1b7044;_0x4f4752?this['_addedHook']():(this['windData']&&(this['options']['data']=this['windData']),this[_0x1e5b46(0x224)]());}},{'key':'_mountedHook','value':function _0x38ddac(){var _0x32b296=_0x1b7044;this['options']['worker']?this['initWorker']():this[_0x32b296(0x24a)]=new CanvasWindField(this[_0x32b296(0x22d)]);}},{'key':'_addedHook','value':function _0x42bfd6(){var _0x28dcbd=_0x1b7044;this[_0x28dcbd(0x1fe)]=this['_createCanvas'](),this['canvasContext']=this['canvas']['getContext']('2d',{'willReadFrequently':!![]}),this['bindEvent'](),this['options']['data']&&this[_0x28dcbd(0x245)](this['options']['data']);}},{'key':'_removedHook','value':function _0x56bf55(){var _0x36e2d2=_0x1b7044;this[_0x36e2d2(0x21a)](),this['unbindEvent'](),this['canvas']&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}},{'key':_0x1b7044(0x27b),'value':function _0x7c0ee6(){var _0x260f18=_0x1b7044,_0x2b5360=document['createElement']('canvas');_0x2b5360['style']['position']=_0x260f18(0x250),_0x2b5360['style'][_0x260f18(0x29a)]='0px',_0x2b5360['style']['left']='0px',_0x2b5360['style']['width']=_0x260f18(0x1cd),_0x2b5360['style']['height']='100%',_0x2b5360['style'][_0x260f18(0x1f6)]=this['_pointerEvents']?'auto':'none',_0x2b5360['style'][_0x260f18(0x241)]=0xa,_0x2b5360['setAttribute']('id','canvasWindy'),_0x2b5360[_0x260f18(0x20a)]('class','canvasWindy'),this['_map']['container']['appendChild'](_0x2b5360);var _0x4923a5=this['_map']['scene'];return _0x2b5360['width']=_0x4923a5['canvas']['clientWidth'],_0x2b5360[_0x260f18(0x25d)]=_0x4923a5['canvas']['clientHeight'],_0x2b5360;}},{'key':'resize','value':function _0x435ff8(){var _0x37ac8c=_0x1b7044;this['canvas']&&(this[_0x37ac8c(0x1fe)]['width']=this['canvasWidth'],this[_0x37ac8c(0x1fe)]['height']=this[_0x37ac8c(0x278)]);}},{'key':_0x1b7044(0x25c),'value':function _0x4a7000(){var _0x3c9ac8=_0x1b7044,_0x1d1a31=this,_0x2aae0b=Date['now']();(function _0x12e343(){var _0x3a9356=_0x4469;_0x1d1a31['animateFrame']=window['requestAnimationFrame'](_0x12e343);if(_0x1d1a31[_0x3a9356(0x1d3)]&&_0x1d1a31[_0x3a9356(0x24a)]){var _0x4d1893=Date['now'](),_0x5835d8=_0x4d1893-_0x2aae0b;_0x5835d8>_0x1d1a31['frameTime']&&(_0x2aae0b=_0x4d1893-_0x5835d8%_0x1d1a31['frameTime'],_0x1d1a31['update']());}}(),window['addEventListener'](_0x3c9ac8(0x1f1),this[_0x3c9ac8(0x1f1)]['bind'](this),![]),this['mouse_down']=![],this['mouse_move']=![],this['options']['mouseHidden']&&(this[_0x3c9ac8(0x21f)]['on'](mars3d__namespace[_0x3c9ac8(0x20e)]['wheel'],this['_onMapWhellEvent'],this),this[_0x3c9ac8(0x21f)]['on'](mars3d__namespace[_0x3c9ac8(0x20e)]['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}},{'key':'unbindEvent','value':function _0x1a2922(){var _0xf00d5f=_0x1b7044;window['cancelAnimationFrame'](this[_0xf00d5f(0x296)]),delete this[_0xf00d5f(0x296)],window[_0xf00d5f(0x1f4)]('resize',this['resize']),this['options'][_0xf00d5f(0x23e)]&&(this[_0xf00d5f(0x21f)][_0xf00d5f(0x1e9)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map'][_0xf00d5f(0x1e9)](mars3d__namespace['EventType'][_0xf00d5f(0x25a)],this[_0xf00d5f(0x223)],this),this['_map']['off'](mars3d__namespace['EventType'][_0xf00d5f(0x1b0)],this[_0xf00d5f(0x286)],this));}},{'key':'_onMapWhellEvent','value':function _0x14d487(_0x2ae87c){var _0x1a91b4=_0x1b7044,_0x58ba68=this;clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;this['canvas'][_0x1a91b4(0x252)]['visibility']='hidden',this['refreshTimer']=setTimeout(function(){var _0x11908b=_0x1a91b4;if(!_0x58ba68[_0x11908b(0x1d3)])return;_0x58ba68['redraw'](),_0x58ba68['canvas']['style'][_0x11908b(0x24f)]=_0x11908b(0x219);},0xc8);}},{'key':'_onMouseDownEvent','value':function _0x28285d(_0x445d5a){var _0x51cbe9=_0x1b7044;this[_0x51cbe9(0x248)]=!![],this['_map']['off'](mars3d__namespace[_0x51cbe9(0x20e)]['mouseMove'],this[_0x51cbe9(0x286)],this),this['_map']['on'](mars3d__namespace[_0x51cbe9(0x20e)]['mouseMove'],this['_onMouseMoveEvent'],this);}},{'key':'_onMouseMoveEvent','value':function _0x3345e1(_0x1a5d23){var _0xdaeb06=_0x1b7044;if(!this['show']||!this['canvas'])return;this[_0xdaeb06(0x248)]&&(this['canvas'][_0xdaeb06(0x252)]['visibility']='hidden',this[_0xdaeb06(0x1cc)]=!![]);}},{'key':'_onMouseUpEvent','value':function _0x52d108(_0x1606da){var _0x35be6b=_0x1b7044;if(!this['show']||!this['canvas'])return;this[_0x35be6b(0x21f)]['off'](mars3d__namespace['EventType'][_0x35be6b(0x1b0)],this['_onMouseMoveEvent'],this),this['mouse_down']&&this[_0x35be6b(0x1cc)]&&this['redraw'](),this[_0x35be6b(0x1fe)]['style']['visibility']=_0x35be6b(0x219),this['mouse_down']=![],this['mouse_move']=![];}},{'key':_0x1b7044(0x245),'value':function _0x5cb7d6(_0x361255){this['clear'](),this['windData']=_0x361255,this['windField']['setDate'](_0x361255),this['redraw']();}},{'key':'redraw','value':function _0x4f0f10(){var _0x360a7f=_0x1b7044;if(!this[_0x360a7f(0x1d3)])return;this['windField']['setOptions'](this['options']),this['update']();}},{'key':'update','value':function _0x3f76df(){var _0x38b493=_0x1b7044;if(this['_updateIng'])return;this[_0x38b493(0x267)]=!![];if(this[_0x38b493(0x25b)])this['windField'][_0x38b493(0x22c)]();else{var _0xac87dc=this['windField'][_0x38b493(0x21b)]();this['_drawLines'](_0xac87dc);}this['_updateIng']=![];}},{'key':'_drawLines','value':function _0x31eb41(_0x3c371e){var _0x10a75c=_0x1b7044;this['canvasContext'][_0x10a75c(0x203)]='destination-in',this[_0x10a75c(0x20b)]['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext']['globalCompositeOperation']=_0x10a75c(0x21c),this['canvasContext']['globalAlpha']=0.9,this[_0x10a75c(0x20b)]['beginPath'](),this['canvasContext']['lineWidth']=this['lineWidth'],this[_0x10a75c(0x20b)]['strokeStyle']=this['color'];var _0xeb058c=this['_map']['scene']['mode']!==Cesium['SceneMode']['SCENE3D'];for(var _0x576e37=0x0,_0x3ac2fc=_0x3c371e['length'];_0x576e37<_0x3ac2fc;_0x576e37++){var _0x5121e1=_0x3c371e[_0x576e37],_0x484e4e=this['_tomap'](_0x5121e1[_0x10a75c(0x29b)],_0x5121e1['lat'],_0x5121e1),_0x3ac48e=this[_0x10a75c(0x1b1)](_0x5121e1[_0x10a75c(0x1aa)],_0x5121e1[_0x10a75c(0x1bc)],_0x5121e1);if(!_0x484e4e||!_0x3ac48e)continue;if(_0xeb058c&&Math['abs'](_0x484e4e[0x0]-_0x3ac48e[0x0])>=this['canvasWidth'])continue;this['canvasContext']['moveTo'](_0x484e4e[0x0],_0x484e4e[0x1]),this['canvasContext']['lineTo'](_0x3ac48e[0x0],_0x3ac48e[0x1]);}this['canvasContext']['stroke']();}},{'key':'_tomap','value':function _0x358162(_0x36f5c9,_0x52a700,_0x4cf305){var _0x19ac82=_0x1b7044,_0x361772=Cesium['Cartesian3'][_0x19ac82(0x1c4)](_0x36f5c9,_0x52a700,this['fixedHeight']),_0x58a868=this[_0x19ac82(0x21f)]['scene'];if(_0x58a868['mode']===Cesium['SceneMode'][_0x19ac82(0x27d)]){var _0x323e0b=new Cesium['EllipsoidalOccluder'](_0x58a868['globe']['ellipsoid'],_0x58a868['camera'][_0x19ac82(0x239)]),_0x5db925=_0x323e0b['isPointVisible'](_0x361772);if(!_0x5db925)return _0x4cf305['age']=0x0,null;}var _0x2062ec=Cesium['SceneTransforms']['wgs84ToWindowCoordinates'](this['_map']['scene'],_0x361772);return _0x2062ec?[_0x2062ec['x'],_0x2062ec['y']]:null;}},{'key':'clear','value':function _0xf61d(){this['windField']['clear'](),delete this['windData'];}},{'key':'initWorker','value':function _0x160ea9(){var _0x18007f=_0x1b7044,_0xc819b1=this;this['worker']=new Worker(this['options'][_0x18007f(0x25b)]),this[_0x18007f(0x25b)]['onmessage']=function(_0x578031){var _0x49f7b9=_0x18007f;_0xc819b1['_drawLines'](_0x578031[_0x49f7b9(0x246)]['particles']),_0xc819b1['_updateIng2']=![];},this['windField']={'init':function _0xbfa552(_0x4f376d){var _0x11a3df=_0x18007f;_0xc819b1['worker'][_0x11a3df(0x1ed)]({'type':_0x11a3df(0x282),'options':_0x4f376d});},'setOptions':function _0x29245b(_0x699ab1){_0xc819b1['worker']['postMessage']({'type':'setOptions','options':_0x699ab1});},'setDate':function _0x2e719b(_0x580be1){_0xc819b1['worker']['postMessage']({'type':'setDate','data':_0x580be1});},'update':function _0x44016b(){var _0x1f41df=_0x18007f;if(_0xc819b1[_0x1f41df(0x276)])return;_0xc819b1[_0x1f41df(0x276)]=!![],_0xc819b1[_0x1f41df(0x25b)]['postMessage']({'type':'update'});},'clear':function _0x39ce84(){var _0x44d693=_0x18007f;_0xc819b1[_0x44d693(0x25b)]['postMessage']({'type':'clear'});}},this[_0x18007f(0x24a)][_0x18007f(0x282)](this['options']);}}]),_0x25da6b;}(BaseLayer);mars3d__namespace['LayerUtil']['register'](_0x1031ee(0x1d6),CanvasWindLayer),mars3d__namespace[_0x1031ee(0x1a9)]['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x1031ee(0x1db)]=WindUtil,exports[_0x1031ee(0x24c)]=CanvasWindField,exports['CanvasWindLayer']=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x1031ee(0x1db)]=WindUtil,Object['defineProperty'](exports,'__esModule',{'value':!![]});
|
|
15
15
|
}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mars3d-wind",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.24",
|
|
4
4
|
"description": "Mars3D平台插件,支持气象 风向图 功能插件",
|
|
5
5
|
"main": "dist/mars3d-wind.js",
|
|
6
6
|
"files": [
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
],
|
|
9
9
|
"dependencies": {},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"mars3d": "~3.4.
|
|
11
|
+
"mars3d": "~3.4.24"
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
14
|
"lint": "eslint ./src/**/*.{js,ts} --fix"
|