deeptwins-engine-3d 0.1.76 → 0.2.1

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.
Files changed (237) hide show
  1. package/dist/assets/Build/DeepTwins/Image/noise.png +0 -0
  2. package/dist/assets/Build/DeepTwins/Workers/CustomRasterClip.worker.js +1 -2
  3. package/dist/assets/Build/DeepTwins/Workers/MvtVector.worker.js +1 -1
  4. package/dist/assets/Build/Map3d/ThirdParty/Workers/zip-web-worker.js +640 -0
  5. package/dist/assets/Build/Map3d/ThirdParty/wasm_splats_bg.wasm +0 -0
  6. package/dist/assets/Build/Map3d/ThirdParty/zip-module.wasm +0 -0
  7. package/dist/assets/Build/Map3d/Workers/chunk-27NG6PQR.js +456 -0
  8. package/dist/assets/Build/Map3d/Workers/chunk-2JVMMMWT.js +353 -0
  9. package/dist/assets/Build/Map3d/Workers/chunk-2Y2XYQCS.js +1481 -0
  10. package/dist/assets/Build/Map3d/Workers/chunk-34RF3V5G.js +220 -0
  11. package/dist/assets/Build/Map3d/Workers/chunk-35H7BYLJ.js +1800 -0
  12. package/dist/assets/Build/Map3d/Workers/chunk-57OGEF5V.js +435 -0
  13. package/dist/assets/Build/Map3d/Workers/chunk-5PX3DYJA.js +196 -0
  14. package/dist/assets/Build/Map3d/Workers/chunk-7B5XGQRN.js +171 -0
  15. package/dist/assets/Build/Map3d/Workers/chunk-ATLWOZFF.js +39 -0
  16. package/dist/assets/Build/Map3d/Workers/chunk-BMSUECTA.js +1055 -0
  17. package/dist/assets/Build/Map3d/Workers/chunk-C6IA4TKW.js +476 -0
  18. package/dist/assets/Build/Map3d/Workers/chunk-CZ44I32U.js +157 -0
  19. package/dist/assets/Build/Map3d/Workers/chunk-DE6UV44R.js +122 -0
  20. package/dist/assets/Build/Map3d/Workers/chunk-DUCCKVOG.js +834 -0
  21. package/dist/assets/Build/Map3d/Workers/chunk-EBJBPIYX.js +239 -0
  22. package/dist/assets/Build/Map3d/Workers/chunk-EYSYQ2R6.js +138 -0
  23. package/dist/assets/Build/Map3d/Workers/chunk-FMCAAUQI.js +368 -0
  24. package/dist/assets/Build/Map3d/Workers/chunk-GMYZNRRQ.js +2717 -0
  25. package/dist/assets/Build/Map3d/Workers/chunk-GWPNZZV4.js +781 -0
  26. package/dist/assets/Build/Map3d/Workers/chunk-HLP2U4KW.js +758 -0
  27. package/dist/assets/Build/Map3d/Workers/chunk-HSJSUPQV.js +500 -0
  28. package/dist/assets/Build/Map3d/Workers/chunk-I73Q3AG7.js +58 -0
  29. package/dist/assets/Build/Map3d/Workers/chunk-IMZ4YIMV.js +511 -0
  30. package/dist/assets/Build/Map3d/Workers/chunk-IZSK4DVF.js +421 -0
  31. package/dist/assets/Build/Map3d/Workers/chunk-JKLMRPKK.js +75 -0
  32. package/dist/assets/Build/Map3d/Workers/chunk-KGM345JM.js +691 -0
  33. package/dist/assets/Build/Map3d/Workers/chunk-L4IR5U4G.js +102 -0
  34. package/dist/assets/Build/Map3d/Workers/chunk-MG4EVQH2.js +44 -0
  35. package/dist/assets/Build/Map3d/Workers/chunk-NXWEFAZJ.js +300 -0
  36. package/dist/assets/Build/Map3d/Workers/chunk-PDFAJISJ.js +59 -0
  37. package/dist/assets/Build/Map3d/Workers/chunk-PHWZFJR5.js +100 -0
  38. package/dist/assets/Build/Map3d/Workers/chunk-PLE7CHBE.js +101 -0
  39. package/dist/assets/Build/Map3d/Workers/chunk-PN3GIZ5Q.js +163 -0
  40. package/dist/assets/Build/Map3d/Workers/chunk-PXL5XLHV.js +1073 -0
  41. package/dist/assets/Build/Map3d/Workers/chunk-QYXOF5JC.js +959 -0
  42. package/dist/assets/Build/Map3d/Workers/chunk-R2LIFXV3.js +115 -0
  43. package/dist/assets/Build/Map3d/Workers/chunk-R4W6IRJZ.js +10357 -0
  44. package/dist/assets/Build/Map3d/Workers/chunk-R5PZXG56.js +1258 -0
  45. package/dist/assets/Build/Map3d/Workers/chunk-RZQLZIUI.js +629 -0
  46. package/dist/assets/Build/Map3d/Workers/chunk-SIBDD6Y4.js +390 -0
  47. package/dist/assets/Build/Map3d/Workers/chunk-U5NN6JTQ.js +398 -0
  48. package/dist/assets/Build/Map3d/Workers/chunk-UA5RPPP3.js +73 -0
  49. package/dist/assets/Build/Map3d/Workers/chunk-UXLKFS3C.js +305 -0
  50. package/dist/assets/Build/Map3d/Workers/chunk-VUX4BQIM.js +37 -0
  51. package/dist/assets/Build/Map3d/Workers/chunk-WJDUUUJS.js +684 -0
  52. package/dist/assets/Build/Map3d/Workers/chunk-XBJOJHWX.js +139 -0
  53. package/dist/assets/Build/Map3d/Workers/chunk-XJDMTNKD.js +634 -0
  54. package/dist/assets/Build/Map3d/Workers/chunk-XUCXZZE5.js +963 -0
  55. package/dist/assets/Build/Map3d/Workers/chunk-YIKGVMJ5.js +287 -0
  56. package/dist/assets/Build/Map3d/Workers/chunk-YTNCIBPQ.js +262 -0
  57. package/dist/assets/Build/Map3d/Workers/chunk-ZMDUYETO.js +55 -0
  58. package/dist/assets/Build/Map3d/Workers/chunk-ZW52HXFN.js +2857 -0
  59. package/dist/esm/analyze/LineOfSightAnalysis.js +1 -326
  60. package/dist/esm/analyze/SubmergenceAnalysis.js +1 -137
  61. package/dist/esm/analyze/SunLightAnalysis.js +1 -91
  62. package/dist/esm/analyze/TerrainExcavationAnalysis.js +1 -612
  63. package/dist/esm/analyze/ViewshedAnalysis.js +1 -292
  64. package/dist/esm/cameraControl/ModelRoamHistory.js +1 -639
  65. package/dist/esm/cameraControl/ModelRoamRealTime.js +1 -874
  66. package/dist/esm/cameraControl/Roam.js +1 -418
  67. package/dist/esm/cameraControl/Rotate.js +1 -134
  68. package/dist/esm/cameraControl/RotateInPlace.js +1 -99
  69. package/dist/esm/constant.d.ts +90 -0
  70. package/dist/esm/constant.js +1 -1287
  71. package/dist/esm/deepTwins/index.js +1 -121
  72. package/dist/esm/drawCommand/index.js +1 -3
  73. package/dist/esm/drawCommand/viewShed/Event.js +1 -142
  74. package/dist/esm/drawCommand/viewShed/RectangularSensorPrimitive.js +1 -1306
  75. package/dist/esm/drawCommand/viewShed/ViewShadowPrimitive.js +1 -66
  76. package/dist/esm/drawCommand/viewShed/ViewShedAnalyserLayer.js +1 -466
  77. package/dist/esm/drawCommand/viewShed/ViewShedMap.js +1 -1238
  78. package/dist/esm/drawCommand/viewShed/config.js +1 -21
  79. package/dist/esm/drawCommand/volumeCloud/GeometryPrimitive.js +1 -89
  80. package/dist/esm/drawCommand/volumeCloud/ImprovedNoise.js +1 -112
  81. package/dist/esm/drawCommand/volumeCloud/VolumeClouds.js +1 -91
  82. package/dist/esm/drawer/algorithm.js +1 -314
  83. package/dist/esm/drawer/common.js +1 -965
  84. package/dist/esm/drawer/coordinate.js +1 -184
  85. package/dist/esm/drawer/index.js +1 -688
  86. package/dist/esm/drawer/plotUtil.js +1 -266
  87. package/dist/esm/drawer/shape/Assemble.js +1 -415
  88. package/dist/esm/drawer/shape/AttackArrow.js +1 -442
  89. package/dist/esm/drawer/shape/BaseShape.js +1 -383
  90. package/dist/esm/drawer/shape/Bow.js +1 -375
  91. package/dist/esm/drawer/shape/Circle.js +1 -461
  92. package/dist/esm/drawer/shape/Curve.js +1 -386
  93. package/dist/esm/drawer/shape/DragPoint.js +1 -211
  94. package/dist/esm/drawer/shape/Elliptic.js +1 -491
  95. package/dist/esm/drawer/shape/Formation.js +1 -395
  96. package/dist/esm/drawer/shape/PincerArrow.js +1 -445
  97. package/dist/esm/drawer/shape/Point.js +1 -131
  98. package/dist/esm/drawer/shape/Polygon.js +1 -368
  99. package/dist/esm/drawer/shape/Polyline.js +1 -325
  100. package/dist/esm/drawer/shape/RegularPolygon.js +1 -468
  101. package/dist/esm/drawer/shape/RightAngleArrow.js +1 -423
  102. package/dist/esm/drawer/shape/Sector.js +1 -568
  103. package/dist/esm/drawer/shape/StraightArrow.js +1 -422
  104. package/dist/esm/drawer/shape/SwallowtailArrow.js +1 -438
  105. package/dist/esm/drawer/types.js +1 -11
  106. package/dist/esm/drawer/utils.js +1 -381
  107. package/dist/esm/global.css +22 -1
  108. package/dist/esm/graphicLayer/BaseEntity.js +1 -51
  109. package/dist/esm/graphicLayer/BaseLayer.js +1 -730
  110. package/dist/esm/graphicLayer/BasePointPrimitive.js +1 -45
  111. package/dist/esm/graphicLayer/BasePrimitive.js +1 -36
  112. package/dist/esm/graphicLayer/BasePrimitiveInstance.js +1 -37
  113. package/dist/esm/graphicLayer/BaseSource.d.ts +1 -1
  114. package/dist/esm/graphicLayer/BaseSource.js +1 -630
  115. package/dist/esm/graphicLayer/BillboardEntity.js +1 -106
  116. package/dist/esm/graphicLayer/BillboardPrimitive.js +1 -119
  117. package/dist/esm/graphicLayer/BoxEntity.js +1 -99
  118. package/dist/esm/graphicLayer/BoxPrimitive.js +1 -48
  119. package/dist/esm/graphicLayer/BoxPrimitiveInstance.js +1 -91
  120. package/dist/esm/graphicLayer/EllipseEntity.js +1 -110
  121. package/dist/esm/graphicLayer/EllipsePrimitive.js +1 -47
  122. package/dist/esm/graphicLayer/EllipsePrimitiveInstance.js +1 -98
  123. package/dist/esm/graphicLayer/EllipsoidEntity.js +1 -118
  124. package/dist/esm/graphicLayer/EllipsoidPrimitive.js +1 -48
  125. package/dist/esm/graphicLayer/EllipsoidPrimitiveInstance.js +1 -113
  126. package/dist/esm/graphicLayer/GraphicLayerCollection.js +1 -491
  127. package/dist/esm/graphicLayer/HtmlEntity.d.ts +4 -0
  128. package/dist/esm/graphicLayer/HtmlEntity.js +1 -189
  129. package/dist/esm/graphicLayer/LabelEntity.js +1 -110
  130. package/dist/esm/graphicLayer/LabelPrimitive.js +1 -127
  131. package/dist/esm/graphicLayer/ModelEntity.js +1 -122
  132. package/dist/esm/graphicLayer/ModelPrimitive.js +1 -59
  133. package/dist/esm/graphicLayer/ModelPrimitiveInstance.js +1 -86
  134. package/dist/esm/graphicLayer/PointEntity.js +1 -94
  135. package/dist/esm/graphicLayer/PointPrimitive.js +1 -107
  136. package/dist/esm/graphicLayer/PolygonEntity.js +1 -103
  137. package/dist/esm/graphicLayer/PolygonGroundPrimitive.js +1 -49
  138. package/dist/esm/graphicLayer/PolygonGroundPrimitiveImageMaterialInstance.js +1 -87
  139. package/dist/esm/graphicLayer/PolygonPrimitive.js +1 -60
  140. package/dist/esm/graphicLayer/PolygonPrimitiveImageMaterialInstance.js +1 -84
  141. package/dist/esm/graphicLayer/PolygonPrimitiveInstance.js +1 -101
  142. package/dist/esm/graphicLayer/PolylineEntity.js +1 -96
  143. package/dist/esm/graphicLayer/PolylineGroundPrimitive.js +1 -55
  144. package/dist/esm/graphicLayer/PolylineGroundPrimitiveInstance.js +1 -85
  145. package/dist/esm/graphicLayer/PolylinePrimitive.js +1 -53
  146. package/dist/esm/graphicLayer/PolylinePrimitiveInstance.js +1 -85
  147. package/dist/esm/graphicLayer/PolylineVolumeEntity.js +1 -105
  148. package/dist/esm/graphicLayer/PolylineVolumePrimitive.js +1 -47
  149. package/dist/esm/graphicLayer/PolylineVolumePrimitiveInstance.js +1 -94
  150. package/dist/esm/graphicLayer/WallEntity.js +1 -96
  151. package/dist/esm/graphicLayer/WallPrimitive.js +1 -47
  152. package/dist/esm/graphicLayer/WallPrimitiveInstance.js +1 -88
  153. package/dist/esm/index.d.ts +4 -0
  154. package/dist/esm/index.js +1 -175
  155. package/dist/esm/lowAltitude/BarrierLayer.js +1 -172
  156. package/dist/esm/lowAltitude/BaseGridMvtLayer.js +1 -122
  157. package/dist/esm/lowAltitude/FactorLayer.js +1 -199
  158. package/dist/esm/lowAltitude/FlightPlanning.js +1 -411
  159. package/dist/esm/lowAltitude/FlightRiskEvaluation.js +1 -543
  160. package/dist/esm/lowAltitude/GridDraw.js +1 -137
  161. package/dist/esm/lowAltitude/PoiLayer.js +1 -74
  162. package/dist/esm/lowAltitude/RoutePlanning.js +1 -318
  163. package/dist/esm/lowAltitude/VisitLayer.js +1 -180
  164. package/dist/esm/map/Event.js +1 -377
  165. package/dist/esm/map/GroundSkyBox.js +1 -166
  166. package/dist/esm/map/Map.js +1 -881
  167. package/dist/esm/map/Property.js +1 -35
  168. package/dist/esm/material/AtmosphericDispersion.js +1 -569
  169. package/dist/esm/material/GlobalVolumetricCloud.js +1 -377
  170. package/dist/esm/material/VolumeCloud.js +1 -115
  171. package/dist/esm/material/WeatherEffects.js +1 -351
  172. package/dist/esm/material/entity/BaseMaterialProperty.js +1 -51
  173. package/dist/esm/material/entity/CircleWaveMaterialProperty.js +1 -101
  174. package/dist/esm/material/entity/DynamicWallMaterialProperty.js +1 -101
  175. package/dist/esm/material/entity/ImageGlowingMaterialProperty.js +1 -89
  176. package/dist/esm/material/entity/ImageMaterialProperty.js +1 -34
  177. package/dist/esm/material/entity/PolylineTrailLinkMaterialProperty.js +1 -132
  178. package/dist/esm/material/primitive/BaseMaterialAppearance.js +1 -28
  179. package/dist/esm/material/primitive/ImageGlowingMaterialAppearance.js +1 -77
  180. package/dist/esm/material/primitive/ImageMaterialAppearance.js +1 -77
  181. package/dist/esm/measure/Area.js +1 -220
  182. package/dist/esm/measure/BaseDraw.js +1 -105
  183. package/dist/esm/measure/Distance.js +1 -223
  184. package/dist/esm/measure/index.js +1 -266
  185. package/dist/esm/measure/types.js +1 -17
  186. package/dist/esm/measure/utils.js +1 -319
  187. package/dist/esm/particle/BaseParticle.js +1 -196
  188. package/dist/esm/particle/FireParticle.js +1 -65
  189. package/dist/esm/particle/FountainParticle.js +1 -80
  190. package/dist/esm/particle/SmokeParticle.js +1 -65
  191. package/dist/esm/particle/common.js +1 -23
  192. package/dist/esm/particle/index.js +1 -5
  193. package/dist/esm/property/PositionProperty.js +1 -56
  194. package/dist/esm/tileLayer/ArcGisLayer.js +1 -41
  195. package/dist/esm/tileLayer/CustomRasterClipWorkerClient.js +1 -147
  196. package/dist/esm/tileLayer/CustomRasterLayer.js +1 -1136
  197. package/dist/esm/tileLayer/ImageryLayer.js +1 -44
  198. package/dist/esm/tileLayer/MvtVectorLoad.js +1 -1549
  199. package/dist/esm/tileLayer/MvtVectorWorkerClient.js +1 -126
  200. package/dist/esm/tileLayer/RasterLayer.js +1 -23
  201. package/dist/esm/tileLayer/WmsLayer.js +1 -26
  202. package/dist/esm/tileLayer/WmtsLayer.js +1 -23
  203. package/dist/esm/tool/BuildClampedPolygonGrid.js +1 -278
  204. package/dist/esm/tool/Compass.js +1 -282
  205. package/dist/esm/tool/PrimitiveCluster.js +1 -706
  206. package/dist/esm/tool/TimerInterval.js +1 -58
  207. package/dist/esm/tool/common.js +1 -405
  208. package/dist/esm/tool/fetch.js +1 -222
  209. package/dist/esm/tool/heatmap.js +1 -631
  210. package/dist/esm/tool/utils.d.ts +1 -0
  211. package/dist/esm/tool/utils.js +1 -501
  212. package/dist/esm/toolTip/index.js +1 -79
  213. package/dist/esm/videoFusion/BaseVideo.d.ts +7 -0
  214. package/dist/esm/videoFusion/BaseVideo.js +1 -330
  215. package/dist/esm/videoFusion/VideoProject.js +1 -230
  216. package/dist/esm/videoFusion/VideoTexture.js +1 -163
  217. package/dist/esm/visualization/BaseHeatmap.js +1 -271
  218. package/dist/esm/visualization/BoundaryHighlight.d.ts +135 -0
  219. package/dist/esm/visualization/BoundaryHighlight.js +1 -0
  220. package/dist/esm/visualization/DynamicWater.js +1 -289
  221. package/dist/esm/visualization/Frustum.js +1 -248
  222. package/dist/esm/visualization/Heatmap2d.js +1 -97
  223. package/dist/esm/visualization/Heatmap3d.js +1 -281
  224. package/dist/esm/visualization/MigrationEffect.js +1 -397
  225. package/dist/esm/visualization/PointCluster.js +1 -220
  226. package/dist/esm/visualization/RadarScan.js +1 -333
  227. package/dist/esm/visualization/SampledTerrainRiver.d.ts +180 -0
  228. package/dist/esm/visualization/SampledTerrainRiver.js +1 -0
  229. package/dist/esm/visualization/SampledTerrainWater.d.ts +170 -0
  230. package/dist/esm/visualization/SampledTerrainWater.js +1 -0
  231. package/dist/esm/visualization/WindField.d.ts +72 -0
  232. package/dist/esm/visualization/WindField.js +1 -0
  233. package/dist/esm/visualization/windCore.d.ts +161 -0
  234. package/dist/esm/visualization/windCore.js +8 -0
  235. package/dist/umd/deeptwins-engine-3d.min.css +1 -1
  236. package/dist/umd/deeptwins-engine-3d.min.js +1 -1
  237. package/package.json +6 -4
@@ -1,965 +1 @@
1
- import * as Cesium from 'deeptwins-cesium';
2
- import xp from "./algorithm";
3
- import { calculateAngle, transformCartesianToWGS84, transformWGS84ToCartesian } from "./coordinate";
4
- /**
5
- * 根据控制点生成贝塞尔曲线点集。
6
- * 输入为 Cesium.Cartesian3 控制点,输出同样为 Cartesian3 点集。
7
- */
8
- var createBezierPoints = function createBezierPoints(anchorpoints) {
9
- var degrees = [];
10
- for (var index = 0; index < anchorpoints.length; index++) {
11
- var degree = transformCartesianToWGS84(anchorpoints[index]);
12
- degrees.push(degree);
13
- }
14
- var numpoints = 100;
15
- var points = [];
16
- for (var i = 0; i <= numpoints; i++) {
17
- var point = computeBezierPoints(degrees, i / numpoints);
18
- var cartesian = transformWGS84ToCartesian(point);
19
- points.push(cartesian);
20
- }
21
- return points;
22
- };
23
-
24
- /**
25
- * 根据控制点计算攻击箭头面顶点。
26
- */
27
- var getAttackArrowPoints = function getAttackArrowPoints(positions) {
28
- var lnglatArr = [];
29
- for (var i = 0; i < positions.length; i++) {
30
- var lnglat = transformCartesianToWGS84(positions[i]);
31
- lnglatArr.push([lnglat.x, lnglat.y]);
32
- }
33
- var res = xp.algorithm.tailedAttackArrow(lnglatArr);
34
- var index = JSON.stringify(res.polygonalPoint).indexOf('null');
35
- var points = [];
36
- if (index == -1) points = res.polygonalPoint;
37
- return points;
38
- };
39
-
40
- /**
41
- * 根据控制点计算直角箭头面顶点。
42
- */
43
- var getRightAngleArrowPoints = function getRightAngleArrowPoints(anchorpoints) {
44
- var degreePoints = [];
45
- for (var index = 0; index < anchorpoints.length; index++) {
46
- var degree = transformCartesianToWGS84(anchorpoints[index]);
47
- degreePoints.push(degree);
48
- }
49
- var pointlist = calculateMorePoints(degreePoints);
50
- var degreesArray = [];
51
- pointlist.forEach(function (item) {
52
- degreesArray.push(item.x, item.y);
53
- });
54
- return Cesium.Cartesian3.fromDegreesArray(degreesArray);
55
- };
56
-
57
- /**
58
- * 构建直角箭头多控制点情况下的左右边界与箭头头部。
59
- */
60
- function calculateMorePoints(anchorpoints) {
61
- var ratio = 6;
62
- var pointsR;
63
- if (anchorpoints.length > 2) {
64
- var l = 0,
65
- pointS,
66
- pointE;
67
- for (var i = 0; i < anchorpoints.length - 1; i++) {
68
- pointS = anchorpoints[i];
69
- pointE = anchorpoints[i + 1];
70
- l += Math.sqrt((pointE.y - pointS.y) * (pointE.y - pointS.y) + (pointE.x - pointS.x) * (pointE.x - pointS.x));
71
- }
72
- var w = l / ratio;
73
- var points_C_l = [];
74
- var points_C_r = [];
75
- var point_t_l = {
76
- x: undefined,
77
- y: undefined
78
- };
79
- var point_t_r = {
80
- x: undefined,
81
- y: undefined
82
- };
83
- for (var j = 0; j < anchorpoints.length - 2; j++) {
84
- var pointU_1 = anchorpoints[j];
85
- var pointU_2 = anchorpoints[j + 1];
86
- var pointU_3 = anchorpoints[j + 2];
87
- var v_U_1_2 = {
88
- x: pointU_2.x - pointU_1.x,
89
- y: pointU_2.y - pointU_1.y
90
- };
91
- var v_U_2_3 = {
92
- x: pointU_3.x - pointU_2.x,
93
- y: pointU_3.y - pointU_2.y
94
- };
95
- var v_lr_1_2 = calculateVector(v_U_1_2, Math.PI / 2, w / 2);
96
- var v_l_1_2 = v_lr_1_2[0];
97
- var v_r_1_2 = v_lr_1_2[1];
98
- var v_lr_2_3 = calculateVector(v_U_2_3, Math.PI / 2, w / 2);
99
- var v_l_2_3 = v_lr_2_3[0];
100
- var v_r_2_3 = v_lr_2_3[1];
101
- var point_l_1 = {
102
- x: pointU_1.x + (v_l_1_2 === null || v_l_1_2 === void 0 ? void 0 : v_l_1_2.x),
103
- y: pointU_1.y + (v_l_1_2 === null || v_l_1_2 === void 0 ? void 0 : v_l_1_2.y)
104
- };
105
- var point_r_1 = {
106
- x: pointU_1.x + (v_r_1_2 === null || v_r_1_2 === void 0 ? void 0 : v_r_1_2.x),
107
- y: pointU_1.y + (v_r_1_2 === null || v_r_1_2 === void 0 ? void 0 : v_r_1_2.y)
108
- };
109
- var point_l_2 = {
110
- x: pointU_2.x + (v_l_2_3 === null || v_l_2_3 === void 0 ? void 0 : v_l_2_3.x),
111
- y: pointU_2.y + (v_l_2_3 === null || v_l_2_3 === void 0 ? void 0 : v_l_2_3.y)
112
- };
113
- var point_r_2 = {
114
- x: pointU_2.x + (v_r_2_3 === null || v_r_2_3 === void 0 ? void 0 : v_r_2_3.x),
115
- y: pointU_2.y + (v_r_2_3 === null || v_r_2_3 === void 0 ? void 0 : v_r_2_3.y)
116
- };
117
- var point_C_l = calculateIntersection(v_U_1_2, v_U_2_3, point_l_1, point_l_2);
118
- var point_C_r = calculateIntersection(v_U_1_2, v_U_2_3, point_r_1, point_r_2);
119
- var point_C_l_c = void 0;
120
- var point_C_r_c = void 0;
121
- if (j == 0) {
122
- point_t_l = point_l_1;
123
- point_t_r = point_r_1;
124
- point_C_l_c = {
125
- x: (point_t_l.x + point_C_l.x) / 2,
126
- y: (point_t_l.y + point_C_l.y) / 2
127
- };
128
- point_C_r_c = {
129
- x: (point_t_r.x + point_C_r.x) / 2,
130
- y: (point_t_r.y + point_C_r.y) / 2
131
- };
132
- points_C_l.push(point_C_l_c);
133
- points_C_r.push(point_C_r_c);
134
- } else {
135
- var point_C_l_q = points_C_l[points_C_l.length - 1];
136
- var point_C_r_q = points_C_r[points_C_r.length - 1];
137
- point_C_l_c = {
138
- x: (point_C_l_q.x + point_C_l.x) / 2,
139
- y: (point_C_l_q.y + point_C_l.y) / 2
140
- };
141
- point_C_r_c = {
142
- x: (point_C_r_q.x + point_C_r.x) / 2,
143
- y: (point_C_r_q.y + point_C_r.y) / 2
144
- };
145
- points_C_l.push(point_C_l_c);
146
- points_C_r.push(point_C_r_c);
147
- }
148
- points_C_l.push(point_C_l);
149
- points_C_r.push(point_C_r);
150
- }
151
- var pointU_E2 = anchorpoints[anchorpoints.length - 2];
152
- var pointU_E1 = anchorpoints[anchorpoints.length - 1];
153
- var v_U_E2_E1 = {
154
- x: pointU_E1.x - pointU_E2.x,
155
- y: pointU_E1.y - pointU_E2.y
156
- };
157
- var head_d = Math.sqrt(v_U_E2_E1.x * v_U_E2_E1.x + v_U_E2_E1.y * v_U_E2_E1.y);
158
- var point_h_l;
159
- var point_h_r;
160
- var v_lr_h = [];
161
- var v_l_h = {
162
- x: undefined,
163
- y: undefined
164
- };
165
- var v_r_h = {
166
- x: undefined,
167
- y: undefined
168
- };
169
- var point_C_l_e = {
170
- x: undefined,
171
- y: undefined
172
- };
173
- var point_C_r_e = {
174
- x: undefined,
175
- y: undefined
176
- };
177
- var point_triangle_l = {
178
- x: undefined,
179
- y: undefined
180
- };
181
- var point_triangle_r = {
182
- x: undefined,
183
- y: undefined
184
- };
185
- var point_C_l_eq = points_C_l[points_C_l.length - 1];
186
- var point_C_r_eq = points_C_r[points_C_r.length - 1];
187
- if (head_d <= w) {
188
- v_lr_h = calculateVector(v_U_E2_E1, Math.PI / 2, w / 2);
189
- v_l_h = v_lr_h[0];
190
- v_r_h = v_lr_h[1];
191
- point_h_l = {
192
- x: pointU_E2.x + v_l_h.x,
193
- y: pointU_E2.y + v_l_h.y
194
- };
195
- point_h_r = {
196
- x: pointU_E2.x + v_r_h.x,
197
- y: pointU_E2.y + v_r_h.y
198
- };
199
- point_C_l_e = {
200
- x: (point_C_l_eq.x + point_h_l.x) / 2,
201
- y: (point_C_l_eq.y + point_h_l.y) / 2
202
- };
203
- point_C_r_e = {
204
- x: (point_C_r_eq.x + point_h_r.x) / 2,
205
- y: (point_C_r_eq.y + point_h_r.y) / 2
206
- };
207
- points_C_l.push(point_C_l_e);
208
- points_C_r.push(point_C_r_e);
209
- point_triangle_l = {
210
- x: 2 * point_h_l.x - pointU_E2.x,
211
- y: 2 * point_h_l.y - pointU_E2.y
212
- };
213
- point_triangle_r = {
214
- x: 2 * point_h_r.x - pointU_E2.x,
215
- y: 2 * point_h_r.y - pointU_E2.y
216
- };
217
- } else {
218
- var v_E2_E1 = {
219
- x: pointU_E1.x - pointU_E2.x,
220
- y: pointU_E1.y - pointU_E2.y
221
- };
222
- var v_E2_E1_d = Math.sqrt(v_E2_E1.x * v_E2_E1.x + v_E2_E1.y * v_E2_E1.y);
223
- var point_c = {
224
- x: pointU_E1.x - v_E2_E1.x * w / v_E2_E1_d,
225
- y: pointU_E1.y - v_E2_E1.y * w / v_E2_E1_d
226
- };
227
- v_lr_h = calculateVector(v_U_E2_E1, Math.PI / 2, w / 2);
228
- v_l_h = v_lr_h[0];
229
- v_r_h = v_lr_h[1];
230
- point_h_l = {
231
- x: point_c.x + v_l_h.x,
232
- y: point_c.y + v_l_h.y
233
- };
234
- point_h_r = {
235
- x: point_c.x + v_r_h.x,
236
- y: point_c.y + v_r_h.y
237
- };
238
- point_C_l_e = {
239
- x: (point_C_l_eq.x + point_h_l.x) / 2,
240
- y: (point_C_l_eq.y + point_h_l.y) / 2
241
- };
242
- point_C_r_e = {
243
- x: (point_C_r_eq.x + point_h_r.x) / 2,
244
- y: (point_C_r_eq.y + point_h_r.y) / 2
245
- };
246
- points_C_l.push(point_C_l_e);
247
- points_C_r.push(point_C_r_e);
248
- point_triangle_l = {
249
- x: 2 * point_h_l.x - point_c.x,
250
- y: 2 * point_h_l.y - point_c.y
251
- };
252
- point_triangle_r = {
253
- x: 2 * point_h_r.x - point_c.x,
254
- y: 2 * point_h_r.y - point_c.y
255
- };
256
- }
257
- var points_BC_l = [],
258
- points_BC_r = [];
259
- for (var _i = 0; _i < points_C_l.length - 2; _i++) {
260
- var temp_l = [];
261
- var temp_r = [];
262
- var temp1_l = points_C_l[_i];
263
- var temp2_l = points_C_l[_i + 1];
264
- var temp3_l = points_C_l[_i + 2];
265
- var temp1_r = points_C_r[_i];
266
- var temp2_r = points_C_r[_i + 1];
267
- var temp3_r = points_C_r[_i + 2];
268
- temp_l.push(temp1_l, temp2_l, temp3_l);
269
- temp_r.push(temp1_r, temp2_r, temp3_r);
270
- var points_temp_l = createBezierPoints(temp_l);
271
- var points_temp_r = createBezierPoints(temp_r);
272
- points_BC_l = points_BC_l.concat(points_temp_l);
273
- points_BC_r = points_BC_r.concat(points_temp_r);
274
- }
275
- pointsR = [point_t_l];
276
- pointsR = pointsR.concat(points_BC_l);
277
- pointsR.push(point_h_l);
278
- pointsR.push(point_triangle_l);
279
- pointsR.push(pointU_E1);
280
- pointsR.push(point_triangle_r);
281
- pointsR.push(point_h_r);
282
- pointsR = pointsR.concat(points_BC_r.reverse());
283
- pointsR.push(point_t_r);
284
- } else {
285
- pointsR = calculateTwoPoints(anchorpoints);
286
- }
287
- return pointsR;
288
- }
289
-
290
- /**
291
- * 构建双点控制下的基础箭头骨架。
292
- * type: 1-平尾直角箭头,2-燕尾直角箭头。
293
- */
294
- function calculateTwoPoints(anchorpoints) {
295
- var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
296
- var ratio = 6;
297
- var pointS = anchorpoints[0];
298
- var pointE = anchorpoints[1];
299
- var controlPois = [];
300
- var v_based = {
301
- x: pointE.x - pointS.x,
302
- y: pointE.y - pointS.y
303
- };
304
- var l = Math.sqrt((pointE.x - pointS.x) * (pointE.x - pointS.x) + (pointE.y - pointS.y) * (pointE.y - pointS.y));
305
- var w = l / ratio;
306
- var x_ = pointS.x + 5 * (pointE.x - pointS.x) / ratio;
307
- var y_ = pointS.y + 5 * (pointE.y - pointS.y) / ratio;
308
- var v_lr = calculateVector(v_based, Math.PI / 2, w / 2);
309
- var v_l = v_lr[0];
310
- var v_r = v_lr[1];
311
- var point1 = {
312
- x: pointS.x + (v_l === null || v_l === void 0 ? void 0 : v_l.x),
313
- y: pointS.y + (v_l === null || v_l === void 0 ? void 0 : v_l.y)
314
- };
315
- var point2 = {
316
- x: x_ + (v_l === null || v_l === void 0 ? void 0 : v_l.x),
317
- y: y_ + (v_l === null || v_l === void 0 ? void 0 : v_l.y)
318
- };
319
- var point3 = {
320
- x: x_ + 2 * (v_l === null || v_l === void 0 ? void 0 : v_l.x),
321
- y: y_ + 2 * (v_l === null || v_l === void 0 ? void 0 : v_l.y)
322
- };
323
- var point4 = {
324
- x: pointE.x,
325
- y: pointE.y
326
- };
327
- var point5 = {
328
- x: x_ + 2 * (v_r === null || v_r === void 0 ? void 0 : v_r.x),
329
- y: y_ + 2 * (v_r === null || v_r === void 0 ? void 0 : v_r.y)
330
- };
331
- var point6 = {
332
- x: x_ + (v_r === null || v_r === void 0 ? void 0 : v_r.x),
333
- y: y_ + (v_r === null || v_r === void 0 ? void 0 : v_r.y)
334
- };
335
- var point7 = {
336
- x: pointS.x + (v_r === null || v_r === void 0 ? void 0 : v_r.x),
337
- y: pointS.y + (v_r === null || v_r === void 0 ? void 0 : v_r.y)
338
- };
339
- switch (type) {
340
- case 1:
341
- controlPois.push(point1, point2, point3, point4, point5, point6, point7);
342
- break;
343
- case 2:
344
- var point8 = {
345
- x: pointS.x + (pointE.x - pointS.x) / 10,
346
- y: pointS.y + (pointE.y - pointS.y) / 10
347
- };
348
- controlPois.push(point1, point2, point3, point4, point5, point6, point7, point8);
349
- break;
350
- default:
351
- break;
352
- }
353
- return controlPois;
354
- }
355
-
356
- /**
357
- * 计算向量左右两侧的偏移向量。
358
- */
359
- function calculateVector(v, theta, d) {
360
- if (!theta) theta = Math.PI / 2;
361
- if (!d) d = 1;
362
- var x_1;
363
- var x_2;
364
- var y_1;
365
- var y_2;
366
- var v_l;
367
- var v_r;
368
- var d_v = Math.sqrt(v.x * v.x + v.y * v.y);
369
- if (v.y == 0) {
370
- x_1 = x_2 = d_v * d * Math.cos(theta) / v.x;
371
- if (v.x > 0) {
372
- y_1 = Math.sqrt(d * d - x_1 * x_1);
373
- y_2 = -y_1;
374
- } else if (v.x < 0) {
375
- y_2 = Math.sqrt(d * d - x_1 * x_1);
376
- y_1 = -y_2;
377
- }
378
- v_l = {
379
- x: x_1,
380
- y: y_1
381
- };
382
- v_r = {
383
- x: x_2,
384
- y: y_2
385
- };
386
- } else {
387
- var n = -v.x / v.y;
388
- var m = d * d_v * Math.cos(theta) / v.y;
389
- var a = 1 + n * n;
390
- var b = 2 * n * m;
391
- var c = m * m - d * d;
392
- x_1 = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a);
393
- x_2 = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a);
394
- y_1 = n * x_1 + m;
395
- y_2 = n * x_2 + m;
396
- if (v.y >= 0) {
397
- v_l = {
398
- x: x_1,
399
- y: y_1
400
- };
401
- v_r = {
402
- x: x_2,
403
- y: y_2
404
- };
405
- } else if (v.y < 0) {
406
- v_l = {
407
- x: x_2,
408
- y: y_2
409
- };
410
- v_r = {
411
- x: x_1,
412
- y: y_1
413
- };
414
- }
415
- }
416
- return [v_l, v_r];
417
- }
418
-
419
- /**
420
- * 计算两条方向线的交点。
421
- */
422
- function calculateIntersection(v_1, v_2, point1, point2) {
423
- var x;
424
- var y;
425
- if (v_1.y * v_2.x - v_1.x * v_2.y == 0) {
426
- if (v_1.x * v_2.x > 0 || v_1.y * v_2.y > 0) {
427
- x = (point1.x + point2.x) / 2;
428
- y = (point1.y + point2.y) / 2;
429
- } else {
430
- x = point2.x;
431
- y = point2.y;
432
- }
433
- } else {
434
- x = (v_1.x * v_2.x * (point2.y - point1.y) + point1.x * v_1.y * v_2.x - point2.x * v_2.y * v_1.x) / (v_1.y * v_2.x - v_1.x * v_2.y);
435
- if (v_1.x != 0) {
436
- y = (x - point1.x) * v_1.y / v_1.x + point1.y;
437
- } else {
438
- y = (x - point2.x) * v_2.y / v_2.x + point2.y;
439
- }
440
- }
441
- return {
442
- x: x,
443
- y: y
444
- };
445
- }
446
-
447
- /**
448
- * 计算贝塞尔曲线参数点。
449
- */
450
- var computeBezierPoints = function computeBezierPoints(anchorpoints, t) {
451
- var x = 0,
452
- y = 0;
453
- var binomialCoefficient = computeBinomial(anchorpoints);
454
- for (var j = 0; j < anchorpoints.length; j++) {
455
- var tempPoint = anchorpoints[j];
456
- var coefficient = Math.pow(1 - t, anchorpoints.length - 1 - j) * Math.pow(t, j) * binomialCoefficient[j];
457
- x += tempPoint.x * coefficient;
458
- y += tempPoint.y * coefficient;
459
- }
460
- return {
461
- x: x,
462
- y: y
463
- };
464
- };
465
-
466
- /**
467
- * 计算贝塞尔曲线的二项式系数。
468
- */
469
- var computeBinomial = function computeBinomial(anchorpoints) {
470
- var lens = anchorpoints.length;
471
- var binomialCoefficient = [];
472
- binomialCoefficient.push(1);
473
- for (var k = 1; k < lens - 1; k++) {
474
- var cs = 1,
475
- bcs = 1;
476
- for (var m = 0; m < k; m++) {
477
- cs = cs * (lens - 1 - m);
478
- bcs = bcs * (k - m);
479
- }
480
- binomialCoefficient.push(cs / bcs);
481
- }
482
- binomialCoefficient.push(1);
483
- return binomialCoefficient;
484
- };
485
-
486
- /**
487
- * 计算圆/椭圆的半长轴长度。
488
- */
489
- var getSemiAxis = function getSemiAxis(points) {
490
- return points.length === 2 ? Cesium.Cartesian3.distance(points[0], points[1]) : 0;
491
- };
492
-
493
- /**
494
- * 计算椭圆长轴相对正北方向的旋转角。
495
- */
496
- var getEllipticAngle = function getEllipticAngle(points) {
497
- var p1 = transformCartesianToWGS84(points[0]);
498
- var p2 = transformCartesianToWGS84(points[1]);
499
- var angle = 450 - calculateAngle(p1, p2);
500
- return Cesium.Math.toRadians(angle);
501
- };
502
-
503
- /**
504
- * 计算集结地面的闭合曲线顶点。
505
- * 返回值为经纬高扁平数组:[lng, lat, 0, ...]。
506
- */
507
- var computeAssemblePoints = function computeAssemblePoints(anchorpoints) {
508
- var points = [];
509
- var originP = transformCartesianToWGS84(anchorpoints[0]);
510
- var lastP = anchorpoints[1] ? transformCartesianToWGS84(anchorpoints[1]) : {
511
- x: originP.x + 0.00001,
512
- y: originP.y + 0.00001,
513
- z: originP.z
514
- };
515
- var vectorOL = {
516
- x: lastP.x - originP.x,
517
- y: lastP.y - originP.y
518
- };
519
- var dOL = Math.sqrt(vectorOL.x * vectorOL.x + vectorOL.y * vectorOL.y);
520
- var v_O_P1_lr = calculateVector(vectorOL, Math.PI / 3, Math.sqrt(3) / 12 * dOL);
521
- var originP_P1 = v_O_P1_lr[1];
522
- var p1 = {
523
- x: originP.x + (originP_P1 === null || originP_P1 === void 0 ? void 0 : originP_P1.x),
524
- y: originP.y + (originP_P1 === null || originP_P1 === void 0 ? void 0 : originP_P1.y)
525
- };
526
- var p2 = {
527
- x: (originP.x + lastP.x) / 2,
528
- y: (originP.y + lastP.y) / 2
529
- };
530
- var v_L_P3_lr = calculateVector(vectorOL, Math.PI * 2 / 3, Math.sqrt(3) / 12 * dOL);
531
- var lastP_P3 = v_L_P3_lr[1];
532
- var p3 = {
533
- x: lastP.x + lastP_P3.x,
534
- y: lastP.y + lastP_P3.y
535
- };
536
- var v_O_P5_lr = calculateVector(vectorOL, Math.PI / 2, 1 / 2 * dOL);
537
- var v_O_P5 = v_O_P5_lr[0];
538
- var p5 = {
539
- x: v_O_P5.x + p2.x,
540
- y: v_O_P5.y + p2.y
541
- };
542
- var p0 = originP;
543
- var p4 = lastP;
544
- points.push(p0, p1, p2, p3, p4, p5);
545
- var closeCardinal = createCloseCardinal(points);
546
- var fb_points = calculatePointsFBZ3(closeCardinal, 100);
547
- var result = [];
548
- for (var index = 0; index < fb_points.length; index++) {
549
- var ele = fb_points[index];
550
- result.push(ele.x, ele.y, 0);
551
- }
552
- return result;
553
- };
554
-
555
- /**
556
- * 为闭合形状生成 Cardinal 样条控制点。
557
- */
558
- function createCloseCardinal(points) {
559
- if (points == null || points.length < 3) {
560
- return points;
561
- }
562
- var lastP = points[0];
563
- points.push(lastP);
564
- var cPoints = points;
565
- var cardinalPoints = [];
566
- var t = 0.4;
567
- var e = 0.005;
568
- var n = cPoints.length - 1;
569
- for (var k = 0; k <= n - 1; k++) {
570
- var p0 = void 0,
571
- p1 = void 0,
572
- p2 = void 0;
573
- if (k == n - 1) {
574
- p0 = cPoints[n - 1];
575
- p1 = cPoints[0];
576
- p2 = cPoints[1];
577
- } else {
578
- p0 = cPoints[k];
579
- p1 = cPoints[k + 1];
580
- p2 = cPoints[k + 2];
581
- }
582
- var p1l = {
583
- x: undefined,
584
- y: undefined
585
- };
586
- var p1r = {
587
- x: undefined,
588
- y: undefined
589
- };
590
- var p0_p1 = {
591
- x: p1.x - p0.x,
592
- y: p1.y - p0.y
593
- };
594
- var p1_p2 = {
595
- x: p2.x - p1.x,
596
- y: p2.y - p1.y
597
- };
598
- var d01 = Math.sqrt(p0_p1.x * p0_p1.x + p0_p1.y * p0_p1.y);
599
- var d12 = Math.sqrt(p1_p2.x * p1_p2.x + p1_p2.y * p1_p2.y);
600
- var p0_p1_1 = {
601
- x: p0_p1.x / d01,
602
- y: p0_p1.y / d01
603
- };
604
- var p1_p2_1 = {
605
- x: p1_p2.x / d12,
606
- y: p1_p2.y / d12
607
- };
608
- var p0_p1_p2 = {
609
- x: p0_p1_1.x + p1_p2_1.x,
610
- y: p0_p1_1.y + p1_p2_1.y
611
- };
612
- var d012 = Math.sqrt(p0_p1_p2.x * p0_p1_p2.x + p0_p1_p2.y * p0_p1_p2.y);
613
- var p0_p1_p2_1 = {
614
- x: p0_p1_p2.x / d012,
615
- y: p0_p1_p2.y / d012
616
- };
617
- var cosE_p0p1p2 = (p0_p1_1.x * p1_p2_1.x + p0_p1_1.y * p1_p2_1.y) / 1;
618
- if (Math.abs(1 - cosE_p0p1p2) < e) {
619
- p1l.x = p1.x - p1_p2_1.x * d01 * t;
620
- p1l.y = p1.y - p1_p2_1.y * d01 * t;
621
- p1r.x = p1.x + p0_p1_1.x * d12 * t;
622
- p1r.y = p1.y + p0_p1_1.y * d12 * t;
623
- } else {
624
- p1l.x = p1.x - p0_p1_p2_1.x * d01 * t;
625
- p1l.y = p1.y - p0_p1_p2_1.y * d01 * t;
626
- p1r.x = p1.x + p0_p1_p2_1.x * d12 * t;
627
- p1r.y = p1.y + p0_p1_p2_1.y * d12 * t;
628
- }
629
- if (k == n - 1) {
630
- cardinalPoints[0] = p1;
631
- cardinalPoints[1] = p1r;
632
- cardinalPoints[(n - 2) * 3 + 2 + 3] = p1l;
633
- cardinalPoints[(n - 2) * 3 + 2 + 4] = cPoints[n];
634
- } else {
635
- cardinalPoints[k * 3 + 2 + 0] = p1l;
636
- cardinalPoints[k * 3 + 2 + 1] = p1;
637
- cardinalPoints[k * 3 + 2 + 2] = p1r;
638
- }
639
- }
640
- return cardinalPoints;
641
- }
642
-
643
- /**
644
- * 根据三次贝塞尔控制点插值生成闭合曲线点集。
645
- */
646
- function calculatePointsFBZ3(points, part) {
647
- if (!part) part = 20;
648
- var bezierPts = [];
649
- var scale = 0.05;
650
- if (part > 0) {
651
- scale = 1 / part;
652
- }
653
- for (var i = 0; i < points.length - 3;) {
654
- var pointS = points[i];
655
- var pointC1 = points[i + 1];
656
- var pointC2 = points[i + 2];
657
- var pointE = points[i + 3];
658
- bezierPts.push(pointS);
659
- for (var t = 0; t < 1;) {
660
- var x = (1 - t) * (1 - t) * (1 - t) * pointS.x + 3 * t * (1 - t) * (1 - t) * pointC1.x + 3 * t * t * (1 - t) * pointC2.x + t * t * t * pointE.x;
661
- var y = (1 - t) * (1 - t) * (1 - t) * pointS.y + 3 * t * (1 - t) * (1 - t) * pointC1.y + 3 * t * t * (1 - t) * pointC2.y + t * t * t * pointE.y;
662
- var point = {
663
- x: x,
664
- y: y
665
- };
666
- bezierPts.push(point);
667
- t += scale;
668
- }
669
- i += 3;
670
- if (i >= points.length) {
671
- bezierPts.push(pointS);
672
- }
673
- }
674
- return bezierPts;
675
- }
676
-
677
- /**
678
- * 统一计算燕尾/直线箭头顶点。
679
- * type: 1-燕尾箭头,2-燕尾箭头变体,3-直线箭头。
680
- */
681
- var calculateSwallowPoints = function calculateSwallowPoints(anchorpoints, type) {
682
- var points = [];
683
- switch (type) {
684
- case 1:
685
- points = computeSwallowtailArrow(anchorpoints);
686
- break;
687
- case 2:
688
- points = computeSwallowtailArrow2(anchorpoints);
689
- break;
690
- case 3:
691
- points = computeSwallowtailArrow(anchorpoints, false);
692
- default:
693
- break;
694
- }
695
- return points;
696
- };
697
-
698
- /**
699
- * 计算标准燕尾箭头或直线箭头的经纬高扁平数组。
700
- */
701
- var computeSwallowtailArrow = function computeSwallowtailArrow(anchorpoints) {
702
- var swallow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
703
- var p0 = transformCartesianToWGS84(anchorpoints[0]);
704
- var p1 = anchorpoints[1] ? transformCartesianToWGS84(anchorpoints[1]) : {
705
- x: p0.x + 0.00001,
706
- y: p0.y + 0.00001,
707
- z: p0.z
708
- };
709
- var x0 = p0.x;
710
- var y0 = p0.y;
711
- var x1 = p1.x;
712
- var y1 = p1.y;
713
- var xt = (15.8 * x1 + 3.2 * x0) / 19;
714
- var yt = (15.8 * y1 + 3.2 * y0) / 19;
715
- var ap = new Array(7);
716
- ap[0] = {
717
- x: x1,
718
- y: y1
719
- };
720
- ap[1] = {
721
- x: xt + 0.85 / 3.2 * (y1 - yt),
722
- y: yt - 0.85 / 3.2 * (x1 - xt)
723
- };
724
- ap[2] = {
725
- x: xt + 0.25 / 3.2 * (y1 - yt),
726
- y: yt - 0.25 / 3.2 * (x1 - xt)
727
- };
728
- ap[3] = {
729
- x: x0 + 1.6 / 19 * (y1 - y0),
730
- y: y0 - 1.6 / 19 * (x1 - x0)
731
- };
732
- ap[4] = swallow ? {
733
- x: (3.2 * x1 + 15.8 * x0) / 19,
734
- y: (3.2 * y1 + 15.8 * y0) / 19
735
- } : undefined;
736
- ap[5] = {
737
- x: x0 - 1.6 / 19 * (y1 - y0),
738
- y: y0 + 1.6 / 19 * (x1 - x0)
739
- };
740
- ap[6] = {
741
- x: xt - 0.25 / 3.2 * (y1 - yt),
742
- y: yt + 0.25 / 3.2 * (x1 - xt)
743
- };
744
- ap[7] = {
745
- x: xt - 0.85 / 3.2 * (y1 - yt),
746
- y: yt + 0.85 / 3.2 * (x1 - xt)
747
- };
748
- var degrees = [];
749
- for (var index = 0; index < ap.length; index++) {
750
- var ele = ap[index];
751
- ele && degrees.push(ele.x, ele.y, 0);
752
- }
753
- return degrees;
754
- };
755
-
756
- /**
757
- * 计算双点燕尾箭头变体的经纬高扁平数组。
758
- */
759
- var computeSwallowtailArrow2 = function computeSwallowtailArrow2(anchorpoints) {
760
- var p0 = transformCartesianToWGS84(anchorpoints[0]);
761
- var p1 = anchorpoints[1] ? transformCartesianToWGS84(anchorpoints[1]) : {
762
- x: p0.x + 0.00001,
763
- y: p0.y + 0.00001,
764
- z: p0.z
765
- };
766
- var pointlist = calculateTwoPoints([p0, p1], 2);
767
- var degreesArray = [];
768
- pointlist.forEach(function (item) {
769
- degreesArray.push(item.x, item.y, 0);
770
- });
771
- return degreesArray;
772
- };
773
-
774
- /**
775
- * 根据控制点计算钳击箭头面顶点。
776
- */
777
- var calculatePincerArrowPoint = function calculatePincerArrowPoint(points) {
778
- if (points.length < 3) return null;
779
- var lnglatArr = [];
780
- for (var i = 0; i < points.length; i++) {
781
- var degree = transformCartesianToWGS84(points[i]);
782
- lnglatArr.push([degree.x, degree.y]);
783
- }
784
- var res = xp.algorithm.doubleArrow(lnglatArr);
785
- var result = [];
786
- var index = JSON.stringify(res.polygonalPoint).indexOf('null');
787
- if (index == -1) result = res.polygonalPoint;
788
- return result;
789
- };
790
-
791
- /**
792
- * 根据两个控制点生成阵型折线点集。
793
- * type: 0-防御阵型,1-进攻阵型。
794
- */
795
- var calculateFormationPoints = function calculateFormationPoints(anchorpoints, type) {
796
- var pos0 = transformCartesianToWGS84(anchorpoints[0]);
797
- var pos1 = anchorpoints[1] ? transformCartesianToWGS84(anchorpoints[1]) : {
798
- x: pos0.x + 0.00001,
799
- y: pos0.y + 0.00001,
800
- z: pos0.z
801
- };
802
- var centerX = (pos0.x + pos1.x) / 2;
803
- var centerY = (pos0.y + pos1.y) / 2;
804
- var center = {
805
- x: centerX,
806
- y: centerY
807
- };
808
- var leftCartesian3 = Cesium.Cartesian3.fromDegrees(pos0.x, pos0.y);
809
- var rightCartesian3 = Cesium.Cartesian3.fromDegrees(pos1.x, pos1.y);
810
- var diameter = Cesium.Cartesian3.distance(leftCartesian3, rightCartesian3);
811
- var radius = diameter / 2;
812
- var angle = calculateAngle(center, pos1);
813
- var sourcePos = getPointByAngleDistance(center.x, center.y, 90 + angle, radius);
814
- var angle_left = calculateAngle(sourcePos, pos0);
815
- var circleRadius = Math.pow(2, 0.5) * radius;
816
- var points = [];
817
- type = type === 0 ? 0.9 : 1.1;
818
- for (var index = 0; index < 90; index++) {
819
- var cur_angle = angle_left + index;
820
- var cur_point = getPointByAngleDistance(sourcePos.x, sourcePos.y, cur_angle, circleRadius);
821
- points.push({
822
- x: cur_point.x,
823
- y: cur_point.y
824
- });
825
- if (index != 0 && index % 15 == 0) {
826
- var cur_point1 = getPointByAngleDistance(sourcePos.x, sourcePos.y, cur_angle, circleRadius * type);
827
- points.push({
828
- x: cur_point1.x,
829
- y: cur_point1.y
830
- });
831
- points.push({
832
- x: cur_point.x,
833
- y: cur_point.y
834
- });
835
- }
836
- }
837
- var resultPos = [];
838
- points.forEach(function (item) {
839
- resultPos.push(item.x, item.y);
840
- });
841
- return Cesium.Cartesian3.fromDegreesArray(resultPos);
842
- };
843
-
844
- /**
845
- * 根据两个控制点生成弓形折线点集。
846
- */
847
- var calculateBowPoints = function calculateBowPoints(anchorpoints) {
848
- var pos0 = transformCartesianToWGS84(anchorpoints[0]);
849
- var pos1 = anchorpoints[1] ? transformCartesianToWGS84(anchorpoints[1]) : {
850
- x: pos0.x + 0.00001,
851
- y: pos0.y + 0.00001,
852
- z: pos0.z
853
- };
854
- var centerX = (pos0.x + pos1.x) / 2;
855
- var centerY = (pos0.y + pos1.y) / 2;
856
- var center = {
857
- x: centerX,
858
- y: centerY
859
- };
860
- var leftCartesian3 = Cesium.Cartesian3.fromDegrees(pos0.x, pos0.y);
861
- var rightCartesian3 = Cesium.Cartesian3.fromDegrees(pos1.x, pos1.y);
862
- var diameter = Cesium.Cartesian3.distance(leftCartesian3, rightCartesian3);
863
- var radius = diameter / 2;
864
- var angle = calculateAngle(center, pos1);
865
- var sourcePos = getPointByAngleDistance(center.x, center.y, 90 + angle, radius);
866
- var angle_left = calculateAngle(sourcePos, pos0);
867
- var circleRadius = Math.pow(2, 0.5) * radius;
868
- var points = [];
869
- for (var index = 0; index < 90; index++) {
870
- var cur_angle = angle_left + index;
871
- var cur_point = getPointByAngleDistance(sourcePos.x, sourcePos.y, cur_angle, circleRadius);
872
- points.push({
873
- x: cur_point.x,
874
- y: cur_point.y
875
- });
876
- }
877
- var resultPos = [];
878
- points.forEach(function (item) {
879
- resultPos.push(item.x, item.y);
880
- });
881
- return Cesium.Cartesian3.fromDegreesArray(resultPos);
882
- };
883
-
884
- /**
885
- * 已知起点经纬度、角度与距离,反解目标点经纬度。
886
- * 这里采用 WGS84 椭球近似计算,供弓形、阵型、扇形等算法复用。
887
- */
888
- function getPointByAngleDistance(lng, lat, angle, distance) {
889
- var a = 6378137;
890
- var b = 6356752.3142;
891
- var f = 1 / 298.257223563;
892
- var alpha1 = angle * (Math.PI / 180);
893
- var sinAlpha1 = Math.sin(alpha1);
894
- var cosAlpha1 = Math.cos(alpha1);
895
- var tanU1 = (1 - f) * Math.tan(lat * (Math.PI / 180));
896
- var cosU1 = 1 / Math.sqrt(1 + tanU1 * tanU1),
897
- sinU1 = tanU1 * cosU1;
898
- var sigma1 = Math.atan2(tanU1, cosAlpha1);
899
- var sinAlpha = cosU1 * sinAlpha1;
900
- var cosSqAlpha = 1 - sinAlpha * sinAlpha;
901
- var uSq = cosSqAlpha * (a * a - b * b) / (b * b);
902
- var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));
903
- var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));
904
- var sigma = distance / (b * A),
905
- sigmaP = 2 * Math.PI;
906
- var cos2SigmaM;
907
- var sinSigma;
908
- var cosSigma;
909
- while (Math.abs(sigma - sigmaP) > 1e-12) {
910
- cos2SigmaM = Math.cos(2 * sigma1 + sigma);
911
- sinSigma = Math.sin(sigma);
912
- cosSigma = Math.cos(sigma);
913
- var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));
914
- sigmaP = sigma;
915
- sigma = distance / (b * A) + deltaSigma;
916
- }
917
- var tmp = sinU1 * sinSigma - cosU1 * cosSigma * cosAlpha1;
918
- var lat2 = Math.atan2(sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1, (1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp));
919
- var lambda = Math.atan2(sinSigma * sinAlpha1, cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1);
920
- var C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));
921
- var L = lambda - (1 - C) * f * sinAlpha * (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));
922
- return {
923
- x: lng + L * (180 / Math.PI),
924
- y: lat2 * (180 / Math.PI)
925
- };
926
- }
927
-
928
- /**
929
- * 根据圆心、半径点、终止角方向点生成扇形顶点。
930
- */
931
- var calculateSectorPoints = function calculateSectorPoints(points) {
932
- var pos0 = transformCartesianToWGS84(points[0]);
933
- pos0.z = 0;
934
- var pos1 = points[1] ? transformCartesianToWGS84(points[1]) : {
935
- x: pos0.x + 0.00001,
936
- y: pos0.y,
937
- z: 0
938
- };
939
- var distance = points[1] ? Cesium.Cartesian3.distance(points[0], points[1]) : 0.1;
940
- var pos2 = points[2] ? transformCartesianToWGS84(points[2]) : {
941
- x: pos1.x + 0.0000001,
942
- y: pos1.y,
943
- z: 0
944
- };
945
- var startAngle = calculateAngle(pos0, pos1);
946
- var endAngle = calculateAngle(pos0, pos2);
947
- var startAngleRad = Math.min(startAngle, endAngle);
948
- var endAngleRad = Math.max(startAngle, endAngle);
949
- var coordinates = [];
950
- coordinates.push(pos0.x, pos0.y);
951
- var numPoints = 100;
952
- var angleStep = (endAngleRad - startAngleRad) / numPoints;
953
- for (var i = 0; i <= numPoints; i++) {
954
- var angle = startAngleRad + i * angleStep;
955
- var point = getPointByAngleDistance(pos0.x, pos0.y, angle, distance);
956
- coordinates.push(point.x, point.y);
957
- }
958
- coordinates.push(pos0.x, pos0.y);
959
- return Cesium.Cartesian3.fromDegreesArray(coordinates);
960
- };
961
-
962
- /**
963
- * 对外暴露给 drawer/shape 的最小算法集合。
964
- */
965
- export { calculateBowPoints, calculateFormationPoints, calculatePincerArrowPoint, calculateSectorPoints, calculateSwallowPoints, computeAssemblePoints, createBezierPoints, getAttackArrowPoints, getEllipticAngle, getPointByAngleDistance, getRightAngleArrowPoints, getSemiAxis };
1
+ function _0x1de9(){var _0x13b25e=['q2fYDgvZAwfUmW','zNjVBurLz3jLzxm','mti0mZi0mdbqzungAgu','ywjZ','zM9YrwfJAa','mJqYnZa0A0ngvgrM','C3fYDa','BNvSBa','mJmYmdKXmgrkEu1cza','y29Z','odm5nNH2t1Dwvq','mte3weTwBNP1','mtuZsfLAALfv','yxrHBJi','nLDsC0L2va','zgLZDgfUy2u','mJy4mda1uKnXALDJ','C2LU','mtaZndq5ogjcCxrRyG','Aw5KzxHpzG','BgvUz3rO','twf0Aa','DgfPBgvKqxr0ywnRqxjYB3C','Cg9SEwDVBMfSug9PBNq','mJe5ntG0nfzcqw5Lta','Cg93','ChvZAa','C3rYAw5NAwz5'];_0x1de9=function(){return _0x13b25e;};return _0x1de9();}(function(_0x4813ca,_0x36c26b){var _0x2695ff=_0x2b54,_0x56e01e=_0x4813ca();while(!![]){try{var _0x5b8327=-parseInt(_0x2695ff(0x184))/0x1+-parseInt(_0x2695ff(0x186))/0x2+parseInt(_0x2695ff(0x17f))/0x3*(parseInt(_0x2695ff(0x17e))/0x4)+parseInt(_0x2695ff(0x17c))/0x5*(-parseInt(_0x2695ff(0x182))/0x6)+-parseInt(_0x2695ff(0x18c))/0x7+parseInt(_0x2695ff(0x179))/0x8*(parseInt(_0x2695ff(0x180))/0x9)+parseInt(_0x2695ff(0x192))/0xa;if(_0x5b8327===_0x36c26b)break;else _0x56e01e['push'](_0x56e01e['shift']());}catch(_0x1388bf){_0x56e01e['push'](_0x56e01e['shift']());}}}(_0x1de9,0x43cd7));import*as _0x2eb7e0 from'deeptwins-cesium';import _0x32f8b2 from'./algorithm';import{calculateAngle,transformCartesianToWGS84,transformWGS84ToCartesian}from'./coordinate';var createBezierPoints=function createBezierPoints(_0x4e64f4){var _0x4faf39=_0x2b54,_0xb63712=[];for(var _0x22a595=0x0;_0x22a595<_0x4e64f4['length'];_0x22a595++){var _0x21dfeb=transformCartesianToWGS84(_0x4e64f4[_0x22a595]);_0xb63712['push'](_0x21dfeb);}var _0x9826b9=0x64,_0x18169d=[];for(var _0x45cddd=0x0;_0x45cddd<=_0x9826b9;_0x45cddd++){var _0x53549e=computeBezierPoints(_0xb63712,_0x45cddd/_0x9826b9),_0x4eab85=transformWGS84ToCartesian(_0x53549e);_0x18169d[_0x4faf39(0x18e)](_0x4eab85);}return _0x18169d;},getAttackArrowPoints=function getAttackArrowPoints(_0x1ff135){var _0x19e6a8=_0x2b54,_0x46b77e=[];for(var _0x4bad2e=0x0;_0x4bad2e<_0x1ff135[_0x19e6a8(0x188)];_0x4bad2e++){var _0x543e4f=transformCartesianToWGS84(_0x1ff135[_0x4bad2e]);_0x46b77e[_0x19e6a8(0x18e)]([_0x543e4f['x'],_0x543e4f['y']]);}var _0x38c7ed=_0x32f8b2['algorithm'][_0x19e6a8(0x18a)](_0x46b77e),_0x4fd8c4=JSON[_0x19e6a8(0x18f)](_0x38c7ed['polygonalPoint'])[_0x19e6a8(0x187)]('null'),_0x508186=[];if(_0x4fd8c4==-0x1)_0x508186=_0x38c7ed[_0x19e6a8(0x18b)];return _0x508186;},getRightAngleArrowPoints=function getRightAngleArrowPoints(_0x18da02){var _0x1149ec=_0x2b54,_0x56fefe=[];for(var _0x581be8=0x0;_0x581be8<_0x18da02['length'];_0x581be8++){var _0x2f8135=transformCartesianToWGS84(_0x18da02[_0x581be8]);_0x56fefe[_0x1149ec(0x18e)](_0x2f8135);}var _0xa17074=calculateMorePoints(_0x56fefe),_0xde8d47=[];return _0xa17074['forEach'](function(_0x33e00d){var _0x46a801=_0x1149ec;_0xde8d47[_0x46a801(0x18e)](_0x33e00d['x'],_0x33e00d['y']);}),_0x2eb7e0['Cartesian3']['fromDegreesArray'](_0xde8d47);};function calculateMorePoints(_0xeb3eeb){var _0x42ef9a=_0x2b54,_0xa6826d=0x6,_0x42038f;if(_0xeb3eeb[_0x42ef9a(0x188)]>0x2){var _0x441a6e=0x0,_0x4a41d0,_0x10595d;for(var _0x14b60c=0x0;_0x14b60c<_0xeb3eeb[_0x42ef9a(0x188)]-0x1;_0x14b60c++){_0x4a41d0=_0xeb3eeb[_0x14b60c],_0x10595d=_0xeb3eeb[_0x14b60c+0x1],_0x441a6e+=Math[_0x42ef9a(0x17a)]((_0x10595d['y']-_0x4a41d0['y'])*(_0x10595d['y']-_0x4a41d0['y'])+(_0x10595d['x']-_0x4a41d0['x'])*(_0x10595d['x']-_0x4a41d0['x']));}var _0x2e270f=_0x441a6e/_0xa6826d,_0x4af9d2=[],_0x141ae4=[],_0xc11663={'x':undefined,'y':undefined},_0x1752f8={'x':undefined,'y':undefined};for(var _0x49d82f=0x0;_0x49d82f<_0xeb3eeb[_0x42ef9a(0x188)]-0x2;_0x49d82f++){var _0x2e208a=_0xeb3eeb[_0x49d82f],_0x4c6ba6=_0xeb3eeb[_0x49d82f+0x1],_0x17b03c=_0xeb3eeb[_0x49d82f+0x2],_0x482d42={'x':_0x4c6ba6['x']-_0x2e208a['x'],'y':_0x4c6ba6['y']-_0x2e208a['y']},_0x20e717={'x':_0x17b03c['x']-_0x4c6ba6['x'],'y':_0x17b03c['y']-_0x4c6ba6['y']},_0x2738cb=calculateVector(_0x482d42,Math['PI']/0x2,_0x2e270f/0x2),_0x12c700=_0x2738cb[0x0],_0x975c99=_0x2738cb[0x1],_0x57e23f=calculateVector(_0x20e717,Math['PI']/0x2,_0x2e270f/0x2),_0x2b1021=_0x57e23f[0x0],_0x3ca50b=_0x57e23f[0x1],_0x4920e0={'x':_0x2e208a['x']+(_0x12c700===null||_0x12c700===void 0x0?void 0x0:_0x12c700['x']),'y':_0x2e208a['y']+(_0x12c700===null||_0x12c700===void 0x0?void 0x0:_0x12c700['y'])},_0x580029={'x':_0x2e208a['x']+(_0x975c99===null||_0x975c99===void 0x0?void 0x0:_0x975c99['x']),'y':_0x2e208a['y']+(_0x975c99===null||_0x975c99===void 0x0?void 0x0:_0x975c99['y'])},_0xe35036={'x':_0x4c6ba6['x']+(_0x2b1021===null||_0x2b1021===void 0x0?void 0x0:_0x2b1021['x']),'y':_0x4c6ba6['y']+(_0x2b1021===null||_0x2b1021===void 0x0?void 0x0:_0x2b1021['y'])},_0x48b4a8={'x':_0x4c6ba6['x']+(_0x3ca50b===null||_0x3ca50b===void 0x0?void 0x0:_0x3ca50b['x']),'y':_0x4c6ba6['y']+(_0x3ca50b===null||_0x3ca50b===void 0x0?void 0x0:_0x3ca50b['y'])},_0x207702=calculateIntersection(_0x482d42,_0x20e717,_0x4920e0,_0xe35036),_0x5ea6bf=calculateIntersection(_0x482d42,_0x20e717,_0x580029,_0x48b4a8),_0x584125=void 0x0,_0xa0aefb=void 0x0;if(_0x49d82f==0x0)_0xc11663=_0x4920e0,_0x1752f8=_0x580029,_0x584125={'x':(_0xc11663['x']+_0x207702['x'])/0x2,'y':(_0xc11663['y']+_0x207702['y'])/0x2},_0xa0aefb={'x':(_0x1752f8['x']+_0x5ea6bf['x'])/0x2,'y':(_0x1752f8['y']+_0x5ea6bf['y'])/0x2},_0x4af9d2['push'](_0x584125),_0x141ae4[_0x42ef9a(0x18e)](_0xa0aefb);else{var _0x3b7bda=_0x4af9d2[_0x4af9d2['length']-0x1],_0x33877a=_0x141ae4[_0x141ae4[_0x42ef9a(0x188)]-0x1];_0x584125={'x':(_0x3b7bda['x']+_0x207702['x'])/0x2,'y':(_0x3b7bda['y']+_0x207702['y'])/0x2},_0xa0aefb={'x':(_0x33877a['x']+_0x5ea6bf['x'])/0x2,'y':(_0x33877a['y']+_0x5ea6bf['y'])/0x2},_0x4af9d2[_0x42ef9a(0x18e)](_0x584125),_0x141ae4['push'](_0xa0aefb);}_0x4af9d2[_0x42ef9a(0x18e)](_0x207702),_0x141ae4[_0x42ef9a(0x18e)](_0x5ea6bf);}var _0x18e399=_0xeb3eeb[_0xeb3eeb['length']-0x2],_0x55dec9=_0xeb3eeb[_0xeb3eeb[_0x42ef9a(0x188)]-0x1],_0x1c281f={'x':_0x55dec9['x']-_0x18e399['x'],'y':_0x55dec9['y']-_0x18e399['y']},_0xbaabb5=Math[_0x42ef9a(0x17a)](_0x1c281f['x']*_0x1c281f['x']+_0x1c281f['y']*_0x1c281f['y']),_0x50b75f,_0x33bc2e,_0x3b040a=[],_0x386c06={'x':undefined,'y':undefined},_0x54b449={'x':undefined,'y':undefined},_0x4f9fa2={'x':undefined,'y':undefined},_0x41d04={'x':undefined,'y':undefined},_0x34a7f7={'x':undefined,'y':undefined},_0x2ca2c1={'x':undefined,'y':undefined},_0x57f2a0=_0x4af9d2[_0x4af9d2[_0x42ef9a(0x188)]-0x1],_0x1f91c0=_0x141ae4[_0x141ae4[_0x42ef9a(0x188)]-0x1];if(_0xbaabb5<=_0x2e270f)_0x3b040a=calculateVector(_0x1c281f,Math['PI']/0x2,_0x2e270f/0x2),_0x386c06=_0x3b040a[0x0],_0x54b449=_0x3b040a[0x1],_0x50b75f={'x':_0x18e399['x']+_0x386c06['x'],'y':_0x18e399['y']+_0x386c06['y']},_0x33bc2e={'x':_0x18e399['x']+_0x54b449['x'],'y':_0x18e399['y']+_0x54b449['y']},_0x4f9fa2={'x':(_0x57f2a0['x']+_0x50b75f['x'])/0x2,'y':(_0x57f2a0['y']+_0x50b75f['y'])/0x2},_0x41d04={'x':(_0x1f91c0['x']+_0x33bc2e['x'])/0x2,'y':(_0x1f91c0['y']+_0x33bc2e['y'])/0x2},_0x4af9d2[_0x42ef9a(0x18e)](_0x4f9fa2),_0x141ae4[_0x42ef9a(0x18e)](_0x41d04),_0x34a7f7={'x':0x2*_0x50b75f['x']-_0x18e399['x'],'y':0x2*_0x50b75f['y']-_0x18e399['y']},_0x2ca2c1={'x':0x2*_0x33bc2e['x']-_0x18e399['x'],'y':0x2*_0x33bc2e['y']-_0x18e399['y']};else{var _0x67d9bd={'x':_0x55dec9['x']-_0x18e399['x'],'y':_0x55dec9['y']-_0x18e399['y']},_0x1ba20d=Math[_0x42ef9a(0x17a)](_0x67d9bd['x']*_0x67d9bd['x']+_0x67d9bd['y']*_0x67d9bd['y']),_0x33acdd={'x':_0x55dec9['x']-_0x67d9bd['x']*_0x2e270f/_0x1ba20d,'y':_0x55dec9['y']-_0x67d9bd['y']*_0x2e270f/_0x1ba20d};_0x3b040a=calculateVector(_0x1c281f,Math['PI']/0x2,_0x2e270f/0x2),_0x386c06=_0x3b040a[0x0],_0x54b449=_0x3b040a[0x1],_0x50b75f={'x':_0x33acdd['x']+_0x386c06['x'],'y':_0x33acdd['y']+_0x386c06['y']},_0x33bc2e={'x':_0x33acdd['x']+_0x54b449['x'],'y':_0x33acdd['y']+_0x54b449['y']},_0x4f9fa2={'x':(_0x57f2a0['x']+_0x50b75f['x'])/0x2,'y':(_0x57f2a0['y']+_0x50b75f['y'])/0x2},_0x41d04={'x':(_0x1f91c0['x']+_0x33bc2e['x'])/0x2,'y':(_0x1f91c0['y']+_0x33bc2e['y'])/0x2},_0x4af9d2['push'](_0x4f9fa2),_0x141ae4['push'](_0x41d04),_0x34a7f7={'x':0x2*_0x50b75f['x']-_0x33acdd['x'],'y':0x2*_0x50b75f['y']-_0x33acdd['y']},_0x2ca2c1={'x':0x2*_0x33bc2e['x']-_0x33acdd['x'],'y':0x2*_0x33bc2e['y']-_0x33acdd['y']};}var _0xc56128=[],_0x4ac0ca=[];for(var _0x5be31e=0x0;_0x5be31e<_0x4af9d2[_0x42ef9a(0x188)]-0x2;_0x5be31e++){var _0x3918ed=[],_0x389575=[],_0x1a86ca=_0x4af9d2[_0x5be31e],_0x435531=_0x4af9d2[_0x5be31e+0x1],_0x133c01=_0x4af9d2[_0x5be31e+0x2],_0x572eb3=_0x141ae4[_0x5be31e],_0xf6a900=_0x141ae4[_0x5be31e+0x1],_0x453176=_0x141ae4[_0x5be31e+0x2];_0x3918ed['push'](_0x1a86ca,_0x435531,_0x133c01),_0x389575[_0x42ef9a(0x18e)](_0x572eb3,_0xf6a900,_0x453176);var _0x5c0669=createBezierPoints(_0x3918ed),_0x371658=createBezierPoints(_0x389575);_0xc56128=_0xc56128['concat'](_0x5c0669),_0x4ac0ca=_0x4ac0ca['concat'](_0x371658);}_0x42038f=[_0xc11663],_0x42038f=_0x42038f['concat'](_0xc56128),_0x42038f['push'](_0x50b75f),_0x42038f['push'](_0x34a7f7),_0x42038f[_0x42ef9a(0x18e)](_0x55dec9),_0x42038f['push'](_0x2ca2c1),_0x42038f['push'](_0x33bc2e),_0x42038f=_0x42038f['concat'](_0x4ac0ca['reverse']()),_0x42038f['push'](_0x1752f8);}else _0x42038f=calculateTwoPoints(_0xeb3eeb);return _0x42038f;}function calculateTwoPoints(_0x18ed45){var _0x550616=arguments['length']>0x1&&arguments[0x1]!==undefined?arguments[0x1]:0x1,_0x563b46=0x6,_0x2729b9=_0x18ed45[0x0],_0xe909e4=_0x18ed45[0x1],_0x25ce88=[],_0x352bbe={'x':_0xe909e4['x']-_0x2729b9['x'],'y':_0xe909e4['y']-_0x2729b9['y']},_0x2ee21a=Math['sqrt']((_0xe909e4['x']-_0x2729b9['x'])*(_0xe909e4['x']-_0x2729b9['x'])+(_0xe909e4['y']-_0x2729b9['y'])*(_0xe909e4['y']-_0x2729b9['y'])),_0x3e7567=_0x2ee21a/_0x563b46,_0x2a67f0=_0x2729b9['x']+0x5*(_0xe909e4['x']-_0x2729b9['x'])/_0x563b46,_0x54a699=_0x2729b9['y']+0x5*(_0xe909e4['y']-_0x2729b9['y'])/_0x563b46,_0x4e5559=calculateVector(_0x352bbe,Math['PI']/0x2,_0x3e7567/0x2),_0x2c3076=_0x4e5559[0x0],_0x45755f=_0x4e5559[0x1],_0x5da85f={'x':_0x2729b9['x']+(_0x2c3076===null||_0x2c3076===void 0x0?void 0x0:_0x2c3076['x']),'y':_0x2729b9['y']+(_0x2c3076===null||_0x2c3076===void 0x0?void 0x0:_0x2c3076['y'])},_0x1b8c2b={'x':_0x2a67f0+(_0x2c3076===null||_0x2c3076===void 0x0?void 0x0:_0x2c3076['x']),'y':_0x54a699+(_0x2c3076===null||_0x2c3076===void 0x0?void 0x0:_0x2c3076['y'])},_0xa8e9a={'x':_0x2a67f0+0x2*(_0x2c3076===null||_0x2c3076===void 0x0?void 0x0:_0x2c3076['x']),'y':_0x54a699+0x2*(_0x2c3076===null||_0x2c3076===void 0x0?void 0x0:_0x2c3076['y'])},_0x38a36c={'x':_0xe909e4['x'],'y':_0xe909e4['y']},_0x26a21a={'x':_0x2a67f0+0x2*(_0x45755f===null||_0x45755f===void 0x0?void 0x0:_0x45755f['x']),'y':_0x54a699+0x2*(_0x45755f===null||_0x45755f===void 0x0?void 0x0:_0x45755f['y'])},_0x545a8b={'x':_0x2a67f0+(_0x45755f===null||_0x45755f===void 0x0?void 0x0:_0x45755f['x']),'y':_0x54a699+(_0x45755f===null||_0x45755f===void 0x0?void 0x0:_0x45755f['y'])},_0x4ee3ea={'x':_0x2729b9['x']+(_0x45755f===null||_0x45755f===void 0x0?void 0x0:_0x45755f['x']),'y':_0x2729b9['y']+(_0x45755f===null||_0x45755f===void 0x0?void 0x0:_0x45755f['y'])};switch(_0x550616){case 0x1:_0x25ce88['push'](_0x5da85f,_0x1b8c2b,_0xa8e9a,_0x38a36c,_0x26a21a,_0x545a8b,_0x4ee3ea);break;case 0x2:var _0x26b9f7={'x':_0x2729b9['x']+(_0xe909e4['x']-_0x2729b9['x'])/0xa,'y':_0x2729b9['y']+(_0xe909e4['y']-_0x2729b9['y'])/0xa};_0x25ce88['push'](_0x5da85f,_0x1b8c2b,_0xa8e9a,_0x38a36c,_0x26a21a,_0x545a8b,_0x4ee3ea,_0x26b9f7);break;default:break;}return _0x25ce88;}function calculateVector(_0x4d92cb,_0x551b94,_0x5ee534){var _0x4d9e2b=_0x2b54;if(!_0x551b94)_0x551b94=Math['PI']/0x2;if(!_0x5ee534)_0x5ee534=0x1;var _0x25fb20,_0xe16061,_0x2ecba5,_0x3bdd22,_0x4d8035,_0x12e886,_0x22a712=Math[_0x4d9e2b(0x17a)](_0x4d92cb['x']*_0x4d92cb['x']+_0x4d92cb['y']*_0x4d92cb['y']);if(_0x4d92cb['y']==0x0){_0x25fb20=_0xe16061=_0x22a712*_0x5ee534*Math['cos'](_0x551b94)/_0x4d92cb['x'];if(_0x4d92cb['x']>0x0)_0x2ecba5=Math[_0x4d9e2b(0x17a)](_0x5ee534*_0x5ee534-_0x25fb20*_0x25fb20),_0x3bdd22=-_0x2ecba5;else _0x4d92cb['x']<0x0&&(_0x3bdd22=Math[_0x4d9e2b(0x17a)](_0x5ee534*_0x5ee534-_0x25fb20*_0x25fb20),_0x2ecba5=-_0x3bdd22);_0x4d8035={'x':_0x25fb20,'y':_0x2ecba5},_0x12e886={'x':_0xe16061,'y':_0x3bdd22};}else{var _0x230b7a=-_0x4d92cb['x']/_0x4d92cb['y'],_0x1b1544=_0x5ee534*_0x22a712*Math[_0x4d9e2b(0x17d)](_0x551b94)/_0x4d92cb['y'],_0x115fa9=0x1+_0x230b7a*_0x230b7a,_0x4cf02b=0x2*_0x230b7a*_0x1b1544,_0x2d60c2=_0x1b1544*_0x1b1544-_0x5ee534*_0x5ee534;_0x25fb20=(-_0x4cf02b-Math['sqrt'](_0x4cf02b*_0x4cf02b-0x4*_0x115fa9*_0x2d60c2))/(0x2*_0x115fa9),_0xe16061=(-_0x4cf02b+Math['sqrt'](_0x4cf02b*_0x4cf02b-0x4*_0x115fa9*_0x2d60c2))/(0x2*_0x115fa9),_0x2ecba5=_0x230b7a*_0x25fb20+_0x1b1544,_0x3bdd22=_0x230b7a*_0xe16061+_0x1b1544;if(_0x4d92cb['y']>=0x0)_0x4d8035={'x':_0x25fb20,'y':_0x2ecba5},_0x12e886={'x':_0xe16061,'y':_0x3bdd22};else _0x4d92cb['y']<0x0&&(_0x4d8035={'x':_0xe16061,'y':_0x3bdd22},_0x12e886={'x':_0x25fb20,'y':_0x2ecba5});}return[_0x4d8035,_0x12e886];}function calculateIntersection(_0x33d4d2,_0x304a4e,_0x1fab78,_0x56cbcd){var _0x9f910f,_0x341de4;return _0x33d4d2['y']*_0x304a4e['x']-_0x33d4d2['x']*_0x304a4e['y']==0x0?_0x33d4d2['x']*_0x304a4e['x']>0x0||_0x33d4d2['y']*_0x304a4e['y']>0x0?(_0x9f910f=(_0x1fab78['x']+_0x56cbcd['x'])/0x2,_0x341de4=(_0x1fab78['y']+_0x56cbcd['y'])/0x2):(_0x9f910f=_0x56cbcd['x'],_0x341de4=_0x56cbcd['y']):(_0x9f910f=(_0x33d4d2['x']*_0x304a4e['x']*(_0x56cbcd['y']-_0x1fab78['y'])+_0x1fab78['x']*_0x33d4d2['y']*_0x304a4e['x']-_0x56cbcd['x']*_0x304a4e['y']*_0x33d4d2['x'])/(_0x33d4d2['y']*_0x304a4e['x']-_0x33d4d2['x']*_0x304a4e['y']),_0x33d4d2['x']!=0x0?_0x341de4=(_0x9f910f-_0x1fab78['x'])*_0x33d4d2['y']/_0x33d4d2['x']+_0x1fab78['y']:_0x341de4=(_0x9f910f-_0x56cbcd['x'])*_0x304a4e['y']/_0x304a4e['x']+_0x56cbcd['y']),{'x':_0x9f910f,'y':_0x341de4};}function _0x2b54(_0x2f3dd7,_0x5e2a7e){_0x2f3dd7=_0x2f3dd7-0x178;var _0x1de922=_0x1de9();var _0x2b540c=_0x1de922[_0x2f3dd7];if(_0x2b54['fPtEZF']===undefined){var _0x5e4d11=function(_0x11dc89){var _0x20d17a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2eb7e0='',_0x32f8b2='';for(var _0x4e64f4=0x0,_0xb63712,_0x22a595,_0x21dfeb=0x0;_0x22a595=_0x11dc89['charAt'](_0x21dfeb++);~_0x22a595&&(_0xb63712=_0x4e64f4%0x4?_0xb63712*0x40+_0x22a595:_0x22a595,_0x4e64f4++%0x4)?_0x2eb7e0+=String['fromCharCode'](0xff&_0xb63712>>(-0x2*_0x4e64f4&0x6)):0x0){_0x22a595=_0x20d17a['indexOf'](_0x22a595);}for(var _0x9826b9=0x0,_0x18169d=_0x2eb7e0['length'];_0x9826b9<_0x18169d;_0x9826b9++){_0x32f8b2+='%'+('00'+_0x2eb7e0['charCodeAt'](_0x9826b9)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x32f8b2);};_0x2b54['vCHMYh']=_0x5e4d11,_0x2b54['SEWIBW']={},_0x2b54['fPtEZF']=!![];}var _0x324012=_0x1de922[0x0],_0x1273f8=_0x2f3dd7+_0x324012,_0x30df81=_0x2b54['SEWIBW'][_0x1273f8];return!_0x30df81?(_0x2b540c=_0x2b54['vCHMYh'](_0x2b540c),_0x2b54['SEWIBW'][_0x1273f8]=_0x2b540c):_0x2b540c=_0x30df81,_0x2b540c;}var computeBezierPoints=function computeBezierPoints(_0x5b18be,_0x4b55a0){var _0x419c8a=_0x2b54,_0x38de25=0x0,_0x346900=0x0,_0x34a71c=computeBinomial(_0x5b18be);for(var _0x4d186b=0x0;_0x4d186b<_0x5b18be['length'];_0x4d186b++){var _0x595c5b=_0x5b18be[_0x4d186b],_0x4c5db2=Math[_0x419c8a(0x18d)](0x1-_0x4b55a0,_0x5b18be['length']-0x1-_0x4d186b)*Math[_0x419c8a(0x18d)](_0x4b55a0,_0x4d186b)*_0x34a71c[_0x4d186b];_0x38de25+=_0x595c5b['x']*_0x4c5db2,_0x346900+=_0x595c5b['y']*_0x4c5db2;}return{'x':_0x38de25,'y':_0x346900};},computeBinomial=function computeBinomial(_0x2b3c60){var _0x41c7c2=_0x2b54,_0x1786b0=_0x2b3c60[_0x41c7c2(0x188)],_0x4772b9=[];_0x4772b9[_0x41c7c2(0x18e)](0x1);for(var _0x23b09e=0x1;_0x23b09e<_0x1786b0-0x1;_0x23b09e++){var _0xa1ea79=0x1,_0x173e20=0x1;for(var _0x41fc7e=0x0;_0x41fc7e<_0x23b09e;_0x41fc7e++){_0xa1ea79=_0xa1ea79*(_0x1786b0-0x1-_0x41fc7e),_0x173e20=_0x173e20*(_0x23b09e-_0x41fc7e);}_0x4772b9['push'](_0xa1ea79/_0x173e20);}return _0x4772b9['push'](0x1),_0x4772b9;},getSemiAxis=function getSemiAxis(_0x418985){var _0x46e9c6=_0x2b54;return _0x418985['length']===0x2?_0x2eb7e0[_0x46e9c6(0x190)][_0x46e9c6(0x183)](_0x418985[0x0],_0x418985[0x1]):0x0;},getEllipticAngle=function getEllipticAngle(_0x4c8c50){var _0x5a10d1=_0x2b54,_0x1cee05=transformCartesianToWGS84(_0x4c8c50[0x0]),_0x4f65f6=transformCartesianToWGS84(_0x4c8c50[0x1]),_0x51b2ee=0x1c2-calculateAngle(_0x1cee05,_0x4f65f6);return _0x2eb7e0[_0x5a10d1(0x189)]['toRadians'](_0x51b2ee);},computeAssemblePoints=function computeAssemblePoints(_0x384542){var _0x768cc1=[],_0x506891=transformCartesianToWGS84(_0x384542[0x0]),_0x581c08=_0x384542[0x1]?transformCartesianToWGS84(_0x384542[0x1]):{'x':_0x506891['x']+0.00001,'y':_0x506891['y']+0.00001,'z':_0x506891['z']},_0x234f23={'x':_0x581c08['x']-_0x506891['x'],'y':_0x581c08['y']-_0x506891['y']},_0x1b6e88=Math['sqrt'](_0x234f23['x']*_0x234f23['x']+_0x234f23['y']*_0x234f23['y']),_0x4a7fa0=calculateVector(_0x234f23,Math['PI']/0x3,Math['sqrt'](0x3)/0xc*_0x1b6e88),_0x316514=_0x4a7fa0[0x1],_0x261584={'x':_0x506891['x']+(_0x316514===null||_0x316514===void 0x0?void 0x0:_0x316514['x']),'y':_0x506891['y']+(_0x316514===null||_0x316514===void 0x0?void 0x0:_0x316514['y'])},_0xe3bcb7={'x':(_0x506891['x']+_0x581c08['x'])/0x2,'y':(_0x506891['y']+_0x581c08['y'])/0x2},_0x3a0058=calculateVector(_0x234f23,Math['PI']*0x2/0x3,Math['sqrt'](0x3)/0xc*_0x1b6e88),_0x2f7753=_0x3a0058[0x1],_0x39a22d={'x':_0x581c08['x']+_0x2f7753['x'],'y':_0x581c08['y']+_0x2f7753['y']},_0x123ae9=calculateVector(_0x234f23,Math['PI']/0x2,0x1/0x2*_0x1b6e88),_0x40c58b=_0x123ae9[0x0],_0x439996={'x':_0x40c58b['x']+_0xe3bcb7['x'],'y':_0x40c58b['y']+_0xe3bcb7['y']},_0x2e8771=_0x506891,_0x243611=_0x581c08;_0x768cc1['push'](_0x2e8771,_0x261584,_0xe3bcb7,_0x39a22d,_0x243611,_0x439996);var _0x261c03=createCloseCardinal(_0x768cc1),_0x1786ab=calculatePointsFBZ3(_0x261c03,0x64),_0x27aa3a=[];for(var _0x45bc3a=0x0;_0x45bc3a<_0x1786ab['length'];_0x45bc3a++){var _0x37eec2=_0x1786ab[_0x45bc3a];_0x27aa3a['push'](_0x37eec2['x'],_0x37eec2['y'],0x0);}return _0x27aa3a;};function createCloseCardinal(_0x4b2df4){var _0xd2abe=_0x2b54;if(_0x4b2df4==null||_0x4b2df4[_0xd2abe(0x188)]<0x3)return _0x4b2df4;var _0x4a2664=_0x4b2df4[0x0];_0x4b2df4[_0xd2abe(0x18e)](_0x4a2664);var _0x1ea33d=_0x4b2df4,_0x2a6bd5=[],_0x4a243a=0.4,_0x5761e7=0.005,_0x3c2755=_0x1ea33d[_0xd2abe(0x188)]-0x1;for(var _0x5e3f15=0x0;_0x5e3f15<=_0x3c2755-0x1;_0x5e3f15++){var _0x56748d=void 0x0,_0x51c54b=void 0x0,_0x478488=void 0x0;_0x5e3f15==_0x3c2755-0x1?(_0x56748d=_0x1ea33d[_0x3c2755-0x1],_0x51c54b=_0x1ea33d[0x0],_0x478488=_0x1ea33d[0x1]):(_0x56748d=_0x1ea33d[_0x5e3f15],_0x51c54b=_0x1ea33d[_0x5e3f15+0x1],_0x478488=_0x1ea33d[_0x5e3f15+0x2]);var _0x2cf4bb={'x':undefined,'y':undefined},_0x6d59ba={'x':undefined,'y':undefined},_0x3d834e={'x':_0x51c54b['x']-_0x56748d['x'],'y':_0x51c54b['y']-_0x56748d['y']},_0x59c495={'x':_0x478488['x']-_0x51c54b['x'],'y':_0x478488['y']-_0x51c54b['y']},_0x499290=Math['sqrt'](_0x3d834e['x']*_0x3d834e['x']+_0x3d834e['y']*_0x3d834e['y']),_0x2a03c=Math['sqrt'](_0x59c495['x']*_0x59c495['x']+_0x59c495['y']*_0x59c495['y']),_0x1e7cf4={'x':_0x3d834e['x']/_0x499290,'y':_0x3d834e['y']/_0x499290},_0x1c80d8={'x':_0x59c495['x']/_0x2a03c,'y':_0x59c495['y']/_0x2a03c},_0xebd886={'x':_0x1e7cf4['x']+_0x1c80d8['x'],'y':_0x1e7cf4['y']+_0x1c80d8['y']},_0x262315=Math[_0xd2abe(0x17a)](_0xebd886['x']*_0xebd886['x']+_0xebd886['y']*_0xebd886['y']),_0x3dfdd8={'x':_0xebd886['x']/_0x262315,'y':_0xebd886['y']/_0x262315},_0x2bd71d=(_0x1e7cf4['x']*_0x1c80d8['x']+_0x1e7cf4['y']*_0x1c80d8['y'])/0x1;Math[_0xd2abe(0x193)](0x1-_0x2bd71d)<_0x5761e7?(_0x2cf4bb['x']=_0x51c54b['x']-_0x1c80d8['x']*_0x499290*_0x4a243a,_0x2cf4bb['y']=_0x51c54b['y']-_0x1c80d8['y']*_0x499290*_0x4a243a,_0x6d59ba['x']=_0x51c54b['x']+_0x1e7cf4['x']*_0x2a03c*_0x4a243a,_0x6d59ba['y']=_0x51c54b['y']+_0x1e7cf4['y']*_0x2a03c*_0x4a243a):(_0x2cf4bb['x']=_0x51c54b['x']-_0x3dfdd8['x']*_0x499290*_0x4a243a,_0x2cf4bb['y']=_0x51c54b['y']-_0x3dfdd8['y']*_0x499290*_0x4a243a,_0x6d59ba['x']=_0x51c54b['x']+_0x3dfdd8['x']*_0x2a03c*_0x4a243a,_0x6d59ba['y']=_0x51c54b['y']+_0x3dfdd8['y']*_0x2a03c*_0x4a243a),_0x5e3f15==_0x3c2755-0x1?(_0x2a6bd5[0x0]=_0x51c54b,_0x2a6bd5[0x1]=_0x6d59ba,_0x2a6bd5[(_0x3c2755-0x2)*0x3+0x2+0x3]=_0x2cf4bb,_0x2a6bd5[(_0x3c2755-0x2)*0x3+0x2+0x4]=_0x1ea33d[_0x3c2755]):(_0x2a6bd5[_0x5e3f15*0x3+0x2+0x0]=_0x2cf4bb,_0x2a6bd5[_0x5e3f15*0x3+0x2+0x1]=_0x51c54b,_0x2a6bd5[_0x5e3f15*0x3+0x2+0x2]=_0x6d59ba);}return _0x2a6bd5;}function calculatePointsFBZ3(_0x25b768,_0x59fa40){var _0x5dccf6=_0x2b54;if(!_0x59fa40)_0x59fa40=0x14;var _0x4140a0=[],_0x67df0a=0.05;_0x59fa40>0x0&&(_0x67df0a=0x1/_0x59fa40);for(var _0x1d8a97=0x0;_0x1d8a97<_0x25b768['length']-0x3;){var _0xc307d6=_0x25b768[_0x1d8a97],_0x2a76e1=_0x25b768[_0x1d8a97+0x1],_0x3fe353=_0x25b768[_0x1d8a97+0x2],_0x3769ee=_0x25b768[_0x1d8a97+0x3];_0x4140a0[_0x5dccf6(0x18e)](_0xc307d6);for(var _0x5aaae2=0x0;_0x5aaae2<0x1;){var _0x49b95a=(0x1-_0x5aaae2)*(0x1-_0x5aaae2)*(0x1-_0x5aaae2)*_0xc307d6['x']+0x3*_0x5aaae2*(0x1-_0x5aaae2)*(0x1-_0x5aaae2)*_0x2a76e1['x']+0x3*_0x5aaae2*_0x5aaae2*(0x1-_0x5aaae2)*_0x3fe353['x']+_0x5aaae2*_0x5aaae2*_0x5aaae2*_0x3769ee['x'],_0xf46452=(0x1-_0x5aaae2)*(0x1-_0x5aaae2)*(0x1-_0x5aaae2)*_0xc307d6['y']+0x3*_0x5aaae2*(0x1-_0x5aaae2)*(0x1-_0x5aaae2)*_0x2a76e1['y']+0x3*_0x5aaae2*_0x5aaae2*(0x1-_0x5aaae2)*_0x3fe353['y']+_0x5aaae2*_0x5aaae2*_0x5aaae2*_0x3769ee['y'],_0x5be2b3={'x':_0x49b95a,'y':_0xf46452};_0x4140a0['push'](_0x5be2b3),_0x5aaae2+=_0x67df0a;}_0x1d8a97+=0x3,_0x1d8a97>=_0x25b768[_0x5dccf6(0x188)]&&_0x4140a0['push'](_0xc307d6);}return _0x4140a0;}var calculateSwallowPoints=function calculateSwallowPoints(_0x209e93,_0x313b3b){var _0x334100=[];switch(_0x313b3b){case 0x1:_0x334100=computeSwallowtailArrow(_0x209e93);break;case 0x2:_0x334100=computeSwallowtailArrow2(_0x209e93);break;case 0x3:_0x334100=computeSwallowtailArrow(_0x209e93,![]);default:break;}return _0x334100;},computeSwallowtailArrow=function computeSwallowtailArrow(_0x504671){var _0x2677ce=_0x2b54,_0x22e473=arguments['length']>0x1&&arguments[0x1]!==undefined?arguments[0x1]:!![],_0x24d92c=transformCartesianToWGS84(_0x504671[0x0]),_0x15eae1=_0x504671[0x1]?transformCartesianToWGS84(_0x504671[0x1]):{'x':_0x24d92c['x']+0.00001,'y':_0x24d92c['y']+0.00001,'z':_0x24d92c['z']},_0x4bb2aa=_0x24d92c['x'],_0x1cb50c=_0x24d92c['y'],_0x7a3ea1=_0x15eae1['x'],_0x223a6e=_0x15eae1['y'],_0x521413=(15.8*_0x7a3ea1+3.2*_0x4bb2aa)/0x13,_0x5210d7=(15.8*_0x223a6e+3.2*_0x1cb50c)/0x13,_0x11b797=new Array(0x7);_0x11b797[0x0]={'x':_0x7a3ea1,'y':_0x223a6e},_0x11b797[0x1]={'x':_0x521413+0.85/3.2*(_0x223a6e-_0x5210d7),'y':_0x5210d7-0.85/3.2*(_0x7a3ea1-_0x521413)},_0x11b797[0x2]={'x':_0x521413+0.25/3.2*(_0x223a6e-_0x5210d7),'y':_0x5210d7-0.25/3.2*(_0x7a3ea1-_0x521413)},_0x11b797[0x3]={'x':_0x4bb2aa+1.6/0x13*(_0x223a6e-_0x1cb50c),'y':_0x1cb50c-1.6/0x13*(_0x7a3ea1-_0x4bb2aa)},_0x11b797[0x4]=_0x22e473?{'x':(3.2*_0x7a3ea1+15.8*_0x4bb2aa)/0x13,'y':(3.2*_0x223a6e+15.8*_0x1cb50c)/0x13}:undefined,_0x11b797[0x5]={'x':_0x4bb2aa-1.6/0x13*(_0x223a6e-_0x1cb50c),'y':_0x1cb50c+1.6/0x13*(_0x7a3ea1-_0x4bb2aa)},_0x11b797[0x6]={'x':_0x521413-0.25/3.2*(_0x223a6e-_0x5210d7),'y':_0x5210d7+0.25/3.2*(_0x7a3ea1-_0x521413)},_0x11b797[0x7]={'x':_0x521413-0.85/3.2*(_0x223a6e-_0x5210d7),'y':_0x5210d7+0.85/3.2*(_0x7a3ea1-_0x521413)};var _0x4ea904=[];for(var _0x32c6ef=0x0;_0x32c6ef<_0x11b797['length'];_0x32c6ef++){var _0x5887fe=_0x11b797[_0x32c6ef];_0x5887fe&&_0x4ea904[_0x2677ce(0x18e)](_0x5887fe['x'],_0x5887fe['y'],0x0);}return _0x4ea904;},computeSwallowtailArrow2=function computeSwallowtailArrow2(_0x2b3153){var _0x4d6f74=_0x2b54,_0x35286b=transformCartesianToWGS84(_0x2b3153[0x0]),_0x499e4d=_0x2b3153[0x1]?transformCartesianToWGS84(_0x2b3153[0x1]):{'x':_0x35286b['x']+0.00001,'y':_0x35286b['y']+0.00001,'z':_0x35286b['z']},_0x5c997a=calculateTwoPoints([_0x35286b,_0x499e4d],0x2),_0x3ade12=[];return _0x5c997a[_0x4d6f74(0x178)](function(_0x329966){_0x3ade12['push'](_0x329966['x'],_0x329966['y'],0x0);}),_0x3ade12;},calculatePincerArrowPoint=function calculatePincerArrowPoint(_0x299d65){var _0x49d686=_0x2b54;if(_0x299d65[_0x49d686(0x188)]<0x3)return null;var _0x254965=[];for(var _0x161a2b=0x0;_0x161a2b<_0x299d65[_0x49d686(0x188)];_0x161a2b++){var _0x43c2bc=transformCartesianToWGS84(_0x299d65[_0x161a2b]);_0x254965['push']([_0x43c2bc['x'],_0x43c2bc['y']]);}var _0x519b38=_0x32f8b2['algorithm']['doubleArrow'](_0x254965),_0x3b8863=[],_0x3c31cf=JSON['stringify'](_0x519b38[_0x49d686(0x18b)])['indexOf'](_0x49d686(0x17b));if(_0x3c31cf==-0x1)_0x3b8863=_0x519b38['polygonalPoint'];return _0x3b8863;},calculateFormationPoints=function calculateFormationPoints(_0x545c9c,_0x74769a){var _0x3b5660=_0x2b54,_0x51261b=transformCartesianToWGS84(_0x545c9c[0x0]),_0x46269c=_0x545c9c[0x1]?transformCartesianToWGS84(_0x545c9c[0x1]):{'x':_0x51261b['x']+0.00001,'y':_0x51261b['y']+0.00001,'z':_0x51261b['z']},_0x31279b=(_0x51261b['x']+_0x46269c['x'])/0x2,_0x4b8088=(_0x51261b['y']+_0x46269c['y'])/0x2,_0x5a6a0d={'x':_0x31279b,'y':_0x4b8088},_0x5412f1=_0x2eb7e0['Cartesian3'][_0x3b5660(0x191)](_0x51261b['x'],_0x51261b['y']),_0x589f0b=_0x2eb7e0['Cartesian3']['fromDegrees'](_0x46269c['x'],_0x46269c['y']),_0x55a43c=_0x2eb7e0['Cartesian3']['distance'](_0x5412f1,_0x589f0b),_0x208bed=_0x55a43c/0x2,_0x3c1d34=calculateAngle(_0x5a6a0d,_0x46269c),_0x5e9775=getPointByAngleDistance(_0x5a6a0d['x'],_0x5a6a0d['y'],0x5a+_0x3c1d34,_0x208bed),_0x4d2ac4=calculateAngle(_0x5e9775,_0x51261b),_0x20fa8a=Math['pow'](0x2,0.5)*_0x208bed,_0x40960b=[];_0x74769a=_0x74769a===0x0?0.9:1.1;for(var _0x2a0f69=0x0;_0x2a0f69<0x5a;_0x2a0f69++){var _0x48fd09=_0x4d2ac4+_0x2a0f69,_0x1cb2ea=getPointByAngleDistance(_0x5e9775['x'],_0x5e9775['y'],_0x48fd09,_0x20fa8a);_0x40960b['push']({'x':_0x1cb2ea['x'],'y':_0x1cb2ea['y']});if(_0x2a0f69!=0x0&&_0x2a0f69%0xf==0x0){var _0x594440=getPointByAngleDistance(_0x5e9775['x'],_0x5e9775['y'],_0x48fd09,_0x20fa8a*_0x74769a);_0x40960b[_0x3b5660(0x18e)]({'x':_0x594440['x'],'y':_0x594440['y']}),_0x40960b[_0x3b5660(0x18e)]({'x':_0x1cb2ea['x'],'y':_0x1cb2ea['y']});}}var _0x280c09=[];return _0x40960b['forEach'](function(_0x6c3095){_0x280c09['push'](_0x6c3095['x'],_0x6c3095['y']);}),_0x2eb7e0[_0x3b5660(0x190)]['fromDegreesArray'](_0x280c09);},calculateBowPoints=function calculateBowPoints(_0x4916cc){var _0x4632f8=_0x2b54,_0x88ac56=transformCartesianToWGS84(_0x4916cc[0x0]),_0x1d0236=_0x4916cc[0x1]?transformCartesianToWGS84(_0x4916cc[0x1]):{'x':_0x88ac56['x']+0.00001,'y':_0x88ac56['y']+0.00001,'z':_0x88ac56['z']},_0x14b9ba=(_0x88ac56['x']+_0x1d0236['x'])/0x2,_0x655666=(_0x88ac56['y']+_0x1d0236['y'])/0x2,_0x591a0e={'x':_0x14b9ba,'y':_0x655666},_0x1f3241=_0x2eb7e0['Cartesian3']['fromDegrees'](_0x88ac56['x'],_0x88ac56['y']),_0x2ae4e6=_0x2eb7e0['Cartesian3']['fromDegrees'](_0x1d0236['x'],_0x1d0236['y']),_0x31ba82=_0x2eb7e0['Cartesian3']['distance'](_0x1f3241,_0x2ae4e6),_0x559c77=_0x31ba82/0x2,_0xd5c683=calculateAngle(_0x591a0e,_0x1d0236),_0x4f10a6=getPointByAngleDistance(_0x591a0e['x'],_0x591a0e['y'],0x5a+_0xd5c683,_0x559c77),_0xe8ef6=calculateAngle(_0x4f10a6,_0x88ac56),_0x17aa82=Math[_0x4632f8(0x18d)](0x2,0.5)*_0x559c77,_0x42f614=[];for(var _0x582c78=0x0;_0x582c78<0x5a;_0x582c78++){var _0x3272bd=_0xe8ef6+_0x582c78,_0x40c271=getPointByAngleDistance(_0x4f10a6['x'],_0x4f10a6['y'],_0x3272bd,_0x17aa82);_0x42f614[_0x4632f8(0x18e)]({'x':_0x40c271['x'],'y':_0x40c271['y']});}var _0x828dfa=[];return _0x42f614['forEach'](function(_0x58b456){_0x828dfa['push'](_0x58b456['x'],_0x58b456['y']);}),_0x2eb7e0[_0x4632f8(0x190)]['fromDegreesArray'](_0x828dfa);};function getPointByAngleDistance(_0x345c5a,_0x2de1c2,_0x3cd821,_0x32b182){var _0x87d916=_0x2b54,_0x5d4699=0x615299,_0x14604e=6356752.3142,_0x389159=0x1/298.257223563,_0x3d881a=_0x3cd821*(Math['PI']/0xb4),_0x432e65=Math[_0x87d916(0x185)](_0x3d881a),_0xc2a8d6=Math[_0x87d916(0x17d)](_0x3d881a),_0x33dd29=(0x1-_0x389159)*Math['tan'](_0x2de1c2*(Math['PI']/0xb4)),_0xc8e011=0x1/Math['sqrt'](0x1+_0x33dd29*_0x33dd29),_0x39b85d=_0x33dd29*_0xc8e011,_0x380085=Math['atan2'](_0x33dd29,_0xc2a8d6),_0x1afe7d=_0xc8e011*_0x432e65,_0x3a14c9=0x1-_0x1afe7d*_0x1afe7d,_0x1bb051=_0x3a14c9*(_0x5d4699*_0x5d4699-_0x14604e*_0x14604e)/(_0x14604e*_0x14604e),_0x2b7894=0x1+_0x1bb051/0x4000*(0x1000+_0x1bb051*(-0x300+_0x1bb051*(0x140-0xaf*_0x1bb051))),_0x1cd696=_0x1bb051/0x400*(0x100+_0x1bb051*(-0x80+_0x1bb051*(0x4a-0x2f*_0x1bb051))),_0x4c8066=_0x32b182/(_0x14604e*_0x2b7894),_0x506cc3=0x2*Math['PI'],_0x30f429,_0x151a2b,_0x20918a;while(Math['abs'](_0x4c8066-_0x506cc3)>1e-12){_0x30f429=Math['cos'](0x2*_0x380085+_0x4c8066),_0x151a2b=Math['sin'](_0x4c8066),_0x20918a=Math[_0x87d916(0x17d)](_0x4c8066);var _0x7a9482=_0x1cd696*_0x151a2b*(_0x30f429+_0x1cd696/0x4*(_0x20918a*(-0x1+0x2*_0x30f429*_0x30f429)-_0x1cd696/0x6*_0x30f429*(-0x3+0x4*_0x151a2b*_0x151a2b)*(-0x3+0x4*_0x30f429*_0x30f429)));_0x506cc3=_0x4c8066,_0x4c8066=_0x32b182/(_0x14604e*_0x2b7894)+_0x7a9482;}var _0x4379d6=_0x39b85d*_0x151a2b-_0xc8e011*_0x20918a*_0xc2a8d6,_0x148c29=Math[_0x87d916(0x181)](_0x39b85d*_0x20918a+_0xc8e011*_0x151a2b*_0xc2a8d6,(0x1-_0x389159)*Math['sqrt'](_0x1afe7d*_0x1afe7d+_0x4379d6*_0x4379d6)),_0x5c533f=Math['atan2'](_0x151a2b*_0x432e65,_0xc8e011*_0x20918a-_0x39b85d*_0x151a2b*_0xc2a8d6),_0x421888=_0x389159/0x10*_0x3a14c9*(0x4+_0x389159*(0x4-0x3*_0x3a14c9)),_0x146532=_0x5c533f-(0x1-_0x421888)*_0x389159*_0x1afe7d*(_0x4c8066+_0x421888*_0x151a2b*(_0x30f429+_0x421888*_0x20918a*(-0x1+0x2*_0x30f429*_0x30f429)));return{'x':_0x345c5a+_0x146532*(0xb4/Math['PI']),'y':_0x148c29*(0xb4/Math['PI'])};}var calculateSectorPoints=function calculateSectorPoints(_0x424ad9){var _0x39d3fd=_0x2b54,_0x145325=transformCartesianToWGS84(_0x424ad9[0x0]);_0x145325['z']=0x0;var _0x7da1c7=_0x424ad9[0x1]?transformCartesianToWGS84(_0x424ad9[0x1]):{'x':_0x145325['x']+0.00001,'y':_0x145325['y'],'z':0x0},_0x11f635=_0x424ad9[0x1]?_0x2eb7e0['Cartesian3'][_0x39d3fd(0x183)](_0x424ad9[0x0],_0x424ad9[0x1]):0.1,_0x3c463f=_0x424ad9[0x2]?transformCartesianToWGS84(_0x424ad9[0x2]):{'x':_0x7da1c7['x']+1e-7,'y':_0x7da1c7['y'],'z':0x0},_0x171d32=calculateAngle(_0x145325,_0x7da1c7),_0x4f2e24=calculateAngle(_0x145325,_0x3c463f),_0x10d072=Math['min'](_0x171d32,_0x4f2e24),_0x576a85=Math['max'](_0x171d32,_0x4f2e24),_0x535f7a=[];_0x535f7a['push'](_0x145325['x'],_0x145325['y']);var _0xdb39b6=0x64,_0x96af5d=(_0x576a85-_0x10d072)/_0xdb39b6;for(var _0x367623=0x0;_0x367623<=_0xdb39b6;_0x367623++){var _0x1aafa9=_0x10d072+_0x367623*_0x96af5d,_0x3fd727=getPointByAngleDistance(_0x145325['x'],_0x145325['y'],_0x1aafa9,_0x11f635);_0x535f7a[_0x39d3fd(0x18e)](_0x3fd727['x'],_0x3fd727['y']);}return _0x535f7a['push'](_0x145325['x'],_0x145325['y']),_0x2eb7e0[_0x39d3fd(0x190)]['fromDegreesArray'](_0x535f7a);};export{calculateBowPoints,calculateFormationPoints,calculatePincerArrowPoint,calculateSectorPoints,calculateSwallowPoints,computeAssemblePoints,createBezierPoints,getAttackArrowPoints,getEllipticAngle,getPointByAngleDistance,getRightAngleArrowPoints,getSemiAxis};