@pirireis/webglobeplugins 0.17.0 → 1.0.2

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 (274) hide show
  1. package/Math/{angle-calculation.js → angle-calculation.ts} +18 -14
  2. package/Math/{arc-cdf-points.js → arc-cdf-points.ts} +329 -272
  3. package/Math/{arc-generate-points-exponantial.js → arc-generate-points-exponantial.ts} +299 -254
  4. package/Math/{arc.js → arc.ts} +421 -292
  5. package/Math/bounds/line-bbox.js +225 -186
  6. package/Math/{circle-cdf-points.js → circle-cdf-points.ts} +143 -78
  7. package/Math/{circle.js → circle.ts} +49 -33
  8. package/Math/{constants.js → constants.ts} +12 -4
  9. package/Math/contour/{quadtreecontours.js → quadtreecontours.ts} +371 -300
  10. package/Math/contour/quadtreecontours1.js +336 -298
  11. package/Math/{finite-line-2d.js → finite-line-2d.ts} +68 -58
  12. package/Math/haversine.ts +33 -0
  13. package/Math/index.js +0 -1
  14. package/Math/juction/{arc-plane.js → arc-plane.ts} +203 -143
  15. package/Math/juction/{line-sphere.js → line-sphere.ts} +32 -22
  16. package/Math/juction/{plane-plane.js → plane-plane.ts} +62 -53
  17. package/Math/{line.js → line.ts} +84 -52
  18. package/Math/matrix4.ts +0 -0
  19. package/Math/mesh/mapbox-delaunay.d.ts +74 -0
  20. package/Math/{methods.js → methods.ts} +182 -107
  21. package/Math/{plane.js → plane.ts} +92 -56
  22. package/Math/{quaternion.js → quaternion.ts} +128 -106
  23. package/Math/roadmap.md +10 -0
  24. package/Math/templete-shapes/{grid-visually-equal.js → grid-visually-equal.ts} +118 -65
  25. package/Math/tessellation/constants.ts +1 -0
  26. package/Math/tessellation/methods.ts +79 -0
  27. package/Math/tessellation/nearest-value-padding.ts +147 -0
  28. package/Math/tessellation/roadmap.md +48 -0
  29. package/Math/tessellation/spherical-triangle-area.ts +127 -0
  30. package/Math/tessellation/tile-merger.ts +578 -0
  31. package/Math/tessellation/triangle-tessellation.ts +533 -0
  32. package/Math/tessellation/types.ts +1 -0
  33. package/Math/types.ts +68 -0
  34. package/Math/utils.js +3 -2
  35. package/Math/{vec3.js → vec3.ts} +227 -151
  36. package/Math/xyz-tile.ts +26 -0
  37. package/algorithms/search-binary.js +14 -16
  38. package/altitude-locator/adaptors.js +0 -1
  39. package/altitude-locator/keymethod.js +0 -1
  40. package/altitude-locator/plugin.js +445 -345
  41. package/altitude-locator/types.js +26 -21
  42. package/compass-rose/compass-rose-padding-flat.js +274 -230
  43. package/compass-rose/{compass-text-writer.js → compass-text-writer.ts} +210 -155
  44. package/compass-rose/index.js +3 -3
  45. package/{constants.js → constants.ts} +8 -6
  46. package/heatwave/datamanager.js +168 -149
  47. package/heatwave/heatwave.js +261 -206
  48. package/heatwave/index.js +5 -5
  49. package/heatwave/isobar.js +340 -303
  50. package/heatwave/{texture-point-sampler.js → texture-point-sampler.ts} +220 -187
  51. package/investigation-tools/draw/tiles/adapters.ts +133 -0
  52. package/investigation-tools/draw/tiles/tiles.ts +162 -0
  53. package/jest.config.js +6 -7
  54. package/package.json +1 -1
  55. package/pin/pin-object-array1.js +381 -300
  56. package/pin/pin-point-totem1.js +77 -60
  57. package/programs/arrowfield/arrow-field.js +89 -60
  58. package/programs/arrowfield/logic.js +173 -141
  59. package/programs/data2legend/density-to-legend.js +86 -68
  60. package/programs/data2legend/point-to-density-texture.js +84 -67
  61. package/programs/float2legendwithratio/index.js +3 -2
  62. package/programs/float2legendwithratio/logic.js +144 -118
  63. package/programs/float2legendwithratio/object.js +141 -104
  64. package/programs/helpers/blender.js +73 -58
  65. package/programs/helpers/{fadeaway.js → fadeaway.ts} +73 -55
  66. package/programs/index.js +19 -20
  67. package/programs/line-on-globe/circle-accurate-3d.js +112 -85
  68. package/programs/line-on-globe/circle-accurate-flat.js +200 -148
  69. package/programs/line-on-globe/degree-padding-around-circle-3d.js +134 -102
  70. package/programs/line-on-globe/index.js +0 -1
  71. package/programs/line-on-globe/lines-color-instanced-flat.js +99 -80
  72. package/programs/line-on-globe/linestrip/data.ts +29 -0
  73. package/programs/line-on-globe/linestrip/{linestrip.js → linestrip.ts} +152 -93
  74. package/programs/line-on-globe/{naive-accurate-flexible.js → naive-accurate-flexible.ts} +175 -126
  75. package/programs/line-on-globe/util.js +8 -5
  76. package/programs/picking/pickable-polygon-renderer.js +129 -98
  77. package/programs/picking/pickable-renderer.js +130 -98
  78. package/programs/point-on-globe/element-globe-surface-glow.js +122 -93
  79. package/programs/point-on-globe/element-point-glow.js +114 -80
  80. package/programs/point-on-globe/square-pixel-point.js +139 -120
  81. package/programs/polygon-on-globe/roadmap.md +8 -0
  82. package/programs/polygon-on-globe/texture-dem-triangles.ts +290 -0
  83. package/programs/{programcache.js → programcache.ts} +134 -126
  84. package/programs/rings/index.js +1 -1
  85. package/programs/rings/partial-ring/{piece-of-pie.js → piece-of-pie.ts} +222 -152
  86. package/programs/totems/camera-totem-attactment-interface.ts +4 -0
  87. package/programs/totems/{camerauniformblock.js → camerauniformblock.ts} +326 -230
  88. package/programs/totems/{canvas-webglobe-info.js → canvas-webglobe-info.ts} +147 -132
  89. package/programs/totems/dem-textures-manager.ts +368 -0
  90. package/programs/totems/{globe-changes.js → globe-changes.ts} +79 -59
  91. package/programs/totems/gpu-selection-uniform-block.js +127 -99
  92. package/programs/totems/{index.js → index.ts} +2 -2
  93. package/programs/two-d/pixel-padding-for-compass.js +101 -87
  94. package/programs/util.js +19 -14
  95. package/programs/vectorfields/logics/{constants.js → constants.ts} +5 -4
  96. package/programs/vectorfields/logics/drawrectangleparticles.ts +182 -0
  97. package/programs/vectorfields/logics/index.js +4 -2
  98. package/programs/vectorfields/logics/particle-ubo.ts +23 -0
  99. package/programs/vectorfields/logics/{pixelbased.js → pixelbased.ts} +119 -84
  100. package/programs/vectorfields/logics/ubo.js +57 -51
  101. package/programs/vectorfields/{pingpongbuffermanager.js → pingpongbuffermanager.ts} +113 -73
  102. package/publish.bat +62 -0
  103. package/range-tools-on-terrain/bearing-line/{adapters.js → adapters.ts} +154 -114
  104. package/range-tools-on-terrain/bearing-line/{plugin.js → plugin.ts} +569 -457
  105. package/range-tools-on-terrain/bearing-line/types.ts +65 -0
  106. package/range-tools-on-terrain/circle-line-chain/{adapters.js → adapters.ts} +104 -85
  107. package/range-tools-on-terrain/circle-line-chain/{chain-list-map.js → chain-list-map.ts} +446 -382
  108. package/range-tools-on-terrain/circle-line-chain/{plugin.js → plugin.ts} +607 -464
  109. package/range-tools-on-terrain/circle-line-chain/types.ts +43 -0
  110. package/range-tools-on-terrain/range-ring/{adapters.js → adapters.ts} +114 -93
  111. package/range-tools-on-terrain/range-ring/{enum.js → enum.ts} +2 -2
  112. package/range-tools-on-terrain/range-ring/{plugin.js → plugin.ts} +444 -377
  113. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +396 -0
  114. package/range-tools-on-terrain/range-ring/types.ts +30 -0
  115. package/semiplugins/interface.ts +14 -0
  116. package/semiplugins/lightweight/{line-plugin.js → line-plugin.ts} +342 -221
  117. package/semiplugins/lightweight/{piece-of-pie-plugin.js → piece-of-pie-plugin.ts} +275 -200
  118. package/semiplugins/shape-on-terrain/{arc-plugin.js → arc-plugin.ts} +616 -472
  119. package/semiplugins/shape-on-terrain/{circle-plugin.js → circle-plugin.ts} +588 -444
  120. package/semiplugins/shape-on-terrain/goal.md +12 -0
  121. package/semiplugins/shape-on-terrain/{padding-1-degree.js → padding-1-degree.ts} +713 -539
  122. package/semiplugins/shape-on-terrain/terrain-polygon/adapters.ts +69 -0
  123. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +20 -0
  124. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache.ts +149 -0
  125. package/semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.ts +58 -0
  126. package/semiplugins/shape-on-terrain/terrain-polygon/data/manager.ts +4 -0
  127. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +196 -0
  128. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +209 -0
  129. package/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.ts +144 -0
  130. package/semiplugins/shape-on-terrain/terrain-polygon/data/random.ts +165 -0
  131. package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +5 -0
  132. package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +37 -0
  133. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.ts +81 -0
  134. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +146 -0
  135. package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +90 -0
  136. package/semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.ts +265 -0
  137. package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +69 -0
  138. package/semiplugins/shell/bbox-renderer/index.ts +2 -0
  139. package/semiplugins/shell/bbox-renderer/{logic.js → logic.ts} +273 -249
  140. package/semiplugins/shell/bbox-renderer/object.ts +129 -0
  141. package/semiplugins/type.ts +8 -0
  142. package/semiplugins/utility/{container-plugin.js → container-plugin.ts} +126 -94
  143. package/semiplugins/utility/{object-pass-container-plugin.js → object-pass-container-plugin.ts} +101 -80
  144. package/shaders/fragment-toy/firework.js +1 -1
  145. package/shaders/fragment-toy/singularity.js +5 -2
  146. package/terrain-plugin.mmd +83 -0
  147. package/tests/Math/arc-sampling-test.js +367 -0
  148. package/tests/Math/arc-sampling-test.ts +429 -0
  149. package/tests/Math/arc.test.ts +77 -0
  150. package/tests/Math/junction/arc-limit.test.ts +7 -0
  151. package/tests/Math/junction/arc-plane-points.test.ts +196 -0
  152. package/tests/Math/junction/arc-plane.test.ts +172 -0
  153. package/tests/Math/junction/line-sphere.test.ts +127 -0
  154. package/tests/Math/junction/plane-plane.test.ts +91 -0
  155. package/tests/Math/plane-test.ts +17 -0
  156. package/tests/Math/plane.test.ts +43 -0
  157. package/tests/Math/vec3.test.ts +33 -0
  158. package/tracks/point-heat-map/adaptors/timetracksplugin-format-to-this.js +78 -63
  159. package/tracks/point-heat-map/index.js +0 -1
  160. package/tracks/point-heat-map/plugin-webworker.js +148 -121
  161. package/tracks/point-heat-map/point-to-heat-map-flow.js +150 -121
  162. package/tracks/point-heat-map/readme.md +15 -0
  163. package/tracks/point-tracks/key-methods.js +3 -2
  164. package/tracks/point-tracks/plugin.js +487 -393
  165. package/tracks/timetracks/adaptors-line-strip.js +79 -65
  166. package/tracks/timetracks/plugin-line-strip.js +295 -240
  167. package/tracks/timetracks/program-line-strip.js +495 -411
  168. package/tracks/timetracks/programpoint-line-strip.js +137 -109
  169. package/tracks/timetracks/readme.md +1 -0
  170. package/tsconfig.json +22 -0
  171. package/types/@pirireis/webglobe.d.ts +102 -0
  172. package/types/delaunator.d.ts +40 -0
  173. package/types/earcut.d.ts +11 -0
  174. package/types/rbush.d.ts +57 -0
  175. package/types.ts +319 -0
  176. package/util/account/bufferoffsetmanager.js +209 -176
  177. package/util/account/create-buffermap-orchastration.ts +85 -0
  178. package/util/account/index.js +6 -3
  179. package/util/account/single-attribute-buffer-management/{buffer-manager.js → buffer-manager.ts} +151 -117
  180. package/util/account/single-attribute-buffer-management/{buffer-orchestrator.js → buffer-orchestrator.ts} +238 -212
  181. package/util/account/single-attribute-buffer-management/{buffer-orchestrator1.js → buffer-orchestrator1.ts} +184 -159
  182. package/util/account/single-attribute-buffer-management/{index.js → index.ts} +11 -4
  183. package/util/account/single-attribute-buffer-management/{object-store.js → object-store.ts} +76 -55
  184. package/util/account/single-attribute-buffer-management/types.ts +43 -0
  185. package/util/account/util.js +22 -18
  186. package/util/algorithms/index.js +0 -1
  187. package/util/algorithms/search-binary.js +26 -25
  188. package/util/build-strategy/{static-dynamic.js → static-dynamic.ts} +50 -41
  189. package/util/check/index.js +0 -1
  190. package/util/check/typecheck.ts +74 -0
  191. package/util/{frame-counter-trigger.js → frame-counter-trigger.ts} +99 -84
  192. package/util/geometry/{index.js → index.ts} +155 -121
  193. package/util/gl-util/buffer/{attribute-loader.js → attribute-loader.ts} +84 -62
  194. package/util/gl-util/buffer/{index.js → index.ts} +6 -3
  195. package/util/gl-util/draw-options/{methods.js → methods.ts} +47 -32
  196. package/util/gl-util/uniform-block/{manager.js → manager.ts} +232 -190
  197. package/util/{webglobe/gldefaultstates.js → globe-default-gl-states.ts} +5 -4
  198. package/util/helper-methods.ts +9 -0
  199. package/util/index.js +9 -10
  200. package/util/interpolation/index.js +0 -1
  201. package/util/interpolation/timetrack/index.js +9 -2
  202. package/util/interpolation/timetrack/timetrack-interpolator.js +94 -79
  203. package/util/interpolation/timetrack/web-worker.js +51 -46
  204. package/util/picking/{fence.js → fence.ts} +47 -41
  205. package/util/picking/picker-displayer.ts +226 -0
  206. package/util/programs/draw-from-pixel-coords.js +201 -164
  207. package/util/programs/{draw-texture-on-canvas.js → draw-texture-on-canvas.ts} +92 -67
  208. package/util/programs/supersampletotextures.js +130 -97
  209. package/util/programs/texturetoglobe.js +153 -128
  210. package/util/shaderfunctions/{geometrytransformations.js → geometrytransformations.ts} +169 -41
  211. package/util/shaderfunctions/index.js +2 -2
  212. package/util/shaderfunctions/nodata.js +4 -2
  213. package/util/shaderfunctions/noisefunctions.js +10 -7
  214. package/util/{webglobjectbuilders.js → webglobjectbuilders.ts} +446 -358
  215. package/vectorfield/arrowfield/adaptor.js +11 -11
  216. package/vectorfield/arrowfield/index.js +3 -3
  217. package/vectorfield/arrowfield/plugin.js +128 -83
  218. package/vectorfield/waveparticles/adaptor.js +16 -15
  219. package/vectorfield/waveparticles/index.js +3 -3
  220. package/vectorfield/waveparticles/plugin.ts +506 -0
  221. package/vectorfield/wind/adapters/image-to-fields.ts +74 -0
  222. package/vectorfield/wind/adapters/types.ts +12 -0
  223. package/vectorfield/wind/{imagetovectorfieldandmagnitude.js → imagetovectorfieldandmagnitude.ts} +78 -56
  224. package/vectorfield/wind/index.js +5 -5
  225. package/vectorfield/wind/plugin-persistant copy.ts +461 -0
  226. package/vectorfield/wind/plugin-persistant.ts +483 -0
  227. package/vectorfield/wind/plugin.js +883 -671
  228. package/vectorfield/wind/vectorfieldimage.js +27 -23
  229. package/write-text/{context-text-bulk.js → context-text-bulk.ts} +285 -200
  230. package/write-text/context-text3.ts +252 -0
  231. package/write-text/{context-text4.js → context-text4.ts} +231 -145
  232. package/write-text/context-textDELETE.js +125 -94
  233. package/write-text/objectarraylabels/{index.js → index.ts} +2 -2
  234. package/write-text/objectarraylabels/objectarraylabels.d.ts +72 -0
  235. package/write-text/objectarraylabels/objectarraylabels.js +247 -200
  236. package/Math/matrix4.js +0 -1
  237. package/Math/tessellation/earcut/adapters.js +0 -37
  238. package/Math/tessellation/hybrid-triangle-tessellation-meta.js +0 -123
  239. package/Math/tessellation/methods.js +0 -46
  240. package/Math/tessellation/shred-input.js +0 -18
  241. package/Math/tessellation/tile-merger.js +0 -56
  242. package/Math/tessellation/tiler.js +0 -50
  243. package/Math/tessellation/triangle-tessellation-meta.js +0 -516
  244. package/Math/tessellation/triangle-tessellation.js +0 -14
  245. package/Math/tessellation/types.js +0 -1
  246. package/Math/tessellation/zoom-catch.js +0 -1
  247. package/Math/types.js +0 -1
  248. package/programs/line-on-globe/linestrip/data.js +0 -4
  249. package/programs/polygon-on-globe/partial-tesselation.js +0 -1
  250. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin-triangle.js +0 -204
  251. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin.js +0 -118
  252. package/programs/polygon-on-globe/texture-dem-triangles.js +0 -236
  253. package/programs/vectorfields/logics/drawrectangleparticles.js +0 -112
  254. package/programs/vectorfields/logics/ubo-new.js +0 -25
  255. package/range-tools-on-terrain/bearing-line/types.js +0 -1
  256. package/range-tools-on-terrain/circle-line-chain/types.js +0 -1
  257. package/range-tools-on-terrain/range-ring/rangeringangletext.js +0 -331
  258. package/range-tools-on-terrain/range-ring/types.js +0 -9
  259. package/semiplugins/interface.js +0 -1
  260. package/semiplugins/shape-on-terrain/terrain-cover/texture-dem-cover.js +0 -1
  261. package/semiplugins/shell/bbox-renderer/index.js +0 -2
  262. package/semiplugins/shell/bbox-renderer/object.js +0 -65
  263. package/semiplugins/type.js +0 -1
  264. package/types.js +0 -19
  265. package/util/account/create-buffermap-orchastration.js +0 -39
  266. package/util/account/single-attribute-buffer-management/types.js +0 -1
  267. package/util/check/typecheck.js +0 -66
  268. package/util/gl-util/uniform-block/types.js +0 -1
  269. package/util/picking/picker-displayer.js +0 -134
  270. package/util/webglobe/index.js +0 -2
  271. package/util/webglobe/rasteroverlay.js +0 -76
  272. package/vectorfield/waveparticles/plugin.js +0 -290
  273. package/write-text/attached-text-writer.js +0 -95
  274. package/write-text/context-text3.js +0 -167
@@ -1,200 +1,247 @@
1
- import { CSGlobe, CSIconTypes, CSObjectTypes, CSObjectArrayUpdateTypes, } from "@pirireis/webglobe";
2
- /**
3
- * @typedef {Object} IconPayload
4
- * @property {string} app6DCode
5
- * @property {string} accsCode
6
- */
7
- /**
8
- * @typedef {IconPayload & Object.<string, any>} PointPayload
9
- */
10
- /**
11
- * @typedef {Object} CanChangeOptions
12
- * @property {boolean} [attribs=false]
13
- * @property {boolean} [icon=false]
14
- * @property {boolean} [label=false]
15
- * @property {boolean} [heading=false]
16
- */
17
- /**
18
- * @typedef {Object} PointObjectArray
19
- * @property {number[]} coords [longitude1, latitude1, longitude2, latitude2, ....]
20
- * @property {number[]} coordsZ [z1, z2, ....]
21
- * @property {PointPayload[]} attribs
22
- */
23
- class ObjectArrayLabels {
24
- /**
25
- * @param {number | string} id
26
- * @param {CSGlobe} globe
27
- */
28
- constructor(id, globe, labelStyle = null) {
29
- this.id = id;
30
- this.setGlobe(globe);
31
- this.data = [
32
- {
33
- coords: [],
34
- coordsZ: [],
35
- attribs: [],
36
- },
37
- ];
38
- this.primaryKey = "id";
39
- this.objectType = CSObjectTypes.POINT;
40
- this.filter = null;
41
- this.bbox = null;
42
- this.startLod = 2;
43
- this.endLod = 19;
44
- this.query = true;
45
- this.reportObj = function (values, mouseEvent) { };
46
- this._idCollector = new Set();
47
- this._setStyle(labelStyle);
48
- }
49
- _setStyle(labelStyle) {
50
- this.style = this.globe.ObjectArray.GetDefaultStyle();
51
- if (labelStyle) {
52
- this.style.labels[0] = labelStyle;
53
- }
54
- else {
55
- this.style.labels[0].vAlignment = 2; // dikey olarak tam noktanın ortası
56
- this.style.labels[0].hAlignment = 2; // yatay olarak tam noktanın ortası
57
- this.style.labels[0].size = 11;
58
- this.style.labels[0].drawAlways = true;
59
- this.style.labels[0].fontFamily.name = "arial";
60
- this.style.labels[0].fontFamily.bold = false;
61
- this.style.labels[0].fontFamily.hollow = true;
62
- this.style.labels[0].fontFamily.hollowWidth = 1;
63
- this.style.labels[0].fontFamily.hollowOpacity = 1;
64
- }
65
- this.style.labels[0].text = "${value}";
66
- this.style.fidKey = this.primaryKey;
67
- this.style.iconType = CSIconTypes.NOICON; // milIcon ekleyebilmek için icon tipi MAP olmalı
68
- }
69
- /**
70
- * @param {CSGlobe} [globe]
71
- */
72
- setGlobe(globe) {
73
- if (!globe)
74
- return;
75
- this.globe = globe;
76
- }
77
- addToMap() {
78
- this.globe.ObjectArray.Add(this);
79
- }
80
- removeFromMap() {
81
- this.flush();
82
- this.globe.ObjectArray.Delete(this.id);
83
- }
84
- /**
85
- * Haritaya kullanılacak veriyi verir. Her çağrıldığında tüm hesaplamalar yeniden yapılır
86
- * @param {PointObjectArray} data
87
- */
88
- setData(data) {
89
- this.globe.ObjectArray.SetData(this, [data]);
90
- }
91
- /**
92
- * @param {PointObjectArray} data
93
- * @param {CSObjectArrayUpdateTypes} operation
94
- * @param {CanChangeOptions} [canChange]
95
- */
96
- updateData(data, operation, canChange) {
97
- this.globe.ObjectArray.UpdateData(this, operation, [data], canChange);
98
- }
99
- flush() {
100
- const deleteBucket = {
101
- coords: [],
102
- coordsZ: [],
103
- attribs: [],
104
- };
105
- this.setData(deleteBucket);
106
- this._idCollector = new Set();
107
- }
108
- /**
109
- * Haritaya kullanılacak veriyi verir. Her çağrıldığında tüm hesaplamalar yeniden yapılmaz, ancak ön hesaplama maliyeti vardır
110
- * @param {PointObjectArray} data
111
- */
112
- setControlledData(data) {
113
- const paritalData = {
114
- add: {
115
- coords: [],
116
- coordsZ: [],
117
- attribs: [],
118
- },
119
- update: {
120
- coords: [],
121
- coordsZ: [],
122
- attribs: [],
123
- },
124
- delete: {
125
- coords: [],
126
- coordsZ: [],
127
- attribs: [],
128
- },
129
- canChange: {
130
- // Tüm değişimler gözardı edilecek
131
- attribs: false,
132
- icon: false,
133
- label: false,
134
- heading: false,
135
- },
136
- };
137
- // İlk toplu ekleme adımı
138
- if (this._idCollector.size === 0) {
139
- this.setData(data);
140
- // Eklenen id'ler set edildi
141
- for (let i = 0; i < data.attribs.length; i++) {
142
- const currentPayload = data.attribs[i];
143
- const id = currentPayload[this.primaryKey];
144
- this._idCollector.add(id);
145
- }
146
- return;
147
- }
148
- /** @type {Set<string>} */
149
- const dataIds = new Set();
150
- for (let i = 0; i < data.attribs.length; i++) {
151
- const currentPayload = data.attribs[i];
152
- const id = currentPayload[this.primaryKey];
153
- let bucket = paritalData.add;
154
- dataIds.add(id);
155
- if (this._idCollector.has(id)) {
156
- bucket = paritalData.update;
157
- }
158
- else {
159
- this._idCollector.add(id);
160
- }
161
- bucket.coords.push(data.coords[2 * i], data.coords[2 * i + 1]);
162
- bucket.coordsZ.push(data.coordsZ[i]);
163
- bucket.attribs.push(currentPayload);
164
- }
165
- // Artık varolmayan elemenları sil
166
- const deleteBucket = paritalData.delete;
167
- this._idCollector.forEach((id) => {
168
- if (!dataIds.has(id)) {
169
- this._idCollector.delete(id);
170
- deleteBucket.coords.push(0, 0);
171
- deleteBucket.coordsZ.push(0);
172
- deleteBucket.attribs.push({
173
- [this.primaryKey]: id,
174
- });
175
- }
176
- });
177
- if (paritalData.add.coords.length > 0) {
178
- this.updateData(paritalData.add, CSObjectArrayUpdateTypes.ADD);
179
- }
180
- if (paritalData.update.coords.length > 0) {
181
- this.updateData(paritalData.update, CSObjectArrayUpdateTypes.UPDATE, paritalData.canChange);
182
- }
183
- if (paritalData.delete.coords.length > 0) {
184
- this.updateData(paritalData.delete, CSObjectArrayUpdateTypes.DELETE);
185
- }
186
- }
187
- setPrimarykey(key) {
188
- this.primaryKey = key;
189
- }
190
- setSymbolSet(symbolSet) {
191
- this.symbolSet = symbolSet;
192
- }
193
- getLabelStyle() {
194
- return this.style.labels[0];
195
- }
196
- setLabelStyle(style) {
197
- this.style.labels[0] = style;
198
- }
199
- }
200
- export default ObjectArrayLabels;
1
+ import {
2
+ CSGlobe,
3
+ CSIconTypes,
4
+ CSObjectTypes,
5
+ CSObjectArrayUpdateTypes,
6
+ } from "@pirireis/webglobe";
7
+
8
+ /**
9
+ * @typedef {Object} IconPayload
10
+ * @property {string} app6DCode
11
+ * @property {string} accsCode
12
+ */
13
+
14
+ /**
15
+ * @typedef {IconPayload & Object.<string, any>} PointPayload
16
+ */
17
+
18
+ /**
19
+ * @typedef {Object} CanChangeOptions
20
+ * @property {boolean} [attribs=false]
21
+ * @property {boolean} [icon=false]
22
+ * @property {boolean} [label=false]
23
+ * @property {boolean} [heading=false]
24
+ */
25
+
26
+ /**
27
+ * @typedef {Object} PointObjectArray
28
+ * @property {number[]} coords [longitude1, latitude1, longitude2, latitude2, ....]
29
+ * @property {number[]} coordsZ [z1, z2, ....]
30
+ * @property {PointPayload[]} attribs
31
+ */
32
+
33
+ class ObjectArrayLabels {
34
+ /**
35
+ * @param {number | string} id
36
+ * @param {CSGlobe} globe
37
+ */
38
+ constructor(id, globe, labelStyle = null) {
39
+ this.id = id;
40
+ this.setGlobe(globe);
41
+
42
+ this.data = [
43
+ {
44
+ coords: [],
45
+ coordsZ: [],
46
+ attribs: [],
47
+ },
48
+ ];
49
+
50
+ this.primaryKey = "id";
51
+
52
+ this.objectType = CSObjectTypes.POINT;
53
+ this.filter = null;
54
+ this.bbox = null;
55
+ this.startLod = 2;
56
+ this.endLod = 19;
57
+ this.query = true;
58
+ this.reportObj = function (values, mouseEvent) { };
59
+ this._idCollector = new Set();
60
+ this._setStyle(labelStyle);
61
+ }
62
+
63
+
64
+
65
+ _setStyle(labelStyle) {
66
+ this.style = this.globe.ObjectArray.GetDefaultStyle();
67
+
68
+ if (labelStyle) {
69
+ this.style.labels[0] = labelStyle;
70
+ } else {
71
+ this.style.labels[0].vAlignment = 2 // dikey olarak tam noktanın ortası
72
+ this.style.labels[0].hAlignment = 2 // yatay olarak tam noktanın ortası
73
+ this.style.labels[0].size = 11;
74
+ this.style.labels[0].drawAlways = true;
75
+ this.style.labels[0].fontFamily.name = "arial";
76
+ this.style.labels[0].fontFamily.bold = false;
77
+ this.style.labels[0].fontFamily.hollow = true;
78
+ this.style.labels[0].fontFamily.hollowWidth = 1;
79
+ this.style.labels[0].fontFamily.hollowOpacity = 1;
80
+ }
81
+
82
+ this.style.labels[0].text = "${value}";
83
+ this.style.fidKey = this.primaryKey;
84
+
85
+ this.style.iconType = CSIconTypes.NOICON; // milIcon ekleyebilmek için icon tipi MAP olmalı
86
+ }
87
+ /**
88
+ * @param {CSGlobe} [globe]
89
+ */
90
+ setGlobe(globe) {
91
+ if (!globe) return;
92
+ this.globe = globe;
93
+ }
94
+
95
+ addToMap() {
96
+ this.globe.ObjectArray.Add(this);
97
+ }
98
+
99
+ removeFromMap() {
100
+ this.flush();
101
+ this.globe.ObjectArray.Delete(this.id);
102
+ }
103
+
104
+ /**
105
+ * Haritaya kullanılacak veriyi verir. Her çağrıldığında tüm hesaplamalar yeniden yapılır
106
+ * @param {PointObjectArray} data
107
+ */
108
+ setData(data) {
109
+ this.globe.ObjectArray.SetData(this, [data]);
110
+ }
111
+
112
+ /**
113
+ * @param {PointObjectArray} data
114
+ * @param {CSObjectArrayUpdateTypes} operation
115
+ * @param {CanChangeOptions} [canChange]
116
+ */
117
+ updateData(data, operation, canChange) {
118
+ this.globe.ObjectArray.UpdateData(this, operation, [data], canChange);
119
+ }
120
+
121
+ flush() {
122
+ const deleteBucket = {
123
+ coords: [],
124
+ coordsZ: [],
125
+ attribs: [],
126
+ };
127
+ this.setData(deleteBucket);
128
+ this._idCollector = new Set();
129
+ }
130
+
131
+ /**
132
+ * Haritaya kullanılacak veriyi verir. Her çağrıldığında tüm hesaplamalar yeniden yapılmaz, ancak ön hesaplama maliyeti vardır
133
+ * @param {PointObjectArray} data
134
+ */
135
+ setControlledData(data) {
136
+ const paritalData = {
137
+ add: {
138
+ coords: [],
139
+ coordsZ: [],
140
+ attribs: [],
141
+ },
142
+ update: {
143
+ coords: [],
144
+ coordsZ: [],
145
+ attribs: [],
146
+ },
147
+ delete: {
148
+ coords: [],
149
+ coordsZ: [],
150
+ attribs: [],
151
+ },
152
+ canChange: {
153
+ // Tüm değişimler gözardı edilecek
154
+ attribs: false,
155
+ icon: false,
156
+ label: false,
157
+ heading: false,
158
+ },
159
+ };
160
+ // İlk toplu ekleme adımı
161
+ if (this._idCollector.size === 0) {
162
+ this.setData(data);
163
+
164
+ // Eklenen id'ler set edildi
165
+ for (let i = 0; i < data.attribs.length; i++) {
166
+ const currentPayload = data.attribs[i];
167
+ const id = currentPayload[this.primaryKey];
168
+
169
+ this._idCollector.add(id);
170
+ }
171
+
172
+ return;
173
+ }
174
+
175
+ /** @type {Set<string>} */
176
+ const dataIds = new Set();
177
+
178
+ for (let i = 0; i < data.attribs.length; i++) {
179
+ const currentPayload = data.attribs[i];
180
+ const id = currentPayload[this.primaryKey];
181
+
182
+ let bucket = paritalData.add;
183
+
184
+ dataIds.add(id);
185
+
186
+ if (this._idCollector.has(id)) {
187
+ bucket = paritalData.update;
188
+ } else {
189
+ this._idCollector.add(id);
190
+ }
191
+
192
+ bucket.coords.push(data.coords[2 * i], data.coords[2 * i + 1]);
193
+ bucket.coordsZ.push(data.coordsZ[i]);
194
+ bucket.attribs.push(currentPayload);
195
+ }
196
+
197
+ // Artık varolmayan elemenları sil
198
+ const deleteBucket = paritalData.delete;
199
+ this._idCollector.forEach((id) => {
200
+ if (!dataIds.has(id)) {
201
+ this._idCollector.delete(id);
202
+
203
+ deleteBucket.coords.push(0, 0);
204
+ deleteBucket.coordsZ.push(0);
205
+ deleteBucket.attribs.push({
206
+ [this.primaryKey]: id,
207
+ });
208
+ }
209
+ });
210
+
211
+ if (paritalData.add.coords.length > 0) {
212
+ this.updateData(paritalData.add, CSObjectArrayUpdateTypes.ADD);
213
+ }
214
+
215
+ if (paritalData.update.coords.length > 0) {
216
+ this.updateData(
217
+ paritalData.update,
218
+ CSObjectArrayUpdateTypes.UPDATE,
219
+ paritalData.canChange
220
+ );
221
+ }
222
+
223
+ if (paritalData.delete.coords.length > 0) {
224
+ this.updateData(paritalData.delete, CSObjectArrayUpdateTypes.DELETE);
225
+ }
226
+ }
227
+
228
+
229
+ setPrimarykey(key) {
230
+ this.primaryKey = key;
231
+ }
232
+
233
+ setSymbolSet(symbolSet) {
234
+ this.symbolSet = symbolSet;
235
+ }
236
+
237
+ getLabelStyle() {
238
+ return this.style.labels[0];
239
+ }
240
+
241
+ setLabelStyle(style) {
242
+ this.style.labels[0] = style;
243
+
244
+ }
245
+ }
246
+
247
+ export default ObjectArrayLabels;
package/Math/matrix4.js DELETED
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,37 +0,0 @@
1
- function geoJSONToEarcut(geojson) {
2
- const vertices = [];
3
- const holes = [];
4
- const dimensions = 2; // Assuming 2D coordinates (longitude, latitude)
5
- let holeIndex = 0;
6
- if (geojson.type !== 'FeatureCollection') {
7
- throw new Error('Invalid GeoJSON: Expected FeatureCollection');
8
- }
9
- const features = geojson.features;
10
- function processPolygon(coordinates) {
11
- for (let i = 0; i < coordinates.length; i++) {
12
- if (i > 0) {
13
- holeIndex += coordinates[i - 1].length;
14
- holes.push(holeIndex);
15
- }
16
- for (const coord of coordinates[i]) {
17
- vertices.push(coord[0], coord[1]);
18
- }
19
- }
20
- }
21
- function processMultiPolygon(coordinates) {
22
- for (const polygon of coordinates) {
23
- processPolygon(polygon);
24
- }
25
- }
26
- for (const feature of features) {
27
- const geometry = feature.geometry;
28
- if (geometry.type === 'Polygon') {
29
- processPolygon(geometry.coordinates);
30
- }
31
- else if (geometry.type === 'MultiPolygon') {
32
- processMultiPolygon(geometry.coordinates);
33
- }
34
- }
35
- return { vertices, holes, dimensions };
36
- }
37
- export { geoJSONToEarcut };
@@ -1,123 +0,0 @@
1
- /**
2
- * @author Toprak Ozturk
3
- */
4
- import { equals, fromLongLatToUnitVector, fromUnitVectorToLongLat } from "../vec3";
5
- import { pointsOnArc } from "../juction/arc-plane";
6
- import { junctionVerticalOrHorizontalLines } from "../finite-line-2d";
7
- // TODO:get rid of embedded lists. always flat list
8
- const TILE_DEM_VERTEX_COUNT = 5; // 5x5 grid for DEM
9
- const TILE_DEM_STEPCOUNT = TILE_DEM_VERTEX_COUNT - 1; // 4 inner divisions in each dimension
10
- var EdgeType;
11
- (function (EdgeType) {
12
- EdgeType[EdgeType["ARC"] = 0] = "ARC";
13
- EdgeType[EdgeType["LINEAR"] = 1] = "LINEAR";
14
- })(EdgeType || (EdgeType = {}));
15
- const _tempVec2 = /*@__PURE__*/ [0, 0];
16
- const _plane = /*@__PURE__*/ { normal: [0, 0, 0], distance: 0 };
17
- const _resultPoints = /*@__PURE__*/ [[0, 0, 0], [0, 0, 0]];
18
- /**
19
- *
20
- * @param triangleMeta
21
- * @param zoom
22
- * @param angle
23
- * @param dimension false for longitude (meridian) true for latitude (parallel)
24
- */
25
- function getPoints(triangleMeta, angle, dimension) {
26
- // console.log("getPoints called with angle:", angle * 180 / Math.PI, "dimension:", dimension ? 'latitude' : 'longitude');
27
- // find which arcs are cut by plane
28
- const radians = angle;
29
- if (dimension) {
30
- _plane.normal[0] = 0;
31
- _plane.normal[1] = 0;
32
- _plane.normal[2] = 1;
33
- _plane.distance = Math.sin(radians);
34
- }
35
- else {
36
- _plane.normal[0] = Math.sin(radians);
37
- _plane.normal[1] = -Math.cos(radians);
38
- _plane.normal[2] = 0;
39
- _plane.distance = 0;
40
- }
41
- let result = [];
42
- // Add debugging
43
- let resultsFromDistinctEdges = 0;
44
- for (let i = 0; i < 3; i++) {
45
- const edgeType = triangleMeta.edgeTypes[i];
46
- const edge = triangleMeta.edges[i];
47
- const coordIndex = dimension ? 1 : 0;
48
- const minCoord = edge.bbox.min[coordIndex];
49
- const maxCoord = edge.bbox.max[coordIndex];
50
- if (minCoord > angle || maxCoord < angle) {
51
- continue; // edge is out of range
52
- }
53
- let count = 0;
54
- if (edgeType === EdgeType.ARC) {
55
- count = pointsOnArc(edge, _plane, _resultPoints);
56
- if (count === 1) {
57
- fromUnitVectorToLongLat(_tempVec2, _resultPoints[0]);
58
- result.push([[..._resultPoints[0]], [..._tempVec2]]);
59
- }
60
- else if (count === 2) {
61
- // throw new Error('Unexpected 2 cut points on arc, should be max 1'); // TODO DELETE this line later
62
- fromUnitVectorToLongLat(_tempVec2, _resultPoints[0]);
63
- result.push([[..._resultPoints[0]], [..._tempVec2]]);
64
- fromUnitVectorToLongLat(_tempVec2, _resultPoints[1]);
65
- result.push([[..._resultPoints[1]], [..._tempVec2]]); // TODO: this is a fix for a bug, need to investigate later
66
- }
67
- }
68
- else {
69
- // linear line
70
- count = junctionVerticalOrHorizontalLines(_tempVec2, edge.line, angle, dimension);
71
- if (count === 1) {
72
- fromLongLatToUnitVector(_resultPoints[0], _tempVec2);
73
- result.push([[..._resultPoints[0]], [..._tempVec2]]);
74
- }
75
- }
76
- resultsFromDistinctEdges += 1;
77
- }
78
- if (resultsFromDistinctEdges === 3) {
79
- result = filterDuplicate(result);
80
- }
81
- if (result.length !== 2 && result.length !== 4) {
82
- // TODO: THERE is a case where 4 points are found.
83
- // this happens when two arcs has limit and share space in Z dimension
84
- console.log("ERROR");
85
- const text = 'Angle:' + angle + ' dimension:' + (dimension ? 'latitude' : 'longitude') + "\n" +
86
- 'Result points count:' + result.length + "\n" +
87
- "bbox:" + triangleMeta.bbox.min[0] * 180 / Math.PI + ", " + triangleMeta.bbox.min[1] * 180 / Math.PI + ", " + triangleMeta.bbox.max[0] * 180 / Math.PI + ", " + triangleMeta.bbox.max[1] * 180 / Math.PI + "\n";
88
- for (let res of result) {
89
- const ll = res[1];
90
- console.log("Point: " + ll[0] * 180 / Math.PI + ", " + ll[1] * 180 / Math.PI + "\n");
91
- }
92
- throw new Error(`Unexpected cut count for tile cut, got: ${result.length}, angle: ${angle * 180 / Math.PI}, dimension: ${dimension ? 'latitude' : 'longitude'} \n` + text);
93
- }
94
- // TODO: i want to see it delete later
95
- if (result.length === 4) {
96
- console.warn("Warning: 4 cut points found on triangle for angle:", angle * 180 / Math.PI, "dimension:", dimension ? 'latitude' : 'longitude', "points:", result);
97
- }
98
- result.sort((a, b) => {
99
- if (dimension) {
100
- return a[1][0] - b[1][0]; // sort by y for longitude cuts
101
- }
102
- else {
103
- return a[1][1] - b[1][1]; // sort by x for latitude cuts
104
- }
105
- });
106
- return result;
107
- }
108
- function filterDuplicate(points) {
109
- const result = [points[0]];
110
- let dublicate = false;
111
- for (let i = 1; i < points.length; i++) {
112
- for (let j = 0; j < result.length; j++) {
113
- if (equals(points[i][0], result[j][0])) {
114
- dublicate = true;
115
- break;
116
- }
117
- }
118
- if (!dublicate) {
119
- result.push(points[i]);
120
- }
121
- }
122
- return result;
123
- }
@@ -1,46 +0,0 @@
1
- import { TILE_COUNTS } from "./zoom-catch";
2
- /**
3
- * If the slope is not close the zero not very important but
4
- * If a line goes along a parallel its latitude can tilt a lot
5
- * For these cases:
6
- * Meridian junctions should be first.
7
- * So we have information about possible edge latitude
8
- * Or the counting box should be calculated accourding to great circle
9
- *
10
- *
11
- */
12
- export function latToTileY(lat, zoom) {
13
- return (1 - Math.log(Math.tan(lat) + 1 / Math.cos(lat)) / Math.PI) / 2 * TILE_COUNTS[zoom];
14
- }
15
- export function lonToTileX(lon, zoom) {
16
- return (lon + Math.PI) / (2 * Math.PI) * TILE_COUNTS[zoom];
17
- }
18
- export function longLatToTileDecimal(lon, lat, zoom) {
19
- return [lonToTileX(lon, zoom), latToTileY(lat, zoom)];
20
- }
21
- export function tileYtoLat(y, zoom) {
22
- const n = Math.PI - 2 * Math.PI * y / TILE_COUNTS[zoom];
23
- return (Math.PI / Math.PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n))));
24
- }
25
- export function tileXtoLon(x, zoom) {
26
- return x / TILE_COUNTS[zoom] * (2 * Math.PI) - Math.PI;
27
- }
28
- export function tessellationLatDimention(zoom, lowLat, highLat) {
29
- const lowY = latToTileY(lowLat, zoom);
30
- const highY = latToTileY(highLat, zoom);
31
- const latitudes = [];
32
- if (lowY % 1 !== 0)
33
- latitudes.push(lowLat);
34
- for (let y = Math.ceil(lowY); y <= Math.floor(highY); y++) {
35
- latitudes.push(tileYtoLat(y, zoom));
36
- }
37
- if (highY % 1 !== 0)
38
- latitudes.push(highLat);
39
- return latitudes;
40
- }
41
- export function isOnTileEdge(longLat, zoom) {
42
- const tileX = lonToTileX(longLat[0], zoom);
43
- const tileY = latToTileY(longLat[1], zoom);
44
- const epsilon = 1 / TILE_COUNTS[zoom] / 200;
45
- return (Math.abs(tileX % 1) < epsilon || Math.abs(tileY % 1) < epsilon || Math.abs(tileX % 1 - 1) < epsilon || Math.abs(tileY % 1 - 1) < epsilon);
46
- }