@pirireis/webglobeplugins 0.16.0 → 0.16.1

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 +28 -15
  152. package/write-text/context-text.js +94 -125
  153. package/write-text/context-text3old.js +152 -179
  154. package/write-text/index.js +1 -1
  155. package/write-text/writer-plugin.js +8 -7
  156. package/Math/arc-cdf-points.ts +0 -329
  157. package/Math/arc-generate-points-exponantial.ts +0 -299
  158. package/Math/arc.ts +0 -299
  159. package/Math/circle-cdf-points.ts +0 -143
  160. package/Math/circle.ts +0 -49
  161. package/Math/constants.ts +0 -12
  162. package/Math/juction/arc-plane.ts +0 -129
  163. package/Math/juction/line-sphere.ts +0 -30
  164. package/Math/juction/plane-plane.ts +0 -64
  165. package/Math/line.ts +0 -84
  166. package/Math/matrix4.ts +0 -0
  167. package/Math/methods.ts +0 -157
  168. package/Math/plane.ts +0 -92
  169. package/Math/quaternion.ts +0 -128
  170. package/Math/roadmap.md +0 -10
  171. package/Math/templete-shapes/grid-visually-equal.ts +0 -119
  172. package/Math/types.ts +0 -66
  173. package/Math/vec3.ts +0 -180
  174. package/circle-line-chain/readme.md +0 -57
  175. package/depth-locator/readme.md +0 -26
  176. package/dist/Math/angle-calculation.js +0 -13
  177. package/dist/Math/bounds/line-bbox.js +0 -186
  178. package/dist/Math/index.js +0 -1
  179. package/dist/Math/mesh/mapbox-delaunay.js +0 -544
  180. package/dist/Math/utils.js +0 -2
  181. package/dist/algorithms/search-binary.js +0 -16
  182. package/dist/altitude-locator/adaptors.js +0 -1
  183. package/dist/altitude-locator/keymethod.js +0 -1
  184. package/dist/altitude-locator/plugin.js +0 -345
  185. package/dist/altitude-locator/types.js +0 -21
  186. package/dist/arrowfield/adaptor.js +0 -11
  187. package/dist/arrowfield/index.js +0 -3
  188. package/dist/arrowfield/plugin.js +0 -83
  189. package/dist/bearing-line/index.js +0 -2
  190. package/dist/bearing-line/plugin.js +0 -444
  191. package/dist/circle-line-chain/chain-list-map.js +0 -201
  192. package/dist/circle-line-chain/init.js +0 -1
  193. package/dist/circle-line-chain/plugin.js +0 -411
  194. package/dist/circle-line-chain/util.js +0 -1
  195. package/dist/compass-rose/compass-rose-padding-flat.js +0 -230
  196. package/dist/compass-rose/compass-text-writer.js +0 -149
  197. package/dist/compass-rose/index.js +0 -3
  198. package/dist/compassrose/compassrose.js +0 -293
  199. package/dist/compassrose/index.js +0 -2
  200. package/dist/heatwave/index.js +0 -3
  201. package/dist/heatwave/isobar/objectarraylabels.js +0 -200
  202. package/dist/heatwave/isobar/plugin.js +0 -302
  203. package/dist/heatwave/isobar/quadtreecontours.js +0 -298
  204. package/dist/heatwave/plugins/heatwaveglobeshell.js +0 -204
  205. package/dist/index.js +0 -12
  206. package/dist/jest.config.js +0 -7
  207. package/dist/partialrings/buffer-manager.js +0 -75
  208. package/dist/partialrings/index.js +0 -2
  209. package/dist/partialrings/plugin.js +0 -128
  210. package/dist/partialrings/program.js +0 -279
  211. package/dist/pin/pin-object-array.js +0 -300
  212. package/dist/pin/pin-point-totem.js +0 -60
  213. package/dist/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -63
  214. package/dist/point-heat-map/index.js +0 -1
  215. package/dist/point-heat-map/plugin-webworker.js +0 -121
  216. package/dist/point-heat-map/point-to-heat-map-flow.js +0 -124
  217. package/dist/point-tracks/key-methods.js +0 -2
  218. package/dist/point-tracks/plugin.js +0 -393
  219. package/dist/programs/arrowfield/index.js +0 -2
  220. package/dist/programs/arrowfield/logic.js +0 -254
  221. package/dist/programs/arrowfield/object.js +0 -60
  222. package/dist/programs/data2legend/density-to-legend.js +0 -98
  223. package/dist/programs/data2legend/point-to-density-texture.js +0 -97
  224. package/dist/programs/float2legendwithratio/index.js +0 -2
  225. package/dist/programs/float2legendwithratio/logic.js +0 -167
  226. package/dist/programs/float2legendwithratio/object.js +0 -104
  227. package/dist/programs/globe-util/is-globe-moved.js +0 -19
  228. package/dist/programs/globeshell/index.js +0 -2
  229. package/dist/programs/globeshell/wiggle/index.js +0 -2
  230. package/dist/programs/globeshell/wiggle/logic.js +0 -342
  231. package/dist/programs/globeshell/wiggle/object.js +0 -66
  232. package/dist/programs/helpers/blender/index.js +0 -1
  233. package/dist/programs/helpers/blender/program.js +0 -76
  234. package/dist/programs/helpers/fadeaway/index.js +0 -2
  235. package/dist/programs/helpers/fadeaway/logic.js +0 -69
  236. package/dist/programs/helpers/fadeaway/object.js +0 -14
  237. package/dist/programs/helpers/index.js +0 -2
  238. package/dist/programs/index.js +0 -9
  239. package/dist/programs/line-on-globe/circle-accurate-3d.js +0 -138
  240. package/dist/programs/line-on-globe/circle-accurate-flat.js +0 -210
  241. package/dist/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -156
  242. package/dist/programs/line-on-globe/index.js +0 -1
  243. package/dist/programs/line-on-globe/lines-color-instanced-flat.js +0 -131
  244. package/dist/programs/line-on-globe/util.js +0 -5
  245. package/dist/programs/picking/pickable-polygon-renderer.js +0 -184
  246. package/dist/programs/picking/pickable-renderer.js +0 -184
  247. package/dist/programs/point-on-globe/element-globe-surface-glow.js +0 -138
  248. package/dist/programs/point-on-globe/element-point-glow.js +0 -150
  249. package/dist/programs/point-on-globe/square-pixel-point.js +0 -171
  250. package/dist/programs/rings/distancering/circleflatprogram.js +0 -116
  251. package/dist/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -326
  252. package/dist/programs/rings/distancering/circlepaddysharedbuffer.js +0 -368
  253. package/dist/programs/rings/distancering/index.js +0 -6
  254. package/dist/programs/rings/distancering/paddyflatprogram.js +0 -127
  255. package/dist/programs/rings/distancering/paddyflatprogram2d.js +0 -129
  256. package/dist/programs/rings/distancering/paddyflatprogram3d.js +0 -128
  257. package/dist/programs/rings/index.js +0 -1
  258. package/dist/programs/totems/gpu-selection-uniform-block.js +0 -104
  259. package/dist/programs/two-d/pixel-circle.js +0 -1
  260. package/dist/programs/two-d/pixel-padding-for-compass.js +0 -159
  261. package/dist/programs/util.js +0 -14
  262. package/dist/programs/vectorfields/index.js +0 -3
  263. package/dist/programs/vectorfields/logics/drawrectangleparticles.js +0 -113
  264. package/dist/programs/vectorfields/logics/index.js +0 -2
  265. package/dist/programs/vectorfields/logics/pixelbased.js +0 -140
  266. package/dist/programs/vectorfields/logics/ubo.js +0 -60
  267. package/dist/programs/vectorfields/pingpongbuffermanager.js +0 -73
  268. package/dist/rangerings/index.js +0 -5
  269. package/dist/rangerings/plugin.js +0 -543
  270. package/dist/rangerings/rangeringangletext.js +0 -326
  271. package/dist/rangerings/ring-account.js +0 -112
  272. package/dist/shaders/fragment-toy/firework.js +0 -55
  273. package/dist/shaders/fragment-toy/singularity.js +0 -56
  274. package/dist/timetracks/adaptors-line-strip.js +0 -65
  275. package/dist/timetracks/index.js +0 -1
  276. package/dist/timetracks/plugin-line-strip.js +0 -240
  277. package/dist/timetracks/program-line-strip.js +0 -608
  278. package/dist/timetracks/programpoint-line-strip.js +0 -151
  279. package/dist/util/account/bufferoffsetmanager.js +0 -176
  280. package/dist/util/account/index.js +0 -3
  281. package/dist/util/account/util.js +0 -18
  282. package/dist/util/algorithms/index.js +0 -1
  283. package/dist/util/algorithms/search-binary.js +0 -25
  284. package/dist/util/check/index.js +0 -1
  285. package/dist/util/geometry/index.js +0 -47
  286. package/dist/util/gl-util/uniform-block/shader.js +0 -1
  287. package/dist/util/heatwavedatamanager/datamanager.js +0 -149
  288. package/dist/util/heatwavedatamanager/index.js +0 -2
  289. package/dist/util/index.js +0 -13
  290. package/dist/util/interpolation/index.js +0 -1
  291. package/dist/util/interpolation/timetrack/index.js +0 -2
  292. package/dist/util/interpolation/timetrack/timetrack-interpolator.js +0 -79
  293. package/dist/util/interpolation/timetrack/web-worker.js +0 -46
  294. package/dist/util/jshelpers/data-filler.js +0 -17
  295. package/dist/util/jshelpers/equality.js +0 -18
  296. package/dist/util/jshelpers/index.js +0 -2
  297. package/dist/util/jshelpers/timefilters.js +0 -30
  298. package/dist/util/picking/fence.js +0 -43
  299. package/dist/util/picking/picker-displayer.js +0 -136
  300. package/dist/util/programs/draw-texture-on-canvas.js +0 -86
  301. package/dist/util/programs/index.js +0 -1
  302. package/dist/util/programs/shapesonglobe.js +0 -210
  303. package/dist/util/programs/supersampletotextures.js +0 -109
  304. package/dist/util/programs/texturetoglobe.js +0 -179
  305. package/dist/util/shaderfunctions/index.js +0 -2
  306. package/dist/util/shaderfunctions/nodata.js +0 -8
  307. package/dist/util/shaderfunctions/noisefunctions.js +0 -41
  308. package/dist/util/surface-line-data/arcs-to-cuts.js +0 -50
  309. package/dist/util/surface-line-data/cut-arc.js +0 -1
  310. package/dist/util/surface-line-data/rbush-manager.js +0 -1
  311. package/dist/util/surface-line-data/web-worker.js +0 -1
  312. package/dist/util/webglobe/gldefaultstates.js +0 -4
  313. package/dist/util/webglobe/index.js +0 -2
  314. package/dist/util/webglobe/rasteroverlay.js +0 -75
  315. package/dist/waveparticles/adaptor.js +0 -15
  316. package/dist/waveparticles/index.js +0 -3
  317. package/dist/waveparticles/plugin.js +0 -290
  318. package/dist/wind/imagetovectorfieldandmagnitude.js +0 -56
  319. package/dist/wind/index.js +0 -5
  320. package/dist/wind/plugin.js +0 -921
  321. package/dist/wind/vectorfieldimage.js +0 -23
  322. package/dist/write-text/attached-text-writer.js +0 -87
  323. package/dist/write-text/context-text.js +0 -94
  324. package/dist/write-text/context-text3old.js +0 -152
  325. package/dist/write-text/index.js +0 -1
  326. package/dist/write-text/writer-plugin.js +0 -8
  327. package/partialrings/goals.md +0 -17
  328. package/point-heat-map/readme.md +0 -15
  329. package/programs/line-on-globe/linestrip/data.ts +0 -29
  330. package/programs/line-on-globe/linestrip/linestrip.ts +0 -201
  331. package/programs/line-on-globe/naive-accurate-flexible.ts +0 -258
  332. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin.ts +0 -120
  333. package/programs/polygon-on-globe/texture-dem-triangles.ts +0 -207
  334. package/programs/programcache.ts +0 -131
  335. package/programs/rings/partial-ring/piece-of-pie.ts +0 -323
  336. package/programs/totems/camerauniformblock.ts +0 -310
  337. package/programs/totems/canvas-webglobe-info.ts +0 -156
  338. package/programs/totems/globe-changes.ts +0 -79
  339. package/programs/totems/index.ts +0 -2
  340. package/programs/vectorfields/logics/constants.ts +0 -5
  341. package/programs/vectorfields/logics/ubo-new.ts +0 -37
  342. package/publish.bat +0 -62
  343. package/range-tools-on-terrain/bearing-line/adapters.ts +0 -154
  344. package/range-tools-on-terrain/bearing-line/plugin.ts +0 -569
  345. package/range-tools-on-terrain/bearing-line/types.ts +0 -65
  346. package/range-tools-on-terrain/circle-line-chain/adapters.ts +0 -109
  347. package/range-tools-on-terrain/circle-line-chain/chain-list-map.ts +0 -446
  348. package/range-tools-on-terrain/circle-line-chain/plugin.ts +0 -607
  349. package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
  350. package/range-tools-on-terrain/range-ring/adapters.ts +0 -114
  351. package/range-tools-on-terrain/range-ring/enum.ts +0 -2
  352. package/range-tools-on-terrain/range-ring/plugin.ts +0 -447
  353. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
  354. package/range-tools-on-terrain/range-ring/types.ts +0 -30
  355. package/rangerings/enum.ts +0 -2
  356. package/semiplugins/interface.ts +0 -14
  357. package/semiplugins/lightweight/line-plugin.ts +0 -343
  358. package/semiplugins/lightweight/piece-of-pie-plugin.ts +0 -275
  359. package/semiplugins/shape-on-terrain/arc-plugin.ts +0 -602
  360. package/semiplugins/shape-on-terrain/circle-plugin.ts +0 -588
  361. package/semiplugins/shape-on-terrain/goal.md +0 -12
  362. package/semiplugins/shape-on-terrain/padding-1-degree.ts +0 -714
  363. package/semiplugins/shape-on-terrain/terrain-cover/notes.md +0 -90
  364. package/semiplugins/shape-on-terrain/terrain-cover/texture-dem-cover.ts +0 -0
  365. package/semiplugins/type.ts +0 -8
  366. package/tests/Math/arc-sampling-test.js +0 -367
  367. package/tests/Math/arc-sampling-test.ts +0 -429
  368. package/tests/Math/arc.test.ts +0 -102
  369. package/tests/Math/junction/arc-plane.test.ts +0 -163
  370. package/tests/Math/junction/plane-plane.test.ts +0 -91
  371. package/tests/Math/plane-test.ts +0 -17
  372. package/tests/Math/plane.test.ts +0 -43
  373. package/tests/Math/vec3.test.ts +0 -14
  374. package/timetracks/readme.md +0 -1
  375. package/tsconfig.json +0 -22
  376. package/types.ts +0 -265
  377. package/util/account/create-buffermap-orchastration.ts +0 -85
  378. package/util/account/single-attribute-buffer-management/buffer-manager.ts +0 -149
  379. package/util/account/single-attribute-buffer-management/buffer-orchestrator.ts +0 -332
  380. package/util/account/single-attribute-buffer-management/buffer-orchestrator1.ts +0 -184
  381. package/util/account/single-attribute-buffer-management/index.ts +0 -11
  382. package/util/account/single-attribute-buffer-management/object-store.ts +0 -76
  383. package/util/account/single-attribute-buffer-management/types.ts +0 -43
  384. package/util/build-strategy/general-strategy.ts +0 -99
  385. package/util/build-strategy/static-dynamic.ts +0 -50
  386. package/util/check/typecheck.ts +0 -74
  387. package/util/frame-counter-trigger.ts +0 -99
  388. package/util/geometry/index.ts +0 -64
  389. package/util/gl-util/buffer/attribute-loader.ts +0 -84
  390. package/util/gl-util/buffer/index.ts +0 -6
  391. package/util/gl-util/draw-options/methods.ts +0 -47
  392. package/util/gl-util/uniform-block/manager.ts +0 -210
  393. package/util/gl-util/uniform-block/roadmap.md +0 -70
  394. package/util/gl-util/uniform-block/types.ts +0 -20
  395. package/util/heatwavedatamanager/pointcoordsmeta.ts +0 -28
  396. package/util/heatwavedatamanager/texture-point-sampler.ts +0 -198
  397. package/util/shaderfunctions/geometrytransformations.ts +0 -388
  398. package/util/surface-line-data/arc-bboxes.ts +0 -42
  399. package/util/surface-line-data/flow.ts +0 -52
  400. package/util/surface-line-data/types.ts +0 -27
  401. package/util/webglobjectbuilders.ts +0 -446
  402. package/write-text/context-text-bulk.ts +0 -268
  403. package/write-text/context-text3.ts +0 -253
  404. package/write-text/context-text4.ts +0 -243
  405. /package/{dist/Math → Math}/arc-cdf-points.js +0 -0
  406. /package/{dist/Math → Math}/arc-generate-points-exponantial.js +0 -0
  407. /package/{dist/Math → Math}/arc.js +0 -0
  408. /package/{dist/Math → Math}/circle-cdf-points.js +0 -0
  409. /package/{dist/Math → Math}/circle.js +0 -0
  410. /package/{dist/Math → Math}/constants.js +0 -0
  411. /package/{dist/Math → Math}/juction/arc-plane.js +0 -0
  412. /package/{dist/Math → Math}/juction/line-sphere.js +0 -0
  413. /package/{dist/Math → Math}/juction/plane-plane.js +0 -0
  414. /package/{dist/Math → Math}/line.js +0 -0
  415. /package/{dist/Math → Math}/matrix4.js +0 -0
  416. /package/{dist/Math → Math}/methods.js +0 -0
  417. /package/{dist/Math → Math}/plane.js +0 -0
  418. /package/{dist/Math → Math}/quaternion.js +0 -0
  419. /package/{dist/Math → Math}/templete-shapes/grid-visually-equal.js +0 -0
  420. /package/{dist/Math → Math}/types.js +0 -0
  421. /package/{dist/Math → Math}/vec3.js +0 -0
  422. /package/{dist/programs → programs}/line-on-globe/linestrip/data.js +0 -0
  423. /package/{dist/programs → programs}/line-on-globe/linestrip/linestrip.js +0 -0
  424. /package/{dist/programs → programs}/line-on-globe/naive-accurate-flexible.js +0 -0
  425. /package/{dist/programs → programs}/polygon-on-globe/texture-dem-triangle-test-plugin.js +0 -0
  426. /package/{dist/programs → programs}/polygon-on-globe/texture-dem-triangles.js +0 -0
  427. /package/{dist/programs → programs}/programcache.js +0 -0
  428. /package/{dist/programs → programs}/rings/partial-ring/piece-of-pie.js +0 -0
  429. /package/{dist/programs → programs}/totems/canvas-webglobe-info.js +0 -0
  430. /package/{dist/programs → programs}/totems/globe-changes.js +0 -0
  431. /package/{dist/programs → programs}/totems/index.js +0 -0
  432. /package/{dist/programs → programs}/vectorfields/logics/constants.js +0 -0
  433. /package/{dist/programs → programs}/vectorfields/logics/ubo-new.js +0 -0
  434. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/adapters.js +0 -0
  435. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/plugin.js +0 -0
  436. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/types.js +0 -0
  437. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/adapters.js +0 -0
  438. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/chain-list-map.js +0 -0
  439. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/plugin.js +0 -0
  440. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/types.js +0 -0
  441. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/adapters.js +0 -0
  442. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/enum.js +0 -0
  443. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/plugin.js +0 -0
  444. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/rangeringangletext.js +0 -0
  445. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/types.js +0 -0
  446. /package/{dist/rangerings → rangerings}/enum.js +0 -0
  447. /package/{dist/semiplugins → semiplugins}/interface.js +0 -0
  448. /package/{dist/semiplugins → semiplugins}/lightweight/line-plugin.js +0 -0
  449. /package/{dist/semiplugins → semiplugins}/lightweight/piece-of-pie-plugin.js +0 -0
  450. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/arc-plugin.js +0 -0
  451. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/circle-plugin.js +0 -0
  452. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/padding-1-degree.js +0 -0
  453. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/terrain-cover/texture-dem-cover.js +0 -0
  454. /package/{dist/semiplugins → semiplugins}/type.js +0 -0
  455. /package/{dist/types.js → types.js} +0 -0
  456. /package/{dist/util → util}/account/create-buffermap-orchastration.js +0 -0
  457. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-manager.js +0 -0
  458. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-orchestrator.js +0 -0
  459. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-orchestrator1.js +0 -0
  460. /package/{dist/util → util}/account/single-attribute-buffer-management/index.js +0 -0
  461. /package/{dist/util → util}/account/single-attribute-buffer-management/object-store.js +0 -0
  462. /package/{dist/util → util}/account/single-attribute-buffer-management/types.js +0 -0
  463. /package/{dist/util → util}/build-strategy/general-strategy.js +0 -0
  464. /package/{dist/util → util}/build-strategy/static-dynamic.js +0 -0
  465. /package/{dist/util → util}/check/typecheck.js +0 -0
  466. /package/{dist/util → util}/frame-counter-trigger.js +0 -0
  467. /package/{dist/util → util}/gl-util/buffer/attribute-loader.js +0 -0
  468. /package/{dist/util → util}/gl-util/buffer/index.js +0 -0
  469. /package/{dist/util → util}/gl-util/draw-options/methods.js +0 -0
  470. /package/{dist/util → util}/gl-util/uniform-block/manager.js +0 -0
  471. /package/{dist/util → util}/gl-util/uniform-block/types.js +0 -0
  472. /package/{dist/util → util}/heatwavedatamanager/pointcoordsmeta.js +0 -0
  473. /package/{dist/util → util}/heatwavedatamanager/texture-point-sampler.js +0 -0
  474. /package/{dist/util → util}/shaderfunctions/geometrytransformations.js +0 -0
  475. /package/{dist/util → util}/surface-line-data/arc-bboxes.js +0 -0
  476. /package/{dist/util → util}/surface-line-data/flow.js +0 -0
  477. /package/{dist/util → util}/surface-line-data/types.js +0 -0
  478. /package/{dist/util → util}/webglobjectbuilders.js +0 -0
  479. /package/{dist/write-text → write-text}/context-text3.js +0 -0
  480. /package/{dist/write-text → write-text}/context-text4.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
- }