@pirireis/webglobeplugins 1.0.2 → 1.0.3

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 (259) hide show
  1. package/Math/{angle-calculation.ts → angle-calculation.js} +14 -18
  2. package/Math/{arc-cdf-points.ts → arc-cdf-points.js} +272 -329
  3. package/Math/{arc-generate-points-exponantial.ts → arc-generate-points-exponantial.js} +254 -299
  4. package/Math/{arc.ts → arc.js} +292 -421
  5. package/Math/bounds/line-bbox.js +186 -225
  6. package/Math/{circle-cdf-points.ts → circle-cdf-points.js} +78 -143
  7. package/Math/{circle.ts → circle.js} +33 -49
  8. package/Math/{constants.ts → constants.js} +4 -12
  9. package/Math/contour/{quadtreecontours.ts → quadtreecontours.js} +300 -371
  10. package/Math/contour/quadtreecontours1.js +298 -336
  11. package/Math/{finite-line-2d.ts → finite-line-2d.js} +58 -68
  12. package/Math/{haversine.ts → haversine.js} +22 -33
  13. package/Math/index.js +1 -0
  14. package/Math/juction/{arc-plane.ts → arc-plane.js} +143 -203
  15. package/Math/juction/{line-sphere.ts → line-sphere.js} +22 -32
  16. package/Math/juction/{plane-plane.ts → plane-plane.js} +53 -62
  17. package/Math/{line.ts → line.js} +52 -84
  18. package/Math/matrix4.js +1 -0
  19. package/Math/{methods.ts → methods.js} +126 -182
  20. package/Math/{plane.ts → plane.js} +56 -92
  21. package/Math/{quaternion.ts → quaternion.js} +106 -128
  22. package/Math/templete-shapes/{grid-visually-equal.ts → grid-visually-equal.js} +65 -118
  23. package/Math/tessellation/constants.js +1 -0
  24. package/Math/tessellation/{methods.ts → methods.js} +49 -79
  25. package/Math/tessellation/{nearest-value-padding.ts → nearest-value-padding.js} +112 -147
  26. package/Math/tessellation/{spherical-triangle-area.ts → spherical-triangle-area.js} +99 -127
  27. package/Math/tessellation/{tile-merger.ts → tile-merger.js} +429 -578
  28. package/Math/tessellation/{triangle-tessellation.ts → triangle-tessellation.js} +386 -533
  29. package/Math/tessellation/types.js +1 -0
  30. package/Math/types.js +1 -0
  31. package/Math/utils.js +2 -3
  32. package/Math/{vec3.ts → vec3.js} +155 -227
  33. package/Math/{xyz-tile.ts → xyz-tile.js} +18 -26
  34. package/algorithms/search-binary.js +16 -14
  35. package/altitude-locator/adaptors.js +1 -0
  36. package/altitude-locator/keymethod.js +1 -0
  37. package/altitude-locator/plugin.js +344 -445
  38. package/altitude-locator/types.js +21 -26
  39. package/compass-rose/compass-rose-padding-flat.js +230 -274
  40. package/compass-rose/{compass-text-writer.ts → compass-text-writer.js} +155 -210
  41. package/compass-rose/index.js +3 -3
  42. package/{constants.ts → constants.js} +6 -8
  43. package/heatwave/datamanager.js +149 -168
  44. package/heatwave/heatwave.js +206 -261
  45. package/heatwave/index.js +5 -5
  46. package/heatwave/isobar.js +303 -340
  47. package/heatwave/{texture-point-sampler.ts → texture-point-sampler.js} +187 -220
  48. package/investigation-tools/draw/tiles/adapters.js +67 -0
  49. package/investigation-tools/draw/tiles/{tiles.ts → tiles.js} +128 -162
  50. package/jest.config.js +7 -6
  51. package/package.json +1 -1
  52. package/pin/pin-object-array1.js +300 -381
  53. package/pin/pin-point-totem1.js +60 -77
  54. package/programs/arrowfield/arrow-field.js +60 -89
  55. package/programs/arrowfield/logic.js +141 -173
  56. package/programs/data2legend/density-to-legend.js +68 -86
  57. package/programs/data2legend/point-to-density-texture.js +67 -84
  58. package/programs/float2legendwithratio/index.js +2 -3
  59. package/programs/float2legendwithratio/logic.js +118 -144
  60. package/programs/float2legendwithratio/object.js +104 -141
  61. package/programs/helpers/blender.js +58 -73
  62. package/programs/helpers/{fadeaway.ts → fadeaway.js} +60 -73
  63. package/programs/index.js +20 -19
  64. package/programs/line-on-globe/circle-accurate-3d.js +85 -112
  65. package/programs/line-on-globe/circle-accurate-flat.js +148 -200
  66. package/programs/line-on-globe/degree-padding-around-circle-3d.js +102 -134
  67. package/programs/line-on-globe/index.js +1 -0
  68. package/programs/line-on-globe/lines-color-instanced-flat.js +80 -99
  69. package/programs/line-on-globe/linestrip/data.js +4 -0
  70. package/programs/line-on-globe/linestrip/{linestrip.ts → linestrip.js} +93 -152
  71. package/programs/line-on-globe/{naive-accurate-flexible.ts → naive-accurate-flexible.js} +126 -175
  72. package/programs/line-on-globe/util.js +5 -8
  73. package/programs/picking/pickable-polygon-renderer.js +98 -129
  74. package/programs/picking/pickable-renderer.js +98 -130
  75. package/programs/point-on-globe/element-globe-surface-glow.js +93 -122
  76. package/programs/point-on-globe/element-point-glow.js +80 -114
  77. package/programs/point-on-globe/square-pixel-point.js +121 -139
  78. package/programs/polygon-on-globe/{texture-dem-triangles.ts → texture-dem-triangles.js} +163 -207
  79. package/programs/{programcache.ts → programcache.js} +126 -134
  80. package/programs/rings/index.js +1 -1
  81. package/programs/rings/partial-ring/{piece-of-pie.ts → piece-of-pie.js} +152 -222
  82. package/programs/totems/camera-totem-attactment-interface.js +1 -0
  83. package/programs/totems/{camerauniformblock.ts → camerauniformblock.js} +225 -310
  84. package/programs/totems/{canvas-webglobe-info.ts → canvas-webglobe-info.js} +132 -147
  85. package/programs/totems/{dem-textures-manager.ts → dem-textures-manager.js} +257 -360
  86. package/programs/totems/{globe-changes.ts → globe-changes.js} +59 -79
  87. package/programs/totems/gpu-selection-uniform-block.js +99 -127
  88. package/programs/totems/{index.ts → index.js} +2 -2
  89. package/programs/two-d/pixel-padding-for-compass.js +87 -101
  90. package/programs/util.js +14 -19
  91. package/programs/vectorfields/logics/{constants.ts → constants.js} +4 -5
  92. package/programs/vectorfields/logics/{drawrectangleparticles.ts → drawrectangleparticles.js} +80 -115
  93. package/programs/vectorfields/logics/index.js +2 -4
  94. package/programs/vectorfields/logics/particle-ubo.js +16 -0
  95. package/programs/vectorfields/logics/{pixelbased.ts → pixelbased.js} +86 -115
  96. package/programs/vectorfields/logics/ubo.js +51 -57
  97. package/programs/vectorfields/{pingpongbuffermanager.ts → pingpongbuffermanager.js} +99 -113
  98. package/range-tools-on-terrain/bearing-line/{adapters.ts → adapters.js} +114 -154
  99. package/range-tools-on-terrain/bearing-line/{plugin.ts → plugin.js} +457 -569
  100. package/range-tools-on-terrain/bearing-line/types.js +1 -0
  101. package/range-tools-on-terrain/circle-line-chain/{adapters.ts → adapters.js} +85 -104
  102. package/range-tools-on-terrain/circle-line-chain/{chain-list-map.ts → chain-list-map.js} +382 -446
  103. package/range-tools-on-terrain/circle-line-chain/{plugin.ts → plugin.js} +464 -607
  104. package/range-tools-on-terrain/circle-line-chain/types.js +1 -0
  105. package/range-tools-on-terrain/range-ring/{adapters.ts → adapters.js} +93 -114
  106. package/range-tools-on-terrain/range-ring/{enum.ts → enum.js} +2 -2
  107. package/range-tools-on-terrain/range-ring/{plugin.ts → plugin.js} +377 -444
  108. package/range-tools-on-terrain/range-ring/rangeringangletext.js +331 -0
  109. package/range-tools-on-terrain/range-ring/types.js +9 -0
  110. package/semiplugins/interface.js +1 -0
  111. package/semiplugins/lightweight/{line-plugin.ts → line-plugin.js} +221 -342
  112. package/semiplugins/lightweight/{piece-of-pie-plugin.ts → piece-of-pie-plugin.js} +200 -275
  113. package/semiplugins/shape-on-terrain/{arc-plugin.ts → arc-plugin.js} +481 -616
  114. package/semiplugins/shape-on-terrain/{circle-plugin.ts → circle-plugin.js} +444 -588
  115. package/semiplugins/shape-on-terrain/{padding-1-degree.ts → padding-1-degree.js} +539 -713
  116. package/semiplugins/shape-on-terrain/terrain-polygon/{adapters.ts → adapters.js} +55 -69
  117. package/semiplugins/shape-on-terrain/terrain-polygon/data/{cache.ts → cache.js} +102 -149
  118. package/semiplugins/shape-on-terrain/terrain-polygon/data/{index-polygon-map.ts → index-polygon-map.js} +45 -58
  119. package/semiplugins/shape-on-terrain/terrain-polygon/data/{manager.ts → manager.js} +4 -4
  120. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +177 -196
  121. package/semiplugins/shape-on-terrain/terrain-polygon/data/{polygon-to-triangles.ts → polygon-to-triangles.js} +100 -144
  122. package/semiplugins/shape-on-terrain/terrain-polygon/data/{random.ts → random.js} +121 -165
  123. package/semiplugins/shape-on-terrain/terrain-polygon/data/types.js +1 -0
  124. package/semiplugins/shape-on-terrain/terrain-polygon/data/{worker-contact.ts → worker-contact.js} +63 -81
  125. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +125 -146
  126. package/semiplugins/shape-on-terrain/terrain-polygon/{terrain-polygon.ts → terrain-polygon.js} +219 -265
  127. package/semiplugins/shape-on-terrain/terrain-polygon/types.js +8 -0
  128. package/semiplugins/shell/bbox-renderer/index.js +2 -0
  129. package/semiplugins/shell/bbox-renderer/{logic.ts → logic.js} +209 -273
  130. package/semiplugins/shell/bbox-renderer/object.js +75 -0
  131. package/semiplugins/type.js +1 -0
  132. package/semiplugins/utility/{container-plugin.ts → container-plugin.js} +94 -126
  133. package/semiplugins/utility/{object-pass-container-plugin.ts → object-pass-container-plugin.js} +80 -101
  134. package/shaders/fragment-toy/firework.js +1 -1
  135. package/shaders/fragment-toy/singularity.js +2 -5
  136. package/tracks/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
  137. package/tracks/point-heat-map/index.js +1 -0
  138. package/tracks/point-heat-map/plugin-webworker.js +121 -148
  139. package/tracks/point-heat-map/point-to-heat-map-flow.js +121 -150
  140. package/tracks/point-tracks/key-methods.js +2 -3
  141. package/tracks/point-tracks/plugin.js +401 -487
  142. package/tracks/timetracks/adaptors-line-strip.js +65 -79
  143. package/tracks/timetracks/plugin-line-strip.js +240 -295
  144. package/tracks/timetracks/program-line-strip.js +411 -495
  145. package/tracks/timetracks/programpoint-line-strip.js +109 -137
  146. package/types.js +19 -0
  147. package/util/account/bufferoffsetmanager.js +176 -209
  148. package/util/account/create-buffermap-orchastration.js +39 -0
  149. package/util/account/index.js +3 -6
  150. package/util/account/single-attribute-buffer-management/{buffer-manager.ts → buffer-manager.js} +119 -151
  151. package/util/account/single-attribute-buffer-management/{buffer-orchestrator.ts → buffer-orchestrator.js} +212 -238
  152. package/util/account/single-attribute-buffer-management/{buffer-orchestrator1.ts → buffer-orchestrator1.js} +159 -184
  153. package/util/account/single-attribute-buffer-management/{index.ts → index.js} +4 -11
  154. package/util/account/single-attribute-buffer-management/{object-store.ts → object-store.js} +55 -76
  155. package/util/account/single-attribute-buffer-management/types.js +1 -0
  156. package/util/account/util.js +18 -22
  157. package/util/algorithms/index.js +1 -0
  158. package/util/algorithms/search-binary.js +25 -26
  159. package/util/build-strategy/{static-dynamic.ts → static-dynamic.js} +41 -50
  160. package/util/check/index.js +1 -0
  161. package/util/check/typecheck.js +66 -0
  162. package/util/{frame-counter-trigger.ts → frame-counter-trigger.js} +84 -99
  163. package/util/geometry/{index.ts → index.js} +121 -155
  164. package/util/gl-util/buffer/{attribute-loader.ts → attribute-loader.js} +62 -84
  165. package/util/gl-util/buffer/{index.ts → index.js} +3 -6
  166. package/util/gl-util/draw-options/{methods.ts → methods.js} +32 -47
  167. package/util/gl-util/uniform-block/{manager.ts → manager.js} +200 -232
  168. package/util/{globe-default-gl-states.ts → globe-default-gl-states.js} +4 -5
  169. package/util/{helper-methods.ts → helper-methods.js} +8 -9
  170. package/util/index.js +10 -9
  171. package/util/interpolation/index.js +1 -0
  172. package/util/interpolation/timetrack/index.js +2 -9
  173. package/util/interpolation/timetrack/timetrack-interpolator.js +79 -94
  174. package/util/interpolation/timetrack/web-worker.js +46 -51
  175. package/util/picking/{fence.ts → fence.js} +43 -47
  176. package/util/picking/{picker-displayer.ts → picker-displayer.js} +176 -226
  177. package/util/programs/draw-from-pixel-coords.js +164 -201
  178. package/util/programs/{draw-texture-on-canvas.ts → draw-texture-on-canvas.js} +69 -91
  179. package/util/programs/supersampletotextures.js +97 -130
  180. package/util/programs/texturetoglobe.js +128 -153
  181. package/util/shaderfunctions/{geometrytransformations.ts → geometrytransformations.js} +44 -106
  182. package/util/shaderfunctions/index.js +2 -2
  183. package/util/shaderfunctions/nodata.js +2 -4
  184. package/util/shaderfunctions/noisefunctions.js +7 -10
  185. package/util/{webglobjectbuilders.ts → webglobjectbuilders.js} +358 -446
  186. package/vectorfield/arrowfield/adaptor.js +11 -11
  187. package/vectorfield/arrowfield/index.js +3 -3
  188. package/vectorfield/arrowfield/plugin.js +83 -128
  189. package/vectorfield/waveparticles/adaptor.js +15 -16
  190. package/vectorfield/waveparticles/index.js +3 -3
  191. package/vectorfield/waveparticles/{plugin.ts → plugin.js} +415 -506
  192. package/vectorfield/wind/adapters/{image-to-fields.ts → image-to-fields.js} +61 -74
  193. package/vectorfield/wind/adapters/types.js +1 -0
  194. package/vectorfield/wind/{imagetovectorfieldandmagnitude.ts → imagetovectorfieldandmagnitude.js} +53 -78
  195. package/vectorfield/wind/index.js +5 -5
  196. package/vectorfield/wind/{plugin-persistant copy.ts → plugin-persistant copy.js } +364 -461
  197. package/vectorfield/wind/{plugin-persistant.ts → plugin-persistant.js} +375 -483
  198. package/vectorfield/wind/plugin.js +685 -883
  199. package/vectorfield/wind/vectorfieldimage.js +23 -27
  200. package/write-text/{context-text-bulk.ts → context-text-bulk.js} +200 -285
  201. package/write-text/context-text3.js +167 -0
  202. package/write-text/{context-text4.ts → context-text4.js} +146 -231
  203. package/write-text/context-textDELETE.js +94 -125
  204. package/write-text/objectarraylabels/{index.ts → index.js} +2 -2
  205. package/write-text/objectarraylabels/objectarraylabels.js +200 -247
  206. package/Math/matrix4.ts +0 -0
  207. package/Math/mesh/mapbox-delaunay.d.ts +0 -74
  208. package/Math/roadmap.md +0 -10
  209. package/Math/tessellation/constants.ts +0 -1
  210. package/Math/tessellation/roadmap.md +0 -48
  211. package/Math/tessellation/types.ts +0 -1
  212. package/Math/types.ts +0 -68
  213. package/investigation-tools/draw/tiles/adapters.ts +0 -133
  214. package/programs/line-on-globe/linestrip/data.ts +0 -29
  215. package/programs/polygon-on-globe/roadmap.md +0 -8
  216. package/programs/totems/camera-totem-attactment-interface.ts +0 -4
  217. package/programs/vectorfields/logics/particle-ubo.ts +0 -23
  218. package/publish.bat +0 -62
  219. package/range-tools-on-terrain/bearing-line/types.ts +0 -65
  220. package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
  221. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
  222. package/range-tools-on-terrain/range-ring/types.ts +0 -30
  223. package/semiplugins/interface.ts +0 -14
  224. package/semiplugins/shape-on-terrain/goal.md +0 -12
  225. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +0 -20
  226. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +0 -209
  227. package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +0 -5
  228. package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +0 -37
  229. package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +0 -90
  230. package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +0 -69
  231. package/semiplugins/shell/bbox-renderer/index.ts +0 -2
  232. package/semiplugins/shell/bbox-renderer/object.ts +0 -129
  233. package/semiplugins/type.ts +0 -8
  234. package/terrain-plugin.mmd +0 -83
  235. package/tests/Math/arc-sampling-test.js +0 -367
  236. package/tests/Math/arc-sampling-test.ts +0 -429
  237. package/tests/Math/arc.test.ts +0 -77
  238. package/tests/Math/junction/arc-limit.test.ts +0 -7
  239. package/tests/Math/junction/arc-plane-points.test.ts +0 -196
  240. package/tests/Math/junction/arc-plane.test.ts +0 -172
  241. package/tests/Math/junction/line-sphere.test.ts +0 -127
  242. package/tests/Math/junction/plane-plane.test.ts +0 -91
  243. package/tests/Math/plane-test.ts +0 -17
  244. package/tests/Math/plane.test.ts +0 -43
  245. package/tests/Math/vec3.test.ts +0 -33
  246. package/tracks/point-heat-map/readme.md +0 -15
  247. package/tracks/timetracks/readme.md +0 -1
  248. package/tsconfig.json +0 -22
  249. package/types/@pirireis/webglobe.d.ts +0 -102
  250. package/types/delaunator.d.ts +0 -40
  251. package/types/earcut.d.ts +0 -11
  252. package/types/rbush.d.ts +0 -57
  253. package/types.ts +0 -319
  254. package/util/account/create-buffermap-orchastration.ts +0 -85
  255. package/util/account/single-attribute-buffer-management/types.ts +0 -43
  256. package/util/check/typecheck.ts +0 -74
  257. package/vectorfield/wind/adapters/types.ts +0 -12
  258. package/write-text/context-text3.ts +0 -252
  259. package/write-text/objectarraylabels/objectarraylabels.d.ts +0 -72
@@ -1,247 +1,200 @@
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;
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;
package/Math/matrix4.ts DELETED
File without changes
@@ -1,74 +0,0 @@
1
- export default class Delaunator {
2
- /**
3
- * Constructs a delaunay triangulation object given an array of points (`[x, y]` by default).
4
- * `getX` and `getY` are optional functions of the form `(point) => value` for custom point formats.
5
- */
6
- static from<P>(
7
- points: P[],
8
- getX?: (p: P) => number,
9
- getY?: (p: P) => number
10
- ): Delaunator;
11
-
12
- /**
13
- * Constructs a delaunay triangulation object given an array of point coordinates of the form:
14
- * `[x0, y0, x1, y1, ...]` (use a typed array for best performance). Duplicate points are skipped.
15
- */
16
- constructor(coords: ArrayLike<number>);
17
-
18
- /** The input coordinates array */
19
- coords: ArrayLike<number>;
20
-
21
- /** A `Uint32Array` array of indices that reference points on the convex hull of the input data, counter-clockwise. */
22
- hull: Uint32Array;
23
-
24
- /** A `Uint32Array` array of triangle vertex indices (each group of three numbers forms a triangle). All triangles are directed counterclockwise. */
25
- triangles: Uint32Array;
26
-
27
- /**
28
- * A `Int32Array` array of triangle half-edge indices that allows you to traverse the triangulation.
29
- * `i`-th half-edge in the array corresponds to vertex `triangles[i]` the half-edge is coming from.
30
- * `halfedges[i]` is the index of a twin half-edge in an adjacent triangle (or `-1` for outer half-edges on the convex hull).
31
- */
32
- halfedges: Int32Array;
33
-
34
- /**
35
- * Updates the triangulation if you modified `delaunay.coords` values in place, avoiding expensive memory allocations.
36
- * Useful for iterative relaxation algorithms such as Lloyd's.
37
- */
38
- update(): void;
39
-
40
- // Private properties and methods
41
- private _triangles: Uint32Array;
42
- private _halfedges: Int32Array;
43
- private _hashSize: number;
44
- private _hullPrev: Uint32Array;
45
- private _hullNext: Uint32Array;
46
- private _hullTri: Uint32Array;
47
- private _hullHash: Int32Array;
48
- private _ids: Uint32Array;
49
- private _dists: Float64Array;
50
- private trianglesLen: number;
51
- private _cx: number;
52
- private _cy: number;
53
- private _hullStart: number;
54
-
55
- private _hashKey(x: number, y: number): number;
56
- private _legalize(a: number): number;
57
- private _link(a: number, b: number): void;
58
- private _addTriangle(i0: number, i1: number, i2: number, a: number, b: number, c: number): number;
59
- }
60
-
61
- // Utility functions (not exported in the original module)
62
- declare function pseudoAngle(dx: number, dy: number): number;
63
- declare function dist(ax: number, ay: number, bx: number, by: number): number;
64
- declare function inCircle(ax: number, ay: number, bx: number, by: number, cx: number, cy: number, px: number, py: number): boolean;
65
- declare function circumradius(ax: number, ay: number, bx: number, by: number, cx: number, cy: number): number;
66
- declare function circumcenter(ax: number, ay: number, bx: number, by: number, cx: number, cy: number): { x: number; y: number };
67
- declare function quicksort(ids: Uint32Array, dists: Float64Array, left: number, right: number): void;
68
- declare function swap(arr: Uint32Array, i: number, j: number): void;
69
- declare function defaultGetX(p: [number, number]): number;
70
- declare function defaultGetY(p: [number, number]): number;
71
-
72
- // Constants
73
- declare const EPSILON: number;
74
- declare const EDGE_STACK: Uint32Array;
package/Math/roadmap.md DELETED
@@ -1,10 +0,0 @@
1
-
2
- There is an arc on a unit sphere. The sphere center is at the origin. The arc is represented with start and points.
3
-
4
- And there is a plane the intersects with the same sphere. Represented with vector and distance from origin.
5
-
6
- I want to know the relative position of points to the plane. If they are at the same direction with the plane vector or not.
7
-
8
- If two points are on the same side of the plane. If so, do they closer to origin then plane or not.
9
-
10
- If two points are on different side of the plane, I want to know the intersection point of arc and plane.
@@ -1 +0,0 @@
1
- export const TILE_COUNTS = Array.from({length: 22}, (_, i) => Math.pow(2, i ));
@@ -1,48 +0,0 @@
1
- # Preprocess
2
-
3
- 1) EarCut: Polygon -> triangles
4
- 2) triangles to arcs
5
- 3) cut arcs
6
- * Find peak points in latitude dimention.
7
- * Find latitude and longitude cut points on zoom 12 ( 12 becse elevation starts)
8
- * Cut from that latiude in meridian dimension
9
- **Question** Should I cut from peak point, before finding zoom cuts?
10
- I feels like no need. We will see
11
- 4) Put tringles in rbush
12
-
13
- **Question** What represents a triangle?
14
- 3 Arcs, with metadata of bbox,
15
- Since we cut from peak point parallel junktion with any arc should give maximum 1 point.
16
-
17
-
18
- # Maintainance
19
-
20
- Rbush tree needs maintanance. Maybe a delete counter. When it exceeds threshhold. rebuild tree with last income
21
-
22
- On edit mode the shapes change frequently. Lightweight version should work on theese cases.
23
-
24
- **Question** How lightweight version is different?
25
- Smaller instance of the structure only holds updated data. Probably rBush is put aside. All the shapes on this instance are processed each frame.
26
-
27
- # On Fly
28
-
29
- Get screenBBox,
30
- Get 6 high reslutiotion tiles
31
-
32
- find all triangles that touches it.
33
- Create Meshes of theme on webworker
34
- load result elements (3d and longlat coordinates) and indexes to gpu
35
- load DEM data as texture
36
-
37
- **Question** What will happen if a triangles resolution is not changed on the upcoming frame?
38
- need to cache each triangles last resolution,
39
-
40
- Catched items for each triangle:
41
- 1) mesh coordinates
42
- 2) mesh indexes or indexes should be easy to calculate
43
- **Question** How to calculate? Store how many points each parallel has.
44
- 3) Zoom Level
45
-
46
- If triangle has deeper mesh then its need to be, it can just use it
47
- Maybe I find a smart way to prune to mesh without distrupt its structure for lower resulution mesh
48
-
@@ -1 +0,0 @@
1
-
package/Math/types.ts DELETED
@@ -1,68 +0,0 @@
1
- type Radians = number;
2
- type Degrees = number;
3
- type Meter = number;
4
- type Fraction = number; // between 0 and 1
5
- type WGS84 = [number, number]; // [longitude, latitude]
6
- type Vec2 = [number, number]; // [x, y] or [longitude, latitude] in Mercator projection
7
- type Vec3 = [number, number, number];
8
- type Vec4 = [number, number, number, number];
9
-
10
- type Line = {
11
- origin: Vec3;
12
- direction: Vec3;
13
- }
14
-
15
- type FiniteLine2D = [number, number, number, number];
16
-
17
- type Plane = {
18
- normal: Vec3;
19
- distance: number;
20
- };
21
-
22
- // TODO: CLEAN THIS USE LongLatRadian OR LongLatDegree FROM types.ts
23
- type LongLat = [number, number]; // [longitude, latitude]
24
-
25
- type Quaternion = [number, number, number, number];
26
-
27
- type Arc = {
28
- p0: Vec3;
29
- p1: Vec3;
30
- normal: Vec3; // normal of the circle arc lie on
31
- coverPlane: Plane; // plane that divides the circle that the arc lie on into visible and covered half
32
- coverAngle: Radians;
33
- }
34
-
35
- type Sphere = {
36
- center: Vec3;
37
- radius: number;
38
- }
39
-
40
- type Circle = {
41
- center: LongLat;
42
- radius: Meter; // in meters
43
- }
44
-
45
- type CircleClosestAzimuthAngleProperties = {
46
- normal: Vec3;
47
- northPointProjectedToOriginPlaneNormalized: Vec3;
48
- }
49
-
50
- export {
51
- Vec2,
52
- Vec3,
53
- Vec4,
54
- Line,
55
- Plane,
56
- Quaternion,
57
- Fraction,
58
- WGS84,
59
- Arc,
60
- Sphere,
61
- Radians,
62
- Degrees,
63
- Meter,
64
- LongLat,
65
- Circle,
66
- CircleClosestAzimuthAngleProperties,
67
- FiniteLine2D
68
- }