@antv/l7-layers 2.9.21 → 2.9.23

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 (707) hide show
  1. package/es/Geometry/index.js +4 -5
  2. package/es/Geometry/models/billboard.js +23 -9
  3. package/es/Geometry/models/index.js +4 -5
  4. package/es/Geometry/models/plane.js +25 -13
  5. package/es/Geometry/models/sprite.js +11 -21
  6. package/es/Geometry/shaders/billboard_frag.glsl +13 -0
  7. package/es/Geometry/shaders/billboard_vert.glsl +50 -0
  8. package/es/Geometry/shaders/plane_frag.glsl +22 -0
  9. package/es/Geometry/shaders/plane_vert.glsl +53 -0
  10. package/es/Geometry/shaders/sprite_frag.glsl +21 -0
  11. package/es/Geometry/shaders/sprite_vert.glsl +28 -0
  12. package/es/canvas/index.js +4 -5
  13. package/es/canvas/models/canvas.js +6 -12
  14. package/es/canvas/models/index.js +2 -3
  15. package/es/citybuliding/building.js +4 -5
  16. package/es/citybuliding/models/build.js +19 -22
  17. package/es/citybuliding/shaders/build_frag.glsl +117 -0
  18. package/es/citybuliding/shaders/build_vert.glsl +54 -0
  19. package/es/core/BaseLayer.js +205 -157
  20. package/es/core/BaseModel.js +135 -76
  21. package/es/core/interface.js +1 -2
  22. package/es/core/schema.js +4 -2
  23. package/es/core/shape/Path.js +8 -3
  24. package/es/core/shape/extrude.js +9 -4
  25. package/es/core/triangulation.js +89 -17
  26. package/es/earth/index.js +11 -7
  27. package/es/earth/models/atmosphere.js +15 -7
  28. package/es/earth/models/base.js +19 -7
  29. package/es/earth/models/bloomsphere.js +15 -7
  30. package/es/earth/shaders/atmosphere_frag.glsl +17 -0
  31. package/es/earth/shaders/atmosphere_vert.glsl +26 -0
  32. package/es/earth/shaders/base_frag.glsl +13 -0
  33. package/es/earth/shaders/base_vert.glsl +52 -0
  34. package/es/earth/shaders/bloomsphere_frag.glsl +15 -0
  35. package/es/earth/shaders/bloomsphere_vert.glsl +20 -0
  36. package/es/earth/utils.js +28 -5
  37. package/es/heatmap/index.js +8 -7
  38. package/es/heatmap/models/grid.js +11 -5
  39. package/es/heatmap/models/grid3d.js +18 -7
  40. package/es/heatmap/models/heatmap.js +45 -44
  41. package/es/heatmap/models/hexagon.js +14 -6
  42. package/es/heatmap/models/index.js +5 -6
  43. package/es/heatmap/shaders/grid_vert.glsl +42 -0
  44. package/es/heatmap/shaders/heatmap_3d_frag.glsl +14 -0
  45. package/es/heatmap/shaders/heatmap_3d_vert.glsl +46 -0
  46. package/es/heatmap/shaders/heatmap_frag.glsl +47 -0
  47. package/es/heatmap/shaders/heatmap_framebuffer_frag.glsl +10 -0
  48. package/es/heatmap/shaders/heatmap_framebuffer_vert.glsl +35 -0
  49. package/es/heatmap/shaders/heatmap_vert.glsl +10 -0
  50. package/es/heatmap/shaders/hexagon_3d_frag.glsl +0 -0
  51. package/es/heatmap/shaders/hexagon_3d_vert.glsl +64 -0
  52. package/es/heatmap/shaders/hexagon_frag.glsl +12 -0
  53. package/es/heatmap/shaders/hexagon_vert.glsl +41 -0
  54. package/es/heatmap/triangulation.js +2 -2
  55. package/es/image/index.js +4 -5
  56. package/es/image/models/dataImage.js +21 -31
  57. package/es/image/models/image.js +19 -25
  58. package/es/image/models/index.js +3 -4
  59. package/es/image/shaders/dataImage_frag.glsl +38 -0
  60. package/es/image/shaders/image_frag.glsl +9 -0
  61. package/es/image/shaders/image_vert.glsl +17 -0
  62. package/es/index.d.ts +2 -2
  63. package/es/index.js +92 -30
  64. package/es/line/index.js +4 -5
  65. package/es/line/models/arc.js +38 -15
  66. package/es/line/models/arc_3d.js +33 -14
  67. package/es/line/models/earthArc_3d.js +33 -14
  68. package/es/line/models/great_circle.js +25 -13
  69. package/es/line/models/half.js +33 -12
  70. package/es/line/models/index.js +12 -13
  71. package/es/line/models/line.js +48 -15
  72. package/es/line/models/linearline.js +26 -12
  73. package/es/line/models/simpleLine.js +26 -11
  74. package/es/line/models/tile.js +28 -10
  75. package/es/line/models/wall.js +30 -13
  76. package/es/line/shaders/arc_chunks.vert.glsl +21 -0
  77. package/es/line/shaders/dash/arc_dash_frag.glsl +28 -0
  78. package/es/line/shaders/dash/arc_dash_vert.glsl +148 -0
  79. package/es/line/shaders/dash/line_dash_frag.glsl +31 -0
  80. package/es/line/shaders/dash/line_dash_vert.glsl +93 -0
  81. package/es/line/shaders/half/line_half_frag.glsl +53 -0
  82. package/es/line/shaders/half/line_half_vert.glsl +169 -0
  83. package/es/line/shaders/line_arc2d_vert.glsl +114 -0
  84. package/es/line/shaders/line_arc_3d_frag.glsl +103 -0
  85. package/es/line/shaders/line_arc_3d_vert.glsl +207 -0
  86. package/es/line/shaders/line_arc_frag.glsl +89 -0
  87. package/es/line/shaders/line_arc_great_circle_frag.glsl +101 -0
  88. package/es/line/shaders/line_arc_great_circle_vert.glsl +215 -0
  89. package/es/line/shaders/line_arc_vert.glsl +174 -0
  90. package/es/line/shaders/line_bezier_vert.glsl +85 -0
  91. package/es/line/shaders/line_frag.glsl +100 -0
  92. package/es/line/shaders/line_vert.glsl +192 -0
  93. package/es/line/shaders/linear/arc3d_linear_frag.glsl +47 -0
  94. package/es/line/shaders/linear/arc3d_linear_vert.glsl +207 -0
  95. package/es/line/shaders/linear/arc_linear_frag.glsl +38 -0
  96. package/es/line/shaders/linear/arc_linear_vert.glsl +138 -0
  97. package/es/line/shaders/linear/line_linear_frag.glsl +27 -0
  98. package/es/line/shaders/linearLine/line_linear_frag.glsl +20 -0
  99. package/es/line/shaders/linearLine/line_linear_vert.glsl +112 -0
  100. package/es/line/shaders/simple/simpleline_frag.glsl +10 -0
  101. package/es/line/shaders/simple/simpleline_linear_frag.glsl +11 -0
  102. package/es/line/shaders/simple/simpleline_vert.glsl +78 -0
  103. package/es/line/shaders/tile/line_tile_frag.glsl +79 -0
  104. package/es/line/shaders/tile/line_tile_vert.glsl +210 -0
  105. package/es/line/shaders/wall_frag.glsl +93 -0
  106. package/es/line/shaders/wall_vert.glsl +111 -0
  107. package/es/mask/index.js +4 -5
  108. package/es/mask/models/fill.js +11 -8
  109. package/es/mask/models/index.js +2 -3
  110. package/es/mask/shaders/mask_frag.glsl +7 -0
  111. package/es/mask/shaders/mask_vert.glsl +22 -0
  112. package/es/plugins/DataMappingPlugin.js +71 -34
  113. package/es/plugins/DataSourcePlugin.js +12 -10
  114. package/es/plugins/FeatureScalePlugin.js +44 -24
  115. package/es/plugins/LayerAnimateStylePlugin.js +6 -7
  116. package/es/plugins/LayerModelPlugin.js +16 -7
  117. package/es/plugins/LayerStylePlugin.js +7 -3
  118. package/es/plugins/LightingPlugin.js +21 -13
  119. package/es/plugins/MultiPassRendererPlugin.js +21 -8
  120. package/es/plugins/PixelPickingPlugin.js +33 -11
  121. package/es/plugins/RegisterStyleAttributePlugin.js +10 -3
  122. package/es/plugins/ShaderUniformPlugin.js +24 -10
  123. package/es/plugins/UpdateModelPlugin.js +7 -3
  124. package/es/plugins/UpdateStyleAttributePlugin.js +20 -7
  125. package/es/point/index.js +12 -6
  126. package/es/point/models/earthExtrude.js +30 -12
  127. package/es/point/models/earthFill.js +25 -13
  128. package/es/point/models/extrude.js +30 -12
  129. package/es/point/models/fill.js +50 -15
  130. package/es/point/models/fillmage.js +46 -17
  131. package/es/point/models/image.js +20 -12
  132. package/es/point/models/index.js +14 -14
  133. package/es/point/models/normal.js +15 -7
  134. package/es/point/models/radar.js +33 -13
  135. package/es/point/models/simplePoint.js +17 -9
  136. package/es/point/models/text.js +77 -30
  137. package/es/point/models/tile.js +33 -12
  138. package/es/point/shaders/animate/wave_frag.glsl +65 -0
  139. package/es/point/shaders/earth/extrude_frag.glsl +44 -0
  140. package/es/point/shaders/earth/extrude_vert.glsl +140 -0
  141. package/es/point/shaders/earth/fill_frag.glsl +86 -0
  142. package/es/point/shaders/earth/fill_vert.glsl +126 -0
  143. package/es/point/shaders/extrude/extrude_frag.glsl +44 -0
  144. package/es/point/shaders/extrude/extrude_vert.glsl +121 -0
  145. package/es/point/shaders/fill_frag.glsl +84 -0
  146. package/es/point/shaders/fill_vert.glsl +182 -0
  147. package/es/point/shaders/image/fillImage_frag.glsl +20 -0
  148. package/es/point/shaders/image/fillImage_vert.glsl +108 -0
  149. package/es/point/shaders/image_frag.glsl +39 -0
  150. package/es/point/shaders/image_vert.glsl +81 -0
  151. package/es/point/shaders/normal_frag.glsl +15 -0
  152. package/es/point/shaders/normal_vert.glsl +79 -0
  153. package/es/point/shaders/radar/radar_frag.glsl +64 -0
  154. package/es/point/shaders/radar/radar_vert.glsl +120 -0
  155. package/es/point/shaders/simplePoint_frag.glsl +53 -0
  156. package/es/point/shaders/simplePoint_vert.glsl +79 -0
  157. package/es/point/shaders/text_frag.glsl +48 -0
  158. package/es/point/shaders/text_vert.glsl +131 -0
  159. package/es/point/shaders/tile/fill_tile_frag.glsl +83 -0
  160. package/es/point/shaders/tile/fill_tile_vert.glsl +181 -0
  161. package/es/point/shape/extrude.js +8 -3
  162. package/es/polygon/index.js +6 -5
  163. package/es/polygon/models/extrude.js +40 -31
  164. package/es/polygon/models/fill.js +19 -8
  165. package/es/polygon/models/index.js +14 -14
  166. package/es/polygon/models/ocean.js +25 -33
  167. package/es/polygon/models/tile.js +13 -7
  168. package/es/polygon/models/water.js +21 -25
  169. package/es/polygon/shaders/extrude/polygon_extrude_frag.glsl +44 -0
  170. package/es/polygon/shaders/extrude/polygon_extrude_picklight_frag.glsl +44 -0
  171. package/es/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +85 -0
  172. package/es/polygon/shaders/extrude/polygon_extrude_vert.glsl +90 -0
  173. package/es/polygon/shaders/extrude/polygon_extrudetex_frag.glsl +48 -0
  174. package/es/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +93 -0
  175. package/es/polygon/shaders/polygon_frag.glsl +12 -0
  176. package/es/polygon/shaders/polygon_linear_frag.glsl +22 -0
  177. package/es/polygon/shaders/polygon_linear_vert.glsl +74 -0
  178. package/es/polygon/shaders/polygon_vert.glsl +66 -0
  179. package/es/polygon/shaders/tile/polygon_tile_frag.glsl +12 -0
  180. package/es/polygon/shaders/tile/polygon_tile_vert.glsl +82 -0
  181. package/es/polygon/shaders/water/polygon_ocean_frag.glsl +248 -0
  182. package/es/polygon/shaders/water/polygon_ocean_vert.glsl +52 -0
  183. package/es/polygon/shaders/water/polygon_water_frag.glsl +73 -0
  184. package/es/polygon/shaders/water/polygon_water_vert.glsl +55 -0
  185. package/es/raster/buffers/triangulation.js +2 -2
  186. package/es/raster/index.js +7 -6
  187. package/es/raster/models/index.js +3 -4
  188. package/es/raster/models/raster.js +15 -25
  189. package/es/raster/raster.js +9 -13
  190. package/es/raster/shaders/raster_2d_frag.glsl +28 -0
  191. package/es/raster/shaders/raster_2d_vert.glsl +18 -0
  192. package/es/raster/shaders/raster_frag.glsl +9 -0
  193. package/es/raster/shaders/raster_vert.glsl +44 -0
  194. package/es/tile/interface.js +1 -2
  195. package/es/tile/manager/tileConfigManager.js +6 -8
  196. package/es/tile/manager/tileLayerManager.js +19 -30
  197. package/es/tile/manager/tilePickerManager.js +14 -14
  198. package/es/tile/models/tileModel.js +6 -6
  199. package/es/tile/tileFactory/base.js +26 -32
  200. package/es/tile/tileFactory/index.js +6 -7
  201. package/es/tile/tileFactory/line.js +3 -9
  202. package/es/tile/tileFactory/point.js +3 -9
  203. package/es/tile/tileFactory/polygon.js +3 -9
  204. package/es/tile/tileFactory/raster.js +4 -10
  205. package/es/tile/tileFactory/rasterData.js +5 -11
  206. package/es/tile/tileFactory/rasterDataLayer.js +4 -5
  207. package/es/tile/tileFactory/vectorLayer.js +8 -9
  208. package/es/tile/tileLayer/baseTileLayer.js +67 -39
  209. package/es/tile/tmsTileLayer.js +5 -4
  210. package/es/tile/utils.js +5 -3
  211. package/es/utils/blend.js +1 -2
  212. package/es/utils/collision-index.js +36 -21
  213. package/es/utils/dataMappingStyle.js +71 -15
  214. package/es/utils/extrude_polyline.js +90 -48
  215. package/es/utils/grid-index.js +7 -21
  216. package/es/utils/layerData.js +41 -17
  217. package/es/utils/multiPassRender.js +21 -5
  218. package/es/utils/polylineNormal.js +40 -20
  219. package/es/utils/simpleLine.js +4 -6
  220. package/es/utils/symbol-layout.js +49 -10
  221. package/es/utils/updateShape.js +6 -3
  222. package/es/wind/index.js +5 -6
  223. package/es/wind/models/index.js +2 -3
  224. package/es/wind/models/utils.js +50 -26
  225. package/es/wind/models/wind.js +15 -18
  226. package/es/wind/models/windRender.js +89 -78
  227. package/es/wind/models/windShader.d.ts +6 -6
  228. package/es/wind/models/windShader.js +12 -7
  229. package/es/wind/shaders/wind_frag.glsl +9 -0
  230. package/es/wind/shaders/wind_vert.glsl +17 -0
  231. package/lib/Geometry/index.js +77 -115
  232. package/lib/Geometry/models/billboard.js +181 -218
  233. package/lib/Geometry/models/index.js +34 -19
  234. package/lib/Geometry/models/plane.js +278 -394
  235. package/lib/Geometry/models/sprite.js +189 -294
  236. package/lib/Geometry/shaders/billboard_frag.glsl +13 -0
  237. package/lib/Geometry/shaders/billboard_vert.glsl +50 -0
  238. package/lib/Geometry/shaders/plane_frag.glsl +22 -0
  239. package/lib/Geometry/shaders/plane_vert.glsl +53 -0
  240. package/lib/Geometry/shaders/sprite_frag.glsl +21 -0
  241. package/lib/Geometry/shaders/sprite_vert.glsl +28 -0
  242. package/lib/canvas/index.js +66 -102
  243. package/lib/canvas/models/canvas.js +140 -210
  244. package/lib/canvas/models/index.js +30 -13
  245. package/lib/citybuliding/building.js +63 -99
  246. package/lib/citybuliding/models/build.js +146 -196
  247. package/lib/citybuliding/shaders/build_frag.glsl +117 -0
  248. package/lib/citybuliding/shaders/build_vert.glsl +54 -0
  249. package/lib/core/BaseLayer.js +807 -1245
  250. package/lib/core/BaseModel.js +275 -375
  251. package/lib/core/interface.js +53 -37
  252. package/lib/core/schema.js +39 -18
  253. package/lib/core/shape/Path.js +78 -60
  254. package/lib/core/shape/extrude.js +90 -127
  255. package/lib/core/triangulation.js +191 -304
  256. package/lib/earth/index.js +62 -96
  257. package/lib/earth/models/atmosphere.js +112 -139
  258. package/lib/earth/models/base.js +150 -198
  259. package/lib/earth/models/bloomsphere.js +112 -139
  260. package/lib/earth/shaders/atmosphere_frag.glsl +17 -0
  261. package/lib/earth/shaders/atmosphere_vert.glsl +26 -0
  262. package/lib/earth/shaders/base_frag.glsl +13 -0
  263. package/lib/earth/shaders/base_vert.glsl +52 -0
  264. package/lib/earth/shaders/bloomsphere_frag.glsl +15 -0
  265. package/lib/earth/shaders/bloomsphere_vert.glsl +20 -0
  266. package/lib/earth/utils.js +89 -85
  267. package/lib/heatmap/index.js +92 -148
  268. package/lib/heatmap/models/grid.js +91 -113
  269. package/lib/heatmap/models/grid3d.js +123 -145
  270. package/lib/heatmap/models/heatmap.js +338 -470
  271. package/lib/heatmap/models/hexagon.js +92 -114
  272. package/lib/heatmap/models/index.js +37 -23
  273. package/lib/heatmap/shaders/grid_vert.glsl +42 -0
  274. package/lib/heatmap/shaders/heatmap_3d_frag.glsl +14 -0
  275. package/lib/heatmap/shaders/heatmap_3d_vert.glsl +46 -0
  276. package/lib/heatmap/shaders/heatmap_frag.glsl +47 -0
  277. package/lib/heatmap/shaders/heatmap_framebuffer_frag.glsl +10 -0
  278. package/lib/heatmap/shaders/heatmap_framebuffer_vert.glsl +35 -0
  279. package/lib/heatmap/shaders/heatmap_vert.glsl +10 -0
  280. package/lib/heatmap/shaders/hexagon_3d_frag.glsl +0 -0
  281. package/lib/heatmap/shaders/hexagon_3d_vert.glsl +64 -0
  282. package/lib/heatmap/shaders/hexagon_frag.glsl +12 -0
  283. package/lib/heatmap/shaders/hexagon_vert.glsl +41 -0
  284. package/lib/heatmap/triangulation.js +46 -30
  285. package/lib/image/index.js +74 -112
  286. package/lib/image/models/dataImage.js +173 -241
  287. package/lib/image/models/image.js +123 -177
  288. package/lib/image/models/index.js +32 -16
  289. package/lib/image/shaders/dataImage_frag.glsl +38 -0
  290. package/lib/image/shaders/image_frag.glsl +9 -0
  291. package/lib/image/shaders/image_vert.glsl +17 -0
  292. package/lib/index.js +96 -193
  293. package/lib/line/index.js +83 -128
  294. package/lib/line/models/arc.js +237 -328
  295. package/lib/line/models/arc_3d.js +228 -314
  296. package/lib/line/models/earthArc_3d.js +228 -316
  297. package/lib/line/models/great_circle.js +200 -279
  298. package/lib/line/models/half.js +201 -266
  299. package/lib/line/models/index.js +50 -43
  300. package/lib/line/models/line.js +299 -394
  301. package/lib/line/models/linearline.js +203 -263
  302. package/lib/line/models/simpleLine.js +175 -225
  303. package/lib/line/models/tile.js +237 -330
  304. package/lib/line/models/wall.js +235 -310
  305. package/lib/line/shaders/arc_chunks.vert.glsl +21 -0
  306. package/lib/line/shaders/dash/arc_dash_frag.glsl +28 -0
  307. package/lib/line/shaders/dash/arc_dash_vert.glsl +148 -0
  308. package/lib/line/shaders/dash/line_dash_frag.glsl +31 -0
  309. package/lib/line/shaders/dash/line_dash_vert.glsl +93 -0
  310. package/lib/line/shaders/half/line_half_frag.glsl +53 -0
  311. package/lib/line/shaders/half/line_half_vert.glsl +169 -0
  312. package/lib/line/shaders/line_arc2d_vert.glsl +114 -0
  313. package/lib/line/shaders/line_arc_3d_frag.glsl +103 -0
  314. package/lib/line/shaders/line_arc_3d_vert.glsl +207 -0
  315. package/lib/line/shaders/line_arc_frag.glsl +89 -0
  316. package/lib/line/shaders/line_arc_great_circle_frag.glsl +101 -0
  317. package/lib/line/shaders/line_arc_great_circle_vert.glsl +215 -0
  318. package/lib/line/shaders/line_arc_vert.glsl +174 -0
  319. package/lib/line/shaders/line_bezier_vert.glsl +85 -0
  320. package/lib/line/shaders/line_frag.glsl +100 -0
  321. package/lib/line/shaders/line_vert.glsl +192 -0
  322. package/lib/line/shaders/linear/arc3d_linear_frag.glsl +47 -0
  323. package/lib/line/shaders/linear/arc3d_linear_vert.glsl +207 -0
  324. package/lib/line/shaders/linear/arc_linear_frag.glsl +38 -0
  325. package/lib/line/shaders/linear/arc_linear_vert.glsl +138 -0
  326. package/lib/line/shaders/linear/line_linear_frag.glsl +27 -0
  327. package/lib/line/shaders/linearLine/line_linear_frag.glsl +20 -0
  328. package/lib/line/shaders/linearLine/line_linear_vert.glsl +112 -0
  329. package/lib/line/shaders/simple/simpleline_frag.glsl +10 -0
  330. package/lib/line/shaders/simple/simpleline_linear_frag.glsl +11 -0
  331. package/lib/line/shaders/simple/simpleline_vert.glsl +78 -0
  332. package/lib/line/shaders/tile/line_tile_frag.glsl +79 -0
  333. package/lib/line/shaders/tile/line_tile_vert.glsl +210 -0
  334. package/lib/line/shaders/wall_frag.glsl +93 -0
  335. package/lib/line/shaders/wall_vert.glsl +111 -0
  336. package/lib/mask/index.js +59 -93
  337. package/lib/mask/models/fill.js +82 -132
  338. package/lib/mask/models/index.js +30 -13
  339. package/lib/mask/shaders/mask_frag.glsl +7 -0
  340. package/lib/mask/shaders/mask_vert.glsl +22 -0
  341. package/lib/plugins/DataMappingPlugin.js +222 -304
  342. package/lib/plugins/DataSourcePlugin.js +87 -100
  343. package/lib/plugins/FeatureScalePlugin.js +239 -310
  344. package/lib/plugins/LayerAnimateStylePlugin.js +55 -61
  345. package/lib/plugins/LayerModelPlugin.js +72 -70
  346. package/lib/plugins/LayerStylePlugin.js +51 -44
  347. package/lib/plugins/LightingPlugin.js +68 -72
  348. package/lib/plugins/MultiPassRendererPlugin.js +65 -77
  349. package/lib/plugins/PixelPickingPlugin.js +109 -128
  350. package/lib/plugins/RegisterStyleAttributePlugin.js +110 -103
  351. package/lib/plugins/ShaderUniformPlugin.js +98 -103
  352. package/lib/plugins/UpdateModelPlugin.js +47 -36
  353. package/lib/plugins/UpdateStyleAttributePlugin.js +75 -80
  354. package/lib/point/index.js +147 -216
  355. package/lib/point/models/earthExtrude.js +201 -262
  356. package/lib/point/models/earthFill.js +202 -276
  357. package/lib/point/models/extrude.js +203 -282
  358. package/lib/point/models/fill.js +273 -369
  359. package/lib/point/models/fillmage.js +250 -327
  360. package/lib/point/models/image.js +163 -226
  361. package/lib/point/models/index.js +52 -46
  362. package/lib/point/models/normal.js +134 -176
  363. package/lib/point/models/radar.js +212 -286
  364. package/lib/point/models/simplePoint.js +142 -187
  365. package/lib/point/models/text.js +385 -559
  366. package/lib/point/models/tile.js +223 -294
  367. package/lib/point/shaders/animate/wave_frag.glsl +65 -0
  368. package/lib/point/shaders/earth/extrude_frag.glsl +44 -0
  369. package/lib/point/shaders/earth/extrude_vert.glsl +140 -0
  370. package/lib/point/shaders/earth/fill_frag.glsl +86 -0
  371. package/lib/point/shaders/earth/fill_vert.glsl +126 -0
  372. package/lib/point/shaders/extrude/extrude_frag.glsl +44 -0
  373. package/lib/point/shaders/extrude/extrude_vert.glsl +121 -0
  374. package/lib/point/shaders/fill_frag.glsl +84 -0
  375. package/lib/point/shaders/fill_vert.glsl +182 -0
  376. package/lib/point/shaders/image/fillImage_frag.glsl +20 -0
  377. package/lib/point/shaders/image/fillImage_vert.glsl +108 -0
  378. package/lib/point/shaders/image_frag.glsl +39 -0
  379. package/lib/point/shaders/image_vert.glsl +81 -0
  380. package/lib/point/shaders/normal_frag.glsl +15 -0
  381. package/lib/point/shaders/normal_vert.glsl +79 -0
  382. package/lib/point/shaders/radar/radar_frag.glsl +64 -0
  383. package/lib/point/shaders/radar/radar_vert.glsl +120 -0
  384. package/lib/point/shaders/simplePoint_frag.glsl +53 -0
  385. package/lib/point/shaders/simplePoint_vert.glsl +79 -0
  386. package/lib/point/shaders/text_frag.glsl +48 -0
  387. package/lib/point/shaders/text_vert.glsl +131 -0
  388. package/lib/point/shaders/tile/fill_tile_frag.glsl +83 -0
  389. package/lib/point/shaders/tile/fill_tile_vert.glsl +181 -0
  390. package/lib/point/shape/extrude.js +51 -51
  391. package/lib/polygon/index.js +100 -149
  392. package/lib/polygon/models/extrude.js +222 -303
  393. package/lib/polygon/models/fill.js +153 -205
  394. package/lib/polygon/models/index.js +52 -46
  395. package/lib/polygon/models/ocean.js +172 -251
  396. package/lib/polygon/models/tile.js +100 -139
  397. package/lib/polygon/models/water.js +152 -227
  398. package/lib/polygon/shaders/extrude/polygon_extrude_frag.glsl +44 -0
  399. package/lib/polygon/shaders/extrude/polygon_extrude_picklight_frag.glsl +44 -0
  400. package/lib/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +85 -0
  401. package/lib/polygon/shaders/extrude/polygon_extrude_vert.glsl +90 -0
  402. package/lib/polygon/shaders/extrude/polygon_extrudetex_frag.glsl +48 -0
  403. package/lib/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +93 -0
  404. package/lib/polygon/shaders/polygon_frag.glsl +12 -0
  405. package/lib/polygon/shaders/polygon_linear_frag.glsl +22 -0
  406. package/lib/polygon/shaders/polygon_linear_vert.glsl +74 -0
  407. package/lib/polygon/shaders/polygon_vert.glsl +66 -0
  408. package/lib/polygon/shaders/tile/polygon_tile_frag.glsl +12 -0
  409. package/lib/polygon/shaders/tile/polygon_tile_vert.glsl +82 -0
  410. package/lib/polygon/shaders/water/polygon_ocean_frag.glsl +248 -0
  411. package/lib/polygon/shaders/water/polygon_ocean_vert.glsl +52 -0
  412. package/lib/polygon/shaders/water/polygon_water_frag.glsl +73 -0
  413. package/lib/polygon/shaders/water/polygon_water_vert.glsl +55 -0
  414. package/lib/raster/buffers/triangulation.js +39 -26
  415. package/lib/raster/index.js +73 -111
  416. package/lib/raster/models/index.js +33 -17
  417. package/lib/raster/models/raster.js +134 -187
  418. package/lib/raster/raster.js +132 -189
  419. package/lib/raster/shaders/raster_2d_frag.glsl +28 -0
  420. package/lib/raster/shaders/raster_2d_vert.glsl +18 -0
  421. package/lib/raster/shaders/raster_frag.glsl +9 -0
  422. package/lib/raster/shaders/raster_vert.glsl +44 -0
  423. package/lib/tile/interface.js +17 -2
  424. package/lib/tile/manager/tileConfigManager.js +86 -126
  425. package/lib/tile/manager/tileLayerManager.js +227 -312
  426. package/lib/tile/manager/tilePickerManager.js +123 -187
  427. package/lib/tile/models/tileModel.js +51 -70
  428. package/lib/tile/tileFactory/base.js +292 -403
  429. package/lib/tile/tileFactory/index.js +48 -51
  430. package/lib/tile/tileFactory/line.js +50 -71
  431. package/lib/tile/tileFactory/point.js +50 -71
  432. package/lib/tile/tileFactory/polygon.js +50 -71
  433. package/lib/tile/tileFactory/raster.js +54 -72
  434. package/lib/tile/tileFactory/rasterData.js +76 -94
  435. package/lib/tile/tileFactory/rasterDataLayer.js +62 -98
  436. package/lib/tile/tileFactory/vectorLayer.js +95 -148
  437. package/lib/tile/tileLayer/baseTileLayer.js +220 -380
  438. package/lib/tile/tmsTileLayer.js +67 -109
  439. package/lib/tile/utils.js +86 -101
  440. package/lib/utils/blend.js +79 -60
  441. package/lib/utils/collision-index.js +63 -83
  442. package/lib/utils/dataMappingStyle.js +59 -56
  443. package/lib/utils/extrude_polyline.js +397 -554
  444. package/lib/utils/grid-index.js +111 -168
  445. package/lib/utils/layerData.js +88 -95
  446. package/lib/utils/multiPassRender.js +38 -31
  447. package/lib/utils/polylineNormal.js +86 -118
  448. package/lib/utils/simpleLine.js +85 -101
  449. package/lib/utils/symbol-layout.js +109 -173
  450. package/lib/utils/updateShape.js +40 -11
  451. package/lib/wind/index.js +71 -110
  452. package/lib/wind/models/index.js +30 -13
  453. package/lib/wind/models/utils.js +89 -104
  454. package/lib/wind/models/wind.js +224 -332
  455. package/lib/wind/models/windRender.js +215 -293
  456. package/lib/wind/models/windShader.js +181 -17
  457. package/lib/wind/shaders/wind_frag.glsl +9 -0
  458. package/lib/wind/shaders/wind_vert.glsl +17 -0
  459. package/package.json +11 -9
  460. package/es/Geometry/index.js.map +0 -1
  461. package/es/Geometry/models/billboard.js.map +0 -1
  462. package/es/Geometry/models/index.js.map +0 -1
  463. package/es/Geometry/models/plane.js.map +0 -1
  464. package/es/Geometry/models/sprite.js.map +0 -1
  465. package/es/canvas/index.js.map +0 -1
  466. package/es/canvas/models/canvas.js.map +0 -1
  467. package/es/canvas/models/index.js.map +0 -1
  468. package/es/citybuliding/building.js.map +0 -1
  469. package/es/citybuliding/models/build.js.map +0 -1
  470. package/es/core/BaseLayer.js.map +0 -1
  471. package/es/core/BaseModel.js.map +0 -1
  472. package/es/core/interface.js.map +0 -1
  473. package/es/core/schema.js.map +0 -1
  474. package/es/core/shape/Path.js.map +0 -1
  475. package/es/core/shape/extrude.js.map +0 -1
  476. package/es/core/triangulation.js.map +0 -1
  477. package/es/earth/index.js.map +0 -1
  478. package/es/earth/models/atmosphere.js.map +0 -1
  479. package/es/earth/models/base.js.map +0 -1
  480. package/es/earth/models/bloomsphere.js.map +0 -1
  481. package/es/earth/utils.js.map +0 -1
  482. package/es/glsl.d.js +0 -2
  483. package/es/glsl.d.js.map +0 -1
  484. package/es/heatmap/index.js.map +0 -1
  485. package/es/heatmap/models/grid.js.map +0 -1
  486. package/es/heatmap/models/grid3d.js.map +0 -1
  487. package/es/heatmap/models/heatmap.js.map +0 -1
  488. package/es/heatmap/models/hexagon.js.map +0 -1
  489. package/es/heatmap/models/index.js.map +0 -1
  490. package/es/heatmap/triangulation.js.map +0 -1
  491. package/es/image/index.js.map +0 -1
  492. package/es/image/models/dataImage.js.map +0 -1
  493. package/es/image/models/image.js.map +0 -1
  494. package/es/image/models/index.js.map +0 -1
  495. package/es/index.js.map +0 -1
  496. package/es/line/index.js.map +0 -1
  497. package/es/line/models/arc.js.map +0 -1
  498. package/es/line/models/arc_3d.js.map +0 -1
  499. package/es/line/models/earthArc_3d.js.map +0 -1
  500. package/es/line/models/great_circle.js.map +0 -1
  501. package/es/line/models/half.js.map +0 -1
  502. package/es/line/models/index.js.map +0 -1
  503. package/es/line/models/line.js.map +0 -1
  504. package/es/line/models/linearline.js.map +0 -1
  505. package/es/line/models/simpleLine.js.map +0 -1
  506. package/es/line/models/tile.js.map +0 -1
  507. package/es/line/models/wall.js.map +0 -1
  508. package/es/mask/index.js.map +0 -1
  509. package/es/mask/models/fill.js.map +0 -1
  510. package/es/mask/models/index.js.map +0 -1
  511. package/es/plugins/DataMappingPlugin.js.map +0 -1
  512. package/es/plugins/DataSourcePlugin.js.map +0 -1
  513. package/es/plugins/FeatureScalePlugin.js.map +0 -1
  514. package/es/plugins/LayerAnimateStylePlugin.js.map +0 -1
  515. package/es/plugins/LayerModelPlugin.js.map +0 -1
  516. package/es/plugins/LayerStylePlugin.js.map +0 -1
  517. package/es/plugins/LightingPlugin.js.map +0 -1
  518. package/es/plugins/MultiPassRendererPlugin.js.map +0 -1
  519. package/es/plugins/PixelPickingPlugin.js.map +0 -1
  520. package/es/plugins/RegisterStyleAttributePlugin.js.map +0 -1
  521. package/es/plugins/ShaderUniformPlugin.js.map +0 -1
  522. package/es/plugins/UpdateModelPlugin.js.map +0 -1
  523. package/es/plugins/UpdateStyleAttributePlugin.js.map +0 -1
  524. package/es/point/index.js.map +0 -1
  525. package/es/point/models/earthExtrude.js.map +0 -1
  526. package/es/point/models/earthFill.js.map +0 -1
  527. package/es/point/models/extrude.js.map +0 -1
  528. package/es/point/models/fill.js.map +0 -1
  529. package/es/point/models/fillmage.js.map +0 -1
  530. package/es/point/models/image.js.map +0 -1
  531. package/es/point/models/index.js.map +0 -1
  532. package/es/point/models/normal.js.map +0 -1
  533. package/es/point/models/radar.js.map +0 -1
  534. package/es/point/models/simplePoint.js.map +0 -1
  535. package/es/point/models/text.js.map +0 -1
  536. package/es/point/models/tile.js.map +0 -1
  537. package/es/point/shape/extrude.js.map +0 -1
  538. package/es/polygon/index.js.map +0 -1
  539. package/es/polygon/models/extrude.js.map +0 -1
  540. package/es/polygon/models/fill.js.map +0 -1
  541. package/es/polygon/models/index.js.map +0 -1
  542. package/es/polygon/models/ocean.js.map +0 -1
  543. package/es/polygon/models/tile.js.map +0 -1
  544. package/es/polygon/models/water.js.map +0 -1
  545. package/es/raster/buffers/triangulation.js.map +0 -1
  546. package/es/raster/index.js.map +0 -1
  547. package/es/raster/models/index.js.map +0 -1
  548. package/es/raster/models/raster.js.map +0 -1
  549. package/es/raster/raster.js.map +0 -1
  550. package/es/tile/interface.js.map +0 -1
  551. package/es/tile/manager/tileConfigManager.js.map +0 -1
  552. package/es/tile/manager/tileLayerManager.js.map +0 -1
  553. package/es/tile/manager/tilePickerManager.js.map +0 -1
  554. package/es/tile/models/tileModel.js.map +0 -1
  555. package/es/tile/tileFactory/base.js.map +0 -1
  556. package/es/tile/tileFactory/index.js.map +0 -1
  557. package/es/tile/tileFactory/line.js.map +0 -1
  558. package/es/tile/tileFactory/point.js.map +0 -1
  559. package/es/tile/tileFactory/polygon.js.map +0 -1
  560. package/es/tile/tileFactory/raster.js.map +0 -1
  561. package/es/tile/tileFactory/rasterData.js.map +0 -1
  562. package/es/tile/tileFactory/rasterDataLayer.js.map +0 -1
  563. package/es/tile/tileFactory/vectorLayer.js.map +0 -1
  564. package/es/tile/tileLayer/baseTileLayer.js.map +0 -1
  565. package/es/tile/tmsTileLayer.js.map +0 -1
  566. package/es/tile/utils.js.map +0 -1
  567. package/es/utils/blend.js.map +0 -1
  568. package/es/utils/collision-index.js.map +0 -1
  569. package/es/utils/dataMappingStyle.js.map +0 -1
  570. package/es/utils/extrude_polyline.js.map +0 -1
  571. package/es/utils/grid-index.js.map +0 -1
  572. package/es/utils/layerData.js.map +0 -1
  573. package/es/utils/multiPassRender.js.map +0 -1
  574. package/es/utils/polylineNormal.js.map +0 -1
  575. package/es/utils/simpleLine.js.map +0 -1
  576. package/es/utils/symbol-layout.js.map +0 -1
  577. package/es/utils/updateShape.js.map +0 -1
  578. package/es/wind/index.js.map +0 -1
  579. package/es/wind/models/index.js.map +0 -1
  580. package/es/wind/models/utils.js.map +0 -1
  581. package/es/wind/models/wind.js.map +0 -1
  582. package/es/wind/models/windRender.js.map +0 -1
  583. package/es/wind/models/windShader.js.map +0 -1
  584. package/lib/Geometry/index.js.map +0 -1
  585. package/lib/Geometry/models/billboard.js.map +0 -1
  586. package/lib/Geometry/models/index.js.map +0 -1
  587. package/lib/Geometry/models/plane.js.map +0 -1
  588. package/lib/Geometry/models/sprite.js.map +0 -1
  589. package/lib/canvas/index.js.map +0 -1
  590. package/lib/canvas/models/canvas.js.map +0 -1
  591. package/lib/canvas/models/index.js.map +0 -1
  592. package/lib/citybuliding/building.js.map +0 -1
  593. package/lib/citybuliding/models/build.js.map +0 -1
  594. package/lib/core/BaseLayer.js.map +0 -1
  595. package/lib/core/BaseModel.js.map +0 -1
  596. package/lib/core/interface.js.map +0 -1
  597. package/lib/core/schema.js.map +0 -1
  598. package/lib/core/shape/Path.js.map +0 -1
  599. package/lib/core/shape/extrude.js.map +0 -1
  600. package/lib/core/triangulation.js.map +0 -1
  601. package/lib/earth/index.js.map +0 -1
  602. package/lib/earth/models/atmosphere.js.map +0 -1
  603. package/lib/earth/models/base.js.map +0 -1
  604. package/lib/earth/models/bloomsphere.js.map +0 -1
  605. package/lib/earth/utils.js.map +0 -1
  606. package/lib/glsl.d.js +0 -2
  607. package/lib/glsl.d.js.map +0 -1
  608. package/lib/heatmap/index.js.map +0 -1
  609. package/lib/heatmap/models/grid.js.map +0 -1
  610. package/lib/heatmap/models/grid3d.js.map +0 -1
  611. package/lib/heatmap/models/heatmap.js.map +0 -1
  612. package/lib/heatmap/models/hexagon.js.map +0 -1
  613. package/lib/heatmap/models/index.js.map +0 -1
  614. package/lib/heatmap/triangulation.js.map +0 -1
  615. package/lib/image/index.js.map +0 -1
  616. package/lib/image/models/dataImage.js.map +0 -1
  617. package/lib/image/models/image.js.map +0 -1
  618. package/lib/image/models/index.js.map +0 -1
  619. package/lib/index.js.map +0 -1
  620. package/lib/line/index.js.map +0 -1
  621. package/lib/line/models/arc.js.map +0 -1
  622. package/lib/line/models/arc_3d.js.map +0 -1
  623. package/lib/line/models/earthArc_3d.js.map +0 -1
  624. package/lib/line/models/great_circle.js.map +0 -1
  625. package/lib/line/models/half.js.map +0 -1
  626. package/lib/line/models/index.js.map +0 -1
  627. package/lib/line/models/line.js.map +0 -1
  628. package/lib/line/models/linearline.js.map +0 -1
  629. package/lib/line/models/simpleLine.js.map +0 -1
  630. package/lib/line/models/tile.js.map +0 -1
  631. package/lib/line/models/wall.js.map +0 -1
  632. package/lib/mask/index.js.map +0 -1
  633. package/lib/mask/models/fill.js.map +0 -1
  634. package/lib/mask/models/index.js.map +0 -1
  635. package/lib/plugins/DataMappingPlugin.js.map +0 -1
  636. package/lib/plugins/DataSourcePlugin.js.map +0 -1
  637. package/lib/plugins/FeatureScalePlugin.js.map +0 -1
  638. package/lib/plugins/LayerAnimateStylePlugin.js.map +0 -1
  639. package/lib/plugins/LayerModelPlugin.js.map +0 -1
  640. package/lib/plugins/LayerStylePlugin.js.map +0 -1
  641. package/lib/plugins/LightingPlugin.js.map +0 -1
  642. package/lib/plugins/MultiPassRendererPlugin.js.map +0 -1
  643. package/lib/plugins/PixelPickingPlugin.js.map +0 -1
  644. package/lib/plugins/RegisterStyleAttributePlugin.js.map +0 -1
  645. package/lib/plugins/ShaderUniformPlugin.js.map +0 -1
  646. package/lib/plugins/UpdateModelPlugin.js.map +0 -1
  647. package/lib/plugins/UpdateStyleAttributePlugin.js.map +0 -1
  648. package/lib/point/index.js.map +0 -1
  649. package/lib/point/models/earthExtrude.js.map +0 -1
  650. package/lib/point/models/earthFill.js.map +0 -1
  651. package/lib/point/models/extrude.js.map +0 -1
  652. package/lib/point/models/fill.js.map +0 -1
  653. package/lib/point/models/fillmage.js.map +0 -1
  654. package/lib/point/models/image.js.map +0 -1
  655. package/lib/point/models/index.js.map +0 -1
  656. package/lib/point/models/normal.js.map +0 -1
  657. package/lib/point/models/radar.js.map +0 -1
  658. package/lib/point/models/simplePoint.js.map +0 -1
  659. package/lib/point/models/text.js.map +0 -1
  660. package/lib/point/models/tile.js.map +0 -1
  661. package/lib/point/shape/extrude.js.map +0 -1
  662. package/lib/polygon/index.js.map +0 -1
  663. package/lib/polygon/models/extrude.js.map +0 -1
  664. package/lib/polygon/models/fill.js.map +0 -1
  665. package/lib/polygon/models/index.js.map +0 -1
  666. package/lib/polygon/models/ocean.js.map +0 -1
  667. package/lib/polygon/models/tile.js.map +0 -1
  668. package/lib/polygon/models/water.js.map +0 -1
  669. package/lib/raster/buffers/triangulation.js.map +0 -1
  670. package/lib/raster/index.js.map +0 -1
  671. package/lib/raster/models/index.js.map +0 -1
  672. package/lib/raster/models/raster.js.map +0 -1
  673. package/lib/raster/raster.js.map +0 -1
  674. package/lib/tile/interface.js.map +0 -1
  675. package/lib/tile/manager/tileConfigManager.js.map +0 -1
  676. package/lib/tile/manager/tileLayerManager.js.map +0 -1
  677. package/lib/tile/manager/tilePickerManager.js.map +0 -1
  678. package/lib/tile/models/tileModel.js.map +0 -1
  679. package/lib/tile/tileFactory/base.js.map +0 -1
  680. package/lib/tile/tileFactory/index.js.map +0 -1
  681. package/lib/tile/tileFactory/line.js.map +0 -1
  682. package/lib/tile/tileFactory/point.js.map +0 -1
  683. package/lib/tile/tileFactory/polygon.js.map +0 -1
  684. package/lib/tile/tileFactory/raster.js.map +0 -1
  685. package/lib/tile/tileFactory/rasterData.js.map +0 -1
  686. package/lib/tile/tileFactory/rasterDataLayer.js.map +0 -1
  687. package/lib/tile/tileFactory/vectorLayer.js.map +0 -1
  688. package/lib/tile/tileLayer/baseTileLayer.js.map +0 -1
  689. package/lib/tile/tmsTileLayer.js.map +0 -1
  690. package/lib/tile/utils.js.map +0 -1
  691. package/lib/utils/blend.js.map +0 -1
  692. package/lib/utils/collision-index.js.map +0 -1
  693. package/lib/utils/dataMappingStyle.js.map +0 -1
  694. package/lib/utils/extrude_polyline.js.map +0 -1
  695. package/lib/utils/grid-index.js.map +0 -1
  696. package/lib/utils/layerData.js.map +0 -1
  697. package/lib/utils/multiPassRender.js.map +0 -1
  698. package/lib/utils/polylineNormal.js.map +0 -1
  699. package/lib/utils/simpleLine.js.map +0 -1
  700. package/lib/utils/symbol-layout.js.map +0 -1
  701. package/lib/utils/updateShape.js.map +0 -1
  702. package/lib/wind/index.js.map +0 -1
  703. package/lib/wind/models/index.js.map +0 -1
  704. package/lib/wind/models/utils.js.map +0 -1
  705. package/lib/wind/models/wind.js.map +0 -1
  706. package/lib/wind/models/windRender.js.map +0 -1
  707. package/lib/wind/models/windShader.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/extrude_polyline.ts"],"names":["aProjectFlat","vec2","tmp","create","capEnd","lineA","lineB","tangent","computeMiter","lineTangent","miter","start","end","halfThick","add","normalize","fromValues","tmpvec","dot","computeNormal","out","dir","set","direction","a","b","sub","isPointEqual","getArrayUnique","matrix","map","Map","i","length","key","toString","get","splice","ExtrudePolyline","opts","join","cap","miterLimit","thickness","dash","complex","positions","indices","normals","startIndex","indexes","points","lastFlip","started","normal","totalDistance","total","count","last","cur","next","amt","simpleSegment","originPoints","push","originLast","originCur","originNext","segment_gaode2","segment","index","flatCur","flatLast","segmentDistance","lineSegmentDistance","extrusions","flatNext","subtract","miterLen","flip","copy","capSquare","joinBevel","out1","out2","currentIndex","bevel","limit","point","distanceRadio","b1","a1","dx","dy","Math","sqrt"],"mappings":"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","sourcesContent":["import { aProjectFlat } from '@antv/l7-utils';\nimport { vec2, vec3 } from 'gl-matrix';\nconst tmp = vec2.create();\nconst capEnd = vec2.create();\nconst lineA = vec2.create();\nconst lineB = vec2.create();\nconst tangent = vec2.create();\n\nexport function computeMiter(\n lineTangent: vec2,\n miter: vec2,\n start: vec2,\n end: vec2,\n halfThick: number,\n): [number, vec2] {\n vec2.add(lineTangent, start, end);\n vec2.normalize(lineTangent, lineTangent);\n miter = vec2.fromValues(-lineTangent[1], lineTangent[0]);\n const tmpvec = vec2.fromValues(-start[1], start[0]);\n return [halfThick / vec2.dot(miter, tmpvec), miter];\n}\nexport function computeNormal(out: vec2, dir: vec2) {\n return vec2.set(out, -dir[1], dir[0]);\n}\n\nexport function direction(out: vec2, a: vec2, b: vec2) {\n vec2.sub(out, a, b);\n vec2.normalize(out, out);\n return out;\n}\n\nfunction isPointEqual(a: vec2, b: vec2) {\n return a[0] === b[0] && a[1] === b[1];\n}\n\nfunction getArrayUnique(matrix: number[][]) {\n const map = new Map();\n for (let i = 0; i < matrix.length; i++) {\n const key = matrix[0].toString() + '-' + matrix[1].toString();\n if (map.get(key)) {\n matrix.splice(i, 1);\n i++;\n } else {\n map.set(key, key);\n }\n }\n return matrix;\n}\n\nexport interface IExtrudeLineOption {\n join: string;\n cap: string;\n dash: boolean;\n closed: boolean;\n indexOffset: number;\n miterLimit: number;\n thickness: number;\n}\nexport default class ExtrudePolyline {\n public complex: {\n positions: number[];\n indices: number[];\n normals: number[];\n startIndex: number;\n indexes: number[];\n };\n private join: string;\n private cap: string;\n private miterLimit: number;\n private thickness: number;\n private normal: vec2 | null;\n private lastFlip: number = -1;\n private miter: vec2 = vec2.fromValues(0, 0);\n private started: boolean = false;\n private dash: boolean = false;\n private totalDistance: number = 0;\n private currentIndex: number = 0;\n\n constructor(opts: Partial<IExtrudeLineOption> = {}) {\n this.join = opts.join || 'miter';\n this.cap = opts.cap || 'butt';\n this.miterLimit = opts.miterLimit || 10;\n this.thickness = opts.thickness || 1;\n this.dash = opts.dash || false;\n this.complex = {\n positions: [],\n indices: [],\n normals: [],\n startIndex: 0,\n indexes: [],\n };\n }\n\n public simpleExtrude(points: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1] as vec3;\n const cur = points[i] as vec3;\n const next = i < points.length - 1 ? points[i + 1] : null;\n const amt = this.simpleSegment(complex, count, last, cur, next as vec3);\n count += amt;\n }\n\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n\n public simpleExtrude_gaode2(points: number[][], originPoints: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1];\n last.push(originPoints[i - 1][2] ?? 0);\n // @ts-ignore\n const originLast = originPoints[i - 1] as vec3;\n\n const cur = points[i];\n cur.push(originPoints[i][2] ?? 0);\n // @ts-ignore\n const originCur = originPoints[i] as vec3;\n\n const next =\n i < points.length - 1\n ? [...points[i + 1], originPoints[i + 1][2] ?? 0]\n : null;\n const originNext =\n i < originPoints.length - 1 ? originPoints[i + 1] : null;\n\n const amt = this.simpleSegment(\n complex,\n count,\n // @ts-ignore\n last as vec3,\n // @ts-ignore\n cur as vec3,\n // @ts-ignore\n next as vec3,\n // @ts-ignore\n originLast,\n originCur,\n // @ts-ignore\n originNext as vec3,\n );\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n\n public extrude_gaode2(points: number[][], originPoints: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1];\n last.push(originPoints[i - 1][2] ?? 0);\n // @ts-ignore\n const originLast = originPoints[i - 1] as vec3;\n\n const cur = points[i];\n cur.push(originPoints[i][2] ?? 0);\n // @ts-ignore\n const originCur = originPoints[i] as vec3;\n\n const next =\n i < points.length - 1\n ? [...points[i + 1], originPoints[i + 1][2] ?? 0]\n : null;\n const originNext =\n i < originPoints.length - 1 ? originPoints[i + 1] : null;\n\n const amt = this.segment_gaode2(\n complex,\n count,\n // @ts-ignore\n last as vec3,\n // @ts-ignore\n cur as vec3,\n // @ts-ignore\n next as vec3,\n // @ts-ignore\n originLast,\n originCur,\n // @ts-ignore\n originNext as vec3,\n );\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n public extrude(points: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n this.lastFlip = -1;\n this.started = false;\n this.normal = null;\n this.totalDistance = 0;\n // 去除数组里重复的点\n // points = getArrayUnique(points);\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1] as vec3;\n const cur = points[i] as vec3;\n const next = i < points.length - 1 ? points[i + 1] : null;\n const amt = this.segment(complex, count, last, cur, next as vec3);\n count += amt;\n }\n if (this.dash) {\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n }\n complex.startIndex = complex.positions.length / 6;\n return complex;\n }\n\n private simpleSegment(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n // @ts-ignore\n direction(lineA, flatCur, flatLast);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n const flatNext = aProjectFlat([next[0], next[1]]) as [number, number];\n if (isPointEqual(flatCur, flatNext)) {\n vec2.add(\n flatNext,\n flatCur,\n vec2.normalize(flatNext, vec2.subtract(flatNext, flatCur, flatLast)),\n );\n }\n direction(lineB, flatNext, flatCur);\n\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n this.lastFlip = flip;\n }\n return count;\n }\n private segment_gaode2(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n originLast: vec3,\n originCur: vec3,\n originNext: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const capSquare = this.cap === 'square';\n const joinBevel = this.join === 'bevel';\n const flatCur = aProjectFlat([originCur[0], originCur[1]]) as [\n number,\n number,\n ];\n const flatLast = aProjectFlat([originLast[0], originLast[1]]) as [\n number,\n number,\n ];\n // @ts-ignore\n direction(lineA, cur as vec3, last as vec3);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n // if the end cap is type square, we can just push the verts out a bit\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, last, lineA, -this.thickness);\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.add(out1, this.normal, lineA);\n vec2.add(out2, this.normal, lineA);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n -this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n if (capSquare) {\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.sub(out2, lineA, this.normal);\n vec2.add(out1, lineA, this.normal);\n\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n }\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n // @ts-ignore\n if (isPointEqual(cur as vec2, next as vec2)) {\n vec2.add(\n // @ts-ignore\n next as vec2,\n // @ts-ignore\n cur as vec2,\n vec2.normalize(\n // @ts-ignore\n next as vec2,\n // @ts-ignore\n vec2.subtract(next as vec2, cur as vec2, last as vec2),\n ),\n );\n }\n // @ts-ignore\n direction(lineB, next as vec2, cur as vec2);\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n let bevel = joinBevel;\n if (!bevel && this.join === 'miter') {\n const limit = miterLen;\n if (limit > this.miterLimit) {\n bevel = true;\n }\n }\n\n if (bevel) {\n normals.push(this.normal[0], this.normal[1], 0);\n normals.push(miter[0], miter[1], 0);\n\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n indices.push(\n ...(this.lastFlip !== -flip\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n // now add the bevel triangle\n indices.push(index + 2, index + 3, index + 4);\n\n computeNormal(tmp, lineB);\n vec2.copy(this.normal, tmp); // store normal for next round\n normals.push(this.normal[0], this.normal[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n count += 3;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n }\n this.lastFlip = flip;\n }\n return count;\n }\n private segment(\n complex: any,\n index: number,\n last: vec3,\n cur: vec3,\n next: vec3,\n ) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const normals = complex.normals;\n const capSquare = this.cap === 'square';\n const joinBevel = this.join === 'bevel';\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n // @ts-ignore\n direction(lineA, flatCur, flatLast);\n let segmentDistance = 0;\n if (this.dash) {\n // @ts-ignore\n segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n }\n\n if (!this.normal) {\n this.normal = vec2.create();\n computeNormal(this.normal, lineA);\n }\n if (!this.started) {\n this.started = true;\n\n // if the end cap is type square, we can just push the verts out a bit\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, last, lineA, -this.thickness);\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.add(out1, this.normal, lineA);\n vec2.add(out2, this.normal, lineA);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n -this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n last[0],\n last[1],\n last[2] | 0,\n this.totalDistance - segmentDistance,\n this.thickness,\n last[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n // this.extrusions(positions, normals, last, out, this.thickness);\n // last = capEnd;\n } else {\n this.extrusions(\n positions,\n normals,\n last,\n this.normal,\n this.thickness,\n this.totalDistance - segmentDistance,\n );\n }\n }\n\n indices.push(index + 0, index + 1, index + 2);\n\n if (!next) {\n computeNormal(this.normal, lineA);\n if (capSquare) {\n // vec2.scaleAndAdd(capEnd, cur, lineA, this.thickness);\n // cur = capEnd;\n const out1 = vec2.create();\n const out2 = vec2.create();\n vec2.sub(out2, lineA, this.normal);\n vec2.add(out1, lineA, this.normal);\n // this.extrusions(positions, normals, cur, out, this.thickness);\n normals.push(out2[0], out2[1], 0);\n normals.push(out1[0], out1[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n this.normal,\n this.thickness,\n this.totalDistance,\n );\n }\n\n // this.extrusions(positions, normals, cur, this.normal, this.thickness);\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n count += 2;\n } else {\n const flatNext = aProjectFlat([next[0], next[1]]) as [number, number];\n if (isPointEqual(flatCur, flatNext)) {\n vec2.add(\n flatNext,\n flatCur,\n vec2.normalize(flatNext, vec2.subtract(flatNext, flatCur, flatLast)),\n );\n }\n direction(lineB, flatNext, flatCur);\n\n // stores tangent & miter\n\n const [miterLen, miter] = computeMiter(\n tangent,\n vec2.create(),\n lineA,\n lineB,\n this.thickness,\n );\n // normal(tmp, lineA)\n\n // get orientation\n let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;\n let bevel = joinBevel;\n if (!bevel && this.join === 'miter') {\n const limit = miterLen;\n if (limit > this.miterLimit) {\n bevel = true;\n }\n }\n\n if (bevel) {\n normals.push(this.normal[0], this.normal[1], 0);\n normals.push(miter[0], miter[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n indices.push(\n ...(this.lastFlip !== -flip\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n // now add the bevel triangle\n indices.push(index + 2, index + 3, index + 4);\n\n computeNormal(tmp, lineB);\n vec2.copy(this.normal, tmp); // store normal for next round\n normals.push(this.normal[0], this.normal[1], 0);\n positions.push(\n cur[0],\n cur[1],\n cur[2] | 0,\n this.totalDistance,\n -this.thickness * flip,\n cur[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n count += 3;\n } else {\n this.extrusions(\n positions,\n normals,\n cur,\n miter,\n miterLen,\n this.totalDistance,\n );\n indices.push(\n ...(this.lastFlip === 1\n ? [index, index + 2, index + 3]\n : [index + 2, index + 1, index + 3]),\n );\n\n flip = -1;\n\n // the miter is now the normal for our next join\n vec2.copy(this.normal, miter);\n count += 2;\n }\n this.lastFlip = flip;\n }\n return count;\n }\n private extrusions(\n positions: number[],\n normals: number[],\n point: vec3, // 顶点\n normal: vec2, // 法向量\n thickness: number, // 高度\n distanceRadio: number,\n ) {\n normals.push(normal[0], normal[1], 0);\n normals.push(normal[0], normal[1], 0);\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n -thickness,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n thickness,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n }\n private lineSegmentDistance(b1: vec3, a1: vec3) {\n const dx = a1[0] - b1[0];\n const dy = a1[1] - b1[1];\n return Math.sqrt(dx * dx + dy * dy);\n }\n}\n"],"file":"extrude_polyline.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/grid-index.ts"],"names":["GridIndex","width","height","cellSize","boxCells","xCellCount","Math","ceil","yCellCount","i","push","boxKeys","bboxes","xScale","yScale","boxUid","key","x1","y1","x2","y2","forEachCell","insertBoxCell","predicate","queryHitTest","cellIndex","uid","hitTest","result","length","filter","queryArgs","seenUids","box","circle","queryCell","boxCell","offset","fn","arg1","arg2","cx1","convertToXCellCoord","cy1","convertToYCellCoord","cx2","cy2","x","y","call","max","min","floor"],"mappings":"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","sourcesContent":["interface IQueryArgs {\n hitTest: boolean;\n seenUids: { box: any; circle: any };\n}\ntype CallBack = (...args: any[]) => any;\n/**\n * 网格索引,相比 @mapbox/grid-index,在简单计算碰撞检测结果时效率更高\n * @see https://zhuanlan.zhihu.com/p/74373214\n */\nclass GridIndex {\n private boxCells: number[][] = [];\n private xCellCount: number;\n private yCellCount: number;\n private boxKeys: string[];\n private bboxes: number[];\n private width: number;\n private height: number;\n private xScale: number;\n private yScale: number;\n private boxUid: number;\n\n constructor(width: number, height: number, cellSize: number) {\n const boxCells = this.boxCells;\n\n this.xCellCount = Math.ceil(width / cellSize);\n this.yCellCount = Math.ceil(height / cellSize);\n\n for (let i = 0; i < this.xCellCount * this.yCellCount; i++) {\n boxCells.push([]);\n }\n this.boxKeys = [];\n this.bboxes = [];\n\n this.width = width;\n this.height = height;\n this.xScale = this.xCellCount / width;\n this.yScale = this.yCellCount / height;\n this.boxUid = 0;\n }\n\n public insert(key: any, x1: number, y1: number, x2: number, y2: number) {\n this.forEachCell(x1, y1, x2, y2, this.insertBoxCell, this.boxUid++);\n this.boxKeys.push(key);\n this.bboxes.push(x1);\n this.bboxes.push(y1);\n this.bboxes.push(x2);\n this.bboxes.push(y2);\n }\n\n public query(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n predicate?: CallBack,\n ) {\n return this.queryHitTest(x1, y1, x2, y2, false, predicate);\n }\n\n public hitTest(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n predicate?: CallBack,\n ) {\n return this.queryHitTest(x1, y1, x2, y2, true, predicate);\n }\n\n private insertBoxCell(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n cellIndex: number,\n uid: number,\n ) {\n this.boxCells[cellIndex].push(uid);\n }\n\n private queryHitTest(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n hitTest: boolean,\n predicate?: CallBack,\n ) {\n if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n return hitTest ? false : [];\n }\n const result: any[] = [];\n if (x1 <= 0 && y1 <= 0 && this.width <= x2 && this.height <= y2) {\n // 这一步是高效的关键,后续精确碰撞检测结果在计算文本可见性时并不需要\n if (hitTest) {\n return true;\n }\n for (let boxUid = 0; boxUid < this.boxKeys.length; boxUid++) {\n result.push({\n key: this.boxKeys[boxUid],\n x1: this.bboxes[boxUid * 4],\n y1: this.bboxes[boxUid * 4 + 1],\n x2: this.bboxes[boxUid * 4 + 2],\n y2: this.bboxes[boxUid * 4 + 3],\n });\n }\n return predicate ? result.filter(predicate) : result;\n }\n\n const queryArgs = {\n hitTest,\n seenUids: { box: {}, circle: {} },\n };\n this.forEachCell(\n x1,\n y1,\n x2,\n y2,\n this.queryCell,\n result,\n queryArgs,\n predicate,\n );\n return hitTest ? result.length > 0 : result;\n }\n\n private queryCell(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n cellIndex: number,\n result: any[],\n queryArgs?: any,\n predicate?: CallBack,\n ) {\n const seenUids = queryArgs.seenUids;\n const boxCell = this.boxCells[cellIndex];\n if (boxCell !== null) {\n const bboxes = this.bboxes;\n for (const boxUid of boxCell) {\n if (!seenUids.box[boxUid]) {\n seenUids.box[boxUid] = true;\n const offset = boxUid * 4;\n if (\n x1 <= bboxes[offset + 2] &&\n y1 <= bboxes[offset + 3] &&\n x2 >= bboxes[offset + 0] &&\n y2 >= bboxes[offset + 1] &&\n (!predicate || predicate(this.boxKeys[boxUid]))\n ) {\n if (queryArgs.hitTest) {\n result.push(true);\n return true;\n }\n result.push({\n key: this.boxKeys[boxUid],\n x1: bboxes[offset],\n y1: bboxes[offset + 1],\n x2: bboxes[offset + 2],\n y2: bboxes[offset + 3],\n });\n }\n }\n }\n }\n return false;\n }\n\n private forEachCell(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n fn: CallBack,\n arg1: any[] | number,\n arg2?: IQueryArgs,\n predicate?: CallBack,\n ) {\n const cx1 = this.convertToXCellCoord(x1);\n const cy1 = this.convertToYCellCoord(y1);\n const cx2 = this.convertToXCellCoord(x2);\n const cy2 = this.convertToYCellCoord(y2);\n\n for (let x = cx1; x <= cx2; x++) {\n for (let y = cy1; y <= cy2; y++) {\n const cellIndex = this.xCellCount * y + x;\n if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, predicate)) {\n return;\n }\n }\n }\n }\n\n private convertToXCellCoord(x: number) {\n return Math.max(\n 0,\n Math.min(this.xCellCount - 1, Math.floor(x * this.xScale)),\n );\n }\n\n private convertToYCellCoord(y: number) {\n return Math.max(\n 0,\n Math.min(this.yCellCount - 1, Math.floor(y * this.yScale)),\n );\n }\n}\n\nexport default GridIndex;\n"],"file":"grid-index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/layerData.ts"],"names":["Version","Source","isColor","normalize","rgb2arr","getArrowPoints","p1","p2","dir","normalizeDir","arrowPoint","adjustData2Amap2Coordinates","mappedData","mapService","length","version","coordinates","filter","d","originCoordinates","map","cloneDeep","lngLatToCoord","lngLatToCoords","adjustData2SimpleCoordinates","SIMPLE","simpleCoordinate","unProjectCoordinates","simpleMapCoord","unproject","Array","coords","coord","c1","co","push","applyAttributeMapping","attribute","record","minimumColor","scale","scalers","params","forEach","field","hasOwnProperty","type","mappingResult","mapping","name","attributes","data","fontService","layer","getLayerConfig","arrow","enable","encodeRecord","id","_id","undefined","values","needRemapping","c","isArray","shape","getIconFontKey","splice","calculateData","styleAttributeService","options","source","bottomColor","getBottomColor","getLayerStyleAttributes","dataArray","filterData","mappedEncodeData","destroy"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n ILayer,\n IMapService,\n IParseDataItem,\n ISourceCFG,\n IStyleAttribute,\n IStyleAttributeService,\n Position,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport Source from '@antv/l7-source';\nimport { isColor, normalize, rgb2arr } from '@antv/l7-utils';\nimport { ILineLayerStyleOptions } from '../core/interface';\n\nfunction getArrowPoints(p1: Position, p2: Position) {\n const dir = [p2[0] - p1[0], p2[1] - p1[1]];\n const normalizeDir = normalize(dir);\n const arrowPoint = [\n p1[0] + normalizeDir[0] * 0.0001,\n p1[1] + normalizeDir[1] * 0.0001,\n ];\n return arrowPoint;\n}\n\nfunction adjustData2Amap2Coordinates(\n mappedData: IEncodeFeature[],\n mapService: IMapService,\n) {\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (mappedData.length > 0 && mapService.version === Version['GAODE2.x']) {\n if (typeof mappedData[0].coordinates[0] === 'number') {\n // 单个的点数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = Version['GAODE2.x'];\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoord(d.coordinates);\n });\n } else {\n // 连续的线、面数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = Version['GAODE2.x'];\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoords(d.coordinates);\n });\n }\n }\n}\n\nfunction adjustData2SimpleCoordinates(\n mappedData: IEncodeFeature[],\n mapService: IMapService,\n) {\n if (mappedData.length > 0 && mapService.version === Version.SIMPLE) {\n mappedData.map((d) => {\n if (!d.simpleCoordinate) {\n d.coordinates = unProjectCoordinates(d.coordinates, mapService);\n d.simpleCoordinate = true;\n }\n });\n }\n}\n\nfunction unProjectCoordinates(coordinates: any, mapService: IMapService) {\n if (typeof coordinates[0] === 'number') {\n return mapService.simpleMapCoord.unproject(coordinates as [number, number]);\n }\n\n if (coordinates[0] && coordinates[0][0] instanceof Array) {\n // @ts-ignore\n const coords = [];\n coordinates.map((coord: any) => {\n // @ts-ignore\n const c1 = [];\n coord.map((co: any) => {\n c1.push(mapService.simpleMapCoord.unproject(co as [number, number]));\n });\n // @ts-ignore\n coords.push(c1);\n });\n // @ts-ignore\n return coords;\n } else {\n // @ts-ignore\n const coords = [];\n // @ts-ignore\n coordinates.map((coord) => {\n coords.push(\n mapService.simpleMapCoord.unproject(coord as [number, number]),\n );\n });\n // @ts-ignore\n return coords;\n }\n}\n\nfunction applyAttributeMapping(\n attribute: IStyleAttribute,\n record: { [key: string]: unknown },\n minimumColor?: string,\n) {\n if (!attribute.scale) {\n return [];\n }\n const scalers = attribute?.scale?.scalers || [];\n const params: unknown[] = [];\n\n scalers.forEach(({ field }) => {\n if (record.hasOwnProperty(field) || attribute.scale?.type === 'variable') {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n\n const mappingResult = attribute.mapping ? attribute.mapping(params) : [];\n if (attribute.name === 'color' && !isColor(mappingResult[0])) {\n return [minimumColor];\n }\n return mappingResult;\n}\n\nfunction mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n fontService: IFontService,\n mapService: IMapService,\n minimumColor?: string,\n layer?: ILayer,\n): IEncodeFeature[] {\n const {\n arrow = {\n enable: false,\n },\n } = layer?.getLayerConfig() as ILineLayerStyleOptions;\n const mappedData = data.map((record: IParseDataItem) => {\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n };\n\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n let values = applyAttributeMapping(attribute, record, minimumColor);\n\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n values = values.map((c: unknown) => {\n return rgb2arr(c as string);\n });\n }\n // @ts-ignore\n encodeRecord[attribute.name] =\n Array.isArray(values) && values.length === 1 ? values[0] : values;\n\n // 增加对 layer/text/iconfont unicode 映射的解析\n if (attribute.name === 'shape') {\n encodeRecord.shape = fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n\n if (encodeRecord.shape === 'line' && arrow.enable) {\n // 只有在线图层且支持配置箭头的时候进行插入顶点的处理\n const coords = encodeRecord.coordinates as Position[];\n const arrowPoint = getArrowPoints(coords[0], coords[1]);\n encodeRecord.coordinates.splice(1, 0, arrowPoint, arrowPoint);\n }\n return encodeRecord;\n }) as IEncodeFeature[];\n // 调整数据兼容 Amap2.0\n adjustData2Amap2Coordinates(mappedData, mapService);\n\n // 调整数据兼容 SimpleCoordinates\n adjustData2SimpleCoordinates(mappedData, mapService);\n\n return mappedData;\n}\n\nexport function calculateData(\n layer: ILayer,\n fontService: IFontService,\n mapService: IMapService,\n styleAttributeService: IStyleAttributeService,\n data: any,\n options: ISourceCFG | undefined,\n): IEncodeFeature[] {\n const source = new Source(data, options);\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const { dataArray } = source.data;\n const filterData = dataArray;\n\n const mappedEncodeData = mapping(\n attributes,\n filterData,\n fontService,\n mapService,\n bottomColor,\n layer,\n );\n source.destroy();\n return mappedEncodeData;\n}\n"],"file":"layerData.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/multiPassRender.ts"],"names":["normalizePasses","passes","map","pass","createMultiPassRenderer","layer","postProcessingPassFactory","normalPassFactory","multiPassRenderer","getLayerConfig","enablePicking","enableTAA","add","forEach","passName","initializationOptions"],"mappings":";AAaA,OAAO,SAASA,eAAT,CACLC,MADK,EAEL;AACA,SAAOA,MAAM,CAACC,GAAP,CAAW,UAACC,IAAD,EAAyD;AACzE,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,MAAAA,IAAI,GAAG,CAACA,IAAD,EAAO,EAAP,CAAP;AACD;;AACD,WAAOA,IAAP;AACD,GALM,CAAP;AAMD;AAMD,OAAO,SAASC,uBAAT,CACLC,KADK,EAELJ,MAFK,EAGLK,yBAHK,EAILC,iBAJK,EAKL;AACA,MAAMC,iBAAiB,GAAGH,KAAK,CAACG,iBAAhC;;AACA,8BAAqCH,KAAK,CAACI,cAAN,EAArC;AAAA,MAAQC,aAAR,yBAAQA,aAAR;AAAA,MAAuBC,SAAvB,yBAAuBA,SAAvB;;AAQA,MAAIA,SAAJ,EAAe;AACbH,IAAAA,iBAAiB,CAACI,GAAlB,CAAsBL,iBAAiB,CAAC,KAAD,CAAvC;AACD,GAFD,MAEO;AAELC,IAAAA,iBAAiB,CAACI,GAAlB,CAAsBL,iBAAiB,CAAC,QAAD,CAAvC;AACD;;AAGDP,EAAAA,eAAe,CAACC,MAAD,CAAf,CAAwBY,OAAxB,CACE,UAACV,IAAD,EAAgD;AAC9C,+BAA0CA,IAA1C;AAAA,QAAOW,QAAP;AAAA,QAAiBC,qBAAjB;;AACAP,IAAAA,iBAAiB,CAACI,GAAlB,CACEN,yBAAyB,CAACQ,QAAD,CAD3B,EAEEC,qBAFF;AAID,GAPH;AAWAP,EAAAA,iBAAiB,CAACI,GAAlB,CAAsBN,yBAAyB,CAAC,MAAD,CAA/C;AAEA,SAAOE,iBAAP;AACD","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IPass,\n IPostProcessingPass,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\n\n/**\n * 'blurH' -> ['blurH', {}]\n */\nexport function normalizePasses(\n passes: Array<string | [string, { [key: string]: unknown }]>,\n) {\n return passes.map((pass: string | [string, { [key: string]: unknown }]) => {\n if (typeof pass === 'string') {\n pass = [pass, {}];\n }\n return pass;\n });\n}\n\n/**\n * 默认添加 ClearPass、RenderPass\n * 以及 PostProcessing 中的最后一个 CopyPass\n */\nexport function createMultiPassRenderer(\n layer: ILayer,\n passes: Array<string | [string, { [key: string]: unknown }]>,\n postProcessingPassFactory: (name: string) => IPostProcessingPass<unknown>,\n normalPassFactory: (name: string) => IPass<unknown>,\n) {\n const multiPassRenderer = layer.multiPassRenderer;\n const { enablePicking, enableTAA } = layer.getLayerConfig();\n\n // picking pass if enabled\n // if (enablePicking) {\n // multiPassRenderer.add(normalPassFactory('pixelPicking'));\n // }\n\n // use TAA pass if enabled instead of render pass\n if (enableTAA) {\n multiPassRenderer.add(normalPassFactory('taa'));\n } else {\n // render all layers in this pass\n multiPassRenderer.add(normalPassFactory('render'));\n }\n\n // post processing\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const [passName, initializationOptions] = pass;\n multiPassRenderer.add(\n postProcessingPassFactory(passName),\n initializationOptions,\n );\n },\n );\n\n // 末尾为固定的 CopyPass\n multiPassRenderer.add(postProcessingPassFactory('copy'));\n\n return multiPassRenderer;\n}\n"],"file":"multiPassRender.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/polylineNormal.ts"],"names":["aProjectFlat","vec2","computeMiter","tangent","miter","lineA","lineB","halfThick","add","normalize","fromValues","tmp","dot","computeNormal","out","dir","set","direction","a","b","sub","extrusions","positions","miters","point","normal","scale","addNext","push","length","lineSegmentDistance","b1","a1","dx","dy","Math","sqrt","isPointEqual","points","closed","indexOffset","isDash","create","started","lineNormal","count","miterLimit","attrPos","attrIndex","attrDistance","slice","total","i","index","last","cur","next","nextIndex","d","flatCur","flatLast","lineDistance","flatNext","miterLen","flip","bevel","abs","copy","pickData","totalDistance","normals"],"mappings":"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","sourcesContent":["import { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport { vec2 } from 'gl-matrix';\nexport function computeMiter(\n tangent: vec2,\n miter: vec2,\n lineA: vec2,\n lineB: vec2,\n halfThick: number,\n) {\n vec2.add(tangent, lineA, lineB);\n vec2.normalize(tangent, tangent);\n miter = vec2.fromValues(-tangent[1], tangent[0]);\n const tmp = vec2.fromValues(-lineA[1], lineA[0]);\n return halfThick / vec2.dot(miter, tmp);\n}\nexport function computeNormal(out: vec2, dir: vec2) {\n return vec2.set(out, -dir[1], dir[0]);\n}\nexport function direction(out: vec2, a: [number, number], b: [number, number]) {\n // const a1 = aProjectFlat([a[0], a[1]]) as [number, number];\n // const b1 = aProjectFlat([b[0], b[1]]) as [number, number];\n vec2.sub(out, a, b);\n vec2.normalize(out, out);\n return out;\n}\nfunction extrusions(\n positions: number[],\n out: number[],\n miters: number[],\n point: vec2,\n normal: vec2,\n scale: number,\n) {\n addNext(out, miters, normal, -scale);\n addNext(out, miters, normal, scale);\n positions.push(point[0], point[1], 0);\n positions.push(point[0], point[1], 0);\n}\n\nfunction addNext(\n out: number[],\n miters: number[],\n normal: vec2,\n length: number,\n) {\n out.push(normal[0], normal[1], 0);\n miters.push(length);\n}\n\nfunction lineSegmentDistance(b1: vec2, a1: vec2) {\n const dx = a1[0] - b1[0];\n const dy = a1[1] - b1[1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction isPointEqual(a: vec2, b: vec2) {\n return a[0] === b[0] && a[1] === b[1];\n}\n\nexport default function(\n points: number[][],\n closed: boolean,\n indexOffset: number,\n isDash: boolean = true,\n) {\n const lineA = vec2.fromValues(0, 0);\n const lineB = vec2.fromValues(0, 0);\n const tangent = vec2.fromValues(0, 0);\n const miter: vec2 = vec2.create();\n let started = false;\n let lineNormal = null;\n const tmp = vec2.create();\n let count = indexOffset || 0;\n const miterLimit = 4;\n\n const out: number[] = [];\n const attrPos: number[] = [];\n const attrIndex: number[] = [];\n const miters: number[] = [];\n const attrDistance = [0, 0];\n if (closed) {\n points = points.slice();\n points.push(points[0]);\n }\n\n const total = points.length;\n\n for (let i = 1; i < total; i++) {\n const index = count;\n const last = vec2.fromValues(points[i - 1][0], points[i - 1][1]);\n const cur = vec2.fromValues(points[i][0], points[i][1]);\n let next =\n i < points.length - 1\n ? vec2.fromValues(points[i + 1][0], points[i + 1][1])\n : null;\n // 如果当前点和前一点相同,跳过\n if (isPointEqual(last, cur)) {\n continue;\n }\n if (next) {\n let nextIndex = i + 1;\n // 找到不相同的下一点\n while (next && isPointEqual(cur, next)) {\n next =\n nextIndex < points.length - 1\n ? vec2.fromValues(points[++nextIndex][0], points[nextIndex][1])\n : null;\n }\n }\n let d = 0;\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n if (isDash) {\n const lineDistance = lineSegmentDistance(flatCur, flatLast);\n d = lineDistance + attrDistance[attrDistance.length - 1];\n }\n\n direction(lineA, flatCur, flatLast);\n if (!lineNormal) {\n lineNormal = vec2.create();\n computeNormal(lineNormal, lineA);\n }\n\n if (!started) {\n started = true;\n extrusions(attrPos, out, miters, last, lineNormal, 1);\n }\n\n attrIndex.push(index + 0, index + 2, index + 1);\n\n // no miter, simple segment\n if (!next) {\n // reset normal\n computeNormal(lineNormal, lineA);\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d);\n attrIndex.push(index + 1, index + 2, index + 3);\n count += 2;\n } else {\n const flatNext = aProjectFlat([next[0], next[1]]) as [number, number];\n // get unit dir of next line\n direction(lineB, flatNext, flatCur);\n\n // stores tangent & miter\n let miterLen = computeMiter(\n tangent,\n vec2.fromValues(miter[0], miter[1]),\n lineA,\n lineB,\n 1,\n );\n\n // get orientation\n const flip = vec2.dot(tangent, lineNormal) < 0 ? -1 : 1;\n const bevel = Math.abs(miterLen) > miterLimit;\n\n // 处理前后两条线段重合的情况,这种情况不需要使用任何接头(miter/bevel)。\n // 理论上这种情况下 miterLen = Infinity,本应通过 isFinite(miterLen) 判断,\n // 但是 AMap 投影变换后丢失精度,只能通过一个阈值(1000)判断。\n\n if (Math.abs(miterLen) > 1000) {\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrIndex.push(index + 1, index + 2, index + 3);\n attrIndex.push(index + 2, index + 4, index + 3);\n computeNormal(tmp, lineB);\n vec2.copy(lineNormal, tmp); // store normal for next round\n\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d, d, d);\n\n // the miter is now the normal for our next join\n count += 4;\n continue;\n }\n if (bevel) {\n miterLen = miterLimit;\n\n // next two points in our first segment\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n\n attrIndex.push(index + 1, index + 2, index + 3);\n\n // now add the bevel triangle\n attrIndex.push(\n ...(flip === 1\n ? [index + 2, index + 4, index + 5]\n : [index + 4, index + 5, index + 3]),\n );\n\n computeNormal(tmp, lineB);\n vec2.copy(lineNormal, tmp); // store normal for next round\n\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d, d, d);\n\n // the miter is now the normal for our next join\n count += 4;\n } else {\n // next two points in our first segment\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrIndex.push(index + 1, index + 2, index + 3);\n\n // now add the miter triangles\n addNext(out, miters, lineNormal, miterLen * -flip);\n attrPos.push(cur[0], cur[1], 0);\n attrIndex.push(index + 2, index + 4, index + 3);\n attrIndex.push(index + 4, index + 5, index + 6);\n computeNormal(tmp, lineB);\n vec2.copy(lineNormal, tmp); // store normal for next round\n\n extrusions(attrPos, out, miters, cur, lineNormal, 1);\n attrDistance.push(d, d, d, d, d);\n\n // the miter is now the normal for our next join\n count += 5;\n }\n }\n }\n const pickData = [];\n for (let i = 0; i < miters.length; i++) {\n const totalDistance = attrDistance[attrDistance.length - 1];\n pickData.push(\n attrPos[i * 3],\n attrPos[i * 3 + 1],\n attrPos[i * 3 + 2],\n attrDistance[i], // dash\n miters[i],\n totalDistance, // dash\n );\n }\n return {\n normals: out,\n attrIndex,\n attrPos: pickData, // [x,y,z, distance, miter ,t0tal ]\n };\n}\n// [x,y,z, distance, miter ]\n"],"file":"polylineNormal.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/simpleLine.ts"],"names":["aProjectFlat","vec2","lineA","create","direction","out","a","b","sub","normalize","ExtrudePolyline","complex","positions","indices","startIndex","indexes","points","length","started","totalDistance","total","count","i","last","cur","amt","simpleSegment","index","flatCur","flatLast","segmentDistance","lineSegmentDistance","extrusions","push","point","distanceRadio","currentIndex","b1","a1","dx","dy","Math","sqrt"],"mappings":";;;AAAA,SAASA,YAAT,QAA6B,gBAA7B;AACA,SAASC,IAAT,QAA2B,WAA3B;AAEA,IAAMC,KAAK,GAAGD,IAAI,CAACE,MAAL,EAAd;AAEA,OAAO,SAASC,SAAT,CAAmBC,GAAnB,EAA8BC,CAA9B,EAAuCC,CAAvC,EAAgD;AACrDN,EAAAA,IAAI,CAACO,GAAL,CAASH,GAAT,EAAcC,CAAd,EAAiBC,CAAjB;AACAN,EAAAA,IAAI,CAACQ,SAAL,CAAeJ,GAAf,EAAoBA,GAApB;AACA,SAAOA,GAAP;AACD;;IAEoBK,e;AAanB,6BAAc;AAAA;;AAAA;;AAAA,qCALa,KAKb;;AAAA,2CAHkB,CAGlB;;AAAA,0CAFiB,CAEjB;;AACZ,SAAKC,OAAL,GAAe;AACbC,MAAAA,SAAS,EAAE,EADE;AAEbC,MAAAA,OAAO,EAAE,EAFI;AAGbC,MAAAA,UAAU,EAAE,CAHC;AAIbC,MAAAA,OAAO,EAAE;AAJI,KAAf;AAMD;;;;WAED,uBAAqBC,MAArB,EAAyC;AACvC,UAAML,OAAO,GAAG,KAAKA,OAArB;;AACA,UAAIK,MAAM,CAACC,MAAP,IAAiB,CAArB,EAAwB;AACtB,eAAON,OAAP;AACD;;AAED,WAAKO,OAAL,GAAe,KAAf;AAEA,WAAKC,aAAL,GAAqB,CAArB;AAEA,UAAMC,KAAK,GAAGJ,MAAM,CAACC,MAArB;AACA,UAAII,KAAK,GAAGV,OAAO,CAACG,UAApB;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAApB,EAA2BE,CAAC,EAA5B,EAAgC;AAC9B,YAAMC,IAAI,GAAGP,MAAM,CAACM,CAAC,GAAG,CAAL,CAAnB;AACA,YAAME,GAAG,GAAGR,MAAM,CAACM,CAAD,CAAlB;AACA,YAAMG,GAAG,GAAG,KAAKC,aAAL,CAAmBf,OAAnB,EAA4BU,KAA5B,EAAmCE,IAAnC,EAAyCC,GAAzC,CAAZ;AACAH,QAAAA,KAAK,IAAII,GAAT;AACD;;AAED,WAAK,IAAIH,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGX,OAAO,CAACC,SAAR,CAAkBK,MAAlB,GAA2B,CAA/C,EAAkDK,EAAC,EAAnD,EAAuD;AACrDX,QAAAA,OAAO,CAACC,SAAR,CAAkBU,EAAC,GAAG,CAAJ,GAAQ,CAA1B,IAA+B,KAAKH,aAApC;AACD;;AACD,aAAOR,OAAP;AACD;;;WACD,uBAAsBA,OAAtB,EAAoCgB,KAApC,EAAmDJ,IAAnD,EAA+DC,GAA/D,EAA0E;AACxE,UAAIH,KAAK,GAAG,CAAZ;AACA,UAAMR,OAAO,GAAGF,OAAO,CAACE,OAAxB;AACA,UAAMD,SAAS,GAAGD,OAAO,CAACC,SAA1B;AACA,UAAMgB,OAAO,GAAG5B,YAAY,CAAC,CAACwB,GAAG,CAAC,CAAD,CAAJ,EAASA,GAAG,CAAC,CAAD,CAAZ,CAAD,CAA5B;AACA,UAAMK,QAAQ,GAAG7B,YAAY,CAAC,CAACuB,IAAI,CAAC,CAAD,CAAL,EAAUA,IAAI,CAAC,CAAD,CAAd,CAAD,CAA7B;AAEAnB,MAAAA,SAAS,CAACF,KAAD,EAAQ0B,OAAR,EAAiBC,QAAjB,CAAT;AAEA,UAAMC,eAAe,GAAG,KAAKC,mBAAL,CAAyBH,OAAzB,EAAkCC,QAAlC,CAAxB;AACA,WAAKV,aAAL,IAAsBW,eAAtB;;AAEA,UAAI,CAAC,KAAKZ,OAAV,EAAmB;AACjB,aAAKA,OAAL,GAAe,IAAf;AACA,aAAKc,UAAL,CAAgBpB,SAAhB,EAA2BW,IAA3B,EAAiC,KAAKJ,aAAL,GAAqBW,eAAtD;AACD;;AAED,WAAKE,UAAL,CAAgBpB,SAAhB,EAA2BY,GAA3B,EAAgC,KAAKL,aAArC;AACAN,MAAAA,OAAO,CAACoB,IAAR,CAAaN,KAAK,GAAG,CAArB,EAAwBA,KAAK,GAAG,CAAhC,EAAmCA,KAAK,GAAG,CAA3C;AACAd,MAAAA,OAAO,CAACoB,IAAR,CAAaN,KAAK,GAAG,CAArB,EAAwBA,KAAK,GAAG,CAAhC,EAAmCA,KAAK,GAAG,CAA3C;AACAN,MAAAA,KAAK,IAAI,CAAT;AAEA,aAAOA,KAAP;AACD;;;WACD,oBACET,SADF,EAEEsB,KAFF,EAGEC,aAHF,EAIE;AACAvB,MAAAA,SAAS,CAACqB,IAAV,CACEC,KAAK,CAAC,CAAD,CADP,EAEEA,KAAK,CAAC,CAAD,CAFP,EAGEA,KAAK,CAAC,CAAD,CAAL,GAAW,CAHb,EAIEC,aAJF,EAKE,CALF,EAMED,KAAK,CAAC,CAAD,CAAL,GAAW,CANb;AAQA,WAAKvB,OAAL,CAAaI,OAAb,CAAqBkB,IAArB,CAA0B,KAAKG,YAA/B;AACAxB,MAAAA,SAAS,CAACqB,IAAV,CACEC,KAAK,CAAC,CAAD,CADP,EAEEA,KAAK,CAAC,CAAD,CAFP,EAGEA,KAAK,CAAC,CAAD,CAAL,GAAW,CAHb,EAIEC,aAJF,EAKE,CALF,EAMED,KAAK,CAAC,CAAD,CAAL,GAAW,CANb;AAQA,WAAKvB,OAAL,CAAaI,OAAb,CAAqBkB,IAArB,CAA0B,KAAKG,YAA/B;AACA,WAAKA,YAAL;AACD;;;WACD,6BAA4BC,EAA5B,EAAkDC,EAAlD,EAAwE;AACtE,UAAMC,EAAE,GAAGD,EAAE,CAAC,CAAD,CAAF,GAAQD,EAAE,CAAC,CAAD,CAArB;AACA,UAAMG,EAAE,GAAGF,EAAE,CAAC,CAAD,CAAF,GAAQD,EAAE,CAAC,CAAD,CAArB;AACA,aAAOI,IAAI,CAACC,IAAL,CAAUH,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAAP;AACD;;;;;;SAnGkB9B,e","sourcesContent":["import { aProjectFlat } from '@antv/l7-utils';\nimport { vec2, vec3 } from 'gl-matrix';\n\nconst lineA = vec2.create();\n\nexport function direction(out: vec2, a: vec2, b: vec2) {\n vec2.sub(out, a, b);\n vec2.normalize(out, out);\n return out;\n}\n\nexport default class ExtrudePolyline {\n public complex: {\n positions: number[];\n indices: number[];\n startIndex: number;\n indexes: number[];\n };\n\n private started: boolean = false;\n\n private totalDistance: number = 0;\n private currentIndex: number = 0;\n\n constructor() {\n this.complex = {\n positions: [],\n indices: [],\n startIndex: 0,\n indexes: [],\n };\n }\n\n public simpleExtrude(points: number[][]) {\n const complex = this.complex;\n if (points.length <= 1) {\n return complex;\n }\n\n this.started = false;\n\n this.totalDistance = 0;\n\n const total = points.length;\n let count = complex.startIndex;\n for (let i = 1; i < total; i++) {\n const last = points[i - 1] as vec3;\n const cur = points[i] as vec3;\n const amt = this.simpleSegment(complex, count, last, cur);\n count += amt;\n }\n\n for (let i = 0; i < complex.positions.length / 6; i++) {\n complex.positions[i * 6 + 5] = this.totalDistance;\n }\n return complex;\n }\n private simpleSegment(complex: any, index: number, last: vec3, cur: vec3) {\n let count = 0;\n const indices = complex.indices;\n const positions = complex.positions;\n const flatCur = aProjectFlat([cur[0], cur[1]]) as [number, number];\n const flatLast = aProjectFlat([last[0], last[1]]) as [number, number];\n\n direction(lineA, flatCur, flatLast);\n\n const segmentDistance = this.lineSegmentDistance(flatCur, flatLast);\n this.totalDistance += segmentDistance;\n\n if (!this.started) {\n this.started = true;\n this.extrusions(positions, last, this.totalDistance - segmentDistance);\n }\n\n this.extrusions(positions, cur, this.totalDistance);\n indices.push(index + 0, index + 1, index + 2);\n indices.push(index + 2, index + 1, index + 3);\n count += 2;\n\n return count;\n }\n private extrusions(\n positions: number[],\n point: vec3, // 顶点\n distanceRadio: number,\n ) {\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n 0,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n positions.push(\n point[0],\n point[1],\n point[2] | 0,\n distanceRadio,\n 0,\n point[2] | 0,\n );\n this.complex.indexes.push(this.currentIndex);\n this.currentIndex++;\n }\n private lineSegmentDistance(b1: [number, number], a1: [number, number]) {\n const dx = a1[0] - b1[0];\n const dy = a1[1] - b1[1];\n return Math.sqrt(dx * dx + dy * dy);\n }\n}\n"],"file":"simpleLine.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/symbol-layout.ts"],"names":["getAnchorAlignment","anchor","horizontalAlign","verticalAlign","justifyLine","positionedGlyphs","glyphMap","start","end","justify","lastPositionedGlyph","glyph","lastAdvance","advance","scale","lineIndent","x","j","align","maxLineLength","lineHeight","lineCount","shiftX","shiftY","glyphs","y","shapeLines","shaping","lines","textAnchor","textJustify","spacing","yOffset","lineStartIndex","length","forEach","line","split","char","baselineOffset","push","vertical","metrics","lineLength","Math","max","height","top","bottom","left","right","shapeIconFont","iconfonts","iconfont","shapeText","text","translate","isIconFont","getGlyphQuads","textOffset","alongLine","quads","positionedGlyph","rect","rectBuffer","halfAdvance","glyphOffset","builtInOffset","x1","y1","x2","width","y2","tl","tr","bl","br","tex"],"mappings":"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","sourcesContent":["import { type } from 'os';\n\ninterface IPoint {\n x: number;\n y: number;\n}\nexport type anchorType =\n | 'right'\n | 'top-right'\n | 'left'\n | 'bottom-right'\n | 'left'\n | 'top-left'\n | 'bottom-left'\n | 'bottom'\n | 'bottom-right'\n | 'bottom-left'\n | 'top'\n | 'top-right'\n | 'top-left'\n | 'center';\nexport interface IGlyphQuad {\n tr: IPoint;\n tl: IPoint;\n bl: IPoint;\n br: IPoint;\n tex: {\n x: number;\n y: number;\n height: number;\n width: number;\n advance: number;\n };\n glyphOffset: [number, number];\n}\n\n/**\n * 返回文本相对锚点位置\n * @param {string} anchor 锚点位置\n * @return {alignment} alignment\n */\nfunction getAnchorAlignment(anchor: anchorType) {\n let horizontalAlign = 0.5;\n let verticalAlign = 0.5;\n switch (anchor) {\n case 'right':\n case 'top-right':\n case 'bottom-right':\n horizontalAlign = 1;\n break;\n case 'left':\n case 'top-left':\n case 'bottom-left':\n horizontalAlign = 0;\n break;\n default:\n horizontalAlign = 0.5;\n }\n\n switch (anchor) {\n case 'bottom':\n case 'bottom-right':\n case 'bottom-left':\n verticalAlign = 1;\n break;\n case 'top':\n case 'top-right':\n case 'top-left':\n verticalAlign = 0;\n break;\n default:\n verticalAlign = 0.5;\n }\n\n return { horizontalAlign, verticalAlign };\n}\n\n// justify right = 1, left = 0, center = 0.5\nfunction justifyLine(\n positionedGlyphs: any,\n glyphMap: any,\n start: number,\n end: number,\n justify: number,\n) {\n if (!justify) {\n return;\n }\n\n const lastPositionedGlyph = positionedGlyphs[end];\n const glyph = lastPositionedGlyph.glyph;\n if (glyph) {\n const lastAdvance = glyphMap[glyph].advance * lastPositionedGlyph.scale;\n const lineIndent = (positionedGlyphs[end].x + lastAdvance) * justify;\n\n for (let j = start; j <= end; j++) {\n positionedGlyphs[j].x -= lineIndent;\n }\n }\n}\n\n// justify right=1 left=0 center=0.5\n// horizontalAlign right=1 left=0 center=0.5\n// verticalAlign right=1 left=0 center=0.5\nfunction align(\n positionedGlyphs: any[],\n justify: number,\n horizontalAlign: number,\n verticalAlign: number,\n maxLineLength: number,\n lineHeight: number,\n lineCount: number,\n) {\n const shiftX = (justify - horizontalAlign) * maxLineLength;\n const shiftY = (-verticalAlign * lineCount + 0.5) * lineHeight;\n\n for (const glyphs of positionedGlyphs) {\n glyphs.x += shiftX;\n glyphs.y += shiftY;\n }\n}\n\nfunction shapeLines(\n shaping: any,\n glyphMap: any,\n lines: any[],\n lineHeight: number,\n textAnchor: anchorType,\n textJustify: string,\n spacing: number,\n) {\n // buffer 为 4\n const yOffset = -8;\n\n let x = 0;\n let y = yOffset;\n\n let maxLineLength = 0;\n const positionedGlyphs = shaping.positionedGlyphs;\n\n const justify =\n textJustify === 'right' ? 1 : textJustify === 'left' ? 0 : 0.5;\n\n const lineStartIndex = positionedGlyphs.length;\n lines.forEach((line) => {\n line.split('').forEach((char: string) => {\n const glyph = glyphMap[char];\n const baselineOffset = 0;\n\n if (glyph) {\n positionedGlyphs.push({\n glyph: char,\n x,\n y: y + baselineOffset,\n vertical: false, // TODO:目前只支持水平方向\n scale: 1,\n metrics: glyph,\n });\n x += glyph.advance + spacing;\n }\n });\n\n // 左右对齐\n if (positionedGlyphs.length !== lineStartIndex) {\n const lineLength = x - spacing;\n maxLineLength = Math.max(lineLength, maxLineLength);\n justifyLine(\n positionedGlyphs,\n glyphMap,\n lineStartIndex,\n positionedGlyphs.length - 1,\n justify,\n );\n }\n\n x = 0;\n y -= lineHeight + 5;\n });\n\n const { horizontalAlign, verticalAlign } = getAnchorAlignment(textAnchor);\n align(\n positionedGlyphs,\n justify,\n horizontalAlign,\n verticalAlign,\n maxLineLength,\n lineHeight,\n lines.length,\n );\n\n // 计算包围盒\n const height = y - yOffset;\n\n shaping.top += -verticalAlign * height;\n shaping.bottom = shaping.top - height;\n shaping.left += -horizontalAlign * maxLineLength;\n shaping.right = shaping.left + maxLineLength;\n}\n\nfunction shapeIconFont(\n shaping: any,\n glyphMap: any,\n iconfonts: any[],\n lineHeight: number,\n textAnchor: anchorType,\n textJustify: string,\n spacing: number,\n) {\n // buffer 为 4\n const yOffset = -8;\n\n let x = 0;\n let y = yOffset;\n\n let maxLineLength = 0;\n const positionedGlyphs = shaping.positionedGlyphs;\n\n const justify =\n textJustify === 'right' ? 1 : textJustify === 'left' ? 0 : 0.5;\n\n const lineStartIndex = positionedGlyphs.length;\n iconfonts.forEach((iconfont) => {\n const glyph = glyphMap[iconfont];\n const baselineOffset = 0;\n\n if (glyph) {\n positionedGlyphs.push({\n glyph: iconfont,\n // x,\n /**\n * iconfont\n * 在计算大小的时候计算的是 unicode 字符 如 &#xe6d4;\n * 在布局计算 icon 位置的时候应该始终保持居中(且 icon 只占一个字符的位置)\n */\n x: glyph.advance / 2,\n y: y + baselineOffset,\n vertical: false, // TODO:目前只支持水平方向\n scale: 1,\n metrics: glyph,\n });\n x += glyph.advance + spacing;\n }\n\n // 左右对齐\n if (positionedGlyphs.length !== lineStartIndex) {\n const lineLength = x - spacing;\n maxLineLength = Math.max(lineLength, maxLineLength);\n justifyLine(\n positionedGlyphs,\n glyphMap,\n lineStartIndex,\n positionedGlyphs.length - 1,\n justify,\n );\n }\n\n x = 0;\n y -= lineHeight + 5;\n });\n\n const { horizontalAlign, verticalAlign } = getAnchorAlignment(textAnchor);\n align(\n positionedGlyphs,\n justify,\n horizontalAlign,\n verticalAlign,\n maxLineLength,\n lineHeight,\n iconfonts.length,\n );\n\n // 计算包围盒\n const height = y - yOffset;\n\n shaping.top += -verticalAlign * height;\n shaping.bottom = shaping.top - height;\n shaping.left += -horizontalAlign * maxLineLength;\n shaping.right = shaping.left + maxLineLength;\n}\n\n/**\n * 计算文本中每个独立字符相对锚点的位置\n *\n * @param {string} text 原始文本\n * @param {*} glyphs mapping\n * @param {number} lineHeight 行高\n * @param {string} textAnchor 文本相对于锚点的位置\n * @param {string} textJustify 左右对齐\n * @param {number} spacing 字符间距\n * @param {[number, number]} translate 文本水平 & 垂直偏移量\n * @param {[boolean]} isIconFont 是否是 iconfont\n * @return {boolean|shaping} 每个字符相对于锚点的位置\n */\nexport function shapeText(\n text: string,\n glyphs: any,\n lineHeight: number,\n textAnchor: anchorType,\n textJustify: string,\n spacing: number,\n translate: [number, number] = [0, 0],\n isIconFont: boolean,\n) {\n // TODO:处理换行\n const lines = text.split('\\n');\n\n const positionedGlyphs: any[] = [];\n const shaping = {\n positionedGlyphs,\n top: translate[1],\n bottom: translate[1],\n left: translate[0],\n right: translate[0],\n lineCount: lines.length,\n text,\n };\n isIconFont\n ? shapeIconFont(\n shaping,\n glyphs,\n lines,\n lineHeight,\n textAnchor,\n textJustify,\n spacing,\n )\n : shapeLines(\n shaping,\n glyphs,\n lines,\n lineHeight,\n textAnchor,\n textJustify,\n spacing,\n );\n if (!positionedGlyphs.length) {\n return false;\n }\n\n return shaping;\n}\n\nexport function getGlyphQuads(\n shaping: any,\n textOffset: [number, number] = [0, 0],\n alongLine: boolean,\n): IGlyphQuad[] {\n const { positionedGlyphs = [] } = shaping;\n const quads: IGlyphQuad[] = [];\n\n for (const positionedGlyph of positionedGlyphs) {\n const rect = positionedGlyph.metrics;\n\n // The rects have an addditional buffer that is not included in their size.\n const rectBuffer = 4;\n\n const halfAdvance = (rect.advance * positionedGlyph.scale) / 2;\n\n const glyphOffset: [number, number] = alongLine\n ? [positionedGlyph.x + halfAdvance, positionedGlyph.y]\n : [0, 0];\n\n const builtInOffset = alongLine\n ? [0, 0]\n : [\n positionedGlyph.x + halfAdvance + textOffset[0],\n positionedGlyph.y + textOffset[1],\n ];\n\n const x1 =\n (0 - rectBuffer) * positionedGlyph.scale - halfAdvance + builtInOffset[0];\n const y1 = (0 - rectBuffer) * positionedGlyph.scale + builtInOffset[1];\n const x2 = x1 + rect.width * positionedGlyph.scale;\n const y2 = y1 + rect.height * positionedGlyph.scale;\n\n const tl = { x: x1, y: y1 };\n const tr = { x: x2, y: y1 };\n const bl = { x: x1, y: y2 };\n const br = { x: x2, y: y2 };\n\n // TODO:处理字符旋转的情况\n\n quads.push({ tl, tr, bl, br, tex: rect, glyphOffset });\n }\n\n return quads;\n}\n"],"file":"symbol-layout.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/updateShape.ts"],"names":["shapeUpdateList","updateShape","layer","lastShape","currentShape","type","dataState","dataSourceNeedUpdate","map","shapes","includes"],"mappings":"AAGA,IAAMA,eAAe,GAAG,CAEtB,CAAC,QAAD,EAAW,UAAX,CAFsB,EAGtB,CAAC,QAAD,EAAW,UAAX,CAHsB,EAItB,CAAC,UAAD,EAAa,UAAb,CAJsB,EAKtB,CAAC,UAAD,EAAa,UAAb,CALsB,EAMtB,CAAC,SAAD,EAAY,UAAZ,CANsB,EAOtB,CAAC,SAAD,EAAY,UAAZ,CAPsB,EAQtB,CAAC,UAAD,EAAa,UAAb,CARsB,EAStB,CAAC,SAAD,EAAY,UAAZ,CATsB,EAUtB,CAAC,QAAD,EAAW,UAAX,CAVsB,CAAxB;AAYA,OAAO,SAASC,WAAT,CACLC,KADK,EAELC,SAFK,EAGLC,YAHK,EAIC;AACN,MACE,OAAOD,SAAP,KAAqB,QAArB,IACA,OAAOC,YAAP,KAAwB,QADxB,IAEAD,SAAS,KAAKC,YAHhB,EAIE;AACA,QAAIF,KAAK,CAACG,IAAN,KAAe,YAAnB,EAAiC;AAC/BH,MAAAA,KAAK,CAACI,SAAN,CAAgBC,oBAAhB,GAAuC,IAAvC;AACA;AACD;;AAEDP,IAAAA,eAAe,CAACQ,GAAhB,CAAoB,UAACC,MAAD,EAAY;AAC9B,UAAIA,MAAM,CAACC,QAAP,CAAgBP,SAAhB,KAA8BM,MAAM,CAACC,QAAP,CAAgBN,YAAhB,CAAlC,EAAiE;AAE/DF,QAAAA,KAAK,CAACI,SAAN,CAAgBC,oBAAhB,GAAuC,IAAvC;AACA;AACD;AACF,KAND;AAOD;AACF","sourcesContent":["import { ILayer, StyleAttributeField } from '@antv/l7-core';\n// TODO: shapeUpdateList 存储一系列的 shape 类型\n// 当这一系列的 shape 相互切换的时候需要重构 layer 的 model (顶点数据集)\nconst shapeUpdateList = [\n // PointLayer\n ['circle', 'cylinder'],\n ['square', 'cylinder'],\n ['triangle', 'cylinder'],\n ['pentagon', 'cylinder'],\n ['hexagon', 'cylinder'],\n ['octogon', 'cylinder'],\n ['hexagram', 'cylinder'],\n ['rhombus', 'cylinder'],\n ['vesica', 'cylinder'],\n];\nexport function updateShape(\n layer: ILayer,\n lastShape: StyleAttributeField | undefined,\n currentShape: StyleAttributeField | undefined,\n): void {\n if (\n typeof lastShape === 'string' &&\n typeof currentShape === 'string' &&\n lastShape !== currentShape\n ) {\n if (layer.type === 'PointLayer') {\n layer.dataState.dataSourceNeedUpdate = true;\n return;\n }\n\n shapeUpdateList.map((shapes) => {\n if (shapes.includes(lastShape) && shapes.includes(currentShape)) {\n // TODO: dataSourceNeedUpdate 借用数据更新时更新 layer model 的工作流\n layer.dataState.dataSourceNeedUpdate = true;\n return;\n }\n });\n }\n}\n"],"file":"updateShape.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/wind/index.ts"],"names":["BaseLayer","WindModels","WindLayer","modelType","getModelType","layerModel","initModels","models","renderLayers","buildModels","render","properties","opacity","type","minimum","maximum","defaultConfig","wind"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AAEA,OAAOC,UAAP,MAA0C,UAA1C;;IACqBC,S;;;;;;;;;;;;;;;;2DACG,W;;;;;;;WACtB,uBAAqB;AAAA;;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIJ,UAAU,CAACE,SAAD,CAAd,CAA0B,IAA1B,CAAlB;AACA,WAAKE,UAAL,CAAgBC,UAAhB,CAA2B,UAACC,MAAD,EAAY;AACrC,QAAA,MAAI,CAACA,MAAL,GAAcA,MAAd;;AACA,QAAA,MAAI,CAACC,YAAL;AACD,OAHD;AAID;;;WACD,yBAAuB;AAAA;;AACrB,WAAKH,UAAL,CAAgBI,WAAhB,CAA4B,UAACF,MAAD;AAAA,eAAa,MAAI,CAACA,MAAL,GAAcA,MAA3B;AAAA,OAA5B;AACD;;;WAED,wBAAsB;AACpB,UAAI,KAAKF,UAAT,EAAqB;AACnB,aAAKA,UAAL,CAAgBK,MAAhB;AACD;;AAED,aAAO,IAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKT,YAAL,EAAb;AACA,UAAMY,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE;AADc,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;;EA1CoCb,S;;SAAlBE,S","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { IWindLayerStyleOptions } from '../core/interface';\nimport WindModels, { WindModelType } from './models';\nexport default class WindLayer extends BaseLayer<IWindLayerStyleOptions> {\n public type: string = 'WindLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new WindModels[modelType](this);\n this.layerModel.initModels((models) => {\n this.models = models;\n this.renderLayers();\n });\n }\n public rebuildModels() {\n this.layerModel.buildModels((models) => (this.models = models));\n }\n\n public renderModels() {\n if (this.layerModel) {\n this.layerModel.render(); // 独立的渲染流程\n }\n\n return this;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n wind: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): WindModelType {\n return 'wind';\n }\n}\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/wind/models/index.ts"],"names":["WindModel","WindModels","wind"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,QAAtB;AAGA,IAAMC,UAA2C,GAAG;AAClDC,EAAAA,IAAI,EAAEF;AAD4C,CAApD;AAGA,eAAeC,UAAf","sourcesContent":["import WindModel from './wind';\nexport type WindModelType = 'wind';\n\nconst WindModels: { [key in WindModelType]: any } = {\n wind: WindModel,\n};\nexport default WindModels;\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/wind/models/utils.ts"],"names":["createProgram","gl","vshader","fshader","vertexShader","loadShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","program","attachShader","linkProgram","linked","getProgramParameter","LINK_STATUS","error","getProgramInfoLog","console","warn","deleteProgram","deleteShader","numAttributes","ACTIVE_ATTRIBUTES","i","attribute","getActiveAttrib","name","getAttribLocation","numUniforms","ACTIVE_UNIFORMS","i$1","uniform","getActiveUniform","getUniformLocation","type","source","shader","createShader","shaderSource","compileShader","compiled","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","createTexture","filter","data","width","height","texture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","texImage2D","RGBA","UNSIGNED_BYTE","createDataTexture","unit","activeTexture","TEXTURE0","createBuffer","buffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","bindAttriBuffer","attrName","vertices","count","attr","vertexAttribPointer","FLOAT","enableVertexAttribArray","bindAttriIndicesBuffer","indices","ELEMENT_ARRAY_BUFFER","bindUnifrom","unifromName","vec","setUnifrom","location","uniform1f","uniform2fv","uniform3fv","uniform4fv","uniform1i","uniformMatrix4fv","initFramebuffer","drawingBufferWidth","drawingBufferHeight","OFFER_SCREEN_WIDTH","OFFER_SCREEN_HEIGHT","FRAMEBUFFER","createFramebuffer","bindFramebuffer","depthbuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT16","framebufferRenderbuffer","DEPTH_ATTACHMENT","NEAREST","framebufferTexture2D","COLOR_ATTACHMENT0"],"mappings":"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","sourcesContent":["export function createProgram(\n gl: WebGLRenderingContext,\n vshader: string,\n fshader: string,\n) {\n // Create shader object\n const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); // 创建顶点着色器对象\n const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); // 创建片元着色器对象\n if (!vertexShader || !fragmentShader) {\n return null;\n }\n\n // Create a program object\n const program = gl.createProgram(); // 创建程序对象\n if (!program) {\n return null;\n }\n\n // Attach the shader objects\n gl.attachShader(program, vertexShader); // 绑定着色器对象\n gl.attachShader(program, fragmentShader);\n\n // Link the program object\n gl.linkProgram(program); // 链接着色器对象\n\n // Check the result of linking\n const linked = gl.getProgramParameter(program, gl.LINK_STATUS); // 判断着色器对象是否链接成功\n if (!linked) {\n const error = gl.getProgramInfoLog(program);\n console.warn('Failed to link program: ' + error);\n gl.deleteProgram(program);\n gl.deleteShader(fragmentShader);\n gl.deleteShader(vertexShader);\n return null;\n }\n\n const numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < numAttributes; i++) {\n const attribute = gl.getActiveAttrib(program, i) as WebGLActiveInfo;\n // @ts-ignore\n program[attribute.name] = gl.getAttribLocation(program, attribute.name);\n }\n const numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i$1 = 0; i$1 < numUniforms; i$1++) {\n const uniform = gl.getActiveUniform(program, i$1) as WebGLActiveInfo;\n // @ts-ignore\n program[uniform.name] = gl.getUniformLocation(program, uniform.name);\n }\n\n // @ts-ignore\n program.vertexShader = vertexShader;\n // @ts-ignore\n program.fragmentShader = fragmentShader;\n\n return program;\n}\n\nexport function loadShader(\n gl: WebGLRenderingContext,\n type: number,\n source: string,\n) {\n // Create shader object\n const shader = gl.createShader(type); // 生成着色器对象\n if (shader == null) {\n console.warn('unable to create shader');\n return null;\n }\n\n // Set the shader program\n gl.shaderSource(shader, source); // 载入着色器\n\n // Compile the shader\n gl.compileShader(shader); // 编译着色器代码\n\n // Check the result of compilation\n const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); // 判断着色器对象是否生成成功\n // gl.SHADER_TYPE、gl.DELETE_STATUS、gl.COMPILE_STATUS\n if (!compiled) {\n const error = gl.getShaderInfoLog(shader);\n console.warn('Failed to compile shader: ' + error);\n gl.deleteShader(shader);\n return null;\n }\n\n return shader;\n}\n\nexport function createTexture(\n gl: WebGLRenderingContext,\n filter: any,\n data: any,\n width: number,\n height: number,\n) {\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n data,\n );\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n return texture;\n}\n\nexport function createDataTexture(\n gl: WebGLRenderingContext,\n filter: any,\n data: any,\n) {\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, data);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return texture;\n}\n\nexport function bindTexture(\n gl: WebGLRenderingContext,\n texture: WebGLTexture,\n unit: number,\n) {\n gl.activeTexture(gl.TEXTURE0 + unit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n}\n\nexport function createBuffer(gl: WebGLRenderingContext, data: Float32Array) {\n const buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);\n return buffer;\n}\n\nexport function bindAttriBuffer(\n gl: WebGLRenderingContext,\n attrName: string,\n vertices: number,\n count: number,\n program: WebGLProgram,\n) {\n const buffer = gl.createBuffer();\n if (!buffer) {\n console.warn('failed create vertex buffer');\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer); // 将缓冲区对象绑定到目标\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // 向缓冲区对象中写入数据\n\n const attr = gl.getAttribLocation(program, attrName);\n gl.vertexAttribPointer(attr, count, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(attr);\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n return { buffer, attr, count };\n}\n\nexport function bindAttriIndicesBuffer(\n gl: WebGLRenderingContext,\n indices: Uint8Array,\n): WebGLBuffer {\n const buffer = gl.createBuffer();\n if (!buffer) {\n console.warn('failed create vertex buffer');\n } else {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);\n }\n\n return buffer as WebGLBuffer;\n}\n\nexport function bindUnifrom(\n gl: WebGLRenderingContext,\n unifromName: string,\n data: number | Float32List,\n program: WebGLProgram,\n vec: string,\n) {\n const uniform = gl.getUniformLocation(program, unifromName);\n if (uniform === null || uniform < 0) {\n console.warn('无法获取 uniform 变量的存储位置');\n } else {\n setUnifrom(gl, uniform, data, vec);\n }\n return uniform;\n}\n\nexport function setUnifrom(\n gl: WebGLRenderingContext,\n location: WebGLUniformLocation,\n data: number | Float32List,\n vec: string,\n) {\n switch (vec) {\n case 'float':\n gl.uniform1f(location, data as number);\n break;\n case 'vec2':\n gl.uniform2fv(location, data as Float32List);\n break;\n case 'vec3':\n gl.uniform3fv(location, data as Float32List);\n break;\n case 'vec4':\n gl.uniform4fv(location, data as Float32List);\n break;\n case 'bool':\n gl.uniform1i(location, data as number); // 1 - true 0 - false\n break;\n case 'sampler2d':\n break;\n case 'mat4':\n gl.uniformMatrix4fv(location, false, data as Float32List);\n break;\n }\n}\n\nexport function initFramebuffer(gl: WebGLRenderingContext) {\n const { drawingBufferWidth, drawingBufferHeight } = gl;\n\n const OFFER_SCREEN_WIDTH = drawingBufferWidth;\n const OFFER_SCREEN_HEIGHT = drawingBufferHeight;\n\n const FRAMEBUFFER = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, FRAMEBUFFER);\n const depthbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n OFFER_SCREEN_WIDTH,\n OFFER_SCREEN_HEIGHT,\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n depthbuffer,\n );\n\n const texture = gl.createTexture();\n // @ts-ignore\n FRAMEBUFFER.texture = texture;\n // @ts-ignore\n FRAMEBUFFER.width = OFFER_SCREEN_WIDTH;\n // @ts-ignore\n FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;\n\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n OFFER_SCREEN_WIDTH,\n OFFER_SCREEN_HEIGHT,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null,\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n gl.bindTexture(gl.TEXTURE_2D, null);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { FRAMEBUFFER, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT };\n}\n"],"file":"utils.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/wind/models/wind.ts"],"names":["AttributeType","gl","FrequencyController","BaseModel","RasterImageTriangulation","Wind","defaultRampColors","WindModel","frequency","run","drawWind","drawColorMode","Error","callbackModel","layer","getLayerConfig","uMin","uMax","vMin","vMax","fadeOpacity","speedFactor","dropRate","dropRateBump","rampColors","sizeScale","mask","maskInside","createTexture2D","rendererService","source","getSource","texture","height","width","cacheZoom","Math","floor","mapService","getZoom","glContext","getGLContext","imageCoords","data","dataArray","coordinates","images","then","imageData","getZoomScale","getWindSize","imageWidth","imageHeight","options","wind","setWind","image","destroy","layerService","updateLayerRenderList","renderLayers","buildLayerModel","moduleName","vertexShader","WindVert","fragmentShader","WindFrag","triangulation","primitive","TRIANGLES","depth","enable","blend","getBlend","model","colorModel","catch","err","console","warn","p1","lngLatToPixel","p2","min","x","y","initModels","properties","opacity","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","numParticles","newNumParticles","currentZoom","zoomScale","reSize","updateWindDir","updateParticelNum","updateColorRampTexture","draw","d","w","h","setBaseState","masks","map","m","hooks","beforeRenderData","call","beforeRender","render","afterRender","uniforms","u_opacity","u_texture"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n Point,\n} from '@antv/l7-core';\nimport { FrequencyController, getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IWindLayerStyleOptions } from '../../core/interface';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport WindFrag from '../shaders/wind_frag.glsl';\nimport WindVert from '../shaders/wind_vert.glsl';\nimport { IWind, IWindProps, Wind } from './windRender';\n\nconst defaultRampColors = {\n 0.0: '#3288bd',\n 0.1: '#66c2a5',\n 0.2: '#abdda4',\n 0.3: '#e6f598',\n 0.4: '#fee08b',\n 0.5: '#fdae61',\n 0.6: '#f46d43',\n 1.0: '#d53e4f',\n};\n\nexport default class WindModel extends BaseModel {\n protected texture: ITexture2D;\n private colorModel: IModel;\n private wind: IWind;\n private imageCoords: [Point, Point];\n private sizeScale: number = 0.5;\n // https://mapbox.github.io/webgl-wind/demo/\n // source: 'http://nomads.ncep.noaa.gov',\n\n private frequency = new FrequencyController(7.2);\n private cacheZoom: number;\n\n public render() {\n // Tip: 控制风场的平均更新频率\n this.frequency.run(() => {\n this.drawWind();\n });\n this.drawColorMode();\n }\n\n public getUninforms(): IModelUniform {\n throw new Error('Method not implemented.');\n }\n\n public initModels(callbackModel: (models: IModel[]) => void) {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n // mask\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n const { createTexture2D } = this.rendererService;\n const source = this.layer.getSource();\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n this.cacheZoom = Math.floor(this.mapService.getZoom());\n\n const glContext = this.rendererService.getGLContext();\n this.imageCoords = source.data?.dataArray[0].coordinates as [Point, Point];\n\n source.data?.images?.then((imageData: HTMLImageElement[]) => {\n this.sizeScale = sizeScale * this.getZoomScale();\n\n const { imageWidth, imageHeight } = this.getWindSize();\n\n const options: IWindProps = {\n glContext,\n imageWidth,\n imageHeight,\n fadeOpacity,\n speedFactor,\n dropRate,\n dropRateBump,\n rampColors,\n };\n\n this.wind = new Wind(options);\n\n // imageData[0] 风场图\n this.wind.setWind({\n uMin,\n uMax,\n vMin,\n vMax,\n image: imageData[0],\n });\n this.texture?.destroy();\n\n this.texture = createTexture2D({\n width: imageWidth,\n height: imageHeight,\n });\n\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n this.layer\n .buildLayerModel({\n moduleName: 'wind',\n vertexShader: WindVert,\n fragmentShader: WindFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n })\n .then((model) => {\n this.colorModel = model;\n callbackModel([model]);\n })\n .catch((err) => {\n console.warn(err);\n callbackModel([]);\n });\n }\n\n public getWindSize() {\n const p1 = this.mapService.lngLatToPixel(this.imageCoords[0]);\n const p2 = this.mapService.lngLatToPixel(this.imageCoords[1]);\n\n const imageWidth = Math.min(\n Math.floor((p2.x - p1.x) * this.sizeScale),\n 2048,\n );\n const imageHeight = Math.min(\n Math.floor((p1.y - p2.y) * this.sizeScale),\n 2048,\n );\n return { imageWidth, imageHeight };\n }\n\n public buildModels(callbackModel: (models: IModel[]) => void) {\n this.initModels(callbackModel);\n }\n\n public clearModels(): void {\n this.texture?.destroy();\n this.wind?.destroy();\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n\n private getZoomScale() {\n return Math.min(((this.cacheZoom + 4) / 30) * 2, 2);\n }\n\n private drawWind() {\n if (this.wind) {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n numParticles = 65535,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n let newNumParticles = numParticles;\n const currentZoom = Math.floor(this.mapService.getZoom());\n if (\n (typeof sizeScale === 'number' && sizeScale !== this.sizeScale) ||\n currentZoom !== this.cacheZoom\n ) {\n const zoomScale = this.getZoomScale();\n this.sizeScale = sizeScale;\n newNumParticles *= zoomScale;\n const { imageWidth, imageHeight } = this.getWindSize();\n this.wind.reSize(imageWidth, imageHeight);\n this.cacheZoom = currentZoom;\n }\n\n this.wind.updateWindDir(uMin, uMax, vMin, vMax);\n\n this.wind.updateParticelNum(newNumParticles);\n\n this.wind.updateColorRampTexture(rampColors);\n\n this.wind.fadeOpacity = fadeOpacity;\n this.wind.speedFactor = speedFactor;\n this.wind.dropRate = dropRate;\n this.wind.dropRateBump = dropRateBump;\n\n const { d, w, h } = this.wind.draw();\n // TODO: 恢复 L7 渲染流程中 gl 状态\n this.rendererService.setBaseState();\n this.texture.update({\n data: d,\n width: w,\n height: h,\n });\n }\n }\n\n private drawColorMode() {\n const { opacity } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n\n this.layer.masks.map((m) => {\n m.hooks.beforeRenderData.call();\n m.hooks.beforeRender.call();\n m.render();\n m.hooks.afterRender.call();\n });\n\n this.colorModel?.draw({\n uniforms: {\n u_opacity: opacity || 1.0,\n u_texture: this.texture,\n },\n });\n }\n}\n"],"file":"wind.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/wind/models/windRender.ts"],"names":["glUtils","drawFrag","drawVert","fullScreenFrag","fullScreenVert","updateFrag","updateVert","getColorRamp","colors","canvas","document","createElement","ctx","getContext","width","height","gradient","createLinearGradient","Object","keys","stop","addColorStop","fillStyle","fillRect","Uint8Array","getImageData","data","bindAttribute","gl","buffer","attribute","numComponents","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","bindFramebuffer","framebuffer","texture","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","TEXTURE_2D","Wind","options","glContext","imageWidth","imageHeight","fadeOpacity","speedFactor","dropRate","dropRateBump","rampColors","init","drawProgram","createProgram","fullScreenProgram","updateProgram","quadBuffer","createBuffer","Float32Array","createFramebuffer","colorRampTexture","createTexture","LINEAR","emptyPixels","backgroundTexture","NEAREST","screenTexture","particleRes","particleStateResolution","Math","ceil","sqrt","numParticles","numParticlesSize","particleState","i","length","floor","random","particleStateTexture0","particleStateTexture1","particleIndices","i$1","particleIndexBuffer","windData","windTexture","createDataTexture","image","num","uMin","uMax","vMin","vMax","isColorChanged","deleteTexture","item","key","Number","bindTexture","drawScreen","updateParticles","d","pixels","w","h","viewport","disable","BLEND","drawFullTexture","drawParticles","readPixels","RGBA","UNSIGNED_BYTE","temp","opacity","program","useProgram","a_pos","uniform1i","u_screen","uniform1f","u_opacity","drawArrays","TRIANGLES","a_index","u_wind","u_particles","u_color_ramp","u_particles_res","uniform2f","u_wind_min","u_wind_max","POINTS","u_rand_seed","u_wind_res","u_speed_factor","u_drop_rate","u_drop_rate_bump","deleteBuffer","deleteFramebuffer","deleteShader","vertexShader","fragmentShader","deleteProgram"],"mappings":"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","sourcesContent":["import * as glUtils from './utils';\nimport {\n drawFrag,\n drawVert,\n fullScreenFrag,\n fullScreenVert,\n updateFrag,\n updateVert,\n} from './windShader';\n\nfunction getColorRamp(colors: { [key: number]: string }) {\n let canvas = document.createElement('canvas') as HTMLCanvasElement;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n\n canvas.width = 256;\n canvas.height = 1;\n\n const gradient = ctx.createLinearGradient(0, 0, 256, 0);\n for (const stop of Object.keys(colors)) {\n gradient.addColorStop(+stop, colors[+stop]);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, 256, 1);\n\n // @ts-ignore dispose canvas element\n canvas = null;\n\n return new Uint8Array(ctx.getImageData(0, 0, 256, 1).data);\n}\n\nfunction bindAttribute(\n gl: WebGLRenderingContext,\n buffer: any,\n attribute: any,\n numComponents: any,\n) {\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attribute);\n gl.vertexAttribPointer(attribute, numComponents, gl.FLOAT, false, 0, 0);\n}\n\nfunction bindFramebuffer(\n gl: WebGLRenderingContext,\n framebuffer: any,\n texture: any,\n) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n if (texture) {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n }\n}\n\nexport interface IWindData {\n uMin: number;\n uMax: number;\n vMin: number;\n vMax: number;\n image: HTMLImageElement;\n}\n\nexport interface IWind {\n width: number;\n height: number;\n\n fadeOpacity: number;\n speedFactor: number;\n dropRate: number;\n dropRateBump: number;\n\n setWind: (windData: IWindData) => void;\n draw: () => { d: Uint8Array; w: number; h: number };\n updateParticelNum: (num: number) => void;\n updateWindDir: (\n uMin: number,\n uMax: number,\n vMin: number,\n vMax: number,\n ) => void;\n updateColorRampTexture: (rampColors: { [key: number]: string }) => void;\n\n reSize: (width: number, height: number) => void;\n destroy: () => void;\n}\n\nexport interface IWindProps {\n glContext: WebGLRenderingContext;\n imageWidth: number;\n imageHeight: number;\n fadeOpacity: number;\n speedFactor: number;\n dropRate: number;\n dropRateBump: number;\n rampColors: { [key: number]: string };\n}\n\nexport class Wind {\n public width: number = 512;\n public height: number = 512;\n\n public pixels: Uint8Array;\n\n public fadeOpacity: number;\n public speedFactor: number;\n public dropRate: number;\n public dropRateBump: number;\n private gl: WebGLRenderingContext;\n private drawProgram: WebGLProgram;\n private fullScreenProgram: WebGLProgram;\n private updateProgram: WebGLProgram;\n\n private rampColors: { [key: number]: string };\n\n private numParticles: number = 65536;\n private numParticlesSize: number;\n private particleStateResolution: number;\n\n private quadBuffer: WebGLBuffer | null;\n private particleIndexBuffer: WebGLBuffer | null;\n\n private framebuffer: WebGLFramebuffer | null;\n\n private colorRampTexture: WebGLTexture | null;\n private backgroundTexture: WebGLTexture | null;\n private screenTexture: WebGLTexture | null;\n private particleStateTexture0: WebGLTexture | null;\n private particleStateTexture1: WebGLTexture | null;\n private windTexture: WebGLTexture | null;\n\n private windData: IWindData;\n\n constructor(options: IWindProps) {\n this.gl = options.glContext;\n this.width = options.imageWidth;\n this.height = options.imageHeight;\n this.fadeOpacity = options.fadeOpacity;\n this.speedFactor = options.speedFactor;\n this.dropRate = options.dropRate;\n this.dropRateBump = options.dropRateBump;\n\n this.rampColors = options.rampColors;\n this.init();\n }\n\n public init() {\n const gl = this.gl;\n\n this.fadeOpacity = 0.996; // how fast the particle trails fade on each frame\n this.speedFactor = 0.25; // how fast the particles move\n this.dropRate = 0.003; // how often the particles move to a random place\n this.dropRateBump = 0.01; // drop rate increase relative to individual particle speed\n\n this.drawProgram = glUtils.createProgram(\n gl,\n drawVert,\n drawFrag,\n ) as WebGLProgram;\n this.fullScreenProgram = glUtils.createProgram(\n gl,\n fullScreenVert,\n fullScreenFrag,\n ) as WebGLProgram;\n this.updateProgram = glUtils.createProgram(\n gl,\n updateVert,\n updateFrag,\n ) as WebGLProgram;\n\n this.quadBuffer = glUtils.createBuffer(\n gl,\n new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]),\n );\n\n this.framebuffer = gl.createFramebuffer();\n\n this.colorRampTexture = glUtils.createTexture(\n this.gl,\n this.gl.LINEAR,\n getColorRamp(this.rampColors),\n 16,\n 16,\n );\n\n const emptyPixels = new Uint8Array(this.width * this.height * 4);\n\n // screen textures to hold the drawn screen for the previous and the current frame\n\n this.backgroundTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n this.width,\n this.height,\n );\n this.screenTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n this.width,\n this.height,\n );\n\n // we create a square texture where each pixel will hold a particle position encoded as RGBA\n const particleRes = (this.particleStateResolution = Math.ceil(\n Math.sqrt(this.numParticles),\n ));\n // particleRes size\n this.numParticlesSize = particleRes * particleRes;\n\n const particleState = new Uint8Array(this.numParticlesSize * 4);\n for (let i = 0; i < particleState.length; i++) {\n particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions\n }\n // textures to hold the particle state for the current and the next frame\n this.particleStateTexture0 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n this.particleStateTexture1 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n\n const particleIndices = new Float32Array(this.numParticlesSize);\n for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {\n particleIndices[i$1] = i$1;\n }\n this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);\n }\n\n public setWind(windData: IWindData) {\n this.windData = windData;\n this.windTexture = glUtils.createDataTexture(\n this.gl,\n this.gl.LINEAR,\n windData.image,\n );\n }\n\n /**\n * 更新风场粒子数量\n * @param num\n */\n public updateParticelNum(num: number) {\n const gl = this.gl;\n if (num !== this.numParticles) {\n this.numParticles = num; // params number\n\n // we create a square texture where each pixel will hold a particle position encoded as RGBA\n const particleRes = (this.particleStateResolution = Math.ceil(\n Math.sqrt(this.numParticles),\n ));\n this.numParticlesSize = particleRes * particleRes;\n\n const particleState = new Uint8Array(this.numParticlesSize * 4);\n for (let i = 0; i < particleState.length; i++) {\n particleState[i] = Math.floor(Math.random() * 256); // randomize the initial particle positions\n }\n // textures to hold the particle state for the current and the next frame\n this.particleStateTexture0 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n this.particleStateTexture1 = glUtils.createTexture(\n gl,\n gl.NEAREST,\n particleState,\n particleRes,\n particleRes,\n );\n\n const particleIndices = new Float32Array(this.numParticlesSize);\n for (let i$1 = 0; i$1 < this.numParticlesSize; i$1++) {\n particleIndices[i$1] = i$1;\n }\n this.particleIndexBuffer = glUtils.createBuffer(gl, particleIndices);\n }\n }\n\n /**\n * 更新风场风向风速\n * @param uMin\n * @param uMax\n * @param vMin\n * @param vMax\n */\n public updateWindDir(uMin: number, uMax: number, vMin: number, vMax: number) {\n this.windData.uMin = uMin;\n this.windData.uMax = uMax;\n this.windData.vMin = vMin;\n this.windData.vMax = vMax;\n }\n\n /**\n * update rampColors\n * @param rampColors\n */\n public updateColorRampTexture(rampColors: { [key: number]: string }) {\n if (this.isColorChanged(rampColors)) {\n this.rampColors = rampColors;\n\n const gl = this.gl;\n gl.deleteTexture(this.colorRampTexture);\n this.colorRampTexture = glUtils.createTexture(\n gl,\n gl.LINEAR,\n getColorRamp(rampColors),\n 16,\n 16,\n );\n }\n }\n\n public isColorChanged(rampColors: { [key: number]: string }): boolean {\n const keys = Object.keys(rampColors);\n for (const item of keys) {\n const key = Number(item);\n // exist new key -> color need update\n if (!this.rampColors[key]) {\n return true;\n }\n // value changed -> color need update\n if (this.rampColors[key] && this.rampColors[key] !== rampColors[key]) {\n return true;\n }\n }\n return false;\n }\n\n public reSize(width: number, height: number) {\n if (width !== this.width || height !== this.height) {\n const gl = this.gl;\n gl.deleteTexture(this.backgroundTexture);\n gl.deleteTexture(this.screenTexture);\n\n this.width = width;\n this.height = height;\n const emptyPixels = new Uint8Array(width * height * 4);\n // screen textures to hold the drawn screen for the previous and the current frame\n this.backgroundTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n width,\n height,\n );\n this.screenTexture = glUtils.createTexture(\n gl,\n gl.NEAREST,\n emptyPixels,\n width,\n height,\n );\n }\n }\n public draw() {\n if (this.windData?.image) {\n const gl = this.gl;\n\n glUtils.bindTexture(gl, this.windTexture as WebGLTexture, 0);\n glUtils.bindTexture(gl, this.particleStateTexture0 as WebGLTexture, 1);\n\n this.drawScreen(); // draw Particles into framebuffer\n this.updateParticles();\n\n return { d: this.pixels, w: this.width, h: this.height };\n } else {\n return { d: new Uint8Array([0, 0, 0, 0]), w: 1, h: 1 };\n }\n }\n\n public drawScreen() {\n const gl = this.gl;\n\n // draw the screen into a temporary framebuffer to retain it as the background on the next frame\n bindFramebuffer(gl, this.framebuffer, this.screenTexture);\n\n gl.viewport(0, 0, this.width, this.height);\n\n gl.disable(gl.BLEND);\n this.drawFullTexture(this.backgroundTexture, this.fadeOpacity);\n this.drawParticles();\n\n this.pixels = new Uint8Array(4 * this.width * this.height);\n gl.readPixels(\n 0,\n 0,\n this.width,\n this.height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n this.pixels,\n );\n\n bindFramebuffer(gl, null, null);\n gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);\n\n // save the current screen as the background for the next frame\n const temp = this.backgroundTexture;\n this.backgroundTexture = this.screenTexture;\n this.screenTexture = temp;\n }\n\n public drawFullTexture(texture: any, opacity: number) {\n const gl = this.gl;\n const program = this.fullScreenProgram as any;\n gl.useProgram(program);\n\n // bindAttribute(gl, this.quadBuffer, program.a_pos, 2);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);\n gl.vertexAttribPointer(program.a_pos, 2, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(program.a_pos);\n\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n\n glUtils.bindTexture(gl, texture, 2);\n gl.uniform1i(program.u_screen, 2);\n gl.uniform1f(program.u_opacity, opacity);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n // gl.drawArrays(gl.POINTS, 0, 6);\n }\n\n public drawParticles() {\n const gl = this.gl;\n const program = this.drawProgram as any;\n gl.useProgram(program);\n\n bindAttribute(gl, this.particleIndexBuffer, program.a_index, 1);\n glUtils.bindTexture(gl, this.colorRampTexture as WebGLTexture, 2);\n\n gl.uniform1i(program.u_wind, 0);\n gl.uniform1i(program.u_particles, 1);\n gl.uniform1i(program.u_color_ramp, 2);\n\n gl.uniform1f(program.u_particles_res, this.particleStateResolution);\n gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);\n gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);\n\n gl.drawArrays(gl.POINTS, 0, this.numParticlesSize);\n }\n\n public updateParticles() {\n const gl = this.gl;\n bindFramebuffer(gl, this.framebuffer, this.particleStateTexture1);\n gl.viewport(\n 0,\n 0,\n this.particleStateResolution,\n this.particleStateResolution,\n );\n\n const program = this.updateProgram as any;\n gl.useProgram(program);\n\n bindAttribute(gl, this.quadBuffer, program.a_pos, 2);\n\n gl.uniform1i(program.u_wind, 0);\n gl.uniform1i(program.u_particles, 1);\n\n gl.uniform1f(program.u_rand_seed, Math.random());\n gl.uniform2f(\n program.u_wind_res,\n this.windData.image.width * 2,\n this.windData.image.height * 2,\n );\n gl.uniform2f(program.u_wind_min, this.windData.uMin, this.windData.vMin);\n gl.uniform2f(program.u_wind_max, this.windData.uMax, this.windData.vMax);\n gl.uniform1f(program.u_speed_factor, this.speedFactor);\n gl.uniform1f(program.u_drop_rate, this.dropRate);\n gl.uniform1f(program.u_drop_rate_bump, this.dropRateBump);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n // swap the particle state textures so the new one becomes the current one\n const temp = this.particleStateTexture0;\n this.particleStateTexture0 = this.particleStateTexture1;\n this.particleStateTexture1 = temp;\n\n bindFramebuffer(gl, null, null);\n\n // gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height);\n }\n\n public destroy() {\n // private drawProgram: WebGLProgram;\n // private fullScreenProgram: WebGLProgram;\n // private updateProgram: WebGLProgram;\n\n // private quadBuffer: WebGLBuffer | null;\n // private particleIndexBuffer: WebGLBuffer | null;\n\n // private framebuffer: WebGLFramebuffer | null;\n\n // private colorRampTexture: WebGLTexture | null;\n // private backgroundTexture: WebGLTexture | null;\n // private screenTexture: WebGLTexture | null;\n // private particleStateTexture0: WebGLTexture | null;\n // private particleStateTexture1: WebGLTexture | null;\n // private windTexture: WebGLTexture | null;\n\n this.gl.deleteBuffer(this.quadBuffer);\n this.gl.deleteBuffer(this.particleIndexBuffer);\n\n this.gl.deleteFramebuffer(this.framebuffer);\n\n // @ts-ignore\n this.gl.deleteShader(this.drawProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.drawProgram.fragmentShader);\n this.gl.deleteProgram(this.drawProgram);\n\n // @ts-ignore\n this.gl.deleteShader(this.fullScreenProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.fullScreenProgram.fragmentShader);\n this.gl.deleteProgram(this.fullScreenProgram);\n\n // @ts-ignore\n this.gl.deleteShader(this.updateProgram.vertexShader);\n // @ts-ignore\n this.gl.deleteShader(this.updateProgram.fragmentShader);\n this.gl.deleteProgram(this.updateProgram);\n\n this.gl.deleteTexture(this.colorRampTexture);\n this.gl.deleteTexture(this.backgroundTexture);\n this.gl.deleteTexture(this.screenTexture);\n this.gl.deleteTexture(this.particleStateTexture0);\n this.gl.deleteTexture(this.particleStateTexture1);\n this.gl.deleteTexture(this.windTexture);\n }\n}\n"],"file":"windRender.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/wind/models/windShader.ts"],"names":["drawVert","drawFrag","updateVert","updateFrag","fullScreenVert","fullScreenFrag"],"mappings":"AAMA,OAAO,IAAMA,QAAQ,4pBAAd;AAuBP,OAAO,IAAMC,QAAQ,kjBAAd;AAoBP,OAAO,IAAMC,UAAU,yQAAhB;AAaP,OAAO,IAAMC,UAAU,k9EAAhB;AAoEP,OAAO,IAAMC,cAAc,mQAApB;AAaP,OAAO,IAAMC,cAAc,+VAApB","sourcesContent":["/**\n * drawProgram drawVert drawFrag\n * screenProgram screenVert screenFrag\n * updateProgram updateVert updateFrag\n * fullScreenProgram fullScreenVert fullScreenFrag\n */\nexport const drawVert = `\n precision mediump float;\n \n attribute float a_index;\n \n uniform sampler2D u_particles;\n uniform float u_particles_res;\n \n varying vec2 v_particle_pos;\n \n void main() {\n vec4 color = texture2D(u_particles, vec2(\n fract(a_index / u_particles_res),\n floor(a_index / u_particles_res) / u_particles_res)\n );\n \n // decode current particle position from the pixel's RGBA value\n v_particle_pos = vec2( color.r / 255.0 + color.b, color.g / 255.0 + color.a);\n \n gl_PointSize = 1.0;\n gl_Position = vec4(2.0 * v_particle_pos.x - 1.0, 1.0 - 2.0 * v_particle_pos.y, 0, 1);\n }`;\n\nexport const drawFrag = `\n precision mediump float;\n \n uniform sampler2D u_wind;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform sampler2D u_color_ramp;\n \n varying vec2 v_particle_pos;\n \n void main() {\n vec2 velocity = mix(u_wind_min, u_wind_max, texture2D(u_wind, v_particle_pos).rg);\n float speed_t = length(velocity) / length(u_wind_max);\n \n // color ramp is encoded in a 16x16 texture \n vec2 ramp_pos = vec2( fract(16.0 * speed_t), floor(16.0 * speed_t) / 16.0); \n \n gl_FragColor = texture2D(u_color_ramp, ramp_pos);\n }`;\n\nexport const updateVert = `\n precision mediump float;\n \n attribute vec2 a_pos;\n \n varying vec2 v_tex_pos;\n \n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0, 1);\n // framebuffer 始终用铺满屏幕的 texture\n }`;\n\nexport const updateFrag = `\n precision highp float;\n \n uniform sampler2D u_particles;\n uniform sampler2D u_wind;\n uniform vec2 u_wind_res;\n uniform vec2 u_wind_min;\n uniform vec2 u_wind_max;\n uniform float u_rand_seed;\n uniform float u_speed_factor;\n uniform float u_drop_rate;\n uniform float u_drop_rate_bump;\n \n varying vec2 v_tex_pos;\n \n // pseudo-random generator\n const vec3 rand_constants = vec3(12.9898, 78.233, 4375.85453);\n float rand(const vec2 co) {\n float t = dot(rand_constants.xy, co);\n return fract(sin(t) * (rand_constants.z + t));\n }\n \n // wind speed lookup; use manual bilinear filtering based on 4 adjacent pixels for smooth interpolation\n vec2 lookup_wind(const vec2 uv) {\n // return texture2D(u_wind, uv).rg; // lower-res hardware filtering\n vec2 px = 1.0 / u_wind_res;\n vec2 vc = (floor(uv * u_wind_res)) * px;\n vec2 f = fract(uv * u_wind_res);\n vec2 tl = texture2D(u_wind, vc).rg;\n vec2 tr = texture2D(u_wind, vc + vec2(px.x, 0)).rg;\n vec2 bl = texture2D(u_wind, vc + vec2(0, px.y)).rg;\n vec2 br = texture2D(u_wind, vc + px).rg;\n return mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);\n }\n \n void main() {\n vec4 color = texture2D(u_particles, v_tex_pos);\n vec2 pos = vec2(\n color.r / 255.0 + color.b,\n color.g / 255.0 + color.a); // decode particle position from pixel RGBA\n vec2 velocity = mix(u_wind_min, u_wind_max, lookup_wind(pos));\n float speed_t = length(velocity) / length(u_wind_max);\n \n // take EPSG:4236 distortion into account for calculating where the particle moved\n float distortion = cos(radians(pos.y * 180.0 - 90.0));\n vec2 offset = vec2(velocity.x / distortion, -velocity.y) * 0.0001 * u_speed_factor;\n \n // update particle position, wrapping around the date line\n pos = fract(1.0 + pos + offset);\n \n // a random seed to use for the particle drop\n vec2 seed = (pos + v_tex_pos) * u_rand_seed;\n \n // drop rate is a chance a particle will restart at random position, to avoid degeneration\n float drop_rate = u_drop_rate + speed_t * u_drop_rate_bump;\n float drop = step(1.0 - drop_rate, rand(seed));\n \n vec2 random_pos = vec2(\n rand(seed + 1.3),\n rand(seed + 2.1));\n pos = mix(pos, random_pos, drop);\n \n // encode the new particle position back into RGBA\n gl_FragColor = vec4(\n fract(pos * 255.0),\n floor(pos * 255.0) / 255.0);\n }`;\n\nexport const fullScreenVert = `\n precision mediump float;\n \n attribute vec2 a_pos;\n \n varying vec2 v_tex_pos;\n \n void main() {\n v_tex_pos = a_pos;\n gl_Position = vec4(1.0 - 2.0 * a_pos, 0.0, 1.0);\n gl_PointSize = 100.0;\n }`;\n\nexport const fullScreenFrag = `\n precision mediump float;\n \n uniform sampler2D u_screen;\n uniform float u_opacity;\n varying vec2 v_tex_pos;\n \n void main() {\n vec4 color = texture2D(u_screen, 1.0 - v_tex_pos);\n \n // a hack to guarantee opacity fade out even with a value close to 1.0\n gl_FragColor = vec4(floor(255.0 * color * u_opacity) / 255.0);\n }`;\n"],"file":"windShader.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/Geometry/index.ts"],"names":["GeometryLayer","modelType","getModelType","layerModel","GeometryModels","initModels","models","renderLayers","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","plane","sprite","billboard","shapeAttribute","styleAttributeService","getLayerStyleAttribute","shape","scale","field","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAEqBA,a;;;;;;;;;;;;;;;uFAGG,e;;;;;;WACtB,uBAAqB;AAAA;;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAeH,SAAf,CAAJ,CAA8B,IAA9B,CAAlB;AACA,WAAKE,UAAL,CAAgBE,UAAhB,CAA2B,UAACC,MAAD,EAAY;AACrC,QAAA,MAAI,CAACA,MAAL,GAAcA,MAAd;;AACA,QAAA,MAAI,CAACC,YAAL;AACD,OAHD;AAID;;;WACD,yBAAuB;AAAA;;AACrB,WAAKJ,UAAL,CAAgBK,WAAhB,CAA4B,UAACF,MAAD;AAAA,eAAa,MAAI,CAACA,MAAL,GAAcA,MAA3B;AAAA,OAA5B;AACD;;;WAED,2BAA4B;AAC1B,aAAO;AACLG,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKT,YAAL,EAAb;AACA,UAAMY,aAAa,GAAG;AACpBC,QAAAA,KAAK,EAAE,EADa;AAEpBC,QAAAA,MAAM,EAAE,EAFY;AAGpBC,QAAAA,SAAS,EAAE;AAHS,OAAtB;AAKA,aAAOH,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAA4C;AAAA;;AAC1C,UAAMO,cAAc,GAAG,KAAKC,qBAAL,CAA2BC,sBAA3B,CACrB,OADqB,CAAvB;AAGA,UAAMC,KAAK,GAAGH,cAAH,aAAGA,cAAH,gDAAGA,cAAc,CAAEI,KAAnB,0DAAG,sBAAuBC,KAArC;;AACA,UAAIF,KAAK,KAAK,OAAd,EAAuB;AACrB,eAAO,OAAP;AACD,OAFD,MAEO,IAAIA,KAAK,KAAK,QAAd,EAAwB;AAC7B,eAAO,QAAP;AACD,OAFM,MAEA,IAAIA,KAAK,KAAK,WAAd,EAA2B;AAChC,eAAO,WAAP;AACD,OAFM,MAEA;AACL,eAAO,OAAP;AACD;AACF;;;EAnDwCG,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport { IGeometryLayerStyleOptions } from '../core/interface';\nimport GeometryModels, { GeometryModelType } from './models';\n\nexport default class GeometryLayer extends BaseLayer<\n IGeometryLayerStyleOptions\n> {\n public type: string = 'GeometryLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new GeometryModels[modelType](this);\n this.layerModel.initModels((models) => {\n this.models = models;\n this.renderLayers();\n });\n }\n public rebuildModels() {\n this.layerModel.buildModels((models) => (this.models = models));\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n plane: {},\n sprite: {},\n billboard: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): GeometryModelType {\n const shapeAttribute = this.styleAttributeService.getLayerStyleAttribute(\n 'shape',\n );\n const shape = shapeAttribute?.scale?.field as GeometryModelType;\n if (shape === 'plane') {\n return 'plane';\n } else if (shape === 'sprite') {\n return 'sprite';\n } else if (shape === 'billboard') {\n return 'billboard';\n } else {\n return 'plane';\n }\n }\n}\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/Geometry/models/billboard.ts"],"names":["BillBoardModel","layer","getLayerConfig","center","size","indices","vertices","opacity","width","height","raisingHeight","rotateFlag","mapService","version","radian","Math","PI","getRotation","u_raisingHeight","Number","u_RotateMatrix","Float32Array","cos","sin","u_opacity","u_texture","texture","u_size","destroy","callbackModel","mask","maskInside","drawCanvas","createTexture2D","rendererService","updateTexture","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","then","model","catch","err","console","warn","initModels","canvasWidth","canvasHeight","canvas","document","createElement","ctx","getContext","data","wrapS","CLAMP_TO_EDGE","wrapT","layerService","updateLayerRenderList","renderLayers","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx","extrude","extrudeIndex","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttrubuteAndElements,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport planeFrag from '../shaders/billboard_frag.glsl';\nimport planeVert from '../shaders/billboard_vert.glsl';\n\nexport default class BillBoardModel extends BaseModel {\n protected texture: ITexture2D;\n private radian: number = 0; // 旋转的弧度\n\n public planeGeometryTriangulation = () => {\n const {\n center = [120, 30],\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n return {\n size: 4,\n indices: [0, 1, 2, 2, 3, 0],\n vertices: [\n ...center,\n ...[1, 1],\n ...center,\n ...[0, 1],\n ...center,\n ...[0, 0],\n ...center,\n ...[1, 0],\n ],\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n width = 1,\n height = 1,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian =\n (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\n\n return {\n u_raisingHeight: Number(raisingHeight),\n u_RotateMatrix: new Float32Array([\n // z\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_opacity: opacity || 1,\n u_texture: this.texture,\n u_size: [width, height],\n };\n }\n\n public clearModels(): void {\n this.texture?.destroy();\n }\n\n public initModels(callbackModel: (models: IModel[]) => void) {\n const {\n mask = false,\n maskInside = true,\n drawCanvas,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n if (drawCanvas) {\n this.updateTexture(drawCanvas);\n }\n\n this.layer\n .buildLayerModel({\n moduleName: 'geometryBillboard',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n })\n .then((model) => {\n callbackModel([model]);\n })\n .catch((err) => {\n console.warn(err);\n callbackModel([]);\n });\n }\n\n public buildModels(callbackModel: (models: IModel[]) => void) {\n this.initModels(callbackModel);\n }\n\n public updateTexture(drawCanvas: (canvas: HTMLCanvasElement) => void): void {\n const { createTexture2D } = this.rendererService;\n\n const {\n canvasWidth = 1,\n canvasHeight = 1,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const canvas = document.createElement('canvas');\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n const ctx = canvas.getContext('2d');\n if (ctx) {\n drawCanvas(canvas);\n this.texture = createTexture2D({\n data: canvas,\n width: canvas.width,\n height: canvas.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[2], vertex[3]];\n },\n },\n });\n }\n}\n"],"file":"billboard.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/Geometry/models/index.ts"],"names":["GeometryModels","plane","PlaneModel","sprite","SpriteModel","billboard","BillBoardModel"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAGA,IAAMA,cAAmD,GAAG;AAC1DC,EAAAA,KAAK,EAAEC,cADmD;AAE1DC,EAAAA,MAAM,EAAEC,eAFkD;AAG1DC,EAAAA,SAAS,EAAEC;AAH+C,CAA5D;eAKeN,c","sourcesContent":["import BillBoardModel from './billboard';\nimport PlaneModel from './plane';\nimport SpriteModel from './sprite';\nexport type GeometryModelType = 'plane' | 'sprite' | 'billboard';\n\nconst GeometryModels: { [key in GeometryModelType]: any } = {\n plane: PlaneModel,\n sprite: SpriteModel,\n billboard: BillBoardModel,\n};\nexport default GeometryModels;\n"],"file":"index.js"}