@pirireis/webglobeplugins 1.0.2 → 1.0.4

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 (277) hide show
  1. package/package.json +2 -2
  2. package/plugins/alarms/alarmFadeInFadeOutPlugin/AlarmTimeLineFadeInFadeOutPlugin.js +399 -0
  3. package/{Math/angle-calculation.ts → webglobeplugins/Math/angle-calculation.js} +14 -18
  4. package/{Math/arc-cdf-points.ts → webglobeplugins/Math/arc-cdf-points.js} +272 -329
  5. package/{Math/arc-generate-points-exponantial.ts → webglobeplugins/Math/arc-generate-points-exponantial.js} +254 -299
  6. package/{Math/arc.ts → webglobeplugins/Math/arc.js} +292 -421
  7. package/{Math → webglobeplugins/Math}/bounds/line-bbox.js +186 -225
  8. package/{Math/circle-cdf-points.ts → webglobeplugins/Math/circle-cdf-points.js} +78 -143
  9. package/{Math/circle.ts → webglobeplugins/Math/circle.js} +33 -49
  10. package/{Math/constants.ts → webglobeplugins/Math/constants.js} +4 -12
  11. package/{Math/contour/quadtreecontours.ts → webglobeplugins/Math/contour/quadtreecontours.js} +300 -371
  12. package/{Math → webglobeplugins/Math}/contour/quadtreecontours1.js +298 -336
  13. package/{Math/finite-line-2d.ts → webglobeplugins/Math/finite-line-2d.js} +58 -68
  14. package/{Math/haversine.ts → webglobeplugins/Math/haversine.js} +22 -33
  15. package/webglobeplugins/Math/index.js +1 -0
  16. package/{Math/juction/arc-plane.ts → webglobeplugins/Math/juction/arc-plane.js} +143 -203
  17. package/{Math/juction/line-sphere.ts → webglobeplugins/Math/juction/line-sphere.js} +22 -32
  18. package/{Math/juction/plane-plane.ts → webglobeplugins/Math/juction/plane-plane.js} +53 -62
  19. package/{Math/line.ts → webglobeplugins/Math/line.js} +52 -84
  20. package/webglobeplugins/Math/matrix4.js +1 -0
  21. package/{Math/methods.ts → webglobeplugins/Math/methods.js} +126 -182
  22. package/{Math/plane.ts → webglobeplugins/Math/plane.js} +56 -92
  23. package/{Math/quaternion.ts → webglobeplugins/Math/quaternion.js} +106 -128
  24. package/{Math/templete-shapes/grid-visually-equal.ts → webglobeplugins/Math/templete-shapes/grid-visually-equal.js} +65 -118
  25. package/webglobeplugins/Math/tessellation/constants.js +1 -0
  26. package/{Math/tessellation/methods.ts → webglobeplugins/Math/tessellation/methods.js} +49 -79
  27. package/{Math/tessellation/nearest-value-padding.ts → webglobeplugins/Math/tessellation/nearest-value-padding.js} +112 -147
  28. package/{Math/tessellation/spherical-triangle-area.ts → webglobeplugins/Math/tessellation/spherical-triangle-area.js} +99 -127
  29. package/{Math/tessellation/tile-merger.ts → webglobeplugins/Math/tessellation/tile-merger.js} +429 -578
  30. package/{Math/tessellation/triangle-tessellation.ts → webglobeplugins/Math/tessellation/triangle-tessellation.js} +464 -533
  31. package/webglobeplugins/Math/tessellation/types.js +1 -0
  32. package/webglobeplugins/Math/types.js +1 -0
  33. package/{Math → webglobeplugins/Math}/utils.js +2 -3
  34. package/{Math/vec3.ts → webglobeplugins/Math/vec3.js} +155 -227
  35. package/{Math/xyz-tile.ts → webglobeplugins/Math/xyz-tile.js} +18 -26
  36. package/{algorithms → webglobeplugins/algorithms}/search-binary.js +16 -14
  37. package/webglobeplugins/altitude-locator/adaptors.js +1 -0
  38. package/webglobeplugins/altitude-locator/keymethod.js +1 -0
  39. package/{altitude-locator → webglobeplugins/altitude-locator}/plugin.js +344 -445
  40. package/{altitude-locator → webglobeplugins/altitude-locator}/types.js +21 -26
  41. package/{compass-rose → webglobeplugins/compass-rose}/compass-rose-padding-flat.js +230 -274
  42. package/{compass-rose/compass-text-writer.ts → webglobeplugins/compass-rose/compass-text-writer.js} +155 -210
  43. package/{compass-rose → webglobeplugins/compass-rose}/index.js +3 -3
  44. package/{constants.ts → webglobeplugins/constants.js} +6 -8
  45. package/{heatwave → webglobeplugins/heatwave}/datamanager.js +149 -168
  46. package/{heatwave → webglobeplugins/heatwave}/heatwave.js +206 -261
  47. package/{heatwave → webglobeplugins/heatwave}/index.js +5 -5
  48. package/{heatwave → webglobeplugins/heatwave}/isobar.js +306 -340
  49. package/{heatwave/texture-point-sampler.ts → webglobeplugins/heatwave/texture-point-sampler.js} +187 -220
  50. package/webglobeplugins/investigation-tools/draw/tiles/adapters.js +67 -0
  51. package/{investigation-tools/draw/tiles/tiles.ts → webglobeplugins/investigation-tools/draw/tiles/tiles.js} +128 -162
  52. package/{jest.config.js → webglobeplugins/jest.config.js} +7 -6
  53. package/{pin → webglobeplugins/pin}/pin-object-array1.js +300 -381
  54. package/{pin → webglobeplugins/pin}/pin-point-totem1.js +60 -77
  55. package/{programs → webglobeplugins/programs}/arrowfield/arrow-field.js +60 -89
  56. package/{programs → webglobeplugins/programs}/arrowfield/logic.js +141 -173
  57. package/{programs → webglobeplugins/programs}/data2legend/density-to-legend.js +68 -86
  58. package/{programs → webglobeplugins/programs}/data2legend/point-to-density-texture.js +67 -84
  59. package/{programs → webglobeplugins/programs}/float2legendwithratio/index.js +2 -3
  60. package/{programs → webglobeplugins/programs}/float2legendwithratio/logic.js +118 -144
  61. package/{programs → webglobeplugins/programs}/float2legendwithratio/object.js +104 -141
  62. package/{programs → webglobeplugins/programs}/helpers/blender.js +58 -73
  63. package/{programs/helpers/fadeaway.ts → webglobeplugins/programs/helpers/fadeaway.js} +60 -73
  64. package/{programs → webglobeplugins/programs}/index.js +20 -19
  65. package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-3d.js +85 -112
  66. package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-flat.js +148 -200
  67. package/{programs → webglobeplugins/programs}/line-on-globe/degree-padding-around-circle-3d.js +102 -134
  68. package/webglobeplugins/programs/line-on-globe/index.js +1 -0
  69. package/{programs → webglobeplugins/programs}/line-on-globe/lines-color-instanced-flat.js +80 -99
  70. package/webglobeplugins/programs/line-on-globe/linestrip/data.js +4 -0
  71. package/{programs/line-on-globe/linestrip/linestrip.ts → webglobeplugins/programs/line-on-globe/linestrip/linestrip.js} +93 -152
  72. package/{programs/line-on-globe/naive-accurate-flexible.ts → webglobeplugins/programs/line-on-globe/naive-accurate-flexible.js} +126 -175
  73. package/{programs → webglobeplugins/programs}/line-on-globe/util.js +5 -8
  74. package/{programs → webglobeplugins/programs}/picking/pickable-polygon-renderer.js +98 -129
  75. package/{programs → webglobeplugins/programs}/picking/pickable-renderer.js +98 -130
  76. package/{programs → webglobeplugins/programs}/point-on-globe/element-globe-surface-glow.js +93 -122
  77. package/{programs → webglobeplugins/programs}/point-on-globe/element-point-glow.js +80 -114
  78. package/{programs → webglobeplugins/programs}/point-on-globe/square-pixel-point.js +121 -139
  79. package/{programs/polygon-on-globe/texture-dem-triangles.ts → webglobeplugins/programs/polygon-on-globe/texture-dem-triangles.js} +178 -209
  80. package/{programs/programcache.ts → webglobeplugins/programs/programcache.js} +126 -134
  81. package/webglobeplugins/programs/rings/index.js +1 -0
  82. package/{programs/rings/partial-ring/piece-of-pie.ts → webglobeplugins/programs/rings/partial-ring/piece-of-pie.js} +152 -222
  83. package/webglobeplugins/programs/totems/attachments/adaptive-opacity.js +131 -0
  84. package/{programs/totems/dem-textures-manager.ts → webglobeplugins/programs/totems/attachments/dem-textures-manager.js} +263 -360
  85. package/webglobeplugins/programs/totems/camera-totem-attactment-interface.js +1 -0
  86. package/{programs/totems/camerauniformblock.ts → webglobeplugins/programs/totems/camerauniformblock.js} +225 -310
  87. package/{programs/totems/canvas-webglobe-info.ts → webglobeplugins/programs/totems/canvas-webglobe-info.js} +132 -147
  88. package/{programs/totems/globe-changes.ts → webglobeplugins/programs/totems/globe-changes.js} +59 -79
  89. package/{programs → webglobeplugins/programs}/totems/gpu-selection-uniform-block.js +99 -127
  90. package/{programs/totems/index.ts → webglobeplugins/programs/totems/index.js} +2 -2
  91. package/{programs → webglobeplugins/programs}/two-d/pixel-padding-for-compass.js +87 -101
  92. package/{programs → webglobeplugins/programs}/util.js +14 -19
  93. package/{programs/vectorfields/logics/constants.ts → webglobeplugins/programs/vectorfields/logics/constants.js} +4 -5
  94. package/{programs/vectorfields/logics/drawrectangleparticles.ts → webglobeplugins/programs/vectorfields/logics/drawrectangleparticles.js} +107 -136
  95. package/{programs → webglobeplugins/programs}/vectorfields/logics/index.js +2 -4
  96. package/webglobeplugins/programs/vectorfields/logics/particle-ubo.js +19 -0
  97. package/{programs/vectorfields/logics/pixelbased.ts → webglobeplugins/programs/vectorfields/logics/pixelbased.js} +89 -122
  98. package/{programs → webglobeplugins/programs}/vectorfields/logics/ubo.js +51 -57
  99. package/{programs/vectorfields/pingpongbuffermanager.ts → webglobeplugins/programs/vectorfields/pingpongbuffermanager.js} +99 -113
  100. package/{range-tools-on-terrain/bearing-line/adapters.ts → webglobeplugins/range-tools-on-terrain/bearing-line/adapters.js} +114 -154
  101. package/{range-tools-on-terrain/bearing-line/plugin.ts → webglobeplugins/range-tools-on-terrain/bearing-line/plugin.js} +457 -569
  102. package/webglobeplugins/range-tools-on-terrain/bearing-line/types.js +1 -0
  103. package/{range-tools-on-terrain/circle-line-chain/adapters.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/adapters.js} +85 -104
  104. package/{range-tools-on-terrain/circle-line-chain/chain-list-map.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/chain-list-map.js} +382 -446
  105. package/{range-tools-on-terrain/circle-line-chain/plugin.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/plugin.js} +464 -607
  106. package/webglobeplugins/range-tools-on-terrain/circle-line-chain/types.js +1 -0
  107. package/{range-tools-on-terrain/range-ring/adapters.ts → webglobeplugins/range-tools-on-terrain/range-ring/adapters.js} +93 -114
  108. package/{range-tools-on-terrain/range-ring/enum.ts → webglobeplugins/range-tools-on-terrain/range-ring/enum.js} +2 -2
  109. package/{range-tools-on-terrain/range-ring/plugin.ts → webglobeplugins/range-tools-on-terrain/range-ring/plugin.js} +377 -444
  110. package/webglobeplugins/range-tools-on-terrain/range-ring/rangeringangletext.js +331 -0
  111. package/webglobeplugins/range-tools-on-terrain/range-ring/types.js +9 -0
  112. package/webglobeplugins/semiplugins/interface.js +1 -0
  113. package/{semiplugins/lightweight/line-plugin.ts → webglobeplugins/semiplugins/lightweight/line-plugin.js} +221 -342
  114. package/{semiplugins/lightweight/piece-of-pie-plugin.ts → webglobeplugins/semiplugins/lightweight/piece-of-pie-plugin.js} +200 -275
  115. package/{semiplugins/shape-on-terrain/arc-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/arc-plugin.js} +481 -616
  116. package/{semiplugins/shape-on-terrain/circle-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/circle-plugin.js} +444 -588
  117. package/{semiplugins/shape-on-terrain/padding-1-degree.ts → webglobeplugins/semiplugins/shape-on-terrain/padding-1-degree.js} +539 -713
  118. package/{semiplugins/shape-on-terrain/terrain-polygon/adapters.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/adapters.js} +55 -69
  119. package/{semiplugins/shape-on-terrain/terrain-polygon/data/cache.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/cache.js} +104 -149
  120. package/{semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.js} +45 -58
  121. package/{semiplugins/shape-on-terrain/terrain-polygon/data/manager.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/manager.js} +4 -4
  122. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +241 -0
  123. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.js +76 -0
  124. package/{semiplugins/shape-on-terrain/terrain-polygon/data/random.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/random.js} +121 -165
  125. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/types.js +1 -0
  126. package/{semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.js} +64 -81
  127. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +162 -0
  128. package/{semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.js} +282 -265
  129. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/test-records.js +14 -0
  130. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/types.js +8 -0
  131. package/webglobeplugins/semiplugins/shell/bbox-renderer/index.js +2 -0
  132. package/{semiplugins/shell/bbox-renderer/logic.ts → webglobeplugins/semiplugins/shell/bbox-renderer/logic.js} +209 -273
  133. package/webglobeplugins/semiplugins/shell/bbox-renderer/object.js +78 -0
  134. package/webglobeplugins/semiplugins/type.js +1 -0
  135. package/{semiplugins/utility/container-plugin.ts → webglobeplugins/semiplugins/utility/container-plugin.js} +94 -126
  136. package/{semiplugins/utility/object-pass-container-plugin.ts → webglobeplugins/semiplugins/utility/object-pass-container-plugin.js} +80 -101
  137. package/{shaders → webglobeplugins/shaders}/fragment-toy/firework.js +1 -1
  138. package/{shaders → webglobeplugins/shaders}/fragment-toy/singularity.js +2 -5
  139. package/{tracks → webglobeplugins/tracks}/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
  140. package/webglobeplugins/tracks/point-heat-map/index.js +1 -0
  141. package/{tracks → webglobeplugins/tracks}/point-heat-map/plugin-webworker.js +121 -148
  142. package/{tracks → webglobeplugins/tracks}/point-heat-map/point-to-heat-map-flow.js +121 -150
  143. package/{tracks → webglobeplugins/tracks}/point-tracks/key-methods.js +2 -3
  144. package/{tracks → webglobeplugins/tracks}/point-tracks/plugin.js +401 -487
  145. package/{tracks → webglobeplugins/tracks}/timetracks/adaptors-line-strip.js +65 -79
  146. package/{tracks → webglobeplugins/tracks}/timetracks/plugin-line-strip.js +240 -295
  147. package/{tracks → webglobeplugins/tracks}/timetracks/program-line-strip.js +413 -495
  148. package/{tracks → webglobeplugins/tracks}/timetracks/programpoint-line-strip.js +109 -137
  149. package/webglobeplugins/types.js +19 -0
  150. package/{util → webglobeplugins/util}/account/bufferoffsetmanager.js +176 -209
  151. package/webglobeplugins/util/account/create-buffermap-orchastration.js +39 -0
  152. package/{util → webglobeplugins/util}/account/index.js +3 -6
  153. package/{util/account/single-attribute-buffer-management/buffer-manager.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-manager.js} +119 -151
  154. package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +212 -238
  155. package/{util/account/single-attribute-buffer-management/buffer-orchestrator1.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator1.js} +159 -184
  156. package/{util/account/single-attribute-buffer-management/index.ts → webglobeplugins/util/account/single-attribute-buffer-management/index.js} +4 -11
  157. package/{util/account/single-attribute-buffer-management/object-store.ts → webglobeplugins/util/account/single-attribute-buffer-management/object-store.js} +55 -76
  158. package/webglobeplugins/util/account/single-attribute-buffer-management/types.js +1 -0
  159. package/{util → webglobeplugins/util}/account/util.js +18 -22
  160. package/webglobeplugins/util/algorithms/index.js +1 -0
  161. package/{util → webglobeplugins/util}/algorithms/search-binary.js +25 -26
  162. package/{util/build-strategy/static-dynamic.ts → webglobeplugins/util/build-strategy/static-dynamic.js} +41 -50
  163. package/webglobeplugins/util/check/index.js +1 -0
  164. package/webglobeplugins/util/check/typecheck.js +66 -0
  165. package/{util/frame-counter-trigger.ts → webglobeplugins/util/frame-counter-trigger.js} +84 -99
  166. package/{util/geometry/index.ts → webglobeplugins/util/geometry/index.js} +121 -155
  167. package/webglobeplugins/util/gl-util/buffer/attribute-loader.js +74 -0
  168. package/{util/gl-util/buffer/index.ts → webglobeplugins/util/gl-util/buffer/index.js} +3 -6
  169. package/{util/gl-util/draw-options/methods.ts → webglobeplugins/util/gl-util/draw-options/methods.js} +32 -47
  170. package/{util/gl-util/uniform-block/manager.ts → webglobeplugins/util/gl-util/uniform-block/manager.js} +209 -232
  171. package/{util/globe-default-gl-states.ts → webglobeplugins/util/globe-default-gl-states.js} +4 -5
  172. package/{util/helper-methods.ts → webglobeplugins/util/helper-methods.js} +8 -9
  173. package/{util → webglobeplugins/util}/index.js +10 -9
  174. package/webglobeplugins/util/interpolation/index.js +1 -0
  175. package/webglobeplugins/util/interpolation/timetrack/index.js +2 -0
  176. package/{util → webglobeplugins/util}/interpolation/timetrack/timetrack-interpolator.js +79 -94
  177. package/{util → webglobeplugins/util}/interpolation/timetrack/web-worker.js +46 -51
  178. package/{util/picking/fence.ts → webglobeplugins/util/picking/fence.js} +43 -47
  179. package/{util/picking/picker-displayer.ts → webglobeplugins/util/picking/picker-displayer.js} +176 -226
  180. package/{util → webglobeplugins/util}/programs/draw-from-pixel-coords.js +164 -201
  181. package/{util/programs/draw-texture-on-canvas.ts → webglobeplugins/util/programs/draw-texture-on-canvas.js} +69 -91
  182. package/{util → webglobeplugins/util}/programs/supersampletotextures.js +97 -130
  183. package/{util/programs/texturetoglobe.js → webglobeplugins/util/programs/texturetoglobe_delete.js} +128 -153
  184. package/{util/shaderfunctions/geometrytransformations.ts → webglobeplugins/util/shaderfunctions/geometrytransformations.js} +44 -106
  185. package/{util → webglobeplugins/util}/shaderfunctions/index.js +2 -2
  186. package/{util → webglobeplugins/util}/shaderfunctions/nodata.js +2 -4
  187. package/{util → webglobeplugins/util}/shaderfunctions/noisefunctions.js +7 -10
  188. package/{util/webglobjectbuilders.ts → webglobeplugins/util/webglobjectbuilders.js} +358 -446
  189. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/adaptor.js +11 -11
  190. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/index.js +3 -3
  191. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/plugin.js +83 -128
  192. package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/adaptor.js +15 -16
  193. package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/index.js +3 -3
  194. package/{vectorfield/waveparticles/plugin.ts → webglobeplugins/vectorfield/waveparticles/plugin.js} +455 -506
  195. package/webglobeplugins/vectorfield/wind/adapters/image-to-fields.js +92 -0
  196. package/webglobeplugins/vectorfield/wind/adapters/types.js +1 -0
  197. package/{vectorfield/wind/imagetovectorfieldandmagnitude.ts → webglobeplugins/vectorfield/wind/imagetovectorfieldandmagnitude.js} +53 -78
  198. package/{vectorfield → webglobeplugins/vectorfield}/wind/index.js +5 -5
  199. package/{vectorfield/wind/plugin-persistant.ts → webglobeplugins/vectorfield/wind/plugin-persistant.js} +390 -483
  200. package/{vectorfield → webglobeplugins/vectorfield}/wind/plugin.js +685 -883
  201. package/{vectorfield → webglobeplugins/vectorfield}/wind/vectorfieldimage.js +23 -27
  202. package/{write-text/context-text-bulk.ts → webglobeplugins/write-text/context-text-bulk.js} +200 -285
  203. package/webglobeplugins/write-text/context-text3.js +167 -0
  204. package/{write-text/context-text4.ts → webglobeplugins/write-text/context-text4.js} +146 -231
  205. package/{write-text → webglobeplugins/write-text}/context-textDELETE.js +94 -125
  206. package/{write-text/objectarraylabels/index.ts → webglobeplugins/write-text/objectarraylabels/index.js} +2 -2
  207. package/{write-text → webglobeplugins/write-text}/objectarraylabels/objectarraylabels.js +200 -247
  208. package/Math/index.js +0 -0
  209. package/Math/matrix4.ts +0 -0
  210. package/Math/mesh/mapbox-delaunay.d.ts +0 -74
  211. package/Math/roadmap.md +0 -10
  212. package/Math/tessellation/constants.ts +0 -1
  213. package/Math/tessellation/roadmap.md +0 -48
  214. package/Math/tessellation/types.ts +0 -1
  215. package/Math/types.ts +0 -68
  216. package/altitude-locator/adaptors.js +0 -0
  217. package/altitude-locator/keymethod.js +0 -0
  218. package/investigation-tools/draw/tiles/adapters.ts +0 -133
  219. package/programs/line-on-globe/index.js +0 -0
  220. package/programs/line-on-globe/linestrip/data.ts +0 -29
  221. package/programs/polygon-on-globe/roadmap.md +0 -8
  222. package/programs/rings/index.js +0 -1
  223. package/programs/totems/camera-totem-attactment-interface.ts +0 -4
  224. package/programs/vectorfields/logics/particle-ubo.ts +0 -23
  225. package/publish.bat +0 -62
  226. package/range-tools-on-terrain/bearing-line/types.ts +0 -65
  227. package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
  228. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
  229. package/range-tools-on-terrain/range-ring/types.ts +0 -30
  230. package/semiplugins/interface.ts +0 -14
  231. package/semiplugins/shape-on-terrain/goal.md +0 -12
  232. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +0 -20
  233. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +0 -196
  234. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +0 -209
  235. package/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.ts +0 -144
  236. package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +0 -5
  237. package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +0 -37
  238. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +0 -146
  239. package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +0 -90
  240. package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +0 -69
  241. package/semiplugins/shell/bbox-renderer/index.ts +0 -2
  242. package/semiplugins/shell/bbox-renderer/object.ts +0 -129
  243. package/semiplugins/type.ts +0 -8
  244. package/terrain-plugin.mmd +0 -83
  245. package/tests/Math/arc-sampling-test.js +0 -367
  246. package/tests/Math/arc-sampling-test.ts +0 -429
  247. package/tests/Math/arc.test.ts +0 -77
  248. package/tests/Math/junction/arc-limit.test.ts +0 -7
  249. package/tests/Math/junction/arc-plane-points.test.ts +0 -196
  250. package/tests/Math/junction/arc-plane.test.ts +0 -172
  251. package/tests/Math/junction/line-sphere.test.ts +0 -127
  252. package/tests/Math/junction/plane-plane.test.ts +0 -91
  253. package/tests/Math/plane-test.ts +0 -17
  254. package/tests/Math/plane.test.ts +0 -43
  255. package/tests/Math/vec3.test.ts +0 -33
  256. package/tracks/point-heat-map/index.js +0 -0
  257. package/tracks/point-heat-map/readme.md +0 -15
  258. package/tracks/timetracks/readme.md +0 -1
  259. package/tsconfig.json +0 -22
  260. package/types/@pirireis/webglobe.d.ts +0 -102
  261. package/types/delaunator.d.ts +0 -40
  262. package/types/earcut.d.ts +0 -11
  263. package/types/rbush.d.ts +0 -57
  264. package/types.ts +0 -319
  265. package/util/account/create-buffermap-orchastration.ts +0 -85
  266. package/util/account/single-attribute-buffer-management/types.ts +0 -43
  267. package/util/algorithms/index.js +0 -0
  268. package/util/check/index.js +0 -0
  269. package/util/check/typecheck.ts +0 -74
  270. package/util/gl-util/buffer/attribute-loader.ts +0 -84
  271. package/util/interpolation/index.js +0 -0
  272. package/util/interpolation/timetrack/index.js +0 -9
  273. package/vectorfield/wind/adapters/image-to-fields.ts +0 -74
  274. package/vectorfield/wind/adapters/types.ts +0 -12
  275. package/vectorfield/wind/plugin-persistant copy.ts +0 -461
  276. package/write-text/context-text3.ts +0 -252
  277. package/write-text/objectarraylabels/objectarraylabels.d.ts +0 -72
@@ -1,196 +0,0 @@
1
- import { Plane, Arc, Vec3, Sphere, Quaternion } from '../../../Math/types';
2
- import * as plane from '../../../Math/plane';
3
- import * as arc from '../../../Math/arc';
4
- import * as vec3 from '../../../Math/vec3';
5
- import * as quateernion from '../../../Math/quaternion';
6
- import { pointsOnArc } from '../../../Math/juction/arc-plane';
7
- import { EPSILON } from '../../../Math/constants';
8
-
9
- describe('pointsOnArc', () => {
10
- const inArc = arc.create(vec3.create(1, 0, 0), vec3.create(0, 1, 0));
11
- const junctionPlane = plane.create(vec3.create(0, 0, 1), 0);
12
- const outPoints: [Vec3, Vec3] = [vec3.create(), vec3.create()];
13
-
14
- beforeEach(() => {
15
- // Reset arc and plane before each test
16
- arc.set(inArc, vec3.create(1, 0, 0), vec3.create(0, 1, 0)); // 90-degree arc on XY plane
17
- plane.set(junctionPlane, vec3.create(0, 0, 1), 0); // XY plane
18
- vec3.set(outPoints[0], 0, 0, 0);
19
- vec3.set(outPoints[1], 0, 0, 0);
20
- });
21
-
22
- test('should return 0 if junction plane is too far', () => {
23
- plane.set(junctionPlane, vec3.create(0, 0, 1), 1.1);
24
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
25
- expect(count).toBe(0);
26
- });
27
-
28
- test('should return 0 if junction plane is too far (negative distance)', () => {
29
- plane.set(junctionPlane, vec3.create(0, 0, 1), -1.1);
30
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
31
- expect(count).toBe(0);
32
- });
33
-
34
- test('should return 0 if planes are parallel and distinct', () => {
35
- plane.set(junctionPlane, vec3.create(0, 0, 1), 0.5); // Plane parallel to the arc's plane
36
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
37
- expect(count).toBe(0);
38
- });
39
-
40
- test('should return 1 point for a tangent junction plane at an arc endpoint', () => {
41
- plane.set(junctionPlane, vec3.create(1, 0, 0), 1); // Tangent at (1,0,0)
42
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
43
- expect(count).toBe(1);
44
- expect(vec3.equals(outPoints[0], vec3.create(1, 0, 0))).toBe(true);
45
- });
46
-
47
- test('should return 2 intersection points when arc endpoints are the intersection points', () => {
48
- const r2 = Math.sqrt(2) / 2;
49
- plane.set(junctionPlane, vec3.create(r2, r2, 0), r2); // Plane whose intersection with the unit sphere includes the arc endpoints
50
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
51
- expect(count).toBe(2);
52
- const p0Found = vec3.equals(outPoints[0], inArc.p0) || vec3.equals(outPoints[1], inArc.p0);
53
- const p1Found = vec3.equals(outPoints[0], inArc.p1) || vec3.equals(outPoints[1], inArc.p1);
54
- expect(p0Found).toBe(true);
55
- expect(p1Found).toBe(true);
56
- });
57
-
58
- test('should return 2 intersection points for a 90-degree arc', () => {
59
- arc.set(inArc, vec3.create(1, 0, 0), vec3.create(0, 1, 0)); // 90-degree arc on XY plane
60
- const r2 = Math.sqrt(2) / 2;
61
- plane.set(junctionPlane, vec3.create(r2, -r2, 0), 0); // Plane intersecting at (r2, r2, 0) and (-r2, -r2, 0)
62
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
63
- expect(count).toBe(1);
64
- expect(vec3.equals(outPoints[0], vec3.create(r2, r2, 0))).toBe(true);
65
- });
66
-
67
- test('should return 1 intersection point if only one is on the arc', () => {
68
- const r2 = Math.sqrt(2) / 2;
69
- arc.set(inArc, vec3.create(1, 0, 0), vec3.create(r2, r2, 0)); // 45-degree arc
70
- plane.set(junctionPlane, vec3.create(0, 1, 0), 0); // XZ plane, intersects circle at (1,0,0) and (-1,0,0)
71
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
72
- expect(count).toBe(1);
73
- expect(vec3.equals(outPoints[0], vec3.create(1, 0, 0))).toBe(true);
74
- });
75
-
76
- test('should return 1 if intersection point is on the arc segment', () => {
77
- const r2 = Math.sqrt(2) / 2;
78
- arc.set(inArc, vec3.create(r2, r2, 0), vec3.create(-r2, r2, 0)); // Arc in the upper XY quadrant
79
- plane.set(junctionPlane, vec3.create(1, 0, 0), 0); // YZ plane, intersects circle at (0,1,0) and (0,-1,0)
80
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
81
- expect(count).toBe(1);
82
- expect(vec3.equals(outPoints[0], vec3.create(0, 1, 0))).toBe(true);
83
- });
84
-
85
- test('should return 1 intersection point when plane cuts through middle of 90-degree arc', () => {
86
- const r2 = Math.sqrt(2) / 2;
87
- arc.set(inArc, vec3.create(1, 0, 0), vec3.create(0, 1, 0)); // 90-degree arc
88
- plane.set(junctionPlane, vec3.create(1, -1, 0), 0); // Plane intersecting at (r2, r2, 0) and (-r2, -r2, 0)
89
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
90
- expect(count).toBe(1);
91
- const expectedPoint = vec3.create(r2, r2, 0);
92
- expect(vec3.equals(outPoints[0], expectedPoint)).toBe(true);
93
- });
94
-
95
- test('long 10 lat 10, long -10 lat 10, cut from 0 long meridian', () => {
96
- const r2 = Math.sqrt(2) / 2;
97
-
98
- const long10lat10 = vec3.create()
99
- const long_10lat10 = vec3.create()
100
- vec3.fromLongLatToUnitVector(long10lat10,[10 * Math.PI / 180, 10 * Math.PI / 180]);
101
- vec3.fromLongLatToUnitVector(long_10lat10,[-10 * Math.PI / 180, 10 * Math.PI / 180]);
102
- arc.set(inArc, long10lat10, long_10lat10); // Arc in the upper XY quadrant
103
-
104
- plane.set(junctionPlane, vec3.createUnitVectorFromLongLat([Math.PI/2,0]),0); // YZ plane, intersects circle at (1,0,0) and (-1,0,0)
105
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
106
- expect(count).toBe(1);
107
-
108
- // calculate expected point with quaternion rotation. rotate long10Lat10 by half the angle between the two arc endpoints
109
- const angle = Math.acos(vec3.dot(long10lat10, long_10lat10));
110
- const halfAngle = angle / 2;
111
- const axis = vec3.clone(inArc.normal);
112
-
113
- const q1 = quateernion.create();
114
- quateernion.fromAxisAngle(q1, axis, halfAngle);
115
- const expectedPoint = vec3.create();
116
- vec3.applyQuaternion(expectedPoint, long10lat10, q1);
117
- const isEqual = vec3.equals(outPoints[0], expectedPoint);
118
- if ( !isEqual ) {
119
- console.log('angle', long10lat10, long_10lat10, angle);
120
- console.log('outPoints[0]', outPoints[0]);
121
- console.log('expectedPoint', expectedPoint);
122
- }
123
- expect(isEqual).toBe(true);
124
- });
125
-
126
- test('should return 1 point for arc from (10,10) to (10,-10) long/lat, cut by lat 0 plane', () => {
127
- const deg2rad = Math.PI / 180;
128
- const p0 = vec3.create();
129
- const p1 = vec3.create();
130
- vec3.fromLongLatToUnitVector(p0, [10 * deg2rad, 10 * deg2rad]);
131
- vec3.fromLongLatToUnitVector(p1, [10 * deg2rad, -10 * deg2rad]);
132
- arc.set(inArc, p0, p1);
133
-
134
- // Equatorial plane (lat 0)
135
- plane.set(junctionPlane, vec3.create(0, 0, 1), 0);
136
-
137
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
138
- expect(count).toBe(1);
139
-
140
- const expectedPoint = vec3.create();
141
- vec3.fromLongLatToUnitVector(expectedPoint, [10 * deg2rad, 0 * deg2rad]);
142
-
143
- const isEqual = vec3.equals(outPoints[0], expectedPoint);
144
- if (!isEqual) {
145
- console.log('outPoints[0]', outPoints[0]);
146
- console.log('expectedPoint', expectedPoint);
147
- }
148
- expect(isEqual).toBe(true);
149
- });
150
-
151
-
152
- test('should return 1 point for arc from (10,10) to (0,-10) long/lat, cut by lat 0 plane', () => {
153
- const deg2rad = Math.PI / 180;
154
- const p0 = vec3.create();
155
- const p1 = vec3.create();
156
- vec3.fromLongLatToUnitVector(p0, [10 * deg2rad, 10 * deg2rad]);
157
- vec3.fromLongLatToUnitVector(p1, [0 * deg2rad, -10 * deg2rad]);
158
- arc.set(inArc, p0, p1);
159
-
160
- // Equatorial plane (lat 0)
161
- plane.set(junctionPlane, vec3.create(0, 0, 1), 0);
162
-
163
- const count = pointsOnArc(inArc, junctionPlane, outPoints);
164
- expect(count).toBe(1);
165
-
166
- // The intersection point must lie on the great circle defined by p0 and p1,
167
- // and also on the equator (z=0).
168
- // The line of intersection of the two great circle planes is given by the cross product of their normals.
169
- const arcNormal = vec3.clone(inArc.normal);
170
- const equatorNormal = vec3.create(0, 0, 1);
171
- const intersectionDir = vec3.create();
172
- vec3.cross(intersectionDir, arcNormal, equatorNormal);
173
- vec3.normalize(intersectionDir, intersectionDir);
174
-
175
- // The two intersection points are intersectionDir and -intersectionDir.
176
- // We need to find which one is on the arc.
177
- // The correct point should have a positive dot product with both p0 and p1.
178
- const dot0 = vec3.dot(intersectionDir, p0);
179
- const intersectionDirNeg = vec3.clone(intersectionDir);
180
- vec3.negate(intersectionDirNeg);
181
- const dot1 = vec3.dot(intersectionDirNeg, p0);
182
-
183
- const expectedPoint = dot0 > dot1 ? intersectionDir : intersectionDirNeg;
184
-
185
- const isEqual = vec3.equals(outPoints[0], expectedPoint);
186
- if (!isEqual) {
187
- console.log('outPoints[0]', outPoints[0]);
188
- console.log('expectedPoint', expectedPoint);
189
- }
190
- expect(isEqual).toBe(true);
191
- });
192
-
193
- });
194
-
195
-
196
-
@@ -1,172 +0,0 @@
1
- import { Plane, Line, Vec3, Quaternion, Arc, Sphere } from '../../../Math/types';
2
- import * as plane from '../../../Math/plane';
3
- import * as line from '../../../Math/line';
4
- import * as arc from '../../../Math/arc';
5
- import * as vec3 from '../../../Math/vec3';
6
- import * as quaternion from '../../../Math/quaternion';
7
- import { planePlaneJunction } from '../../../Math/juction/plane-plane';
8
- import { lineSphereIntersection } from '../../../Math/juction/line-sphere';
9
- import { arcSlice } from '../../../Math/juction/arc-plane';
10
- import { EPSILON } from '../../../Math/constants';
11
-
12
-
13
- const arcIn = arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0));
14
- const arcOut: [Arc, Arc] = [
15
- arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0)),
16
- arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0))
17
- ];
18
- const arcExpected = arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0));
19
- const junctionPlane = plane.create(vec3.create(0, 0, 1), 0);
20
-
21
- const origin = { center: vec3.create(0, 0, 0), radius: 1 } as Sphere;
22
-
23
- const r2 = Math.sqrt(2) / 2;
24
- const r3 = Math.sqrt(3) / 3;
25
-
26
- beforeAll(() => {
27
- // Initialize any necessary data or state before running the tests
28
- arc.set(arcIn, vec3.create(0, 0, 1), vec3.create(1, 0, 0));
29
- arc.set(arcOut[0], vec3.create(0, 0, 1), vec3.create(1, 0, 0));
30
- arc.set(arcOut[1], vec3.create(0, 0, 1), vec3.create(1, 0, 0));
31
-
32
- plane.set(junctionPlane, vec3.create(0, 0, 1), 0);
33
-
34
- });
35
-
36
-
37
-
38
-
39
-
40
- test('arcSlice - No intersection 1', () => {
41
- junctionPlane.distance = 2; // Set distance to ensure no intersection
42
- const result = arcSlice(arcOut, arcIn, junctionPlane);
43
- expect(result).toBe(0);
44
- });
45
-
46
-
47
-
48
- test('arcSlice - Full intersection 1', () => {
49
- junctionPlane.distance = 0; // Set distance to ensure full intersection
50
- const result = arcSlice(arcOut, arcIn, junctionPlane);
51
- expect(result).toBe(1);
52
- const isEqual = arc.equals(arcOut[0], arcExpected);
53
- expect(isEqual).toBe(true);
54
- });
55
-
56
-
57
- test('arcSlice-1', () => {
58
- // Set up a case where the arc intersects with the plane
59
-
60
-
61
- const r3 = Math.sqrt(3);
62
- const juctionNormal = vec3.create(r3, r3, r3);
63
-
64
- plane.set(junctionPlane, juctionNormal, 0);
65
-
66
- const result = arcSlice(arcOut, arcIn, junctionPlane);
67
- expect(result).toBe(1);
68
- });
69
-
70
-
71
- test('arcSlice - Plane intersection line is out of sphere', () => {
72
- // Set up a case where the arc intersects with the plane
73
-
74
- const point1 = vec3.create(0, 1, 0);
75
- const point2 = vec3.create(0, 0, 1);
76
- arc.set(arcIn, point1, point2);
77
-
78
- const juctionNormal = vec3.create(r3, r3, r3);
79
-
80
- const closestPoint = vec3.create(r2, r2, 0);
81
- const distance = vec3.dot(juctionNormal, closestPoint) + EPSILON;
82
- plane.set(junctionPlane, juctionNormal, distance);
83
-
84
- const result = arcSlice(arcOut, arcIn, junctionPlane);
85
- expect(result).toBe(0);
86
- });
87
-
88
-
89
- test("arcSlice - Planes are parallel", () => {
90
-
91
- const point1 = vec3.create(0, 1, 0);
92
- const point2 = vec3.create(0, 0, 1);
93
- arc.set(arcIn, point1, point2);
94
-
95
- plane.fromValues(junctionPlane, 1, 0, 0, 0.3); // Set a plane parallel to the arc's normal
96
- const result = arcSlice(arcOut, arcIn, junctionPlane);
97
- expect(result).toBe(0); // Expect no intersection
98
-
99
- junctionPlane.distance = -0.3;
100
-
101
- const result2 = arcSlice(arcOut, arcIn, junctionPlane);
102
- expect(result2).toBe(1); // Expect no intersection
103
- const isEqual = arc.equals(arcOut[0], arcIn);
104
- expect(isEqual).toBe(true); // Expect the output arc to be equal to the input arc
105
- });
106
-
107
-
108
- test("arcSlice - Arc sliced in half", () => {
109
-
110
- const point1 = vec3.create(0, 1, 0);
111
- const point2 = vec3.create(0, 0, 1);
112
- arc.set(arcIn, point1, point2);
113
-
114
- expect(vec3.equals(arcIn.normal, vec3.create(1, 0, 0))).toBe(true); // Arc normal should be (1, 0, 0)
115
-
116
- plane.fromValues(junctionPlane, 0, -r2, r2, 0); // Set a plane parallel to the arc's normal
117
-
118
- const result = arcSlice(arcOut, arcIn, junctionPlane);
119
- expect(result).toBe(1); // Expect an intersection
120
- const expectedPoint1 = vec3.create(0, r2, r2);
121
- const expectedPoint2 = vec3.create(0, 0, 1);
122
- arc.set(arcExpected, expectedPoint1, expectedPoint2);
123
- const isEqual = arc.equals(arcOut[0], arcExpected);
124
- expect(isEqual).toBe(true); // Expect the output arc to be equal to the expected arc
125
- });
126
-
127
-
128
- test("arcSlice - Arc sliced in middle", () => {
129
- const point1 = vec3.create(0, 1, 0);
130
- const point2 = vec3.create(0, 0, 1);
131
- arc.set(arcIn, point1, point2);
132
-
133
-
134
- plane.fromValues(junctionPlane, 0, r2, r2, r2);
135
-
136
- const result = arcSlice(arcOut, arcIn, junctionPlane);
137
- expect(result).toBe(1);
138
- expect(arc.equals(arcOut[0], arcIn)).toBe(true);
139
-
140
-
141
- const gap = 1 - r2;
142
- const stepCount = 100;
143
-
144
- const points: [Vec3, Vec3] = [vec3.create(0, 1, 0), vec3.create(0, 0, 1)];
145
- const lineOfPoints = line.create();
146
- vec3.set(lineOfPoints.direction, 0, -r2, r2);
147
- // Add normalization:
148
- vec3.normalize(lineOfPoints.direction, lineOfPoints.direction);
149
-
150
- for (let i = 0; i < stepCount - 1; i++) {
151
- const distance = gap * i / stepCount + r2;
152
- junctionPlane.distance = distance;
153
- const result = arcSlice(arcOut, arcIn, junctionPlane);
154
- expect(result).toBe(1);
155
-
156
- vec3.set(lineOfPoints.origin, 0, r2 * distance, r2 * distance);
157
- const haveIntersections = lineSphereIntersection(points, lineOfPoints, origin);
158
- expect(haveIntersections).toBe(true); // Expect the line to intersect with the sphere
159
-
160
- arc.set(arcExpected, points[0], points[1]);
161
-
162
- const isEqual = arc.equals(arcOut[0], arcExpected);
163
- if (!isEqual) {
164
- console.log('Iteration:', i);
165
- console.log('Expected arc:', arcExpected);
166
- console.log('Actual arc:', arcOut[0]);
167
- console.log('Points from intersection:', points);
168
- }
169
- expect(isEqual).toBe(true); // Expect the output arc to be equal to the expected arc
170
-
171
- }
172
- });
@@ -1,127 +0,0 @@
1
- import { lineSphereIntersection } from '../../../Math/juction/line-sphere';
2
- import { create } from '../../../Math/vec3';
3
- import type { Line, Sphere, Vec3 } from '../../../Math/types';
4
-
5
- describe('lineSphereIntersection', () => {
6
- let intersections: [Vec3, Vec3];
7
-
8
- beforeEach(() => {
9
- intersections = [create(0, 0, 0), create(0, 0, 0)];
10
- });
11
-
12
- test('should return true for a line intersecting the sphere at two points', () => {
13
- const line: Line = { origin: create(-2, 0.5, 0), direction: create(1, 0, 0) };
14
- const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
15
-
16
- const result = lineSphereIntersection(intersections, line, sphere);
17
-
18
- expect(result).toBe(true);
19
- const t1 = 2 - Math.sqrt(0.75);
20
- const t2 = 2 + Math.sqrt(0.75);
21
-
22
- expect(intersections[0][0]).toBeCloseTo(t1 - 2);
23
- expect(intersections[0][1]).toBeCloseTo(0.5);
24
- expect(intersections[0][2]).toBeCloseTo(0);
25
-
26
- expect(intersections[1][0]).toBeCloseTo(t2 - 2);
27
- expect(intersections[1][1]).toBeCloseTo(0.5);
28
- expect(intersections[1][2]).toBeCloseTo(0);
29
- });
30
-
31
- test('should return true for a line passing through the center of the sphere', () => {
32
- const line: Line = { origin: create(0, 0, 0), direction: create(0, 1, 0) };
33
- const sphere: Sphere = { center: create(0, 0, 0), radius: 5 };
34
-
35
- const result = lineSphereIntersection(intersections, line, sphere);
36
-
37
- expect(result).toBe(true);
38
- // Order might vary, so check both possibilities
39
- const p1 = create(0, -5, 0);
40
- const p2 = create(0, 5, 0);
41
- const receivedP1 = intersections[0];
42
- const receivedP2 = intersections[1];
43
-
44
- const match1 = Math.abs(receivedP1[1] - p1[1]) < 1e-9 && Math.abs(receivedP2[1] - p2[1]) < 1e-9;
45
- const match2 = Math.abs(receivedP1[1] - p2[1]) < 1e-9 && Math.abs(receivedP2[1] - p1[1]) < 1e-9;
46
-
47
- expect(match1 || match2).toBe(true);
48
- });
49
-
50
- test('should return true for a tangent line', () => {
51
- const line: Line = { origin: create(-2, 1, 0), direction: create(1, 0, 0) };
52
- const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
53
-
54
- const result = lineSphereIntersection(intersections, line, sphere);
55
-
56
- expect(result).toBe(true);
57
- expect(intersections[0][0]).toBeCloseTo(0);
58
- expect(intersections[0][1]).toBeCloseTo(1);
59
- expect(intersections[0][2]).toBeCloseTo(0);
60
- expect(intersections[1][0]).toBeCloseTo(0);
61
- expect(intersections[1][1]).toBeCloseTo(1);
62
- expect(intersections[1][2]).toBeCloseTo(0);
63
- });
64
-
65
- test('should return false for a line that does not intersect the sphere', () => {
66
- const line: Line = { origin: create(-5, 5, 0), direction: create(1, 0, 0) };
67
- const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
68
-
69
- const result = lineSphereIntersection(intersections, line, sphere);
70
-
71
- expect(result).toBe(false);
72
- });
73
-
74
- test('should handle non-normalized direction vectors', () => {
75
- const line: Line = { origin: create(-10, 0, 0), direction: create(2, 0, 0) };
76
- const sphere: Sphere = { center: create(0, 0, 0), radius: 1 };
77
-
78
- const result = lineSphereIntersection(intersections, line, sphere);
79
-
80
- expect(result).toBe(true);
81
- const p1 = create(-1, 0, 0);
82
- const p2 = create(1, 0, 0);
83
- const receivedP1 = intersections[0];
84
- const receivedP2 = intersections[1];
85
-
86
- const match1 = Math.abs(receivedP1[0] - p1[0]) < 1e-9 && Math.abs(receivedP2[0] - p2[0]) < 1e-9;
87
- const match2 = Math.abs(receivedP1[0] - p2[0]) < 1e-9 && Math.abs(receivedP2[0] - p1[0]) < 1e-9;
88
-
89
- expect(match1 || match2).toBe(true);
90
- });
91
-
92
- test('should handle sphere not at the origin', () => {
93
- const line: Line = { origin: create(8, 5, 5), direction: create(1, 0, 0) };
94
- const sphere: Sphere = { center: create(10, 5, 5), radius: 1 };
95
-
96
- const result = lineSphereIntersection(intersections, line, sphere);
97
-
98
- expect(result).toBe(true);
99
- const p1 = create(9, 5, 5);
100
- const p2 = create(11, 5, 5);
101
- const receivedP1 = intersections[0];
102
- const receivedP2 = intersections[1];
103
-
104
- const match1 = Math.abs(receivedP1[0] - p1[0]) < 1e-9 && Math.abs(receivedP2[0] - p2[0]) < 1e-9;
105
- const match2 = Math.abs(receivedP1[0] - p2[0]) < 1e-9 && Math.abs(receivedP2[0] - p1[0]) < 1e-9;
106
-
107
- expect(match1 || match2).toBe(true);
108
- });
109
-
110
- test('should return true when the line origin is inside the sphere', () => {
111
- const line: Line = { origin: create(0, 0, 0), direction: create(1, 1, 1) };
112
- const sphere: Sphere = { center: create(0, 0, 0), radius: 5 };
113
-
114
- const result = lineSphereIntersection(intersections, line, sphere);
115
-
116
- expect(result).toBe(true);
117
- const t = 5 / Math.sqrt(3);
118
-
119
- expect(intersections[0][0]).toBeCloseTo(-t);
120
- expect(intersections[0][1]).toBeCloseTo(-t);
121
- expect(intersections[0][2]).toBeCloseTo(-t);
122
-
123
- expect(intersections[1][0]).toBeCloseTo(t);
124
- expect(intersections[1][1]).toBeCloseTo(t);
125
- expect(intersections[1][2]).toBeCloseTo(t);
126
- });
127
- });
@@ -1,91 +0,0 @@
1
- import { Plane, Line, Vec3, Quaternion } from '../../../Math/types';
2
- import * as plane from '../../../Math/plane';
3
- import * as line from '../../../Math/line';
4
- import * as vec3 from '../../../Math/vec3';
5
- import * as quaternion from '../../../Math/quaternion';
6
- import { planePlaneJunction } from '../../../Math/juction/plane-plane';
7
-
8
-
9
- let plane1: Plane;
10
- let plane2: Plane;
11
- let intersectionLine: Line;
12
- let quaternion1: Quaternion;
13
-
14
- beforeAll(() => {
15
- plane1 = plane.create();
16
- plane2 = plane.create();
17
- intersectionLine = line.create();
18
- quaternion1 = quaternion.create();
19
- });
20
-
21
-
22
- test('plane-plane intersection - parallel planes', () => {
23
- plane.fromValues(plane1, 0, 0, 1, 5); // Plane: z = 5
24
- plane.fromValues(plane2, 0, 0, 1, 10); // Plane: z = 10
25
- const result = planePlaneJunction(intersectionLine, plane1, plane2);
26
- expect(result).toBe(false);
27
- });
28
-
29
- test('plane-plane intersection - intersecting planes', () => {
30
- plane.fromValues(plane1, 0, 0, 1, 5); // Plane: z = 5
31
- plane.fromValues(plane2, 1, 0, 0, 3); // Plane: x = 3
32
-
33
- const result = planePlaneJunction(intersectionLine, plane1, plane2);
34
- expect(result).toBe(true);
35
- expect(vec3.equals(intersectionLine.direction, vec3.create(0, 1, 0))).toBe(true);
36
- expect(vec3.equals(intersectionLine.origin, vec3.create(3, 0, 5))).toBe(true);
37
- });
38
-
39
-
40
- test('plane-plane intersection - rotating a plane', () => {
41
- // plane1 z = 5
42
- plane.fromValues(plane1, 0, 0, 1, 5);
43
-
44
- // plane2 x = 3, for the start
45
- vec3.randomUnit(plane2.normal);
46
- plane2.distance = 3;
47
-
48
- const result = planePlaneJunction(intersectionLine, plane1, plane2);
49
- expect(result).toBe(true);
50
- const quaRotateLine = line.clone(intersectionLine);
51
-
52
- const step = 90;
53
- quaternion.fromAxisAngle(quaternion1, plane1.normal, Math.PI / step); // Rotate 90 degrees around Y-axis
54
-
55
-
56
- for (let i = 0; i < step; i++) {
57
-
58
- vec3.applyQuaternion(plane2.normal, plane2.normal, quaternion1);
59
-
60
- const result = planePlaneJunction(intersectionLine, plane1, plane2);
61
-
62
-
63
- line.applyQuaternion(quaRotateLine, quaRotateLine, quaternion1);
64
-
65
- expect(result).toBe(true);
66
- expect(vec3.equals(intersectionLine.direction, quaRotateLine.direction)).toBe(true);
67
- expect(line.contains(intersectionLine, quaRotateLine.origin)).toBe(true);
68
- }
69
- });
70
-
71
- test("plane-plane intersection 1", () => {
72
- const r2 = Math.sqrt(2) / 2;
73
- plane.fromValues(plane1, 1, 0, 0, 0);
74
- plane.fromValues(plane2, 0, -r2, r2, 0);
75
- const result = planePlaneJunction(intersectionLine, plane1, plane2);
76
-
77
- expect(result).toBe(true);
78
- console.log(intersectionLine);
79
- expect(vec3.equals(intersectionLine.direction, vec3.create(0, r2, r2)) || vec3.equals(intersectionLine.direction, vec3.create(0, -r2, -r2))
80
- ).toBe(true);
81
- expect(line.contains(intersectionLine, vec3.create(0, 0, 0))).toBe(true);
82
- });
83
-
84
- test("plane-plane intersection 2", () => {
85
- plane.fromValues(plane1, 1, 0, 0, 1);
86
- plane.fromValues(plane2, 0, 1, 0, 1);
87
- const result = planePlaneJunction(intersectionLine, plane1, plane2);
88
- expect(result).toBe(true);
89
- expect(vec3.equals(intersectionLine.direction, vec3.create(0, 0, 1))).toBe(true);
90
- expect(line.contains(intersectionLine, vec3.create(1, 1, 0))).toBe(true);
91
- });
@@ -1,17 +0,0 @@
1
- import { Vec3, Plane } from '../../Math/types';
2
- import * as vec3 from '../../Math/vec3';
3
- import * as plane from '../../Math/plane';
4
-
5
-
6
- const EPSILON = 1e-6;
7
-
8
- const _0plane = plane.create(vec3.create(0, 0, 1), 0);
9
- const _1plane = plane.create(vec3.create(1, 1, 1), 0);
10
-
11
- beforeAll(() => {
12
- // Initialize any necessary data or state before running the tests
13
- plane.set(_0plane, vec3.create(0, 0, 1), 0);
14
- plane.set(_1plane, vec3.create(1, 1, 1), 0);
15
- });
16
-
17
-
@@ -1,43 +0,0 @@
1
- import { Plane, Vec3 } from "../../Math/types";
2
- import * as vec3 from "../../Math/vec3";
3
- import * as plane from "../../Math/plane";
4
-
5
-
6
- const _planeA = /*@__PURE__*/ plane.create(vec3.create(1, 0, 0), 0);
7
- const _planeB = /*@__PURE__*/ plane.create(vec3.create(0, 1, 0), 0);
8
- const _vecA = /*@__PURE__*/ vec3.create(1, 0, 0);
9
-
10
- beforeAll(() => {
11
- vec3.set(_vecA, 1, 0, 0);
12
- plane.set(_planeA, vec3.create(1, 0, 0), 0);
13
- plane.set(_planeB, vec3.create(0, 1, 0), 0);
14
- });
15
-
16
- test("Plane: getUnitSphereRadiusAngle", () => {
17
- const angleA = plane.getUnitSphereRadiusAngle(_planeA);
18
- const angleB = plane.getUnitSphereRadiusAngle(_planeB);
19
-
20
- expect(angleA).toBeCloseTo(Math.PI / 2, 5); // 90 degrees
21
- expect(angleB).toBeCloseTo(Math.PI / 2, 5); // 90 degrees
22
- });
23
-
24
-
25
- test("Plane: getUnitSphereRadiusAngle 1", () => {
26
-
27
- vec3.set(_vecA, 1, 1, 0);
28
- vec3.normalize(_vecA, _vecA);
29
- const distance = Math.sqrt(2) / 2; // Distance from origin to the plane
30
- plane.set(_planeA, _vecA, distance);
31
- const angleA = plane.getUnitSphereRadiusAngle(_planeA);
32
- expect(angleA).toBeCloseTo(Math.PI / 4, 5); // 45 degrees
33
-
34
- for (let i = 0; i < 100; i++) {
35
- const distance = Math.random();
36
-
37
- const angle = Math.acos(distance);
38
- vec3.randomUnit(_vecA)
39
- plane.set(_planeA, _vecA, distance);
40
- const angleA = plane.getUnitSphereRadiusAngle(_planeA);
41
- expect(angleA).toBeCloseTo(angle, 5); // Check if the angle is close to the expected value
42
- }
43
- });
@@ -1,33 +0,0 @@
1
- import { Vec3 } from "../../Math/types";
2
- import * as vec3 from "../../Math/vec3";
3
-
4
- test("vec3.create", () => {
5
- const v = vec3.create(1, 2, 3);
6
- expect(v).toEqual([1, 2, 3]);
7
- });
8
-
9
-
10
- test("vec3.length", () => {
11
- const v = vec3.create(3, 4, 0);
12
- const length = vec3.length(v);
13
- expect(length).toBe(5);
14
- });
15
-
16
-
17
- test("LongLat to Vec3 and back", () => {
18
- const longLat: [number, number] = [0, 0]
19
- const longLatBack: [number, number] = [0, 0]
20
- const v = vec3.create();
21
- for (let lon = -170; lon <= 170; lon += 30) {
22
- for (let lat = -85; lat <= 85; lat += 30) {
23
- longLat[0] = lon * Math.PI / 180;
24
- longLat[1] = lat * Math.PI / 180;
25
- vec3.fromLongLatToUnitVector(v, longLat);
26
- vec3.fromUnitVectorToLongLat(longLatBack, v);
27
- expect(Math.abs(longLatBack[0] - longLat[0]) < 0.00001).toBe(true);
28
- expect(Math.abs(longLatBack[1] - longLat[1]) < 0.00001).toBe(true);
29
- }
30
- }
31
-
32
- });
33
-
File without changes