@pirireis/webglobeplugins 0.9.6 → 0.9.8

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 (304) hide show
  1. package/{Math → dist/Math}/angle-calculation.js +15 -14
  2. package/dist/Math/arc.js +65 -0
  3. package/{Math → dist/Math}/bounds/line-bbox.js +188 -225
  4. package/dist/Math/constants.js +9 -0
  5. package/{Math/frustum/camera.ts → dist/Math/frustum/camera.js} +24 -32
  6. package/{Math/frustum/from-globeinfo.ts → dist/Math/frustum/from-globeinfo.js} +48 -63
  7. package/dist/Math/frustum/types.js +2 -0
  8. package/{Math/globe-util/horizon-plane.ts → dist/Math/globe-util/horizon-plane.js} +112 -137
  9. package/dist/Math/index.js +1 -0
  10. package/dist/Math/juction/arc-plane.js +83 -0
  11. package/dist/Math/juction/line-sphere.js +25 -0
  12. package/{Math/juction/plane-plane.ts → dist/Math/juction/plane-plane.js} +58 -66
  13. package/dist/Math/line.js +56 -0
  14. package/dist/Math/matrix4.js +1 -0
  15. package/{Math → dist/Math}/methods.js +201 -237
  16. package/dist/Math/plane.js +60 -0
  17. package/{Math/quaternion.ts → dist/Math/quaternion.js} +104 -120
  18. package/dist/Math/types.js +2 -0
  19. package/dist/Math/utils.js +4 -0
  20. package/{Math/vec3.ts → dist/Math/vec3.js} +126 -155
  21. package/dist/algorithms/search-binary.js +19 -0
  22. package/dist/altitude-locator/adaptors.js +1 -0
  23. package/{altitude-locator → dist/altitude-locator}/draw-subset-obj.js +18 -27
  24. package/dist/altitude-locator/keymethod.js +1 -0
  25. package/{altitude-locator → dist/altitude-locator}/plugin.js +341 -439
  26. package/{altitude-locator → dist/altitude-locator}/types.js +23 -26
  27. package/{arrowfield → dist/arrowfield}/adaptor.js +14 -11
  28. package/dist/arrowfield/index.js +10 -0
  29. package/{arrowfield → dist/arrowfield}/plugin.js +86 -128
  30. package/dist/bearing-line/index.js +8 -0
  31. package/{bearing-line → dist/bearing-line}/plugin.js +449 -512
  32. package/{circle-line-chain → dist/circle-line-chain}/chain-list-map.js +205 -221
  33. package/dist/circle-line-chain/init.js +1 -0
  34. package/{circle-line-chain → dist/circle-line-chain}/plugin.js +424 -469
  35. package/dist/circle-line-chain/util.js +5 -0
  36. package/{compass-rose → dist/compass-rose}/compass-rose-padding-flat.js +225 -266
  37. package/{compass-rose → dist/compass-rose}/compass-text-writer.js +153 -173
  38. package/dist/compass-rose/index.js +7 -0
  39. package/{compassrose → dist/compassrose}/compassrose.js +296 -341
  40. package/dist/compassrose/index.js +8 -0
  41. package/dist/globe-types.js +1 -0
  42. package/dist/heatwave/index.js +10 -0
  43. package/{heatwave → dist/heatwave}/isobar/objectarraylabels.js +202 -247
  44. package/{heatwave → dist/heatwave}/isobar/plugin.js +343 -340
  45. package/{heatwave → dist/heatwave}/isobar/quadtreecontours.js +300 -336
  46. package/{heatwave → dist/heatwave}/plugins/heatwaveglobeshell.js +206 -258
  47. package/dist/index.js +58 -0
  48. package/{jest.config.js → dist/jest.config.js} +7 -6
  49. package/{partialrings → dist/partialrings}/buffer-manager.js +81 -89
  50. package/dist/partialrings/index.js +41 -0
  51. package/{partialrings → dist/partialrings}/plugin.js +135 -160
  52. package/{partialrings → dist/partialrings}/program.js +204 -242
  53. package/{pin → dist/pin}/pin-object-array.js +305 -381
  54. package/{pin → dist/pin}/pin-point-totem.js +60 -77
  55. package/{point-heat-map → dist/point-heat-map}/adaptors/timetracksplugin-format-to-this.js +66 -78
  56. package/dist/point-heat-map/index.js +1 -0
  57. package/{point-heat-map → dist/point-heat-map}/plugin-webworker.js +126 -151
  58. package/{point-heat-map → dist/point-heat-map}/point-to-heat-map-flow.js +127 -150
  59. package/dist/point-tracks/key-methods.js +5 -0
  60. package/{point-tracks → dist/point-tracks}/plugin.js +338 -394
  61. package/dist/programs/arrowfield/index.js +7 -0
  62. package/{programs → dist/programs}/arrowfield/logic.js +144 -173
  63. package/{programs → dist/programs}/arrowfield/object.js +66 -89
  64. package/{programs → dist/programs}/data2legend/density-to-legend.js +76 -90
  65. package/{programs → dist/programs}/data2legend/point-to-density-texture.js +76 -90
  66. package/dist/programs/float2legendwithratio/index.js +8 -0
  67. package/{programs → dist/programs}/float2legendwithratio/logic.js +122 -145
  68. package/{programs → dist/programs}/float2legendwithratio/object.js +110 -141
  69. package/{programs → dist/programs}/globe-util/is-globe-moved.js +21 -27
  70. package/dist/programs/globeshell/index.js +8 -0
  71. package/dist/programs/globeshell/noise/noises.js +1 -0
  72. package/dist/programs/globeshell/wiggle/index.js +8 -0
  73. package/{programs → dist/programs}/globeshell/wiggle/logic.js +246 -272
  74. package/{programs → dist/programs}/globeshell/wiggle/object.js +72 -93
  75. package/dist/programs/helpers/blender/index.js +1 -0
  76. package/{programs → dist/programs}/helpers/blender/program.js +61 -73
  77. package/dist/programs/helpers/fadeaway/index.js +7 -0
  78. package/{programs → dist/programs}/helpers/fadeaway/logic.js +49 -53
  79. package/dist/programs/helpers/fadeaway/object.js +20 -0
  80. package/dist/programs/helpers/index.js +8 -0
  81. package/dist/programs/index.js +58 -0
  82. package/dist/programs/interface.js +1 -0
  83. package/{programs → dist/programs}/line-on-globe/angled-line.js +125 -155
  84. package/{programs → dist/programs}/line-on-globe/circle-accurate-3d.js +95 -121
  85. package/{programs → dist/programs}/line-on-globe/circle-accurate-flat.js +158 -204
  86. package/{programs → dist/programs}/line-on-globe/circle-accurate.js +117 -141
  87. package/{programs → dist/programs}/line-on-globe/circle.js +111 -135
  88. package/{programs → dist/programs}/line-on-globe/degree-padding-around-circle-3d.js +111 -140
  89. package/dist/programs/line-on-globe/index.js +1 -0
  90. package/{programs → dist/programs}/line-on-globe/lines-color-instanced-flat.js +91 -106
  91. package/{programs/line-on-globe/linestrip.ts → dist/programs/line-on-globe/linestrip.js} +108 -165
  92. package/{programs → dist/programs}/line-on-globe/naive-accurate-flexible.js +127 -171
  93. package/{programs → dist/programs}/line-on-globe/to-the-surface.js +83 -101
  94. package/dist/programs/line-on-globe/util.js +8 -0
  95. package/{programs → dist/programs}/picking/pickable-renderer.js +107 -135
  96. package/{programs → dist/programs}/point-on-globe/element-globe-surface-glow.js +101 -127
  97. package/{programs → dist/programs}/point-on-globe/element-point-glow.js +88 -119
  98. package/{programs → dist/programs}/point-on-globe/square-pixel-point.js +126 -141
  99. package/{programs/programcache.ts → dist/programs/programcache.js} +131 -131
  100. package/{programs → dist/programs}/rings/distancering/circleflatprogram.js +115 -95
  101. package/{programs → dist/programs}/rings/distancering/circlepaddingfreeangleprogram.js +320 -329
  102. package/{programs → dist/programs}/rings/distancering/circlepaddysharedbuffer.js +357 -420
  103. package/dist/programs/rings/distancering/index.js +14 -0
  104. package/{programs → dist/programs}/rings/distancering/paddyflatprogram.js +120 -94
  105. package/{programs → dist/programs}/rings/distancering/paddyflatprogram2d.js +122 -98
  106. package/{programs → dist/programs}/rings/distancering/paddyflatprogram3d.js +120 -94
  107. package/dist/programs/rings/distancering/shader.js +1 -0
  108. package/dist/programs/rings/index.js +17 -0
  109. package/{programs → dist/programs}/rings/partial-ring/piece-of-pie.js +181 -221
  110. package/{programs → dist/programs}/totems/camerauniformblock.js +147 -184
  111. package/{programs → dist/programs}/totems/canvas-webglobe-info.js +102 -128
  112. package/{programs → dist/programs}/totems/gpu-selection-uniform-block.js +104 -128
  113. package/dist/programs/totems/index.js +40 -0
  114. package/dist/programs/two-d/pixel-circle.js +1 -0
  115. package/{programs → dist/programs}/two-d/pixel-padding-for-compass.js +101 -113
  116. package/{programs → dist/programs}/util.js +17 -20
  117. package/dist/programs/vectorfields/index.js +23 -0
  118. package/{programs → dist/programs}/vectorfields/logics/drawrectangleparticles.js +65 -83
  119. package/dist/programs/vectorfields/logics/index.js +12 -0
  120. package/{programs → dist/programs}/vectorfields/logics/pixelbased.js +84 -103
  121. package/{programs → dist/programs}/vectorfields/logics/ubo.js +55 -56
  122. package/{programs → dist/programs}/vectorfields/pingpongbuffermanager.js +76 -80
  123. package/dist/rangerings/enum.js +5 -0
  124. package/dist/rangerings/index.js +15 -0
  125. package/{rangerings → dist/rangerings}/plugin.js +560 -649
  126. package/{rangerings → dist/rangerings}/rangeringangletext.js +329 -368
  127. package/{rangerings → dist/rangerings}/ring-account.js +117 -129
  128. package/{shaders → dist/shaders}/fragment-toy/firework.js +5 -2
  129. package/{shaders → dist/shaders}/fragment-toy/singularity.js +5 -5
  130. package/{shape-on-terrain/arc/naive/plugin.ts → dist/shape-on-terrain/arc/naive/plugin.js} +252 -304
  131. package/{timetracks → dist/timetracks}/adaptors-line-strip.js +71 -80
  132. package/{timetracks → dist/timetracks}/adaptors.js +122 -133
  133. package/dist/timetracks/index.js +19 -0
  134. package/{timetracks → dist/timetracks}/plugin-line-strip.js +250 -295
  135. package/{timetracks → dist/timetracks}/plugin.js +258 -304
  136. package/{timetracks → dist/timetracks}/program-line-strip.js +416 -493
  137. package/{timetracks → dist/timetracks}/program.js +464 -542
  138. package/{timetracks → dist/timetracks}/programpoint-line-strip.js +101 -122
  139. package/{timetracks → dist/timetracks}/programpoint.js +101 -122
  140. package/{types.ts → dist/types.js} +15 -17
  141. package/{util → dist/util}/account/bufferoffsetmanager.js +179 -209
  142. package/dist/util/account/index.js +23 -0
  143. package/{util/account/single-attribute-buffer-management/buffer-manager.ts → dist/util/account/single-attribute-buffer-management/buffer-manager.js} +108 -119
  144. package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +150 -173
  145. package/dist/util/account/single-attribute-buffer-management/index.js +9 -0
  146. package/{util/account/single-attribute-buffer-management/object-store.ts → dist/util/account/single-attribute-buffer-management/object-store.js} +51 -65
  147. package/dist/util/account/single-attribute-buffer-management/types.js +2 -0
  148. package/{util → dist/util}/account/util.js +22 -22
  149. package/dist/util/algorithms/index.js +1 -0
  150. package/{util → dist/util}/algorithms/search-binary.js +28 -26
  151. package/dist/util/check/get.js +18 -0
  152. package/dist/util/check/index.js +1 -0
  153. package/dist/util/check/typecheck.js +49 -0
  154. package/{util → dist/util}/geometry/index.js +51 -53
  155. package/{util/gl-util/buffer/attribute-loader.ts → dist/util/gl-util/buffer/attribute-loader.js} +69 -85
  156. package/dist/util/gl-util/buffer/index.js +6 -0
  157. package/dist/util/gl-util/buffer/types.js +1 -0
  158. package/dist/util/gl-util/draw-options/methods.js +38 -0
  159. package/dist/util/gl-util/draw-options/types.js +15 -0
  160. package/{util/gl-util/uniform-block/manager.ts → dist/util/gl-util/uniform-block/manager.js} +156 -187
  161. package/dist/util/gl-util/uniform-block/shader.js +1 -0
  162. package/dist/util/gl-util/uniform-block/types.js +8 -0
  163. package/{util → dist/util}/heatwavedatamanager/datamanager.js +152 -168
  164. package/dist/util/heatwavedatamanager/index.js +10 -0
  165. package/{util → dist/util}/heatwavedatamanager/pointcoordinatesdatacalculator.js +122 -133
  166. package/{util → dist/util}/heatwavedatamanager/pointcoordsmeta.js +20 -22
  167. package/dist/util/index.js +57 -0
  168. package/dist/util/interpolation/index.js +1 -0
  169. package/dist/util/interpolation/timetrack/index.js +5 -0
  170. package/{util → dist/util}/interpolation/timetrack/timetrack-interpolator.js +79 -88
  171. package/{util → dist/util}/interpolation/timetrack/web-worker-str.js +5 -2
  172. package/{util → dist/util}/interpolation/timetrack/web-worker.js +48 -51
  173. package/{util → dist/util}/jshelpers/data-filler.js +20 -19
  174. package/{util → dist/util}/jshelpers/equality.js +20 -17
  175. package/dist/util/jshelpers/index.js +37 -0
  176. package/{util → dist/util}/jshelpers/timefilters.js +32 -32
  177. package/{util → dist/util}/picking/fence.js +46 -46
  178. package/{util → dist/util}/picking/picker-displayer.js +139 -177
  179. package/{util → dist/util}/programs/draw-texture-on-canvas.js +69 -82
  180. package/dist/util/programs/index.js +17 -0
  181. package/{util → dist/util}/programs/shapesonglobe.js +174 -206
  182. package/{util → dist/util}/programs/supersampletotextures.js +103 -132
  183. package/{util → dist/util}/programs/texturetoglobe.js +133 -154
  184. package/{util/shaderfunctions/geometrytransformations.ts → dist/util/shaderfunctions/geometrytransformations.js} +68 -116
  185. package/dist/util/shaderfunctions/index.js +18 -0
  186. package/{util → dist/util}/shaderfunctions/nodata.js +5 -4
  187. package/{util → dist/util}/shaderfunctions/noisefunctions.js +9 -10
  188. package/{util/surface-line-data/arc-bboxes.ts → dist/util/surface-line-data/arc-bboxes.js} +25 -42
  189. package/{util → dist/util}/surface-line-data/arcs-to-cuts.js +50 -74
  190. package/dist/util/surface-line-data/cut-arc.js +1 -0
  191. package/{util/surface-line-data/flow.ts → dist/util/surface-line-data/flow.js} +28 -52
  192. package/dist/util/surface-line-data/rbush-manager.js +1 -0
  193. package/dist/util/surface-line-data/types.js +1 -0
  194. package/dist/util/surface-line-data/web-worker.js +1 -0
  195. package/dist/util/webglobe/gldefaultstates.js +7 -0
  196. package/dist/util/webglobe/index.js +18 -0
  197. package/{util → dist/util}/webglobe/rasteroverlay.js +78 -96
  198. package/{util/webglobjectbuilders.ts → dist/util/webglobjectbuilders.js} +388 -456
  199. package/{util → dist/util}/webglobjectbuilders1.js +237 -271
  200. package/{waveparticles → dist/waveparticles}/adaptor.js +17 -16
  201. package/dist/waveparticles/index.js +10 -0
  202. package/{waveparticles → dist/waveparticles}/plugin.js +266 -313
  203. package/{wind → dist/wind}/imagetovectorfieldandmagnitude.js +35 -39
  204. package/dist/wind/index.js +14 -0
  205. package/{wind → dist/wind}/plugin.js +681 -812
  206. package/{wind → dist/wind}/vectorfieldimage.js +25 -27
  207. package/{write-text → dist/write-text}/attached-text-writer.js +91 -105
  208. package/{write-text → dist/write-text}/context-text.js +98 -125
  209. package/{write-text → dist/write-text}/context-text3.js +155 -178
  210. package/dist/write-text/index.js +5 -0
  211. package/{write-text → dist/write-text}/writer-plugin.js +8 -7
  212. package/package.json +5 -2
  213. package/Math/arc.ts +0 -76
  214. package/Math/constants.ts +0 -11
  215. package/Math/frustum/types.ts +0 -11
  216. package/Math/index.js +0 -0
  217. package/Math/juction/arc-plane.ts +0 -114
  218. package/Math/juction/line-sphere.ts +0 -30
  219. package/Math/line.ts +0 -70
  220. package/Math/matrix4.ts +0 -0
  221. package/Math/plane.ts +0 -86
  222. package/Math/roadmap.md +0 -10
  223. package/Math/types.ts +0 -45
  224. package/Math/utils.js +0 -3
  225. package/algorithms/search-binary.js +0 -14
  226. package/altitude-locator/adaptors.js +0 -0
  227. package/altitude-locator/keymethod.js +0 -0
  228. package/arrowfield/index.js +0 -3
  229. package/bearing-line/index.js +0 -2
  230. package/circle-line-chain/init.js +0 -0
  231. package/circle-line-chain/readme.md +0 -57
  232. package/circle-line-chain/util.js +0 -1
  233. package/compass-rose/index.js +0 -3
  234. package/compassrose/index.js +0 -2
  235. package/depth-locator/readme.md +0 -26
  236. package/globe-types.ts +0 -13
  237. package/heatwave/index.js +0 -4
  238. package/partialrings/goals.md +0 -17
  239. package/partialrings/index.js +0 -3
  240. package/point-heat-map/index.js +0 -0
  241. package/point-heat-map/readme.md +0 -15
  242. package/point-tracks/key-methods.js +0 -3
  243. package/programs/arrowfield/index.js +0 -2
  244. package/programs/float2legendwithratio/index.js +0 -3
  245. package/programs/globeshell/index.js +0 -2
  246. package/programs/globeshell/noise/noises.js +0 -0
  247. package/programs/globeshell/wiggle/index.js +0 -6
  248. package/programs/helpers/blender/index.js +0 -0
  249. package/programs/helpers/fadeaway/index.js +0 -3
  250. package/programs/helpers/fadeaway/object.js +0 -20
  251. package/programs/helpers/index.js +0 -2
  252. package/programs/index.js +0 -21
  253. package/programs/interface.ts +0 -7
  254. package/programs/line-on-globe/index.js +0 -0
  255. package/programs/line-on-globe/util.js +0 -8
  256. package/programs/rings/distancering/index.js +0 -5
  257. package/programs/rings/distancering/shader.js +0 -0
  258. package/programs/rings/index.js +0 -1
  259. package/programs/totems/camerauniformblock.d.ts +0 -48
  260. package/programs/totems/index.ts +0 -2
  261. package/programs/two-d/pixel-circle.js +0 -0
  262. package/programs/vectorfields/index.js +0 -3
  263. package/programs/vectorfields/logics/index.js +0 -5
  264. package/publish.bat +0 -60
  265. package/rangerings/enum.js +0 -3
  266. package/rangerings/index.js +0 -5
  267. package/shape-on-terrain/goal.md +0 -12
  268. package/tests/Math/junction/arc-plane.test.ts +0 -133
  269. package/tests/Math/junction/plane-plane.test.ts +0 -82
  270. package/tests/Math/plane.test.ts +0 -43
  271. package/tests/Math/vec3.test.ts +0 -14
  272. package/timetracks/index.js +0 -6
  273. package/timetracks/readme.md +0 -1
  274. package/tsconfig.json +0 -22
  275. package/util/account/index.js +0 -6
  276. package/util/account/single-attribute-buffer-management/index.ts +0 -13
  277. package/util/account/single-attribute-buffer-management/types.ts +0 -39
  278. package/util/algorithms/index.js +0 -0
  279. package/util/check/get.js +0 -13
  280. package/util/check/index.js +0 -0
  281. package/util/check/typecheck.js +0 -39
  282. package/util/gl-util/buffer/index.ts +0 -6
  283. package/util/gl-util/buffer/types.ts +0 -13
  284. package/util/gl-util/draw-options/methods.ts +0 -66
  285. package/util/gl-util/draw-options/types.ts +0 -28
  286. package/util/gl-util/uniform-block/roadmap.md +0 -70
  287. package/util/gl-util/uniform-block/shader.js +0 -0
  288. package/util/gl-util/uniform-block/types.ts +0 -27
  289. package/util/heatwavedatamanager/index.js +0 -3
  290. package/util/index.js +0 -13
  291. package/util/interpolation/index.js +0 -0
  292. package/util/interpolation/timetrack/index.js +0 -9
  293. package/util/jshelpers/index.js +0 -1
  294. package/util/programs/index.js +0 -1
  295. package/util/shaderfunctions/index.js +0 -2
  296. package/util/surface-line-data/cut-arc.js +0 -0
  297. package/util/surface-line-data/rbush-manager.js +0 -0
  298. package/util/surface-line-data/types.ts +0 -27
  299. package/util/surface-line-data/web-worker.js +0 -0
  300. package/util/webglobe/gldefaultstates.js +0 -5
  301. package/util/webglobe/index.js +0 -2
  302. package/waveparticles/index.js +0 -3
  303. package/wind/index.js +0 -5
  304. package/write-text/index.js +0 -1
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.line = void 0;
4
+ const constants_1 = require("./constants");
5
+ const vec3_1 = require("./vec3");
6
+ const _0vector = /*@__PURE__*/ vec3_1.vec3.create(0, 0, 0);
7
+ exports.line = Object.freeze({
8
+ create(origin = vec3_1.vec3.create(), direction = vec3_1.vec3.create()) {
9
+ const direction_ = vec3_1.vec3.clone(direction);
10
+ vec3_1.vec3.normalize(direction_, direction_);
11
+ return {
12
+ origin: vec3_1.vec3.clone(origin),
13
+ direction: direction_
14
+ };
15
+ },
16
+ set(out, origin, direction) {
17
+ vec3_1.vec3.copy(out.origin, origin);
18
+ vec3_1.vec3.copy(out.direction, direction);
19
+ },
20
+ copy(out, a) {
21
+ out.origin = vec3_1.vec3.copy(out.origin, a.origin);
22
+ out.direction = vec3_1.vec3.copy(out.direction, a.direction);
23
+ },
24
+ clone(a) {
25
+ return {
26
+ origin: vec3_1.vec3.clone(a.origin),
27
+ direction: vec3_1.vec3.clone(a.direction)
28
+ };
29
+ },
30
+ fromTwoPoints(out, a, b) {
31
+ vec3_1.vec3.subtract(out.direction, b, a);
32
+ vec3_1.vec3.normalize(out.direction, out.direction);
33
+ vec3_1.vec3.copy(out.origin, a);
34
+ },
35
+ at(out, line, distance) {
36
+ vec3_1.vec3.multiplyScalar(_0vector, line.direction, distance);
37
+ vec3_1.vec3.add(out, _0vector, line.origin);
38
+ },
39
+ closestPoint(out, line, point) {
40
+ vec3_1.vec3.subtract(_0vector, point, line.origin);
41
+ const dot = vec3_1.vec3.dot(_0vector, line.direction);
42
+ vec3_1.vec3.copy(out, line.direction);
43
+ vec3_1.vec3.multiplyScalar(out, out, dot);
44
+ vec3_1.vec3.add(out, out, line.origin);
45
+ },
46
+ contains(line, point) {
47
+ vec3_1.vec3.subtract(_0vector, point, line.origin);
48
+ vec3_1.vec3.cross(_0vector, _0vector, line.direction);
49
+ return vec3_1.vec3.lengthSquared(_0vector) < constants_1.EPSILON;
50
+ },
51
+ applyQuaternion(out, line, quaternion) {
52
+ vec3_1.vec3.applyQuaternion(out.origin, line.origin, quaternion);
53
+ vec3_1.vec3.applyQuaternion(out.direction, line.direction, quaternion);
54
+ vec3_1.vec3.normalize(out.direction, out.direction);
55
+ }
56
+ });
@@ -0,0 +1 @@
1
+ "use strict";
@@ -1,237 +1,201 @@
1
-
2
- import { WORLD_RADIUS_3D, WORLD_RADIUS_MERCATOR } from './constants.ts';
3
-
4
- /**
5
- * @typedef {Array<number>} vec3 [x, y, z]
6
- * @typedef {Array<number>} vec2 [x, y]
7
- * @typedef {Array<number>} vec4 [x, y, z, w]
8
- * @typedef {number} fraction a number between 0 and 1
9
- * @typedef {Array<number>} wgs84 [long, lat]
10
- */
11
-
12
- // *********************************************************
13
- // **************** VECTOR OPERATIONS **********************
14
- // *********************************************************
15
- const RADIANS = Math.PI / 180;
16
-
17
-
18
- /**
19
- * @param {vec3} a
20
- * @returns {vec3}
21
- */
22
- const normalize3 = (a) => {
23
- const len = length3(a);
24
- return [a[0] / len, a[1] / len, a[2] / len];
25
- }
26
-
27
-
28
- /**
29
- * @param {vec3} a
30
- * @param {vec3} b
31
- * @returns {number}
32
- */
33
- const dot3 = (a, b) => {
34
- return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
35
- }
36
-
37
-
38
- /**
39
- * @param {vec3} a
40
- * @returns {number}
41
- */
42
- const length3 = (a) => {
43
- return Math.sqrt(dot3(a, a));
44
- }
45
-
46
-
47
- // *********************************************************
48
- // **************** TRANSFORMATIONS ************************
49
- // *********************************************************
50
-
51
- /**
52
- * @param {vec3} cartesian
53
- * @returns {vec2} long lat in radians
54
- */
55
- const cartesian3dToRadian = (cartesian) => {
56
- const x = cartesian[0];
57
- const y = cartesian[1];
58
- const z = cartesian[2];
59
- // const length = Math.sqrt(x * x + y * y + z * z);
60
- const long = Math.atan2(y, x);
61
- const lat = Math.asin(z)// length);
62
- return [long, lat];
63
- }
64
-
65
-
66
- /**
67
- * @param {vec2} xy long lat in radians
68
- * @returns {vec2} long lat in mercator meters
69
- */
70
- const radianToMercator = (xy) => {
71
- return [WORLD_RADIUS_MERCATOR * xy[0], WORLD_RADIUS_MERCATOR * Math.log(Math.tan(Math.PI / 4 + xy[1] / 2))];
72
- }
73
-
74
- /**
75
- * @param {vec2} xy long lat radians
76
- * @returns {vec3} cartesian
77
- */
78
-
79
- const radianToCartesian3d = (xy) => {
80
- const x = Math.cos(xy[1]) * Math.cos(xy[0]);
81
- const y = Math.cos(xy[1]) * Math.sin(xy[0]);
82
- const z = -Math.sin(xy[1]);
83
- return [x, y, z];
84
- }
85
-
86
-
87
- // *********************************************************
88
- // ***************** INTERPOLATIONS ************************
89
- // *********************************************************
90
-
91
- /**
92
- * @param {vec3} normalizedA
93
- * @param {vec3} normalizedB
94
- * @param {fraction} ratio
95
- * @returns {vec3}
96
- */
97
- const sphericalLinearInterpolation_UnitVector = (normalizedA, normalizedB, ratio) => {
98
- const theta = Math.acos(dot3(normalizedA, normalizedB));
99
- if (theta < 0.000001) return normalizedA; // CALIBRATE?
100
- const sinTheta = Math.sin(theta);
101
- const result = [
102
- (Math.sin((1.0 - ratio) * theta) * normalizedA[0] + Math.sin(ratio * theta) * normalizedB[0]) / sinTheta,
103
- (Math.sin((1.0 - ratio) * theta) * normalizedA[1] + Math.sin(ratio * theta) * normalizedB[1]) / sinTheta,
104
- (Math.sin((1.0 - ratio) * theta) * normalizedA[2] + Math.sin(ratio * theta) * normalizedB[2]) / sinTheta
105
- ];
106
- return result;
107
- }
108
-
109
-
110
- /**
111
- * @param {vec3} normalizedA
112
- * @param {vec3} normalizedB
113
- * @param {fraction} ratio
114
- * @returns
115
- */
116
- const sphericalLinearInterpolation_Mercator = (normalizedA, normalizedB, ratio) => {
117
- const unitVector = sphericalLinearInterpolation_UnitVector(normalizedA, normalizedB, ratio);
118
- const angles = cartesian3dToRadian(unitVector);
119
- return radianToMercator(angles);
120
- }
121
-
122
- /**
123
- * @param {vec4} a vec3 unit vector and length
124
- * @param {vec4} b vec3 unit vector and length
125
- * @param {fraction} ratio
126
- */
127
- const sphericalLinearInterpolation_Cartesian3d = (a, b, ratio) => {
128
- const unitVector = sphericalLinearInterpolation_UnitVector(a, b, ratio);
129
- const height = a[3] + (b[3] - a[3]) * ratio;
130
- return [unitVector[0] * height, unitVector[1] * height, unitVector[2] * height];
131
- }
132
-
133
-
134
- /**
135
- *
136
- * @param {wgs84} coordinates
137
- * @returns {vec3}
138
- */
139
- const wgs84ToUnitVector = (coordinates) => {
140
- const long = coordinates[0] * RADIANS;
141
- const lat = coordinates[1] * RADIANS;
142
-
143
- const x = Math.cos(lat) * Math.cos(long);
144
- const y = Math.cos(lat) * Math.sin(long);
145
- const z = Math.sin(lat);
146
- return [x, y, z];
147
- }
148
-
149
- /**
150
- * @param {number} long wgs84
151
- * @param {number} lat wgs84
152
- * @param {number} height
153
- * @returns {vec3} cartesian3D
154
- */
155
- const wgs84ToCartesian3d = (long, lat, height) => {
156
- const longRad = long * RADIANS;
157
- const latRad = lat * RADIANS;
158
- const x = Math.cos(latRad) * Math.cos(longRad);
159
- const y = Math.cos(latRad) * Math.sin(longRad);
160
- const z = Math.sin(latRad);
161
- const radius = WORLD_RADIUS_3D + height;
162
- return [x * radius, y * radius, z * radius];
163
- }
164
-
165
- /**
166
- * @param {number} long
167
- * @param {number} lat
168
- * @returns {vec2} mercator
169
- */
170
- const wgs84ToMercator = (long, lat) => {
171
- return [WORLD_RADIUS_MERCATOR * long * RADIANS, WORLD_RADIUS_MERCATOR * Math.log(Math.tan(Math.PI / 4 + lat * RADIANS / 2))];
172
- }
173
-
174
-
175
-
176
- /**
177
- * @param {vec2} pixelXY
178
- * @returns {vec2} long lat in radians
179
- */
180
-
181
- const pixelXYToRadians = (pixelXY) => {
182
- const long = (2.0 * pixelXY[0] - 1.0) * Math.PI;
183
- const lat = (2.0 * pixelXY[1] - 1.0) * Math.PI / 2.0;
184
- return [long, lat]
185
- }
186
-
187
- const pixelXYLenghtToUnitVectorWithHeight = (pixelXYHeight) => {
188
- const [long, lat] = pixelXYToRadians(pixelXYHeight);
189
- const radius = WORLD_RADIUS_3D + pixelXYHeight[2];
190
- return radianToCartesian3d([long, lat]).concat(radius);
191
- }
192
-
193
-
194
- const globe3Dcoordinates = (globe, height = 0) => (longlats, { paddingCount = 0, paddingValue = NaN }) => {
195
- const len = longlats.length / 2;
196
- const result = new Float32Array(len * 3 + paddingCount * 3).fill(paddingValue);
197
- for (let i = 0; i < len; i++) {
198
- const long = longlats[i * 2];
199
- const lat = longlats[i * 2 + 1];
200
- const xyz = globe.api_GetCartesian3DPoint(long, lat, height, 0);
201
- result.set(xyz, i * 3);
202
- }
203
- return result;
204
- }
205
-
206
- const globe2Dcoordinates = (globe) => (longlats, { paddingCount = 0, paddingValue = NaN }) => {
207
- const len = longlats.length / 2;
208
- const result = new Float32Array(len * 2 + paddingCount * 2).fill(paddingValue);
209
- for (let i = 0; i < len; i++) {
210
- const long = longlats[i * 2];
211
- const lat = longlats[i * 2 + 1];
212
- const xyz = globe.api_GetMercator2DPoint(long, lat);
213
- result.set(xyz, i * 2);
214
- }
215
- return result;
216
- }
217
-
218
-
219
- export {
220
- RADIANS,
221
- normalize3,
222
- dot3,
223
- length3,
224
- cartesian3dToRadian,
225
- radianToMercator,
226
- radianToCartesian3d,
227
- sphericalLinearInterpolation_UnitVector,
228
- sphericalLinearInterpolation_Mercator,
229
- sphericalLinearInterpolation_Cartesian3d,
230
- wgs84ToUnitVector,
231
- wgs84ToCartesian3d,
232
- wgs84ToMercator,
233
- pixelXYLenghtToUnitVectorWithHeight,
234
- globe3Dcoordinates,
235
- globe2Dcoordinates,
236
- }
237
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.globe2Dcoordinates = exports.globe3Dcoordinates = exports.pixelXYLenghtToUnitVectorWithHeight = exports.wgs84ToMercator = exports.wgs84ToCartesian3d = exports.wgs84ToUnitVector = exports.sphericalLinearInterpolation_Cartesian3d = exports.sphericalLinearInterpolation_Mercator = exports.sphericalLinearInterpolation_UnitVector = exports.radianToCartesian3d = exports.radianToMercator = exports.cartesian3dToRadian = exports.length3 = exports.dot3 = exports.normalize3 = exports.RADIANS = void 0;
4
+ const constants_ts_1 = require("./constants.ts");
5
+ /**
6
+ * @typedef {Array<number>} vec3 [x, y, z]
7
+ * @typedef {Array<number>} vec2 [x, y]
8
+ * @typedef {Array<number>} vec4 [x, y, z, w]
9
+ * @typedef {number} fraction a number between 0 and 1
10
+ * @typedef {Array<number>} wgs84 [long, lat]
11
+ */
12
+ // *********************************************************
13
+ // **************** VECTOR OPERATIONS **********************
14
+ // *********************************************************
15
+ const RADIANS = Math.PI / 180;
16
+ exports.RADIANS = RADIANS;
17
+ /**
18
+ * @param {vec3} a
19
+ * @returns {vec3}
20
+ */
21
+ const normalize3 = (a) => {
22
+ const len = length3(a);
23
+ return [a[0] / len, a[1] / len, a[2] / len];
24
+ };
25
+ exports.normalize3 = normalize3;
26
+ /**
27
+ * @param {vec3} a
28
+ * @param {vec3} b
29
+ * @returns {number}
30
+ */
31
+ const dot3 = (a, b) => {
32
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
33
+ };
34
+ exports.dot3 = dot3;
35
+ /**
36
+ * @param {vec3} a
37
+ * @returns {number}
38
+ */
39
+ const length3 = (a) => {
40
+ return Math.sqrt(dot3(a, a));
41
+ };
42
+ exports.length3 = length3;
43
+ // *********************************************************
44
+ // **************** TRANSFORMATIONS ************************
45
+ // *********************************************************
46
+ /**
47
+ * @param {vec3} cartesian
48
+ * @returns {vec2} long lat in radians
49
+ */
50
+ const cartesian3dToRadian = (cartesian) => {
51
+ const x = cartesian[0];
52
+ const y = cartesian[1];
53
+ const z = cartesian[2];
54
+ // const length = Math.sqrt(x * x + y * y + z * z);
55
+ const long = Math.atan2(y, x);
56
+ const lat = Math.asin(z); // length);
57
+ return [long, lat];
58
+ };
59
+ exports.cartesian3dToRadian = cartesian3dToRadian;
60
+ /**
61
+ * @param {vec2} xy long lat in radians
62
+ * @returns {vec2} long lat in mercator meters
63
+ */
64
+ const radianToMercator = (xy) => {
65
+ return [constants_ts_1.WORLD_RADIUS_MERCATOR * xy[0], constants_ts_1.WORLD_RADIUS_MERCATOR * Math.log(Math.tan(Math.PI / 4 + xy[1] / 2))];
66
+ };
67
+ exports.radianToMercator = radianToMercator;
68
+ /**
69
+ * @param {vec2} xy long lat radians
70
+ * @returns {vec3} cartesian
71
+ */
72
+ const radianToCartesian3d = (xy) => {
73
+ const x = Math.cos(xy[1]) * Math.cos(xy[0]);
74
+ const y = Math.cos(xy[1]) * Math.sin(xy[0]);
75
+ const z = -Math.sin(xy[1]);
76
+ return [x, y, z];
77
+ };
78
+ exports.radianToCartesian3d = radianToCartesian3d;
79
+ // *********************************************************
80
+ // ***************** INTERPOLATIONS ************************
81
+ // *********************************************************
82
+ /**
83
+ * @param {vec3} normalizedA
84
+ * @param {vec3} normalizedB
85
+ * @param {fraction} ratio
86
+ * @returns {vec3}
87
+ */
88
+ const sphericalLinearInterpolation_UnitVector = (normalizedA, normalizedB, ratio) => {
89
+ const theta = Math.acos(dot3(normalizedA, normalizedB));
90
+ if (theta < 0.000001)
91
+ return normalizedA; // CALIBRATE?
92
+ const sinTheta = Math.sin(theta);
93
+ const result = [
94
+ (Math.sin((1.0 - ratio) * theta) * normalizedA[0] + Math.sin(ratio * theta) * normalizedB[0]) / sinTheta,
95
+ (Math.sin((1.0 - ratio) * theta) * normalizedA[1] + Math.sin(ratio * theta) * normalizedB[1]) / sinTheta,
96
+ (Math.sin((1.0 - ratio) * theta) * normalizedA[2] + Math.sin(ratio * theta) * normalizedB[2]) / sinTheta
97
+ ];
98
+ return result;
99
+ };
100
+ exports.sphericalLinearInterpolation_UnitVector = sphericalLinearInterpolation_UnitVector;
101
+ /**
102
+ * @param {vec3} normalizedA
103
+ * @param {vec3} normalizedB
104
+ * @param {fraction} ratio
105
+ * @returns
106
+ */
107
+ const sphericalLinearInterpolation_Mercator = (normalizedA, normalizedB, ratio) => {
108
+ const unitVector = sphericalLinearInterpolation_UnitVector(normalizedA, normalizedB, ratio);
109
+ const angles = cartesian3dToRadian(unitVector);
110
+ return radianToMercator(angles);
111
+ };
112
+ exports.sphericalLinearInterpolation_Mercator = sphericalLinearInterpolation_Mercator;
113
+ /**
114
+ * @param {vec4} a vec3 unit vector and length
115
+ * @param {vec4} b vec3 unit vector and length
116
+ * @param {fraction} ratio
117
+ */
118
+ const sphericalLinearInterpolation_Cartesian3d = (a, b, ratio) => {
119
+ const unitVector = sphericalLinearInterpolation_UnitVector(a, b, ratio);
120
+ const height = a[3] + (b[3] - a[3]) * ratio;
121
+ return [unitVector[0] * height, unitVector[1] * height, unitVector[2] * height];
122
+ };
123
+ exports.sphericalLinearInterpolation_Cartesian3d = sphericalLinearInterpolation_Cartesian3d;
124
+ /**
125
+ *
126
+ * @param {wgs84} coordinates
127
+ * @returns {vec3}
128
+ */
129
+ const wgs84ToUnitVector = (coordinates) => {
130
+ const long = coordinates[0] * RADIANS;
131
+ const lat = coordinates[1] * RADIANS;
132
+ const x = Math.cos(lat) * Math.cos(long);
133
+ const y = Math.cos(lat) * Math.sin(long);
134
+ const z = Math.sin(lat);
135
+ return [x, y, z];
136
+ };
137
+ exports.wgs84ToUnitVector = wgs84ToUnitVector;
138
+ /**
139
+ * @param {number} long wgs84
140
+ * @param {number} lat wgs84
141
+ * @param {number} height
142
+ * @returns {vec3} cartesian3D
143
+ */
144
+ const wgs84ToCartesian3d = (long, lat, height) => {
145
+ const longRad = long * RADIANS;
146
+ const latRad = lat * RADIANS;
147
+ const x = Math.cos(latRad) * Math.cos(longRad);
148
+ const y = Math.cos(latRad) * Math.sin(longRad);
149
+ const z = Math.sin(latRad);
150
+ const radius = constants_ts_1.WORLD_RADIUS_3D + height;
151
+ return [x * radius, y * radius, z * radius];
152
+ };
153
+ exports.wgs84ToCartesian3d = wgs84ToCartesian3d;
154
+ /**
155
+ * @param {number} long
156
+ * @param {number} lat
157
+ * @returns {vec2} mercator
158
+ */
159
+ const wgs84ToMercator = (long, lat) => {
160
+ return [constants_ts_1.WORLD_RADIUS_MERCATOR * long * RADIANS, constants_ts_1.WORLD_RADIUS_MERCATOR * Math.log(Math.tan(Math.PI / 4 + lat * RADIANS / 2))];
161
+ };
162
+ exports.wgs84ToMercator = wgs84ToMercator;
163
+ /**
164
+ * @param {vec2} pixelXY
165
+ * @returns {vec2} long lat in radians
166
+ */
167
+ const pixelXYToRadians = (pixelXY) => {
168
+ const long = (2.0 * pixelXY[0] - 1.0) * Math.PI;
169
+ const lat = (2.0 * pixelXY[1] - 1.0) * Math.PI / 2.0;
170
+ return [long, lat];
171
+ };
172
+ const pixelXYLenghtToUnitVectorWithHeight = (pixelXYHeight) => {
173
+ const [long, lat] = pixelXYToRadians(pixelXYHeight);
174
+ const radius = constants_ts_1.WORLD_RADIUS_3D + pixelXYHeight[2];
175
+ return radianToCartesian3d([long, lat]).concat(radius);
176
+ };
177
+ exports.pixelXYLenghtToUnitVectorWithHeight = pixelXYLenghtToUnitVectorWithHeight;
178
+ const globe3Dcoordinates = (globe, height = 0) => (longlats, { paddingCount = 0, paddingValue = NaN }) => {
179
+ const len = longlats.length / 2;
180
+ const result = new Float32Array(len * 3 + paddingCount * 3).fill(paddingValue);
181
+ for (let i = 0; i < len; i++) {
182
+ const long = longlats[i * 2];
183
+ const lat = longlats[i * 2 + 1];
184
+ const xyz = globe.api_GetCartesian3DPoint(long, lat, height, 0);
185
+ result.set(xyz, i * 3);
186
+ }
187
+ return result;
188
+ };
189
+ exports.globe3Dcoordinates = globe3Dcoordinates;
190
+ const globe2Dcoordinates = (globe) => (longlats, { paddingCount = 0, paddingValue = NaN }) => {
191
+ const len = longlats.length / 2;
192
+ const result = new Float32Array(len * 2 + paddingCount * 2).fill(paddingValue);
193
+ for (let i = 0; i < len; i++) {
194
+ const long = longlats[i * 2];
195
+ const lat = longlats[i * 2 + 1];
196
+ const xyz = globe.api_GetMercator2DPoint(long, lat);
197
+ result.set(xyz, i * 2);
198
+ }
199
+ return result;
200
+ };
201
+ exports.globe2Dcoordinates = globe2Dcoordinates;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.plane = void 0;
4
+ const constants_1 = require("./constants");
5
+ const vec3_1 = require("./vec3");
6
+ const _0vector = /*@__PURE__*/ vec3_1.vec3.create(0, 0, 0);
7
+ const _1vector = /*@__PURE__*/ vec3_1.vec3.create(1, 1, 1);
8
+ exports.plane = Object.freeze({
9
+ create(normal = vec3_1.vec3.create(), distance = 0) {
10
+ return {
11
+ normal: vec3_1.vec3.clone(normal),
12
+ distance: distance
13
+ };
14
+ },
15
+ set(out, normal, distance) {
16
+ vec3_1.vec3.copy(out.normal, normal);
17
+ out.distance = distance;
18
+ return out;
19
+ },
20
+ fromValues(out, nx, ny, nz, distance) {
21
+ vec3_1.vec3.set(out.normal, nx, ny, nz);
22
+ out.distance = distance;
23
+ },
24
+ copy(out, a) {
25
+ vec3_1.vec3.copy(out.normal, a.normal);
26
+ out.distance = a.distance;
27
+ return out;
28
+ },
29
+ clone(a) {
30
+ return {
31
+ normal: vec3_1.vec3.clone(a.normal),
32
+ distance: a.distance
33
+ };
34
+ },
35
+ distanceToPoint(plane, point) {
36
+ return vec3_1.vec3.dot(plane.normal, point) - plane.distance;
37
+ },
38
+ projectPoint(out, plane, point) {
39
+ const distance = this.distanceToPoint(plane, point);
40
+ vec3_1.vec3.multiplyScalar(out, plane.normal, distance);
41
+ vec3_1.vec3.subtract(out, point, out);
42
+ },
43
+ equals(plane, other) {
44
+ return vec3_1.vec3.equals(plane.normal, other.normal) && Math.abs(plane.distance - other.distance) < constants_1.EPSILON;
45
+ },
46
+ fromNormalAndCoplanarPoint(out, normal, point) {
47
+ vec3_1.vec3.copy(out.normal, normal);
48
+ out.distance = vec3_1.vec3.dot(point, normal);
49
+ },
50
+ fromPoints(out, a, b, c) {
51
+ vec3_1.vec3.subtract(_0vector, b, a);
52
+ vec3_1.vec3.subtract(_1vector, c, a);
53
+ vec3_1.vec3.cross(out.normal, _0vector, _1vector);
54
+ vec3_1.vec3.normalize(out.normal, out.normal);
55
+ out.distance = vec3_1.vec3.dot(out.normal, a);
56
+ },
57
+ getUnitSphereRadiusAngle(plane) {
58
+ return Math.acos(Math.max(Math.min(plane.distance, 1), -1));
59
+ }
60
+ });