@pirireis/webglobeplugins 0.9.6 → 0.9.8

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 (304) hide show
  1. package/{Math → dist/Math}/angle-calculation.js +15 -14
  2. package/dist/Math/arc.js +65 -0
  3. package/{Math → dist/Math}/bounds/line-bbox.js +188 -225
  4. package/dist/Math/constants.js +9 -0
  5. package/{Math/frustum/camera.ts → dist/Math/frustum/camera.js} +24 -32
  6. package/{Math/frustum/from-globeinfo.ts → dist/Math/frustum/from-globeinfo.js} +48 -63
  7. package/dist/Math/frustum/types.js +2 -0
  8. package/{Math/globe-util/horizon-plane.ts → dist/Math/globe-util/horizon-plane.js} +112 -137
  9. package/dist/Math/index.js +1 -0
  10. package/dist/Math/juction/arc-plane.js +83 -0
  11. package/dist/Math/juction/line-sphere.js +25 -0
  12. package/{Math/juction/plane-plane.ts → dist/Math/juction/plane-plane.js} +58 -66
  13. package/dist/Math/line.js +56 -0
  14. package/dist/Math/matrix4.js +1 -0
  15. package/{Math → dist/Math}/methods.js +201 -237
  16. package/dist/Math/plane.js +60 -0
  17. package/{Math/quaternion.ts → dist/Math/quaternion.js} +104 -120
  18. package/dist/Math/types.js +2 -0
  19. package/dist/Math/utils.js +4 -0
  20. package/{Math/vec3.ts → dist/Math/vec3.js} +126 -155
  21. package/dist/algorithms/search-binary.js +19 -0
  22. package/dist/altitude-locator/adaptors.js +1 -0
  23. package/{altitude-locator → dist/altitude-locator}/draw-subset-obj.js +18 -27
  24. package/dist/altitude-locator/keymethod.js +1 -0
  25. package/{altitude-locator → dist/altitude-locator}/plugin.js +341 -439
  26. package/{altitude-locator → dist/altitude-locator}/types.js +23 -26
  27. package/{arrowfield → dist/arrowfield}/adaptor.js +14 -11
  28. package/dist/arrowfield/index.js +10 -0
  29. package/{arrowfield → dist/arrowfield}/plugin.js +86 -128
  30. package/dist/bearing-line/index.js +8 -0
  31. package/{bearing-line → dist/bearing-line}/plugin.js +449 -512
  32. package/{circle-line-chain → dist/circle-line-chain}/chain-list-map.js +205 -221
  33. package/dist/circle-line-chain/init.js +1 -0
  34. package/{circle-line-chain → dist/circle-line-chain}/plugin.js +424 -469
  35. package/dist/circle-line-chain/util.js +5 -0
  36. package/{compass-rose → dist/compass-rose}/compass-rose-padding-flat.js +225 -266
  37. package/{compass-rose → dist/compass-rose}/compass-text-writer.js +153 -173
  38. package/dist/compass-rose/index.js +7 -0
  39. package/{compassrose → dist/compassrose}/compassrose.js +296 -341
  40. package/dist/compassrose/index.js +8 -0
  41. package/dist/globe-types.js +1 -0
  42. package/dist/heatwave/index.js +10 -0
  43. package/{heatwave → dist/heatwave}/isobar/objectarraylabels.js +202 -247
  44. package/{heatwave → dist/heatwave}/isobar/plugin.js +343 -340
  45. package/{heatwave → dist/heatwave}/isobar/quadtreecontours.js +300 -336
  46. package/{heatwave → dist/heatwave}/plugins/heatwaveglobeshell.js +206 -258
  47. package/dist/index.js +58 -0
  48. package/{jest.config.js → dist/jest.config.js} +7 -6
  49. package/{partialrings → dist/partialrings}/buffer-manager.js +81 -89
  50. package/dist/partialrings/index.js +41 -0
  51. package/{partialrings → dist/partialrings}/plugin.js +135 -160
  52. package/{partialrings → dist/partialrings}/program.js +204 -242
  53. package/{pin → dist/pin}/pin-object-array.js +305 -381
  54. package/{pin → dist/pin}/pin-point-totem.js +60 -77
  55. package/{point-heat-map → dist/point-heat-map}/adaptors/timetracksplugin-format-to-this.js +66 -78
  56. package/dist/point-heat-map/index.js +1 -0
  57. package/{point-heat-map → dist/point-heat-map}/plugin-webworker.js +126 -151
  58. package/{point-heat-map → dist/point-heat-map}/point-to-heat-map-flow.js +127 -150
  59. package/dist/point-tracks/key-methods.js +5 -0
  60. package/{point-tracks → dist/point-tracks}/plugin.js +338 -394
  61. package/dist/programs/arrowfield/index.js +7 -0
  62. package/{programs → dist/programs}/arrowfield/logic.js +144 -173
  63. package/{programs → dist/programs}/arrowfield/object.js +66 -89
  64. package/{programs → dist/programs}/data2legend/density-to-legend.js +76 -90
  65. package/{programs → dist/programs}/data2legend/point-to-density-texture.js +76 -90
  66. package/dist/programs/float2legendwithratio/index.js +8 -0
  67. package/{programs → dist/programs}/float2legendwithratio/logic.js +122 -145
  68. package/{programs → dist/programs}/float2legendwithratio/object.js +110 -141
  69. package/{programs → dist/programs}/globe-util/is-globe-moved.js +21 -27
  70. package/dist/programs/globeshell/index.js +8 -0
  71. package/dist/programs/globeshell/noise/noises.js +1 -0
  72. package/dist/programs/globeshell/wiggle/index.js +8 -0
  73. package/{programs → dist/programs}/globeshell/wiggle/logic.js +246 -272
  74. package/{programs → dist/programs}/globeshell/wiggle/object.js +72 -93
  75. package/dist/programs/helpers/blender/index.js +1 -0
  76. package/{programs → dist/programs}/helpers/blender/program.js +61 -73
  77. package/dist/programs/helpers/fadeaway/index.js +7 -0
  78. package/{programs → dist/programs}/helpers/fadeaway/logic.js +49 -53
  79. package/dist/programs/helpers/fadeaway/object.js +20 -0
  80. package/dist/programs/helpers/index.js +8 -0
  81. package/dist/programs/index.js +58 -0
  82. package/dist/programs/interface.js +1 -0
  83. package/{programs → dist/programs}/line-on-globe/angled-line.js +125 -155
  84. package/{programs → dist/programs}/line-on-globe/circle-accurate-3d.js +95 -121
  85. package/{programs → dist/programs}/line-on-globe/circle-accurate-flat.js +158 -204
  86. package/{programs → dist/programs}/line-on-globe/circle-accurate.js +117 -141
  87. package/{programs → dist/programs}/line-on-globe/circle.js +111 -135
  88. package/{programs → dist/programs}/line-on-globe/degree-padding-around-circle-3d.js +111 -140
  89. package/dist/programs/line-on-globe/index.js +1 -0
  90. package/{programs → dist/programs}/line-on-globe/lines-color-instanced-flat.js +91 -106
  91. package/{programs/line-on-globe/linestrip.ts → dist/programs/line-on-globe/linestrip.js} +108 -165
  92. package/{programs → dist/programs}/line-on-globe/naive-accurate-flexible.js +127 -171
  93. package/{programs → dist/programs}/line-on-globe/to-the-surface.js +83 -101
  94. package/dist/programs/line-on-globe/util.js +8 -0
  95. package/{programs → dist/programs}/picking/pickable-renderer.js +107 -135
  96. package/{programs → dist/programs}/point-on-globe/element-globe-surface-glow.js +101 -127
  97. package/{programs → dist/programs}/point-on-globe/element-point-glow.js +88 -119
  98. package/{programs → dist/programs}/point-on-globe/square-pixel-point.js +126 -141
  99. package/{programs/programcache.ts → dist/programs/programcache.js} +131 -131
  100. package/{programs → dist/programs}/rings/distancering/circleflatprogram.js +115 -95
  101. package/{programs → dist/programs}/rings/distancering/circlepaddingfreeangleprogram.js +320 -329
  102. package/{programs → dist/programs}/rings/distancering/circlepaddysharedbuffer.js +357 -420
  103. package/dist/programs/rings/distancering/index.js +14 -0
  104. package/{programs → dist/programs}/rings/distancering/paddyflatprogram.js +120 -94
  105. package/{programs → dist/programs}/rings/distancering/paddyflatprogram2d.js +122 -98
  106. package/{programs → dist/programs}/rings/distancering/paddyflatprogram3d.js +120 -94
  107. package/dist/programs/rings/distancering/shader.js +1 -0
  108. package/dist/programs/rings/index.js +17 -0
  109. package/{programs → dist/programs}/rings/partial-ring/piece-of-pie.js +181 -221
  110. package/{programs → dist/programs}/totems/camerauniformblock.js +147 -184
  111. package/{programs → dist/programs}/totems/canvas-webglobe-info.js +102 -128
  112. package/{programs → dist/programs}/totems/gpu-selection-uniform-block.js +104 -128
  113. package/dist/programs/totems/index.js +40 -0
  114. package/dist/programs/two-d/pixel-circle.js +1 -0
  115. package/{programs → dist/programs}/two-d/pixel-padding-for-compass.js +101 -113
  116. package/{programs → dist/programs}/util.js +17 -20
  117. package/dist/programs/vectorfields/index.js +23 -0
  118. package/{programs → dist/programs}/vectorfields/logics/drawrectangleparticles.js +65 -83
  119. package/dist/programs/vectorfields/logics/index.js +12 -0
  120. package/{programs → dist/programs}/vectorfields/logics/pixelbased.js +84 -103
  121. package/{programs → dist/programs}/vectorfields/logics/ubo.js +55 -56
  122. package/{programs → dist/programs}/vectorfields/pingpongbuffermanager.js +76 -80
  123. package/dist/rangerings/enum.js +5 -0
  124. package/dist/rangerings/index.js +15 -0
  125. package/{rangerings → dist/rangerings}/plugin.js +560 -649
  126. package/{rangerings → dist/rangerings}/rangeringangletext.js +329 -368
  127. package/{rangerings → dist/rangerings}/ring-account.js +117 -129
  128. package/{shaders → dist/shaders}/fragment-toy/firework.js +5 -2
  129. package/{shaders → dist/shaders}/fragment-toy/singularity.js +5 -5
  130. package/{shape-on-terrain/arc/naive/plugin.ts → dist/shape-on-terrain/arc/naive/plugin.js} +252 -304
  131. package/{timetracks → dist/timetracks}/adaptors-line-strip.js +71 -80
  132. package/{timetracks → dist/timetracks}/adaptors.js +122 -133
  133. package/dist/timetracks/index.js +19 -0
  134. package/{timetracks → dist/timetracks}/plugin-line-strip.js +250 -295
  135. package/{timetracks → dist/timetracks}/plugin.js +258 -304
  136. package/{timetracks → dist/timetracks}/program-line-strip.js +416 -493
  137. package/{timetracks → dist/timetracks}/program.js +464 -542
  138. package/{timetracks → dist/timetracks}/programpoint-line-strip.js +101 -122
  139. package/{timetracks → dist/timetracks}/programpoint.js +101 -122
  140. package/{types.ts → dist/types.js} +15 -17
  141. package/{util → dist/util}/account/bufferoffsetmanager.js +179 -209
  142. package/dist/util/account/index.js +23 -0
  143. package/{util/account/single-attribute-buffer-management/buffer-manager.ts → dist/util/account/single-attribute-buffer-management/buffer-manager.js} +108 -119
  144. package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +150 -173
  145. package/dist/util/account/single-attribute-buffer-management/index.js +9 -0
  146. package/{util/account/single-attribute-buffer-management/object-store.ts → dist/util/account/single-attribute-buffer-management/object-store.js} +51 -65
  147. package/dist/util/account/single-attribute-buffer-management/types.js +2 -0
  148. package/{util → dist/util}/account/util.js +22 -22
  149. package/dist/util/algorithms/index.js +1 -0
  150. package/{util → dist/util}/algorithms/search-binary.js +28 -26
  151. package/dist/util/check/get.js +18 -0
  152. package/dist/util/check/index.js +1 -0
  153. package/dist/util/check/typecheck.js +49 -0
  154. package/{util → dist/util}/geometry/index.js +51 -53
  155. package/{util/gl-util/buffer/attribute-loader.ts → dist/util/gl-util/buffer/attribute-loader.js} +69 -85
  156. package/dist/util/gl-util/buffer/index.js +6 -0
  157. package/dist/util/gl-util/buffer/types.js +1 -0
  158. package/dist/util/gl-util/draw-options/methods.js +38 -0
  159. package/dist/util/gl-util/draw-options/types.js +15 -0
  160. package/{util/gl-util/uniform-block/manager.ts → dist/util/gl-util/uniform-block/manager.js} +156 -187
  161. package/dist/util/gl-util/uniform-block/shader.js +1 -0
  162. package/dist/util/gl-util/uniform-block/types.js +8 -0
  163. package/{util → dist/util}/heatwavedatamanager/datamanager.js +152 -168
  164. package/dist/util/heatwavedatamanager/index.js +10 -0
  165. package/{util → dist/util}/heatwavedatamanager/pointcoordinatesdatacalculator.js +122 -133
  166. package/{util → dist/util}/heatwavedatamanager/pointcoordsmeta.js +20 -22
  167. package/dist/util/index.js +57 -0
  168. package/dist/util/interpolation/index.js +1 -0
  169. package/dist/util/interpolation/timetrack/index.js +5 -0
  170. package/{util → dist/util}/interpolation/timetrack/timetrack-interpolator.js +79 -88
  171. package/{util → dist/util}/interpolation/timetrack/web-worker-str.js +5 -2
  172. package/{util → dist/util}/interpolation/timetrack/web-worker.js +48 -51
  173. package/{util → dist/util}/jshelpers/data-filler.js +20 -19
  174. package/{util → dist/util}/jshelpers/equality.js +20 -17
  175. package/dist/util/jshelpers/index.js +37 -0
  176. package/{util → dist/util}/jshelpers/timefilters.js +32 -32
  177. package/{util → dist/util}/picking/fence.js +46 -46
  178. package/{util → dist/util}/picking/picker-displayer.js +139 -177
  179. package/{util → dist/util}/programs/draw-texture-on-canvas.js +69 -82
  180. package/dist/util/programs/index.js +17 -0
  181. package/{util → dist/util}/programs/shapesonglobe.js +174 -206
  182. package/{util → dist/util}/programs/supersampletotextures.js +103 -132
  183. package/{util → dist/util}/programs/texturetoglobe.js +133 -154
  184. package/{util/shaderfunctions/geometrytransformations.ts → dist/util/shaderfunctions/geometrytransformations.js} +68 -116
  185. package/dist/util/shaderfunctions/index.js +18 -0
  186. package/{util → dist/util}/shaderfunctions/nodata.js +5 -4
  187. package/{util → dist/util}/shaderfunctions/noisefunctions.js +9 -10
  188. package/{util/surface-line-data/arc-bboxes.ts → dist/util/surface-line-data/arc-bboxes.js} +25 -42
  189. package/{util → dist/util}/surface-line-data/arcs-to-cuts.js +50 -74
  190. package/dist/util/surface-line-data/cut-arc.js +1 -0
  191. package/{util/surface-line-data/flow.ts → dist/util/surface-line-data/flow.js} +28 -52
  192. package/dist/util/surface-line-data/rbush-manager.js +1 -0
  193. package/dist/util/surface-line-data/types.js +1 -0
  194. package/dist/util/surface-line-data/web-worker.js +1 -0
  195. package/dist/util/webglobe/gldefaultstates.js +7 -0
  196. package/dist/util/webglobe/index.js +18 -0
  197. package/{util → dist/util}/webglobe/rasteroverlay.js +78 -96
  198. package/{util/webglobjectbuilders.ts → dist/util/webglobjectbuilders.js} +388 -456
  199. package/{util → dist/util}/webglobjectbuilders1.js +237 -271
  200. package/{waveparticles → dist/waveparticles}/adaptor.js +17 -16
  201. package/dist/waveparticles/index.js +10 -0
  202. package/{waveparticles → dist/waveparticles}/plugin.js +266 -313
  203. package/{wind → dist/wind}/imagetovectorfieldandmagnitude.js +35 -39
  204. package/dist/wind/index.js +14 -0
  205. package/{wind → dist/wind}/plugin.js +681 -812
  206. package/{wind → dist/wind}/vectorfieldimage.js +25 -27
  207. package/{write-text → dist/write-text}/attached-text-writer.js +91 -105
  208. package/{write-text → dist/write-text}/context-text.js +98 -125
  209. package/{write-text → dist/write-text}/context-text3.js +155 -178
  210. package/dist/write-text/index.js +5 -0
  211. package/{write-text → dist/write-text}/writer-plugin.js +8 -7
  212. package/package.json +5 -2
  213. package/Math/arc.ts +0 -76
  214. package/Math/constants.ts +0 -11
  215. package/Math/frustum/types.ts +0 -11
  216. package/Math/index.js +0 -0
  217. package/Math/juction/arc-plane.ts +0 -114
  218. package/Math/juction/line-sphere.ts +0 -30
  219. package/Math/line.ts +0 -70
  220. package/Math/matrix4.ts +0 -0
  221. package/Math/plane.ts +0 -86
  222. package/Math/roadmap.md +0 -10
  223. package/Math/types.ts +0 -45
  224. package/Math/utils.js +0 -3
  225. package/algorithms/search-binary.js +0 -14
  226. package/altitude-locator/adaptors.js +0 -0
  227. package/altitude-locator/keymethod.js +0 -0
  228. package/arrowfield/index.js +0 -3
  229. package/bearing-line/index.js +0 -2
  230. package/circle-line-chain/init.js +0 -0
  231. package/circle-line-chain/readme.md +0 -57
  232. package/circle-line-chain/util.js +0 -1
  233. package/compass-rose/index.js +0 -3
  234. package/compassrose/index.js +0 -2
  235. package/depth-locator/readme.md +0 -26
  236. package/globe-types.ts +0 -13
  237. package/heatwave/index.js +0 -4
  238. package/partialrings/goals.md +0 -17
  239. package/partialrings/index.js +0 -3
  240. package/point-heat-map/index.js +0 -0
  241. package/point-heat-map/readme.md +0 -15
  242. package/point-tracks/key-methods.js +0 -3
  243. package/programs/arrowfield/index.js +0 -2
  244. package/programs/float2legendwithratio/index.js +0 -3
  245. package/programs/globeshell/index.js +0 -2
  246. package/programs/globeshell/noise/noises.js +0 -0
  247. package/programs/globeshell/wiggle/index.js +0 -6
  248. package/programs/helpers/blender/index.js +0 -0
  249. package/programs/helpers/fadeaway/index.js +0 -3
  250. package/programs/helpers/fadeaway/object.js +0 -20
  251. package/programs/helpers/index.js +0 -2
  252. package/programs/index.js +0 -21
  253. package/programs/interface.ts +0 -7
  254. package/programs/line-on-globe/index.js +0 -0
  255. package/programs/line-on-globe/util.js +0 -8
  256. package/programs/rings/distancering/index.js +0 -5
  257. package/programs/rings/distancering/shader.js +0 -0
  258. package/programs/rings/index.js +0 -1
  259. package/programs/totems/camerauniformblock.d.ts +0 -48
  260. package/programs/totems/index.ts +0 -2
  261. package/programs/two-d/pixel-circle.js +0 -0
  262. package/programs/vectorfields/index.js +0 -3
  263. package/programs/vectorfields/logics/index.js +0 -5
  264. package/publish.bat +0 -60
  265. package/rangerings/enum.js +0 -3
  266. package/rangerings/index.js +0 -5
  267. package/shape-on-terrain/goal.md +0 -12
  268. package/tests/Math/junction/arc-plane.test.ts +0 -133
  269. package/tests/Math/junction/plane-plane.test.ts +0 -82
  270. package/tests/Math/plane.test.ts +0 -43
  271. package/tests/Math/vec3.test.ts +0 -14
  272. package/timetracks/index.js +0 -6
  273. package/timetracks/readme.md +0 -1
  274. package/tsconfig.json +0 -22
  275. package/util/account/index.js +0 -6
  276. package/util/account/single-attribute-buffer-management/index.ts +0 -13
  277. package/util/account/single-attribute-buffer-management/types.ts +0 -39
  278. package/util/algorithms/index.js +0 -0
  279. package/util/check/get.js +0 -13
  280. package/util/check/index.js +0 -0
  281. package/util/check/typecheck.js +0 -39
  282. package/util/gl-util/buffer/index.ts +0 -6
  283. package/util/gl-util/buffer/types.ts +0 -13
  284. package/util/gl-util/draw-options/methods.ts +0 -66
  285. package/util/gl-util/draw-options/types.ts +0 -28
  286. package/util/gl-util/uniform-block/roadmap.md +0 -70
  287. package/util/gl-util/uniform-block/shader.js +0 -0
  288. package/util/gl-util/uniform-block/types.ts +0 -27
  289. package/util/heatwavedatamanager/index.js +0 -3
  290. package/util/index.js +0 -13
  291. package/util/interpolation/index.js +0 -0
  292. package/util/interpolation/timetrack/index.js +0 -9
  293. package/util/jshelpers/index.js +0 -1
  294. package/util/programs/index.js +0 -1
  295. package/util/shaderfunctions/index.js +0 -2
  296. package/util/surface-line-data/cut-arc.js +0 -0
  297. package/util/surface-line-data/rbush-manager.js +0 -0
  298. package/util/surface-line-data/types.ts +0 -27
  299. package/util/surface-line-data/web-worker.js +0 -0
  300. package/util/webglobe/gldefaultstates.js +0 -5
  301. package/util/webglobe/index.js +0 -2
  302. package/waveparticles/index.js +0 -3
  303. package/wind/index.js +0 -5
  304. package/write-text/index.js +0 -1
@@ -1,80 +1,71 @@
1
- import { latLongToPixelXY } from "../util";
2
-
3
-
4
-
5
- /**
6
- * @param {Array.<Array.<number>>} coordinates
7
- * @param {Array.<number>} timestamps
8
- * @param {Array.<String>} styleGroupNameArray
9
- * @param {Object.<string, TrackStyleGroup>} _groupColorMap
10
- * @param {Float32Array} floatArray
11
- * @param {number} offset
12
- *
13
- * create floatArray with createFloat32Array before calling this function.
14
- * start offset from 0.
15
- * feed the floatArray with a track data and offset that is returned from the previous call.
16
- */
17
- function featuresToLineStringData(data) {
18
- /**
19
- * features are the tracks
20
- * feature[i].geometry.coordinates are the points of the track
21
- * feature[i].properties.messageTime are the timestamps of the points
22
- *
23
- */
24
- const features = data.features;
25
- let size = data.features.length - 1;
26
-
27
- let startTime = features[0].properties.messageTime[0];
28
- let endTime = features[0].properties.messageTime[features[0].properties.messageTime.length - 1];
29
-
30
- for (let feature of features) {
31
- size += feature.properties.messageTime.length;
32
- startTime = Math.min(startTime, feature.properties.messageTime[0]);
33
- endTime = Math.max(endTime, feature.properties.messageTime[feature.properties.messageTime.length - 1]);
34
- }
35
- const array = new Float32Array(size * 9);
36
- let offset = 0;
37
-
38
- {
39
- const feature = features[0];
40
- const coordinates = feature.geometry.coordinates;
41
- const timestamps = feature.properties.messageTime.map((time) => (time - startTime) / 1000);
42
- offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
43
- }
44
- for (let i = 1; i < features.length; i++) {
45
- const feature = features[i];
46
- const coordinates = feature.geometry.coordinates;
47
- const timestamps = feature.properties.messageTime.map((time) => (time - startTime) / 1000);
48
- offset = addCuttingPointLineStrip(array, offset);
49
- offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
50
- }
51
-
52
- return { data: array, startTime, endTime };
53
- }
54
-
55
-
56
- function fillSliceOfFloat32ArrayLineStrip(floatArray, offset, coordinates, timestamps, { styleGroupNameArray = null, groupColorFunction = () => [Math.random(), Math.random(), Math.random()] } = {}) {
57
- const startTime = timestamps[0];
58
- const endTime = timestamps[timestamps.length - 1];
59
- for (let i = 0; i < coordinates.length; i++) {
60
- const time = timestamps[i];
61
- const coord = coordinates[i];
62
- const styleGroupName = styleGroupNameArray ? styleGroupNameArray[i] : "default";
63
- const { x, y } = latLongToPixelXY(coord[1], coord[0]);
64
- const z = coord[2] ? coord[2] / 1000.0 : 0;
65
- floatArray.set([x, y, z, time, ...groupColorFunction(styleGroupName), startTime, endTime], offset);
66
- offset += 9;
67
- }
68
- return offset;
69
- }
70
-
71
- function addCuttingPointLineStrip(floatArray, offset) {
72
- floatArray.set(new Float32Array(9).fill(NaN), offset);
73
- return offset + 9;
74
- }
75
-
76
-
77
-
78
-
79
-
80
- export { addCuttingPointLineStrip, featuresToLineStringData, fillSliceOfFloat32ArrayLineStrip, latLongToPixelXY };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.latLongToPixelXY = void 0;
4
+ exports.addCuttingPointLineStrip = addCuttingPointLineStrip;
5
+ exports.featuresToLineStringData = featuresToLineStringData;
6
+ exports.fillSliceOfFloat32ArrayLineStrip = fillSliceOfFloat32ArrayLineStrip;
7
+ const util_1 = require("../util");
8
+ Object.defineProperty(exports, "latLongToPixelXY", { enumerable: true, get: function () { return util_1.latLongToPixelXY; } });
9
+ /**
10
+ * @param {Array.<Array.<number>>} coordinates
11
+ * @param {Array.<number>} timestamps
12
+ * @param {Array.<String>} styleGroupNameArray
13
+ * @param {Object.<string, TrackStyleGroup>} _groupColorMap
14
+ * @param {Float32Array} floatArray
15
+ * @param {number} offset
16
+ *
17
+ * create floatArray with createFloat32Array before calling this function.
18
+ * start offset from 0.
19
+ * feed the floatArray with a track data and offset that is returned from the previous call.
20
+ */
21
+ function featuresToLineStringData(data) {
22
+ /**
23
+ * features are the tracks
24
+ * feature[i].geometry.coordinates are the points of the track
25
+ * feature[i].properties.messageTime are the timestamps of the points
26
+ *
27
+ */
28
+ const features = data.features;
29
+ let size = data.features.length - 1;
30
+ let startTime = features[0].properties.messageTime[0];
31
+ let endTime = features[0].properties.messageTime[features[0].properties.messageTime.length - 1];
32
+ for (let feature of features) {
33
+ size += feature.properties.messageTime.length;
34
+ startTime = Math.min(startTime, feature.properties.messageTime[0]);
35
+ endTime = Math.max(endTime, feature.properties.messageTime[feature.properties.messageTime.length - 1]);
36
+ }
37
+ const array = new Float32Array(size * 9);
38
+ let offset = 0;
39
+ {
40
+ const feature = features[0];
41
+ const coordinates = feature.geometry.coordinates;
42
+ const timestamps = feature.properties.messageTime.map((time) => (time - startTime) / 1000);
43
+ offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
44
+ }
45
+ for (let i = 1; i < features.length; i++) {
46
+ const feature = features[i];
47
+ const coordinates = feature.geometry.coordinates;
48
+ const timestamps = feature.properties.messageTime.map((time) => (time - startTime) / 1000);
49
+ offset = addCuttingPointLineStrip(array, offset);
50
+ offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
51
+ }
52
+ return { data: array, startTime, endTime };
53
+ }
54
+ function fillSliceOfFloat32ArrayLineStrip(floatArray, offset, coordinates, timestamps, { styleGroupNameArray = null, groupColorFunction = () => [Math.random(), Math.random(), Math.random()] } = {}) {
55
+ const startTime = timestamps[0];
56
+ const endTime = timestamps[timestamps.length - 1];
57
+ for (let i = 0; i < coordinates.length; i++) {
58
+ const time = timestamps[i];
59
+ const coord = coordinates[i];
60
+ const styleGroupName = styleGroupNameArray ? styleGroupNameArray[i] : "default";
61
+ const { x, y } = (0, util_1.latLongToPixelXY)(coord[1], coord[0]);
62
+ const z = coord[2] ? coord[2] / 1000.0 : 0;
63
+ floatArray.set([x, y, z, time, ...groupColorFunction(styleGroupName), startTime, endTime], offset);
64
+ offset += 9;
65
+ }
66
+ return offset;
67
+ }
68
+ function addCuttingPointLineStrip(floatArray, offset) {
69
+ floatArray.set(new Float32Array(9).fill(NaN), offset);
70
+ return offset + 9;
71
+ }
@@ -1,133 +1,122 @@
1
- import { latLongToPixelXY } from "../util";
2
- const _latLongToPixelXY = latLongToPixelXY;
3
-
4
-
5
-
6
- class Adaptor {
7
- /**
8
- * @param {Object.<string, Color>} groupColorMap
9
- * @typedef {Array} Color | [r, g, b] | between 0-1
10
- */
11
- constructor(groupColorMap) {
12
- this._groupColorMap = groupColorMap;
13
- }
14
-
15
- /**
16
- * @param {Object} geojsonObject
17
- * @param {number} startTime
18
- * @param {string} timePropertyName
19
- * @param {string} styleGroupPropertyName
20
- * @returns {lineData} lineData for Plugin
21
- */
22
- fromGeoJson(geojsonObject, startTime, timePropertyName = "messageTime", styleGroupPropertyName = "styleGroup") {
23
- const features = geojsonObject.features.filter(feature => feature.geometry.coordinates.length > 1);
24
-
25
- const buffer = createFloat32Array(features.map(feature => feature.geometry.coordinates));
26
-
27
- let offset = 0;
28
- for (let feature of features) {
29
- const coordinates = feature.geometry.coordinates;
30
- const timestamps = feature.properties[timePropertyName].map((time) => (time - startTime) / 1000);
31
- const styleGroupNameArray = feature.properties[styleGroupPropertyName];
32
- offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
33
- }
34
- return buffer;
35
- }
36
-
37
- /**
38
- * Inputs are lists of tracks. Each track is a list of coordinates, timestamps and styleGroupNames.
39
- * @param {Array.<Array.<Array.<number>>>} coordinatesList | [ [ [lon, lat, z], [lon, lat, z], ...], ...
40
- * @param {Array.<Array.<number>>} timestampsList | [ [time, time, ...], ...
41
- * @param {Array.<Array.<String>>} colorGroupList | [ [styleGroupName, styleGroupName, ...], ...
42
- * @param {number} startTime | epoch time
43
- * @returns {lineData} lineData for Plugin
44
- */
45
- fromLists(coordinatesList, timestampsList, colorGroupList, startTime) {
46
-
47
- const buffer = createFloat32Array(coordinatesList);
48
-
49
- let offset = 0;
50
- for (let i = 0; i < coordinatesList.length; i++) {
51
- const coordinates = coordinatesList[i];
52
- const timestamps = timestampsList[i].map((time) => (time - startTime) / 1000);
53
- const styleGroupNameArray = colorGroupList[i];
54
- offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
55
- }
56
- return buffer;
57
- }
58
- }
59
-
60
- /**
61
- * @param {Array.<Array.<number>>} coordinates
62
- * @param {Array.<number>} timestamps
63
- * @param {Array.<String>} styleGroupNameArray
64
- * @param {Object.<string, TrackStyleGroup>} _groupColorMap
65
- * @param {Float32Array} floatArray
66
- * @param {number} offset
67
- *
68
- * create floatArray with createFloat32Array before calling this function.
69
- * start offset from 0.
70
- * feed the floatArray with a track data and offset that is returned from the previous call.
71
- */
72
- function fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, _groupColorMap, floatArray, offset) {
73
-
74
- if (coordinates[0].length === 2) {
75
- const startTime = timestamps[0];
76
- const endTime = timestamps[timestamps.length - 1];
77
- let prevPointData = null;
78
- { // first point
79
- const { x, y } = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]);
80
- prevPointData = [x, y, 0, timestamps[0], ..._groupColorMap[styleGroupNameArray[0]]];
81
- }
82
- { // middle points until end
83
- for (let i = 1; i < coordinates.length; i++) {
84
- const time = timestamps[i];
85
- const coord = coordinates[i];
86
- const { x, y } = _latLongToPixelXY(coord[1], coord[0]);
87
- floatArray.set([...prevPointData, startTime, endTime, x, y, 0, time, ..._groupColorMap[styleGroupNameArray[i]], startTime, endTime], offset);
88
- prevPointData = [x, y, 0, time, ..._groupColorMap[styleGroupNameArray[i]]];
89
- offset += 18;
90
- }
91
- }
92
- } else {
93
-
94
- const startTime = timestamps[0];
95
- const endTime = timestamps[timestamps.length - 1];
96
- let prevPointData = null;
97
- { // first point
98
- const { x, y } = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]);
99
- prevPointData = [x, y, coordinates[0][2] / 1000.0, timestamps[0], ..._groupColorMap[styleGroupNameArray[0]]];
100
- }
101
- { // middle points until end
102
- for (let i = 1; i < coordinates.length; i++) {
103
- const time = timestamps[i];
104
- const coord = coordinates[i];
105
- const { x, y } = _latLongToPixelXY(coord[1], coord[0]);
106
- floatArray.set([...prevPointData, startTime, endTime, x, y, coord[2] / 1000.0, time, ..._groupColorMap[styleGroupNameArray[i]], startTime, endTime], offset);
107
- prevPointData = [x, y, coord[2] / 1000.0, time, ..._groupColorMap[styleGroupNameArray[i]]];
108
- offset += 18;
109
- }
110
- }
111
- }
112
- return offset;
113
- }
114
-
115
-
116
- /**
117
- *
118
- * @param {*} coordinatesArray
119
- * @returns Float32Array
120
- * Coordinates array is needed to calculate the size of the buffer.
121
- */
122
- function createFloat32Array(coordinatesArray) {
123
- let filteredSize = 0;
124
- for (let coordinates of coordinatesArray) {
125
- filteredSize += coordinates.length * 2 - 2;
126
- }
127
- const array = new Float32Array(filteredSize * 9);
128
- return array;
129
- }
130
-
131
-
132
-
133
- export { Adaptor, fillSliceOfFloat32Array, createFloat32Array };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Adaptor = void 0;
4
+ exports.fillSliceOfFloat32Array = fillSliceOfFloat32Array;
5
+ exports.createFloat32Array = createFloat32Array;
6
+ const util_1 = require("../util");
7
+ const _latLongToPixelXY = util_1.latLongToPixelXY;
8
+ class Adaptor {
9
+ /**
10
+ * @param {Object.<string, Color>} groupColorMap
11
+ * @typedef {Array} Color | [r, g, b] | between 0-1
12
+ */
13
+ constructor(groupColorMap) {
14
+ this._groupColorMap = groupColorMap;
15
+ }
16
+ /**
17
+ * @param {Object} geojsonObject
18
+ * @param {number} startTime
19
+ * @param {string} timePropertyName
20
+ * @param {string} styleGroupPropertyName
21
+ * @returns {lineData} lineData for Plugin
22
+ */
23
+ fromGeoJson(geojsonObject, startTime, timePropertyName = "messageTime", styleGroupPropertyName = "styleGroup") {
24
+ const features = geojsonObject.features.filter(feature => feature.geometry.coordinates.length > 1);
25
+ const buffer = createFloat32Array(features.map(feature => feature.geometry.coordinates));
26
+ let offset = 0;
27
+ for (let feature of features) {
28
+ const coordinates = feature.geometry.coordinates;
29
+ const timestamps = feature.properties[timePropertyName].map((time) => (time - startTime) / 1000);
30
+ const styleGroupNameArray = feature.properties[styleGroupPropertyName];
31
+ offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
32
+ }
33
+ return buffer;
34
+ }
35
+ /**
36
+ * Inputs are lists of tracks. Each track is a list of coordinates, timestamps and styleGroupNames.
37
+ * @param {Array.<Array.<Array.<number>>>} coordinatesList | [ [ [lon, lat, z], [lon, lat, z], ...], ...
38
+ * @param {Array.<Array.<number>>} timestampsList | [ [time, time, ...], ...
39
+ * @param {Array.<Array.<String>>} colorGroupList | [ [styleGroupName, styleGroupName, ...], ...
40
+ * @param {number} startTime | epoch time
41
+ * @returns {lineData} lineData for Plugin
42
+ */
43
+ fromLists(coordinatesList, timestampsList, colorGroupList, startTime) {
44
+ const buffer = createFloat32Array(coordinatesList);
45
+ let offset = 0;
46
+ for (let i = 0; i < coordinatesList.length; i++) {
47
+ const coordinates = coordinatesList[i];
48
+ const timestamps = timestampsList[i].map((time) => (time - startTime) / 1000);
49
+ const styleGroupNameArray = colorGroupList[i];
50
+ offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
51
+ }
52
+ return buffer;
53
+ }
54
+ }
55
+ exports.Adaptor = Adaptor;
56
+ /**
57
+ * @param {Array.<Array.<number>>} coordinates
58
+ * @param {Array.<number>} timestamps
59
+ * @param {Array.<String>} styleGroupNameArray
60
+ * @param {Object.<string, TrackStyleGroup>} _groupColorMap
61
+ * @param {Float32Array} floatArray
62
+ * @param {number} offset
63
+ *
64
+ * create floatArray with createFloat32Array before calling this function.
65
+ * start offset from 0.
66
+ * feed the floatArray with a track data and offset that is returned from the previous call.
67
+ */
68
+ function fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, _groupColorMap, floatArray, offset) {
69
+ if (coordinates[0].length === 2) {
70
+ const startTime = timestamps[0];
71
+ const endTime = timestamps[timestamps.length - 1];
72
+ let prevPointData = null;
73
+ { // first point
74
+ const { x, y } = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]);
75
+ prevPointData = [x, y, 0, timestamps[0], ..._groupColorMap[styleGroupNameArray[0]]];
76
+ }
77
+ { // middle points until end
78
+ for (let i = 1; i < coordinates.length; i++) {
79
+ const time = timestamps[i];
80
+ const coord = coordinates[i];
81
+ const { x, y } = _latLongToPixelXY(coord[1], coord[0]);
82
+ floatArray.set([...prevPointData, startTime, endTime, x, y, 0, time, ..._groupColorMap[styleGroupNameArray[i]], startTime, endTime], offset);
83
+ prevPointData = [x, y, 0, time, ..._groupColorMap[styleGroupNameArray[i]]];
84
+ offset += 18;
85
+ }
86
+ }
87
+ }
88
+ else {
89
+ const startTime = timestamps[0];
90
+ const endTime = timestamps[timestamps.length - 1];
91
+ let prevPointData = null;
92
+ { // first point
93
+ const { x, y } = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]);
94
+ prevPointData = [x, y, coordinates[0][2] / 1000.0, timestamps[0], ..._groupColorMap[styleGroupNameArray[0]]];
95
+ }
96
+ { // middle points until end
97
+ for (let i = 1; i < coordinates.length; i++) {
98
+ const time = timestamps[i];
99
+ const coord = coordinates[i];
100
+ const { x, y } = _latLongToPixelXY(coord[1], coord[0]);
101
+ floatArray.set([...prevPointData, startTime, endTime, x, y, coord[2] / 1000.0, time, ..._groupColorMap[styleGroupNameArray[i]], startTime, endTime], offset);
102
+ prevPointData = [x, y, coord[2] / 1000.0, time, ..._groupColorMap[styleGroupNameArray[i]]];
103
+ offset += 18;
104
+ }
105
+ }
106
+ }
107
+ return offset;
108
+ }
109
+ /**
110
+ *
111
+ * @param {*} coordinatesArray
112
+ * @returns Float32Array
113
+ * Coordinates array is needed to calculate the size of the buffer.
114
+ */
115
+ function createFloat32Array(coordinatesArray) {
116
+ let filteredSize = 0;
117
+ for (let coordinates of coordinatesArray) {
118
+ filteredSize += coordinates.length * 2 - 2;
119
+ }
120
+ const array = new Float32Array(filteredSize * 9);
121
+ return array;
122
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.latLongToPixelXY = exports.fillSliceOfFloat32ArrayLineStrip = exports.featuresToLineStringData = exports.addCuttingPointLineStrip = exports.TimeTracksLineStrip = exports.TimeTracks = exports.createFloat32Array = exports.fillSliceOfFloat32Array = exports.Adaptor = void 0;
7
+ const plugin_1 = __importDefault(require("./plugin"));
8
+ exports.TimeTracks = plugin_1.default;
9
+ const adaptors_1 = require("./adaptors");
10
+ Object.defineProperty(exports, "Adaptor", { enumerable: true, get: function () { return adaptors_1.Adaptor; } });
11
+ Object.defineProperty(exports, "fillSliceOfFloat32Array", { enumerable: true, get: function () { return adaptors_1.fillSliceOfFloat32Array; } });
12
+ Object.defineProperty(exports, "createFloat32Array", { enumerable: true, get: function () { return adaptors_1.createFloat32Array; } });
13
+ const plugin_line_strip_1 = __importDefault(require("./plugin-line-strip"));
14
+ exports.TimeTracksLineStrip = plugin_line_strip_1.default;
15
+ const adaptors_line_strip_1 = require("./adaptors-line-strip");
16
+ Object.defineProperty(exports, "addCuttingPointLineStrip", { enumerable: true, get: function () { return adaptors_line_strip_1.addCuttingPointLineStrip; } });
17
+ Object.defineProperty(exports, "featuresToLineStringData", { enumerable: true, get: function () { return adaptors_line_strip_1.featuresToLineStringData; } });
18
+ Object.defineProperty(exports, "fillSliceOfFloat32ArrayLineStrip", { enumerable: true, get: function () { return adaptors_line_strip_1.fillSliceOfFloat32ArrayLineStrip; } });
19
+ Object.defineProperty(exports, "latLongToPixelXY", { enumerable: true, get: function () { return adaptors_line_strip_1.latLongToPixelXY; } });