@pirireis/webglobeplugins 0.16.0 → 0.16.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 (480) hide show
  1. package/Math/angle-calculation.js +13 -14
  2. package/Math/bounds/line-bbox.js +186 -225
  3. package/Math/index.js +1 -0
  4. package/Math/mesh/mapbox-delaunay.js +544 -607
  5. package/Math/utils.js +2 -3
  6. package/algorithms/search-binary.js +16 -14
  7. package/altitude-locator/adaptors.js +1 -0
  8. package/altitude-locator/keymethod.js +1 -0
  9. package/altitude-locator/plugin.js +345 -446
  10. package/altitude-locator/types.js +21 -26
  11. package/arrowfield/adaptor.js +11 -11
  12. package/arrowfield/index.js +3 -3
  13. package/arrowfield/plugin.js +83 -128
  14. package/bearing-line/index.js +2 -2
  15. package/bearing-line/plugin.js +444 -520
  16. package/circle-line-chain/chain-list-map.js +201 -221
  17. package/circle-line-chain/init.js +1 -0
  18. package/circle-line-chain/plugin.js +411 -464
  19. package/circle-line-chain/util.js +1 -1
  20. package/compass-rose/compass-rose-padding-flat.js +230 -274
  21. package/compass-rose/compass-text-writer.js +149 -173
  22. package/compass-rose/index.js +3 -3
  23. package/compassrose/compassrose.js +293 -341
  24. package/compassrose/index.js +2 -2
  25. package/constants.js +3 -0
  26. package/heatwave/index.js +3 -4
  27. package/heatwave/isobar/objectarraylabels.js +200 -247
  28. package/heatwave/isobar/plugin.js +302 -339
  29. package/heatwave/isobar/quadtreecontours.js +298 -336
  30. package/heatwave/plugins/heatwaveglobeshell.js +204 -259
  31. package/index.js +12 -15
  32. package/jest.config.js +7 -6
  33. package/package.json +1 -4
  34. package/partialrings/buffer-manager.js +75 -89
  35. package/partialrings/index.js +2 -3
  36. package/partialrings/plugin.js +128 -160
  37. package/partialrings/program.js +188 -233
  38. package/pin/pin-object-array.js +300 -381
  39. package/pin/pin-point-totem.js +60 -77
  40. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
  41. package/point-heat-map/index.js +1 -0
  42. package/point-heat-map/plugin-webworker.js +121 -148
  43. package/point-heat-map/point-to-heat-map-flow.js +124 -150
  44. package/point-tracks/key-methods.js +2 -3
  45. package/point-tracks/plugin.js +393 -480
  46. package/programs/arrowfield/index.js +2 -2
  47. package/programs/arrowfield/logic.js +141 -173
  48. package/programs/arrowfield/object.js +60 -89
  49. package/programs/data2legend/density-to-legend.js +73 -90
  50. package/programs/data2legend/point-to-density-texture.js +70 -87
  51. package/programs/float2legendwithratio/index.js +2 -3
  52. package/programs/float2legendwithratio/logic.js +118 -144
  53. package/programs/float2legendwithratio/object.js +104 -141
  54. package/programs/globe-util/is-globe-moved.js +19 -27
  55. package/programs/globeshell/index.js +2 -2
  56. package/programs/globeshell/wiggle/index.js +2 -3
  57. package/programs/globeshell/wiggle/logic.js +243 -272
  58. package/programs/globeshell/wiggle/object.js +66 -93
  59. package/programs/helpers/blender/index.js +1 -0
  60. package/programs/helpers/blender/program.js +58 -73
  61. package/programs/helpers/fadeaway/index.js +2 -3
  62. package/programs/helpers/fadeaway/logic.js +46 -53
  63. package/programs/helpers/fadeaway/object.js +14 -20
  64. package/programs/helpers/index.js +2 -2
  65. package/programs/index.js +9 -21
  66. package/programs/line-on-globe/circle-accurate-3d.js +87 -115
  67. package/programs/line-on-globe/circle-accurate-flat.js +149 -201
  68. package/programs/line-on-globe/degree-padding-around-circle-3d.js +104 -136
  69. package/programs/line-on-globe/index.js +1 -0
  70. package/programs/line-on-globe/lines-color-instanced-flat.js +83 -102
  71. package/programs/line-on-globe/util.js +5 -8
  72. package/programs/picking/pickable-polygon-renderer.js +98 -129
  73. package/programs/picking/pickable-renderer.js +98 -129
  74. package/programs/point-on-globe/element-globe-surface-glow.js +93 -122
  75. package/programs/point-on-globe/element-point-glow.js +80 -114
  76. package/programs/point-on-globe/square-pixel-point.js +120 -138
  77. package/programs/rings/distancering/circleflatprogram.js +116 -138
  78. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +275 -323
  79. package/programs/rings/distancering/circlepaddysharedbuffer.js +368 -423
  80. package/programs/rings/distancering/index.js +6 -5
  81. package/programs/rings/distancering/paddyflatprogram.js +127 -148
  82. package/programs/rings/distancering/paddyflatprogram2d.js +129 -153
  83. package/programs/rings/distancering/paddyflatprogram3d.js +128 -149
  84. package/programs/rings/index.js +1 -1
  85. package/{dist/programs → programs}/totems/camerauniformblock.js +10 -3
  86. package/programs/totems/gpu-selection-uniform-block.js +99 -127
  87. package/programs/two-d/pixel-circle.js +1 -0
  88. package/programs/two-d/pixel-padding-for-compass.js +97 -112
  89. package/programs/util.js +14 -19
  90. package/programs/vectorfields/index.js +3 -3
  91. package/programs/vectorfields/logics/drawrectangleparticles.js +58 -78
  92. package/programs/vectorfields/logics/index.js +2 -4
  93. package/programs/vectorfields/logics/pixelbased.js +73 -92
  94. package/programs/vectorfields/logics/ubo.js +51 -57
  95. package/programs/vectorfields/pingpongbuffermanager.js +73 -80
  96. package/rangerings/index.js +5 -5
  97. package/rangerings/plugin.js +543 -644
  98. package/rangerings/rangeringangletext.js +326 -369
  99. package/rangerings/ring-account.js +112 -129
  100. package/shaders/fragment-toy/firework.js +1 -1
  101. package/shaders/fragment-toy/singularity.js +2 -5
  102. package/timetracks/adaptors-line-strip.js +65 -80
  103. package/timetracks/index.js +1 -0
  104. package/timetracks/plugin-line-strip.js +240 -295
  105. package/timetracks/program-line-strip.js +411 -491
  106. package/timetracks/programpoint-line-strip.js +98 -122
  107. package/util/account/bufferoffsetmanager.js +176 -209
  108. package/util/account/index.js +3 -6
  109. package/util/account/util.js +18 -22
  110. package/util/algorithms/index.js +1 -0
  111. package/util/algorithms/search-binary.js +25 -26
  112. package/util/check/index.js +1 -0
  113. package/util/geometry/index.js +121 -0
  114. package/util/gl-util/uniform-block/shader.js +1 -0
  115. package/util/heatwavedatamanager/datamanager.js +149 -168
  116. package/util/heatwavedatamanager/index.js +2 -2
  117. package/util/index.js +13 -13
  118. package/util/interpolation/index.js +1 -0
  119. package/util/interpolation/timetrack/index.js +2 -9
  120. package/util/interpolation/timetrack/timetrack-interpolator.js +79 -94
  121. package/util/interpolation/timetrack/web-worker.js +46 -51
  122. package/util/jshelpers/data-filler.js +17 -19
  123. package/util/jshelpers/equality.js +18 -17
  124. package/util/jshelpers/index.js +2 -1
  125. package/util/jshelpers/timefilters.js +30 -32
  126. package/util/picking/fence.js +43 -46
  127. package/util/picking/picker-displayer.js +136 -177
  128. package/util/programs/draw-texture-on-canvas.js +66 -82
  129. package/util/programs/index.js +1 -1
  130. package/util/programs/shapesonglobe.js +167 -203
  131. package/util/programs/supersampletotextures.js +99 -132
  132. package/util/programs/texturetoglobe.js +128 -152
  133. package/util/shaderfunctions/index.js +2 -2
  134. package/util/shaderfunctions/nodata.js +2 -4
  135. package/util/shaderfunctions/noisefunctions.js +7 -10
  136. package/util/surface-line-data/arcs-to-cuts.js +50 -74
  137. package/util/surface-line-data/cut-arc.js +1 -0
  138. package/util/surface-line-data/rbush-manager.js +1 -0
  139. package/util/surface-line-data/web-worker.js +1 -0
  140. package/util/webglobe/gldefaultstates.js +4 -5
  141. package/util/webglobe/index.js +2 -2
  142. package/util/webglobe/rasteroverlay.js +75 -96
  143. package/waveparticles/adaptor.js +15 -16
  144. package/waveparticles/index.js +3 -3
  145. package/waveparticles/plugin.js +290 -342
  146. package/wind/imagetovectorfieldandmagnitude.js +56 -71
  147. package/wind/index.js +5 -5
  148. package/wind/plugin.js +670 -845
  149. package/wind/vectorfieldimage.js +23 -27
  150. package/write-text/attached-text-writer.js +87 -105
  151. package/{dist/write-text → write-text}/context-text-bulk.js +35 -20
  152. package/write-text/context-text.js +94 -125
  153. package/write-text/context-text3old.js +152 -179
  154. package/{dist/write-text → write-text}/context-text4.js +5 -3
  155. package/write-text/index.js +1 -1
  156. package/write-text/writer-plugin.js +8 -7
  157. package/Math/arc-cdf-points.ts +0 -329
  158. package/Math/arc-generate-points-exponantial.ts +0 -299
  159. package/Math/arc.ts +0 -299
  160. package/Math/circle-cdf-points.ts +0 -143
  161. package/Math/circle.ts +0 -49
  162. package/Math/constants.ts +0 -12
  163. package/Math/juction/arc-plane.ts +0 -129
  164. package/Math/juction/line-sphere.ts +0 -30
  165. package/Math/juction/plane-plane.ts +0 -64
  166. package/Math/line.ts +0 -84
  167. package/Math/matrix4.ts +0 -0
  168. package/Math/methods.ts +0 -157
  169. package/Math/plane.ts +0 -92
  170. package/Math/quaternion.ts +0 -128
  171. package/Math/roadmap.md +0 -10
  172. package/Math/templete-shapes/grid-visually-equal.ts +0 -119
  173. package/Math/types.ts +0 -66
  174. package/Math/vec3.ts +0 -180
  175. package/circle-line-chain/readme.md +0 -57
  176. package/depth-locator/readme.md +0 -26
  177. package/dist/Math/angle-calculation.js +0 -13
  178. package/dist/Math/bounds/line-bbox.js +0 -186
  179. package/dist/Math/index.js +0 -1
  180. package/dist/Math/mesh/mapbox-delaunay.js +0 -544
  181. package/dist/Math/utils.js +0 -2
  182. package/dist/algorithms/search-binary.js +0 -16
  183. package/dist/altitude-locator/adaptors.js +0 -1
  184. package/dist/altitude-locator/keymethod.js +0 -1
  185. package/dist/altitude-locator/plugin.js +0 -345
  186. package/dist/altitude-locator/types.js +0 -21
  187. package/dist/arrowfield/adaptor.js +0 -11
  188. package/dist/arrowfield/index.js +0 -3
  189. package/dist/arrowfield/plugin.js +0 -83
  190. package/dist/bearing-line/index.js +0 -2
  191. package/dist/bearing-line/plugin.js +0 -444
  192. package/dist/circle-line-chain/chain-list-map.js +0 -201
  193. package/dist/circle-line-chain/init.js +0 -1
  194. package/dist/circle-line-chain/plugin.js +0 -411
  195. package/dist/circle-line-chain/util.js +0 -1
  196. package/dist/compass-rose/compass-rose-padding-flat.js +0 -230
  197. package/dist/compass-rose/compass-text-writer.js +0 -149
  198. package/dist/compass-rose/index.js +0 -3
  199. package/dist/compassrose/compassrose.js +0 -293
  200. package/dist/compassrose/index.js +0 -2
  201. package/dist/heatwave/index.js +0 -3
  202. package/dist/heatwave/isobar/objectarraylabels.js +0 -200
  203. package/dist/heatwave/isobar/plugin.js +0 -302
  204. package/dist/heatwave/isobar/quadtreecontours.js +0 -298
  205. package/dist/heatwave/plugins/heatwaveglobeshell.js +0 -204
  206. package/dist/index.js +0 -12
  207. package/dist/jest.config.js +0 -7
  208. package/dist/partialrings/buffer-manager.js +0 -75
  209. package/dist/partialrings/index.js +0 -2
  210. package/dist/partialrings/plugin.js +0 -128
  211. package/dist/partialrings/program.js +0 -279
  212. package/dist/pin/pin-object-array.js +0 -300
  213. package/dist/pin/pin-point-totem.js +0 -60
  214. package/dist/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -63
  215. package/dist/point-heat-map/index.js +0 -1
  216. package/dist/point-heat-map/plugin-webworker.js +0 -121
  217. package/dist/point-heat-map/point-to-heat-map-flow.js +0 -124
  218. package/dist/point-tracks/key-methods.js +0 -2
  219. package/dist/point-tracks/plugin.js +0 -393
  220. package/dist/programs/arrowfield/index.js +0 -2
  221. package/dist/programs/arrowfield/logic.js +0 -254
  222. package/dist/programs/arrowfield/object.js +0 -60
  223. package/dist/programs/data2legend/density-to-legend.js +0 -98
  224. package/dist/programs/data2legend/point-to-density-texture.js +0 -97
  225. package/dist/programs/float2legendwithratio/index.js +0 -2
  226. package/dist/programs/float2legendwithratio/logic.js +0 -167
  227. package/dist/programs/float2legendwithratio/object.js +0 -104
  228. package/dist/programs/globe-util/is-globe-moved.js +0 -19
  229. package/dist/programs/globeshell/index.js +0 -2
  230. package/dist/programs/globeshell/wiggle/index.js +0 -2
  231. package/dist/programs/globeshell/wiggle/logic.js +0 -342
  232. package/dist/programs/globeshell/wiggle/object.js +0 -66
  233. package/dist/programs/helpers/blender/index.js +0 -1
  234. package/dist/programs/helpers/blender/program.js +0 -76
  235. package/dist/programs/helpers/fadeaway/index.js +0 -2
  236. package/dist/programs/helpers/fadeaway/logic.js +0 -69
  237. package/dist/programs/helpers/fadeaway/object.js +0 -14
  238. package/dist/programs/helpers/index.js +0 -2
  239. package/dist/programs/index.js +0 -9
  240. package/dist/programs/line-on-globe/circle-accurate-3d.js +0 -138
  241. package/dist/programs/line-on-globe/circle-accurate-flat.js +0 -210
  242. package/dist/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -156
  243. package/dist/programs/line-on-globe/index.js +0 -1
  244. package/dist/programs/line-on-globe/lines-color-instanced-flat.js +0 -131
  245. package/dist/programs/line-on-globe/util.js +0 -5
  246. package/dist/programs/picking/pickable-polygon-renderer.js +0 -184
  247. package/dist/programs/picking/pickable-renderer.js +0 -184
  248. package/dist/programs/point-on-globe/element-globe-surface-glow.js +0 -138
  249. package/dist/programs/point-on-globe/element-point-glow.js +0 -150
  250. package/dist/programs/point-on-globe/square-pixel-point.js +0 -171
  251. package/dist/programs/rings/distancering/circleflatprogram.js +0 -116
  252. package/dist/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -326
  253. package/dist/programs/rings/distancering/circlepaddysharedbuffer.js +0 -368
  254. package/dist/programs/rings/distancering/index.js +0 -6
  255. package/dist/programs/rings/distancering/paddyflatprogram.js +0 -127
  256. package/dist/programs/rings/distancering/paddyflatprogram2d.js +0 -129
  257. package/dist/programs/rings/distancering/paddyflatprogram3d.js +0 -128
  258. package/dist/programs/rings/index.js +0 -1
  259. package/dist/programs/totems/gpu-selection-uniform-block.js +0 -104
  260. package/dist/programs/two-d/pixel-circle.js +0 -1
  261. package/dist/programs/two-d/pixel-padding-for-compass.js +0 -159
  262. package/dist/programs/util.js +0 -14
  263. package/dist/programs/vectorfields/index.js +0 -3
  264. package/dist/programs/vectorfields/logics/drawrectangleparticles.js +0 -113
  265. package/dist/programs/vectorfields/logics/index.js +0 -2
  266. package/dist/programs/vectorfields/logics/pixelbased.js +0 -140
  267. package/dist/programs/vectorfields/logics/ubo.js +0 -60
  268. package/dist/programs/vectorfields/pingpongbuffermanager.js +0 -73
  269. package/dist/rangerings/index.js +0 -5
  270. package/dist/rangerings/plugin.js +0 -543
  271. package/dist/rangerings/rangeringangletext.js +0 -326
  272. package/dist/rangerings/ring-account.js +0 -112
  273. package/dist/shaders/fragment-toy/firework.js +0 -55
  274. package/dist/shaders/fragment-toy/singularity.js +0 -56
  275. package/dist/timetracks/adaptors-line-strip.js +0 -65
  276. package/dist/timetracks/index.js +0 -1
  277. package/dist/timetracks/plugin-line-strip.js +0 -240
  278. package/dist/timetracks/program-line-strip.js +0 -608
  279. package/dist/timetracks/programpoint-line-strip.js +0 -151
  280. package/dist/util/account/bufferoffsetmanager.js +0 -176
  281. package/dist/util/account/index.js +0 -3
  282. package/dist/util/account/util.js +0 -18
  283. package/dist/util/algorithms/index.js +0 -1
  284. package/dist/util/algorithms/search-binary.js +0 -25
  285. package/dist/util/check/index.js +0 -1
  286. package/dist/util/geometry/index.js +0 -47
  287. package/dist/util/gl-util/uniform-block/shader.js +0 -1
  288. package/dist/util/heatwavedatamanager/datamanager.js +0 -149
  289. package/dist/util/heatwavedatamanager/index.js +0 -2
  290. package/dist/util/index.js +0 -13
  291. package/dist/util/interpolation/index.js +0 -1
  292. package/dist/util/interpolation/timetrack/index.js +0 -2
  293. package/dist/util/interpolation/timetrack/timetrack-interpolator.js +0 -79
  294. package/dist/util/interpolation/timetrack/web-worker.js +0 -46
  295. package/dist/util/jshelpers/data-filler.js +0 -17
  296. package/dist/util/jshelpers/equality.js +0 -18
  297. package/dist/util/jshelpers/index.js +0 -2
  298. package/dist/util/jshelpers/timefilters.js +0 -30
  299. package/dist/util/picking/fence.js +0 -43
  300. package/dist/util/picking/picker-displayer.js +0 -136
  301. package/dist/util/programs/draw-texture-on-canvas.js +0 -86
  302. package/dist/util/programs/index.js +0 -1
  303. package/dist/util/programs/shapesonglobe.js +0 -210
  304. package/dist/util/programs/supersampletotextures.js +0 -109
  305. package/dist/util/programs/texturetoglobe.js +0 -179
  306. package/dist/util/shaderfunctions/index.js +0 -2
  307. package/dist/util/shaderfunctions/nodata.js +0 -8
  308. package/dist/util/shaderfunctions/noisefunctions.js +0 -41
  309. package/dist/util/surface-line-data/arcs-to-cuts.js +0 -50
  310. package/dist/util/surface-line-data/cut-arc.js +0 -1
  311. package/dist/util/surface-line-data/rbush-manager.js +0 -1
  312. package/dist/util/surface-line-data/web-worker.js +0 -1
  313. package/dist/util/webglobe/gldefaultstates.js +0 -4
  314. package/dist/util/webglobe/index.js +0 -2
  315. package/dist/util/webglobe/rasteroverlay.js +0 -75
  316. package/dist/waveparticles/adaptor.js +0 -15
  317. package/dist/waveparticles/index.js +0 -3
  318. package/dist/waveparticles/plugin.js +0 -290
  319. package/dist/wind/imagetovectorfieldandmagnitude.js +0 -56
  320. package/dist/wind/index.js +0 -5
  321. package/dist/wind/plugin.js +0 -921
  322. package/dist/wind/vectorfieldimage.js +0 -23
  323. package/dist/write-text/attached-text-writer.js +0 -87
  324. package/dist/write-text/context-text.js +0 -94
  325. package/dist/write-text/context-text3old.js +0 -152
  326. package/dist/write-text/index.js +0 -1
  327. package/dist/write-text/writer-plugin.js +0 -8
  328. package/partialrings/goals.md +0 -17
  329. package/point-heat-map/readme.md +0 -15
  330. package/programs/line-on-globe/linestrip/data.ts +0 -29
  331. package/programs/line-on-globe/linestrip/linestrip.ts +0 -201
  332. package/programs/line-on-globe/naive-accurate-flexible.ts +0 -258
  333. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin.ts +0 -120
  334. package/programs/polygon-on-globe/texture-dem-triangles.ts +0 -207
  335. package/programs/programcache.ts +0 -131
  336. package/programs/rings/partial-ring/piece-of-pie.ts +0 -323
  337. package/programs/totems/camerauniformblock.ts +0 -310
  338. package/programs/totems/canvas-webglobe-info.ts +0 -156
  339. package/programs/totems/globe-changes.ts +0 -79
  340. package/programs/totems/index.ts +0 -2
  341. package/programs/vectorfields/logics/constants.ts +0 -5
  342. package/programs/vectorfields/logics/ubo-new.ts +0 -37
  343. package/publish.bat +0 -62
  344. package/range-tools-on-terrain/bearing-line/adapters.ts +0 -154
  345. package/range-tools-on-terrain/bearing-line/plugin.ts +0 -569
  346. package/range-tools-on-terrain/bearing-line/types.ts +0 -65
  347. package/range-tools-on-terrain/circle-line-chain/adapters.ts +0 -109
  348. package/range-tools-on-terrain/circle-line-chain/chain-list-map.ts +0 -446
  349. package/range-tools-on-terrain/circle-line-chain/plugin.ts +0 -607
  350. package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
  351. package/range-tools-on-terrain/range-ring/adapters.ts +0 -114
  352. package/range-tools-on-terrain/range-ring/enum.ts +0 -2
  353. package/range-tools-on-terrain/range-ring/plugin.ts +0 -447
  354. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
  355. package/range-tools-on-terrain/range-ring/types.ts +0 -30
  356. package/rangerings/enum.ts +0 -2
  357. package/semiplugins/interface.ts +0 -14
  358. package/semiplugins/lightweight/line-plugin.ts +0 -343
  359. package/semiplugins/lightweight/piece-of-pie-plugin.ts +0 -275
  360. package/semiplugins/shape-on-terrain/arc-plugin.ts +0 -602
  361. package/semiplugins/shape-on-terrain/circle-plugin.ts +0 -588
  362. package/semiplugins/shape-on-terrain/goal.md +0 -12
  363. package/semiplugins/shape-on-terrain/padding-1-degree.ts +0 -714
  364. package/semiplugins/shape-on-terrain/terrain-cover/notes.md +0 -90
  365. package/semiplugins/shape-on-terrain/terrain-cover/texture-dem-cover.ts +0 -0
  366. package/semiplugins/type.ts +0 -8
  367. package/tests/Math/arc-sampling-test.js +0 -367
  368. package/tests/Math/arc-sampling-test.ts +0 -429
  369. package/tests/Math/arc.test.ts +0 -102
  370. package/tests/Math/junction/arc-plane.test.ts +0 -163
  371. package/tests/Math/junction/plane-plane.test.ts +0 -91
  372. package/tests/Math/plane-test.ts +0 -17
  373. package/tests/Math/plane.test.ts +0 -43
  374. package/tests/Math/vec3.test.ts +0 -14
  375. package/timetracks/readme.md +0 -1
  376. package/tsconfig.json +0 -22
  377. package/types.ts +0 -265
  378. package/util/account/create-buffermap-orchastration.ts +0 -85
  379. package/util/account/single-attribute-buffer-management/buffer-manager.ts +0 -149
  380. package/util/account/single-attribute-buffer-management/buffer-orchestrator.ts +0 -332
  381. package/util/account/single-attribute-buffer-management/buffer-orchestrator1.ts +0 -184
  382. package/util/account/single-attribute-buffer-management/index.ts +0 -11
  383. package/util/account/single-attribute-buffer-management/object-store.ts +0 -76
  384. package/util/account/single-attribute-buffer-management/types.ts +0 -43
  385. package/util/build-strategy/general-strategy.ts +0 -99
  386. package/util/build-strategy/static-dynamic.ts +0 -50
  387. package/util/check/typecheck.ts +0 -74
  388. package/util/frame-counter-trigger.ts +0 -99
  389. package/util/geometry/index.ts +0 -64
  390. package/util/gl-util/buffer/attribute-loader.ts +0 -84
  391. package/util/gl-util/buffer/index.ts +0 -6
  392. package/util/gl-util/draw-options/methods.ts +0 -47
  393. package/util/gl-util/uniform-block/manager.ts +0 -210
  394. package/util/gl-util/uniform-block/roadmap.md +0 -70
  395. package/util/gl-util/uniform-block/types.ts +0 -20
  396. package/util/heatwavedatamanager/pointcoordsmeta.ts +0 -28
  397. package/util/heatwavedatamanager/texture-point-sampler.ts +0 -198
  398. package/util/shaderfunctions/geometrytransformations.ts +0 -388
  399. package/util/surface-line-data/arc-bboxes.ts +0 -42
  400. package/util/surface-line-data/flow.ts +0 -52
  401. package/util/surface-line-data/types.ts +0 -27
  402. package/util/webglobjectbuilders.ts +0 -446
  403. package/write-text/context-text-bulk.ts +0 -268
  404. package/write-text/context-text3.ts +0 -253
  405. package/write-text/context-text4.ts +0 -243
  406. /package/{dist/Math → Math}/arc-cdf-points.js +0 -0
  407. /package/{dist/Math → Math}/arc-generate-points-exponantial.js +0 -0
  408. /package/{dist/Math → Math}/arc.js +0 -0
  409. /package/{dist/Math → Math}/circle-cdf-points.js +0 -0
  410. /package/{dist/Math → Math}/circle.js +0 -0
  411. /package/{dist/Math → Math}/constants.js +0 -0
  412. /package/{dist/Math → Math}/juction/arc-plane.js +0 -0
  413. /package/{dist/Math → Math}/juction/line-sphere.js +0 -0
  414. /package/{dist/Math → Math}/juction/plane-plane.js +0 -0
  415. /package/{dist/Math → Math}/line.js +0 -0
  416. /package/{dist/Math → Math}/matrix4.js +0 -0
  417. /package/{dist/Math → Math}/methods.js +0 -0
  418. /package/{dist/Math → Math}/plane.js +0 -0
  419. /package/{dist/Math → Math}/quaternion.js +0 -0
  420. /package/{dist/Math → Math}/templete-shapes/grid-visually-equal.js +0 -0
  421. /package/{dist/Math → Math}/types.js +0 -0
  422. /package/{dist/Math → Math}/vec3.js +0 -0
  423. /package/{dist/programs → programs}/line-on-globe/linestrip/data.js +0 -0
  424. /package/{dist/programs → programs}/line-on-globe/linestrip/linestrip.js +0 -0
  425. /package/{dist/programs → programs}/line-on-globe/naive-accurate-flexible.js +0 -0
  426. /package/{dist/programs → programs}/polygon-on-globe/texture-dem-triangle-test-plugin.js +0 -0
  427. /package/{dist/programs → programs}/polygon-on-globe/texture-dem-triangles.js +0 -0
  428. /package/{dist/programs → programs}/programcache.js +0 -0
  429. /package/{dist/programs → programs}/rings/partial-ring/piece-of-pie.js +0 -0
  430. /package/{dist/programs → programs}/totems/canvas-webglobe-info.js +0 -0
  431. /package/{dist/programs → programs}/totems/globe-changes.js +0 -0
  432. /package/{dist/programs → programs}/totems/index.js +0 -0
  433. /package/{dist/programs → programs}/vectorfields/logics/constants.js +0 -0
  434. /package/{dist/programs → programs}/vectorfields/logics/ubo-new.js +0 -0
  435. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/adapters.js +0 -0
  436. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/plugin.js +0 -0
  437. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/types.js +0 -0
  438. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/adapters.js +0 -0
  439. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/chain-list-map.js +0 -0
  440. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/plugin.js +0 -0
  441. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/types.js +0 -0
  442. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/adapters.js +0 -0
  443. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/enum.js +0 -0
  444. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/plugin.js +0 -0
  445. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/rangeringangletext.js +0 -0
  446. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/types.js +0 -0
  447. /package/{dist/rangerings → rangerings}/enum.js +0 -0
  448. /package/{dist/semiplugins → semiplugins}/interface.js +0 -0
  449. /package/{dist/semiplugins → semiplugins}/lightweight/line-plugin.js +0 -0
  450. /package/{dist/semiplugins → semiplugins}/lightweight/piece-of-pie-plugin.js +0 -0
  451. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/arc-plugin.js +0 -0
  452. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/circle-plugin.js +0 -0
  453. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/padding-1-degree.js +0 -0
  454. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/terrain-cover/texture-dem-cover.js +0 -0
  455. /package/{dist/semiplugins → semiplugins}/type.js +0 -0
  456. /package/{dist/types.js → types.js} +0 -0
  457. /package/{dist/util → util}/account/create-buffermap-orchastration.js +0 -0
  458. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-manager.js +0 -0
  459. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-orchestrator.js +0 -0
  460. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-orchestrator1.js +0 -0
  461. /package/{dist/util → util}/account/single-attribute-buffer-management/index.js +0 -0
  462. /package/{dist/util → util}/account/single-attribute-buffer-management/object-store.js +0 -0
  463. /package/{dist/util → util}/account/single-attribute-buffer-management/types.js +0 -0
  464. /package/{dist/util → util}/build-strategy/general-strategy.js +0 -0
  465. /package/{dist/util → util}/build-strategy/static-dynamic.js +0 -0
  466. /package/{dist/util → util}/check/typecheck.js +0 -0
  467. /package/{dist/util → util}/frame-counter-trigger.js +0 -0
  468. /package/{dist/util → util}/gl-util/buffer/attribute-loader.js +0 -0
  469. /package/{dist/util → util}/gl-util/buffer/index.js +0 -0
  470. /package/{dist/util → util}/gl-util/draw-options/methods.js +0 -0
  471. /package/{dist/util → util}/gl-util/uniform-block/manager.js +0 -0
  472. /package/{dist/util → util}/gl-util/uniform-block/types.js +0 -0
  473. /package/{dist/util → util}/heatwavedatamanager/pointcoordsmeta.js +0 -0
  474. /package/{dist/util → util}/heatwavedatamanager/texture-point-sampler.js +0 -0
  475. /package/{dist/util → util}/shaderfunctions/geometrytransformations.js +0 -0
  476. /package/{dist/util → util}/surface-line-data/arc-bboxes.js +0 -0
  477. /package/{dist/util → util}/surface-line-data/flow.js +0 -0
  478. /package/{dist/util → util}/surface-line-data/types.js +0 -0
  479. /package/{dist/util → util}/webglobjectbuilders.js +0 -0
  480. /package/{dist/write-text → write-text}/context-text3.js +0 -0
package/Math/arc.ts DELETED
@@ -1,299 +0,0 @@
1
- import { Vec3, Plane, Arc, LongLat, Radians } from "./types";
2
-
3
- import {
4
- create as vec3create,
5
- set as vec3set,
6
- cross,
7
- dot,
8
- normalize,
9
- clone as vec3clone,
10
- copy as vec3copy,
11
- equals as vec3equals,
12
- lengthSquared,
13
- fromLongLatToUnitVector,
14
- subtract,
15
- applyQuaternion,
16
- fromUnitVectorToLongLat
17
- } from "./vec3";
18
-
19
- import {
20
- create as planeCreate,
21
- fromPoints as planeFromPoints,
22
- distanceToPoint as planeDistanceToPoint,
23
- projectPoint as planeProjectPoint
24
- } from "./plane";
25
-
26
- import { create as quaternionCreate, fromAxisAngle } from "./quaternion";
27
-
28
- import { EPSILON } from "./constants";
29
-
30
- import * as vec3 from "./vec3";
31
- import * as quat from "./quaternion";
32
-
33
-
34
- const _0vector = /*@__PURE__*/ vec3create(0, 0, 0);
35
- const _closestPoint = /*@__PURE__*/ vec3create();
36
-
37
- const _originPlane = /*@__PURE__*/ planeCreate(vec3create(0, 0, 1), 0);
38
- // dont change distance of _originPlane
39
- const _rotationQuaternion = /*@__PURE__*/ quaternionCreate();
40
- const _longLat = /*@__PURE__*/[0, 0] as LongLat;
41
-
42
- function create(p0: Vec3, p1: Vec3): Arc {
43
- const normal = vec3create(0, 0, 0);
44
- cross(normal, p0, p1);
45
- normalize(normal, normal);
46
- const coverPlaneNormal = vec3create(p0[0] + p1[0], p0[1] + p1[1], p0[2] + p1[2]);
47
-
48
- let distance: number;
49
- const ls = lengthSquared(coverPlaneNormal);
50
-
51
- if (ls > EPSILON) {
52
- normalize(coverPlaneNormal, coverPlaneNormal);
53
- distance = dot(coverPlaneNormal, p0);
54
- } else {
55
- // Handle opposite points case
56
- const tempPlane = planeCreate(vec3create(), 0);
57
- _oppositePointsHandle(p0, p1, normal, tempPlane);
58
- vec3copy(coverPlaneNormal, tempPlane.normal);
59
- distance = tempPlane.distance;
60
- }
61
-
62
- return {
63
- p0: vec3clone(p0),
64
- p1: vec3clone(p1),
65
- normal: vec3clone(normal),
66
- coverPlane: {
67
- normal: coverPlaneNormal,
68
- distance: distance
69
- } as Plane,
70
- coverAngle: Math.acos(dot(p0, p1)) as Radians
71
- }
72
- }
73
-
74
- function set(out: Arc, p0: Vec3, p1: Vec3) {
75
- vec3copy(out.p0, p0);
76
- vec3copy(out.p1, p1);
77
- cross(out.normal, p0, p1);
78
- vec3set(_0vector, p0[0] + p1[0], p0[1] + p1[1], p0[2] + p1[2]);
79
- const ls = lengthSquared(_0vector);
80
- if (ls > EPSILON) {
81
- normalize(out.coverPlane.normal, _0vector);
82
- out.coverPlane.distance = dot(out.coverPlane.normal, p0);
83
- } else {
84
- _oppositePointsHandle(p0, p1, out.normal, out.coverPlane);
85
- }
86
- }
87
-
88
- function copy(out: Arc, a: Arc) {
89
- vec3copy(out.p0, a.p0);
90
- vec3copy(out.p1, a.p1);
91
- vec3copy(out.normal, a.normal);
92
- out.coverPlane.normal = vec3clone(a.coverPlane.normal);
93
- out.coverPlane.distance = a.coverPlane.distance;
94
- out.coverAngle = a.coverAngle; // Copy coverAngle if it exists
95
- }
96
-
97
- function clone(a: Arc): Arc {
98
- return {
99
- p0: vec3clone(a.p0),
100
- p1: vec3clone(a.p1),
101
- normal: vec3clone(a.normal),
102
- coverPlane: {
103
- normal: vec3clone(a.coverPlane.normal),
104
- distance: a.coverPlane.distance
105
- } as Plane,
106
- coverAngle: a.coverAngle // Clone coverAngle if it exists
107
- };
108
- }
109
-
110
-
111
-
112
- function isPointOn(arc: Arc, point: Vec3): boolean {
113
- const alignment = Math.abs(dot(point, arc.normal)) < EPSILON;
114
- const distance = Math.abs(lengthSquared(point) - 1) < EPSILON;
115
- const cover = dot(arc.coverPlane.normal, point) >= arc.coverPlane.distance;
116
- return alignment || distance || cover;
117
- }
118
-
119
-
120
- function equals(a: Arc, b: Arc): boolean {
121
- return (vec3equals(a.p0, b.p0) && vec3equals(a.p1, b.p1))
122
- || (vec3equals(a.p0, b.p1) && vec3equals(a.p1, b.p0))
123
- }
124
-
125
-
126
-
127
- function closestPoint(out: Vec3, inArc: Arc, point: Vec3): boolean {
128
- // 1. calculate the projection of the point onto the plane definned by the arc.normal, distance 0
129
- // 2. calculate projection distance to the arc.coverPlane.
130
- // * if the distance is negative, the point is outside the arc
131
- // * copy (the closest of [inArc.p0, inArc.p1] to the point) to the output
132
- // * return false that indicates the point is outside the arc
133
- // * if the distance is positive, the point is inside the arc
134
- // * normalize the projection and copy it to out
135
- // * return true that indicates the point is inside the arc
136
- const distance = planeDistanceToPoint(inArc.coverPlane, point);
137
- if (distance < -EPSILON) {
138
- // point is outside the arc
139
- // this case also covers point is on center shaft line of the arc
140
- return false;
141
- }
142
-
143
- vec3copy(_originPlane.normal, inArc.normal);
144
- planeProjectPoint(_0vector, _originPlane, point);
145
- // point is inside the arc
146
- normalize(out, _0vector);
147
- return true;
148
- }
149
-
150
-
151
- function populatePoints(out: Float32Array, arc: Arc, count: number, pointOfProjection: Vec3 | void = undefined): void {
152
- // rotate p0 around normal vector with a quaternion
153
- // calculate angle
154
- _distanceSampling(out, count, arc, pointOfProjection || [0, 0, 0] as Vec3, 1);
155
-
156
- }
157
-
158
-
159
-
160
-
161
- function _oppositePointsHandle(p0: Vec3, p1: Vec3, outNormal: Vec3, outCoverPlane: Plane) {
162
- // first choice pass through Anitkabir
163
- const radians = Math.PI / 180;
164
- fromLongLatToUnitVector(_0vector, [39.9334 * radians, 32.8597 * radians] as LongLat); // Anitkabir
165
- if (vec3equals(p0, _0vector) || vec3equals(p1, _0vector)) {
166
- // if Anitkabir is too close to p0 or p1, use Selanic
167
- fromLongLatToUnitVector(_0vector, [37.0016 * radians, 35.3213 * radians] as LongLat); // Selanic
168
- }
169
- planeFromPoints({ normal: outNormal, distance: 0 } as Plane, p0, _0vector, p1);
170
-
171
- cross(outCoverPlane.normal, outNormal, p0);
172
-
173
-
174
- }
175
-
176
-
177
- function _populatePointsWithClosestPointInsideArc(
178
- out: Float32Array,
179
- arc: Arc,
180
- count: number,
181
- closestPoint: Vec3
182
- ): void {
183
-
184
- // two parts divided by closest point will be populated seperately
185
- // pop1 + pop2 = count
186
-
187
- // angular distance between [arc.p0, closestPoint] and [arc.p1, closestPoint]
188
- // will be used to decide ratio between pop1 and pop2
189
- const angleP0 = Math.acos(dot(arc.p0, closestPoint));
190
- const angleP1 = Math.acos(dot(arc.p1, closestPoint));
191
-
192
- const pop1 = Math.floor(count * (angleP0 / (angleP0 + angleP1)));
193
- const pop2 = count - pop1;
194
-
195
-
196
- const angleStep1 = angleP0 / pop1;
197
- const angleStep2 = angleP1 / pop2;
198
-
199
- fromAxisAngle(_rotationQuaternion, arc.normal, angleStep1);
200
-
201
-
202
-
203
- }
204
-
205
-
206
-
207
- /**
208
- * Samples points along an arc with density biased by the camera's distance,
209
- * reusing the rotation quaternion to improve performance.
210
- *
211
- * @param {Float32Array} out - The output array to store longitude and latitude pairs.
212
- * @param {number} count - The total number of points to sample.
213
- * @param {Arc} inArc - The arc to sample from, containing p0, p1, and normal.
214
- * @param {Vec3} cameraPosition - The position of the camera.
215
- * @param {number} quaternionReuseCount - The number of times to apply the same rotation before recalculating. Higher is faster but less accurate.
216
- */
217
-
218
-
219
-
220
-
221
- function _distanceSampling(
222
- out: Float32Array,
223
- count: number,
224
- inArc: Arc,
225
- cameraPosition: Vec3 = vec3create(0, 0, 0),
226
- quaternionReuseCount: number = 1,
227
- ): void {
228
- if (count === 0) {
229
- return;
230
- }
231
-
232
- const _0vector = vec3.create();
233
- const _longLat = [0, 0] as LongLat;
234
- const _rotationQuaternion = quat.create();
235
-
236
- // Ensure reuse count is at least 1 to prevent division by zero or infinite loops.
237
- const reuseCount = Math.max(1, quaternionReuseCount);
238
-
239
- subtract(_0vector, inArc.p0, cameraPosition);
240
- const d2_0 = lengthSquared(_0vector);
241
- subtract(_0vector, inArc.p1, cameraPosition);
242
- const d2_1 = lengthSquared(_0vector);
243
-
244
- const total = d2_0 + d2_1;
245
- const ratio0 = Math.min(0.995, Math.max(0.005, d2_0 / total));
246
-
247
- const is0Closer = d2_0 < d2_1;
248
-
249
- const totalAngle = Math.acos(dot(inArc.p0, inArc.p1));
250
- let accumulatedAngle = 0;
251
-
252
- // This variable will hold the step angle for the current "chunk" of reused rotations.
253
- let chunkStepAngle = 0;
254
-
255
- let currentPoint = vec3.clone(is0Closer ? inArc.p0 : inArc.p1);
256
- const angleSign = is0Closer ? 1 : -1;
257
-
258
- // The loop generates all points *except* the very last one.
259
- for (let i = 0; i < count - 1; i++) {
260
- // First, store the longitude/latitude of the current point.
261
- fromUnitVectorToLongLat(_longLat, currentPoint);
262
- out[i * 2] = _longLat[0];
263
- out[i * 2 + 1] = _longLat[1];
264
-
265
- // --- OPTIMIZATION LOGIC ---
266
- // We only update the quaternion and step angle periodically.
267
- if (i % reuseCount === 0) {
268
- // This is the start of a new chunk. Calculate the step angle that will be
269
- // reused for the next `reuseCount` iterations.
270
- const t = (i + 1) / (count - 1);
271
- const biasedT = Math.sin(t * Math.PI / 2);
272
- const targetAngleForNextStep = (is0Closer ? biasedT : 1.0 - biasedT) * totalAngle;
273
-
274
- // Calculate the single step angle based on the progress at the start of the chunk.
275
- chunkStepAngle = targetAngleForNextStep - accumulatedAngle;
276
-
277
- // Update the quaternion. This expensive call now runs much less frequently.
278
- fromAxisAngle(_rotationQuaternion, inArc.normal, chunkStepAngle * angleSign);
279
- }
280
-
281
- // Apply the rotation. This happens on every iteration, but uses the
282
- // same quaternion for `reuseCount` steps.
283
- applyQuaternion(currentPoint, currentPoint, _rotationQuaternion);
284
-
285
- // We must still update the accumulated angle on every step to track our progress.
286
- accumulatedAngle += chunkStepAngle;
287
- }
288
-
289
- // Set the final point directly to the endpoint to guarantee precision.
290
- if (count > 0) {
291
- const finalIndex = count - 1;
292
- const endPoint = is0Closer ? inArc.p1 : inArc.p0;
293
- fromUnitVectorToLongLat(_longLat, endPoint);
294
- out[finalIndex * 2] = _longLat[0];
295
- out[finalIndex * 2 + 1] = _longLat[1];
296
- }
297
- }
298
-
299
- export { create, set, copy, clone, isPointOn, equals, closestPoint, populatePoints };
@@ -1,143 +0,0 @@
1
- import { Globe, CentigradeDegree } from "../types";
2
- import { RADIANS } from "./methods";
3
- import { Meter } from "./types";
4
-
5
-
6
-
7
- function createCummulativeTemplate(
8
- numberOfPoints: number,
9
- strength: number,
10
- denseRatio: number = 0.5 // Ratio of points to be densely packed at the start.
11
-
12
- ): Float64Array {
13
- // Handle edge cases for the number of points.
14
- if (numberOfPoints <= 0) {
15
- // If zero or a negative number of points is requested, return an empty array.
16
- return new Float64Array([]);
17
- }
18
-
19
- // Create the array to hold the results. Float64Array is used for high-precision floating-point numbers.
20
- const distribution = new Float64Array(numberOfPoints);
21
-
22
- if (numberOfPoints === 1) {
23
- // If only one point is requested, it represents the entire range [0, 1].
24
- // We place it at the start (0.0).
25
- distribution[0] = 0.0;
26
- return distribution;
27
- }
28
-
29
- // The exponent determines the curve of the distribution.
30
- // We add 1 to the strength so that a strength of 0 results in an exponent of 1 (linear).
31
- // We use Math.max(0, strength) to ensure the strength is not negative.
32
-
33
-
34
- // The last index is used to normalize the position to a 0-1 range.
35
- const lastIndex = numberOfPoints - 1;
36
- distribution[0] = 0.0; // The first point is always at 0.0.
37
- let totalWeight = 0;
38
- let i = 1
39
- const denseCount = numberOfPoints * denseRatio;
40
- for (i; i < denseCount; i++) {
41
- // Calculate the ratio of the current index to the last index.
42
- // The ratio is adjusted to create a non-linear distribution.
43
- totalWeight += 1;
44
- distribution[i] = totalWeight; // Store the raw value in the distribution array.
45
- }
46
-
47
- for (i; i < numberOfPoints; i++) {
48
- // Calculate the ratio of the current index to the last index.
49
-
50
- const ratio = 1 + ((i - denseCount) / lastIndex) / (1 - denseRatio) * 2;
51
- const step = Math.pow(ratio, strength);
52
-
53
- totalWeight += step;
54
- distribution[i] = totalWeight; // Store the raw value in the distribution array.
55
-
56
- // Apply the power function to create a non-linear distribution.
57
- // The result is normalized to the range [0, 1].
58
- }
59
- for (let i = 1; i < numberOfPoints; i++) {
60
- // Normalize the values to ensure they sum up to 1.
61
- distribution[i] = distribution[i] / totalWeight;
62
- }
63
- return distribution;
64
- }
65
-
66
-
67
-
68
- function createCummulativeTemplateStash(
69
- levels: number,
70
- numberOfPoints: number,
71
- denseRatio: number = 0.5,
72
- strengthMultiplier: number = 2.4,
73
- ): Float64Array[] {
74
- const stash: Float64Array[] = [];
75
- for (let i = 0; i < levels; i++) {
76
- const template = createCummulativeTemplate(numberOfPoints, i * strengthMultiplier, denseRatio);
77
- stash.push(template);
78
- }
79
- return stash;
80
- }
81
-
82
- function globeFindPointByPolar(
83
- out: number[] | Float64Array,
84
- globe: Globe,
85
- centerLong: CentigradeDegree,
86
- centerLat: CentigradeDegree,
87
- radius: Meter,
88
- ratios: number[]) {
89
- for (let i = 0; i < ratios.length; i++) {
90
- const point = globe.Math.FindPointByPolar(
91
- centerLong,
92
- centerLat,
93
- radius,
94
- ratios[i]
95
- );
96
- out[i * 2] = point.long;
97
- out[i * 2 + 1] = point.lat;
98
- }
99
- }
100
-
101
- function globeFindPointByPolarHalfCircle(
102
- out: Float64Array,
103
- globe: Globe,
104
- centerLong: CentigradeDegree,
105
- centerLat: CentigradeDegree,
106
- radius: Meter,
107
- rotation: number,
108
- ratios: Float64Array) {
109
-
110
- const rotCentigrade = rotation / RADIANS + 720;
111
- for (let i = 0; i < ratios.length; i++) {
112
- const point = globe.Math.FindPointByPolar(
113
- centerLong,
114
- centerLat,
115
- radius,
116
- (ratios[i] * 180 + rotCentigrade) % 360
117
- );
118
- out[i * 2] = point.long;
119
- out[i * 2 + 1] = point.lat;
120
- }
121
- // fill reflection
122
- let offset = out.length;
123
- for (let i = 0; i < ratios.length - 1; i++) {
124
- const point = globe.Math.FindPointByPolar(
125
- centerLong,
126
- centerLat,
127
- radius,
128
- ((- ratios[i]) * 180 + rotCentigrade) % 360,
129
- );
130
-
131
- out[offset - 2] = point.long;
132
- out[offset - 1] = point.lat;
133
- offset -= 2;
134
- }
135
- }
136
-
137
-
138
-
139
- export {
140
- createCummulativeTemplateStash,
141
- globeFindPointByPolar,
142
- globeFindPointByPolarHalfCircle
143
- }
package/Math/circle.ts DELETED
@@ -1,49 +0,0 @@
1
- import { Circle, CircleClosestAzimuthAngleProperties, LongLat, Plane, Vec3 } from '../Math/types.js';
2
- import { RADIANS } from './methods';
3
- import { subtract, normalize, dot, fromLongLatToUnitVector, copy, multiplyScalar, clone, add } from './vec3';
4
-
5
- const _0vec3: Vec3 = [0, 0, 0];
6
-
7
- function closestAzimuthAngle(
8
- circleProperties: CircleClosestAzimuthAngleProperties,
9
- point: Vec3
10
- ): number {
11
- const distance = dot(circleProperties.normal, point);
12
- copy(_0vec3, circleProperties.normal)
13
- multiplyScalar(_0vec3, _0vec3, distance);
14
- subtract(_0vec3, point, _0vec3);
15
- normalize(_0vec3, _0vec3);
16
- const N = circleProperties.northPointProjectedToOriginPlaneNormalized
17
- const _dot = dot(_0vec3, N);
18
- let angle = Math.acos(_dot);
19
- const z = (_0vec3[0] * N[1] - _0vec3[1] * N[0]) * circleProperties.normal[2];
20
- return z < 0 ? -angle : angle;
21
- }
22
-
23
-
24
- function createCircleClosestAzimuthAngleProperties(
25
- circle: Circle,
26
-
27
- ): CircleClosestAzimuthAngleProperties {
28
- const normal: Vec3 = Array(3) as Vec3;
29
- fromLongLatToUnitVector(normal,
30
- [circle.center[0] * RADIANS, circle.center[1] * RADIANS]);
31
- const N: Vec3 = clone(normal);
32
-
33
- const distance = dot([0, 0, 1], normal);
34
- multiplyScalar(N, N, distance);
35
- // if (N[2] >= 0) {
36
- subtract(N, [0, 0, 1], N);
37
- // } else {
38
- // subtract(N, [0, 0, -1], N);
39
- // }
40
- normalize(N, N);
41
- return {
42
- normal: normal,
43
- northPointProjectedToOriginPlaneNormalized: N,
44
- };
45
- }
46
-
47
-
48
-
49
- export { closestAzimuthAngle, createCircleClosestAzimuthAngleProperties };
package/Math/constants.ts DELETED
@@ -1,12 +0,0 @@
1
- const WORLD_RADIUS_3D = 6378.137;
2
- const WORLD_RADIUS_MERCATOR = 6378136.99911;
3
-
4
- const EPSILON = 1e-10; // Used for floating point comparisons
5
-
6
- export {
7
- WORLD_RADIUS_3D,
8
- WORLD_RADIUS_MERCATOR,
9
- EPSILON
10
- }
11
-
12
-
@@ -1,129 +0,0 @@
1
- import { Vec3, Plane, Line, Sphere, Arc } from "../types";
2
- import { EPSILON } from "../constants";
3
- import {
4
- create as vec3create,
5
- copy as vec3copy,
6
- dot,
7
- distanceSquared,
8
- } from "../vec3";
9
- import { create as lineCreate, at as lineAt } from "../line";
10
- import {
11
- create as planeCreate,
12
- distanceToPoint,
13
- getUnitSphereRadiusAngle
14
- } from "../plane";
15
- import { copy as arcCopy, set as arcSet } from "../arc"
16
- import { planePlaneJuction } from "./plane-plane";
17
- import { lineSphereIntersection } from "./line-sphere";
18
-
19
- const _intersectionLine = /*@__PURE__*/ lineCreate();
20
- const _originPlane = /*@__PURE__*/ planeCreate();
21
- _originPlane.distance = 0;
22
- const _originSphere = /*@__PURE__*/ { center: vec3create(0, 0, 0), radius: 1 } as Sphere;
23
-
24
- const _intersectionPoints: [Vec3, Vec3] = /*@__PURE__*/[vec3create(), vec3create()];
25
-
26
- // TODO: out must be [Arc, Arc] there is a case where split into three arcs, visible by points or arcs but middle is not visible
27
-
28
-
29
-
30
- /**
31
- *
32
- * @param out \
33
- * @param inArc
34
- * @param junctionPlane
35
- * @returns number of arcs segments in the junction divided by the junction plane.
36
- */
37
- export function arcSlice(out: [Arc, Arc], inArc: Arc, junctionPlane: Plane): number {
38
-
39
- if (junctionPlane.distance < -1 + EPSILON) {
40
- arcCopy(out[0], inArc);
41
- return 1;
42
- }
43
- // arc coverPlane and junctionPlane intersection exist in the range of unit sphere
44
- const coverRadiusAngle = getUnitSphereRadiusAngle(inArc.coverPlane);
45
- const visibleRadiusAngle = getUnitSphereRadiusAngle(junctionPlane);
46
- // TODO: RESEARCH efficient approach --
47
- const angleBetween_Cover_Visible = Math.acos(dot(inArc.coverPlane.normal, junctionPlane.normal));
48
-
49
- if (coverRadiusAngle + visibleRadiusAngle < angleBetween_Cover_Visible - EPSILON) { // case A: out of range
50
- return 0; // No intersection
51
- }
52
- // ------------------------------------
53
-
54
- // the case when the arc is completely covered by the juction plane
55
-
56
- if (visibleRadiusAngle + EPSILON >= angleBetween_Cover_Visible + coverRadiusAngle) { // case B: fully visible
57
- arcCopy(out[0], inArc);
58
- return 1;
59
- }
60
- // plane-plane intersection line should be calculated for the rest of the calculations
61
-
62
- vec3copy(_originPlane.normal, inArc.normal);
63
- const isPlaneJunctions = planePlaneJuction(_intersectionLine, _originPlane, junctionPlane);
64
-
65
- if (!isPlaneJunctions) { // case C: planes are parallel.
66
- if (junctionPlane.distance <= 0) {
67
- arcCopy(out[0], inArc);
68
- return 1; // No intersection
69
- } else {
70
- return 0; // No intersection
71
- }
72
- }
73
- // --- read until here ---
74
-
75
- // calculate the intersection points
76
-
77
- const isSphereIntersection = lineSphereIntersection(_intersectionPoints, _intersectionLine, _originSphere);
78
- if (!isSphereIntersection) {
79
- // other edge caes should be covered by now
80
- return 0; // No intersection
81
- }
82
-
83
-
84
- const i0IsCovered = distanceToPoint(inArc.coverPlane, _intersectionPoints[0]) > -EPSILON;
85
- const i1IsCovered = distanceToPoint(inArc.coverPlane, _intersectionPoints[1]) > -EPSILON;
86
-
87
-
88
- const p0IsVisible = distanceToPoint(junctionPlane, inArc.p0) > -EPSILON;
89
- const p1IsVisible = distanceToPoint(junctionPlane, inArc.p1) > -EPSILON;
90
-
91
- if (!p0IsVisible && !p1IsVisible && !i0IsCovered && !i1IsCovered) {
92
- return 0; // No intersection
93
- }
94
-
95
- if (i0IsCovered && i1IsCovered && p0IsVisible && p1IsVisible) {
96
- // calculate which points are closer
97
- const p0i0DistanceSquared = distanceSquared(inArc.p0, _intersectionPoints[0]);
98
- const p0i1DistanceSquared = distanceSquared(inArc.p0, _intersectionPoints[1]);
99
- const case0 = p0i0DistanceSquared < p0i1DistanceSquared;
100
- arcSet(out[0], inArc.p0, case0 ? _intersectionPoints[0] : _intersectionPoints[1]);
101
- arcSet(out[1], inArc.p1, !case0 ? _intersectionPoints[0] : _intersectionPoints[1]);
102
- return 2;
103
- }
104
-
105
-
106
- if (i0IsCovered && i1IsCovered) {
107
- arcSet(out[0], _intersectionPoints[0], _intersectionPoints[1]);
108
- return 1;
109
- }
110
-
111
-
112
- if (p0IsVisible && p1IsVisible) {
113
- arcCopy(out[0], inArc);
114
- return 1;
115
- }
116
-
117
- if ((p0IsVisible || p1IsVisible) !== (i0IsCovered || i1IsCovered)) {
118
- throw new Error("Unexpected case: one covered and one visible point must be present");
119
- }
120
-
121
- arcSet(
122
- out[0],
123
- p0IsVisible ? inArc.p0 : inArc.p1,
124
- i0IsCovered ? _intersectionPoints[0] : _intersectionPoints[1]
125
- );
126
-
127
- return 1;
128
- }
129
-
@@ -1,30 +0,0 @@
1
- import { Vec3, Line, Sphere } from "../types";
2
-
3
- import { create, dot, lengthSquared, subtract } from "../vec3";
4
- import { at } from "../line";
5
-
6
- const _0vector = /*@__PURE__*/ create(0, 0, 0);
7
-
8
-
9
- export function lineSphereIntersection(out: [Vec3, Vec3], inLine: Line, inSphere: Sphere): boolean {
10
-
11
- subtract(_0vector, inLine.origin, inSphere.center);
12
- const distanceSquared = lengthSquared(_0vector);
13
- const radiusSquared = inSphere.radius * inSphere.radius;
14
- const dot_ = dot(_0vector, inLine.direction);
15
- const dotSquared = dot_ * dot_;
16
-
17
- const discriminant = dotSquared + radiusSquared - distanceSquared;
18
- if (discriminant < 0) {
19
- return false; // no intersection
20
- } else {
21
- const a = Math.sqrt(discriminant);
22
- const t1 = -dot_ - a;
23
- const t2 = -dot_ + a;
24
-
25
- at(out[0], inLine, t1);
26
- at(out[1], inLine, t2);
27
-
28
- return true;
29
- }
30
- }