@pirireis/webglobeplugins 0.9.8 → 0.9.9

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 (213) hide show
  1. package/index.js +58 -15
  2. package/package.json +1 -1
  3. package/dist/Math/angle-calculation.js +0 -15
  4. package/dist/Math/arc.js +0 -65
  5. package/dist/Math/bounds/line-bbox.js +0 -188
  6. package/dist/Math/constants.js +0 -9
  7. package/dist/Math/frustum/camera.js +0 -24
  8. package/dist/Math/frustum/from-globeinfo.js +0 -48
  9. package/dist/Math/frustum/types.js +0 -2
  10. package/dist/Math/globe-util/horizon-plane.js +0 -112
  11. package/dist/Math/index.js +0 -1
  12. package/dist/Math/juction/arc-plane.js +0 -83
  13. package/dist/Math/juction/line-sphere.js +0 -25
  14. package/dist/Math/juction/plane-plane.js +0 -58
  15. package/dist/Math/line.js +0 -56
  16. package/dist/Math/matrix4.js +0 -1
  17. package/dist/Math/methods.js +0 -201
  18. package/dist/Math/plane.js +0 -60
  19. package/dist/Math/quaternion.js +0 -104
  20. package/dist/Math/types.js +0 -2
  21. package/dist/Math/utils.js +0 -4
  22. package/dist/Math/vec3.js +0 -126
  23. package/dist/algorithms/search-binary.js +0 -19
  24. package/dist/altitude-locator/adaptors.js +0 -1
  25. package/dist/altitude-locator/draw-subset-obj.js +0 -18
  26. package/dist/altitude-locator/keymethod.js +0 -1
  27. package/dist/altitude-locator/plugin.js +0 -341
  28. package/dist/altitude-locator/types.js +0 -23
  29. package/dist/arrowfield/adaptor.js +0 -14
  30. package/dist/arrowfield/index.js +0 -10
  31. package/dist/arrowfield/plugin.js +0 -86
  32. package/dist/bearing-line/index.js +0 -8
  33. package/dist/bearing-line/plugin.js +0 -449
  34. package/dist/circle-line-chain/chain-list-map.js +0 -205
  35. package/dist/circle-line-chain/init.js +0 -1
  36. package/dist/circle-line-chain/plugin.js +0 -424
  37. package/dist/circle-line-chain/util.js +0 -5
  38. package/dist/compass-rose/compass-rose-padding-flat.js +0 -225
  39. package/dist/compass-rose/compass-text-writer.js +0 -153
  40. package/dist/compass-rose/index.js +0 -7
  41. package/dist/compassrose/compassrose.js +0 -296
  42. package/dist/compassrose/index.js +0 -8
  43. package/dist/globe-types.js +0 -1
  44. package/dist/heatwave/index.js +0 -10
  45. package/dist/heatwave/isobar/objectarraylabels.js +0 -202
  46. package/dist/heatwave/isobar/plugin.js +0 -343
  47. package/dist/heatwave/isobar/quadtreecontours.js +0 -300
  48. package/dist/heatwave/plugins/heatwaveglobeshell.js +0 -206
  49. package/dist/index.js +0 -58
  50. package/dist/jest.config.js +0 -7
  51. package/dist/partialrings/buffer-manager.js +0 -81
  52. package/dist/partialrings/index.js +0 -41
  53. package/dist/partialrings/plugin.js +0 -135
  54. package/dist/partialrings/program.js +0 -286
  55. package/dist/pin/pin-object-array.js +0 -305
  56. package/dist/pin/pin-point-totem.js +0 -60
  57. package/dist/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -66
  58. package/dist/point-heat-map/index.js +0 -1
  59. package/dist/point-heat-map/plugin-webworker.js +0 -126
  60. package/dist/point-heat-map/point-to-heat-map-flow.js +0 -127
  61. package/dist/point-tracks/key-methods.js +0 -5
  62. package/dist/point-tracks/plugin.js +0 -338
  63. package/dist/programs/arrowfield/index.js +0 -7
  64. package/dist/programs/arrowfield/logic.js +0 -257
  65. package/dist/programs/arrowfield/object.js +0 -66
  66. package/dist/programs/data2legend/density-to-legend.js +0 -101
  67. package/dist/programs/data2legend/point-to-density-texture.js +0 -100
  68. package/dist/programs/float2legendwithratio/index.js +0 -8
  69. package/dist/programs/float2legendwithratio/logic.js +0 -171
  70. package/dist/programs/float2legendwithratio/object.js +0 -110
  71. package/dist/programs/globe-util/is-globe-moved.js +0 -21
  72. package/dist/programs/globeshell/index.js +0 -8
  73. package/dist/programs/globeshell/noise/noises.js +0 -1
  74. package/dist/programs/globeshell/wiggle/index.js +0 -8
  75. package/dist/programs/globeshell/wiggle/logic.js +0 -345
  76. package/dist/programs/globeshell/wiggle/object.js +0 -72
  77. package/dist/programs/helpers/blender/index.js +0 -1
  78. package/dist/programs/helpers/blender/program.js +0 -79
  79. package/dist/programs/helpers/fadeaway/index.js +0 -7
  80. package/dist/programs/helpers/fadeaway/logic.js +0 -72
  81. package/dist/programs/helpers/fadeaway/object.js +0 -20
  82. package/dist/programs/helpers/index.js +0 -8
  83. package/dist/programs/index.js +0 -58
  84. package/dist/programs/interface.js +0 -1
  85. package/dist/programs/line-on-globe/angled-line.js +0 -176
  86. package/dist/programs/line-on-globe/circle-accurate-3d.js +0 -141
  87. package/dist/programs/line-on-globe/circle-accurate-flat.js +0 -216
  88. package/dist/programs/line-on-globe/circle-accurate.js +0 -178
  89. package/dist/programs/line-on-globe/circle.js +0 -167
  90. package/dist/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -159
  91. package/dist/programs/line-on-globe/index.js +0 -1
  92. package/dist/programs/line-on-globe/lines-color-instanced-flat.js +0 -136
  93. package/dist/programs/line-on-globe/linestrip.js +0 -171
  94. package/dist/programs/line-on-globe/naive-accurate-flexible.js +0 -195
  95. package/dist/programs/line-on-globe/to-the-surface.js +0 -111
  96. package/dist/programs/line-on-globe/util.js +0 -8
  97. package/dist/programs/picking/pickable-renderer.js +0 -188
  98. package/dist/programs/point-on-globe/element-globe-surface-glow.js +0 -142
  99. package/dist/programs/point-on-globe/element-point-glow.js +0 -153
  100. package/dist/programs/point-on-globe/square-pixel-point.js +0 -174
  101. package/dist/programs/programcache.js +0 -131
  102. package/dist/programs/rings/distancering/circleflatprogram.js +0 -156
  103. package/dist/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -369
  104. package/dist/programs/rings/distancering/circlepaddysharedbuffer.js +0 -357
  105. package/dist/programs/rings/distancering/index.js +0 -14
  106. package/dist/programs/rings/distancering/paddyflatprogram.js +0 -172
  107. package/dist/programs/rings/distancering/paddyflatprogram2d.js +0 -174
  108. package/dist/programs/rings/distancering/paddyflatprogram3d.js +0 -172
  109. package/dist/programs/rings/distancering/shader.js +0 -1
  110. package/dist/programs/rings/index.js +0 -17
  111. package/dist/programs/rings/partial-ring/piece-of-pie.js +0 -275
  112. package/dist/programs/totems/camerauniformblock.js +0 -160
  113. package/dist/programs/totems/canvas-webglobe-info.js +0 -110
  114. package/dist/programs/totems/gpu-selection-uniform-block.js +0 -108
  115. package/dist/programs/totems/index.js +0 -40
  116. package/dist/programs/two-d/pixel-circle.js +0 -1
  117. package/dist/programs/two-d/pixel-padding-for-compass.js +0 -162
  118. package/dist/programs/util.js +0 -17
  119. package/dist/programs/vectorfields/index.js +0 -23
  120. package/dist/programs/vectorfields/logics/drawrectangleparticles.js +0 -107
  121. package/dist/programs/vectorfields/logics/index.js +0 -12
  122. package/dist/programs/vectorfields/logics/pixelbased.js +0 -142
  123. package/dist/programs/vectorfields/logics/ubo.js +0 -63
  124. package/dist/programs/vectorfields/pingpongbuffermanager.js +0 -76
  125. package/dist/rangerings/enum.js +0 -5
  126. package/dist/rangerings/index.js +0 -15
  127. package/dist/rangerings/plugin.js +0 -560
  128. package/dist/rangerings/rangeringangletext.js +0 -329
  129. package/dist/rangerings/ring-account.js +0 -117
  130. package/dist/shaders/fragment-toy/firework.js +0 -58
  131. package/dist/shaders/fragment-toy/singularity.js +0 -59
  132. package/dist/shape-on-terrain/arc/naive/plugin.js +0 -252
  133. package/dist/timetracks/adaptors-line-strip.js +0 -71
  134. package/dist/timetracks/adaptors.js +0 -122
  135. package/dist/timetracks/index.js +0 -19
  136. package/dist/timetracks/plugin-line-strip.js +0 -250
  137. package/dist/timetracks/plugin.js +0 -258
  138. package/dist/timetracks/program-line-strip.js +0 -611
  139. package/dist/timetracks/program.js +0 -772
  140. package/dist/timetracks/programpoint-line-strip.js +0 -154
  141. package/dist/timetracks/programpoint.js +0 -147
  142. package/dist/types.js +0 -15
  143. package/dist/util/account/bufferoffsetmanager.js +0 -179
  144. package/dist/util/account/index.js +0 -23
  145. package/dist/util/account/single-attribute-buffer-management/buffer-manager.js +0 -108
  146. package/dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js +0 -150
  147. package/dist/util/account/single-attribute-buffer-management/index.js +0 -9
  148. package/dist/util/account/single-attribute-buffer-management/object-store.js +0 -51
  149. package/dist/util/account/single-attribute-buffer-management/types.js +0 -2
  150. package/dist/util/account/util.js +0 -22
  151. package/dist/util/algorithms/index.js +0 -1
  152. package/dist/util/algorithms/search-binary.js +0 -28
  153. package/dist/util/check/get.js +0 -18
  154. package/dist/util/check/index.js +0 -1
  155. package/dist/util/check/typecheck.js +0 -49
  156. package/dist/util/geometry/index.js +0 -51
  157. package/dist/util/gl-util/buffer/attribute-loader.js +0 -69
  158. package/dist/util/gl-util/buffer/index.js +0 -6
  159. package/dist/util/gl-util/buffer/types.js +0 -1
  160. package/dist/util/gl-util/draw-options/methods.js +0 -38
  161. package/dist/util/gl-util/draw-options/types.js +0 -15
  162. package/dist/util/gl-util/uniform-block/manager.js +0 -156
  163. package/dist/util/gl-util/uniform-block/shader.js +0 -1
  164. package/dist/util/gl-util/uniform-block/types.js +0 -8
  165. package/dist/util/heatwavedatamanager/datamanager.js +0 -152
  166. package/dist/util/heatwavedatamanager/index.js +0 -10
  167. package/dist/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +0 -122
  168. package/dist/util/heatwavedatamanager/pointcoordsmeta.js +0 -20
  169. package/dist/util/index.js +0 -57
  170. package/dist/util/interpolation/index.js +0 -1
  171. package/dist/util/interpolation/timetrack/index.js +0 -5
  172. package/dist/util/interpolation/timetrack/timetrack-interpolator.js +0 -79
  173. package/dist/util/interpolation/timetrack/web-worker-str.js +0 -183
  174. package/dist/util/interpolation/timetrack/web-worker.js +0 -48
  175. package/dist/util/jshelpers/data-filler.js +0 -20
  176. package/dist/util/jshelpers/equality.js +0 -20
  177. package/dist/util/jshelpers/index.js +0 -37
  178. package/dist/util/jshelpers/timefilters.js +0 -32
  179. package/dist/util/picking/fence.js +0 -46
  180. package/dist/util/picking/picker-displayer.js +0 -139
  181. package/dist/util/programs/draw-texture-on-canvas.js +0 -89
  182. package/dist/util/programs/index.js +0 -17
  183. package/dist/util/programs/shapesonglobe.js +0 -214
  184. package/dist/util/programs/supersampletotextures.js +0 -113
  185. package/dist/util/programs/texturetoglobe.js +0 -182
  186. package/dist/util/shaderfunctions/geometrytransformations.js +0 -340
  187. package/dist/util/shaderfunctions/index.js +0 -18
  188. package/dist/util/shaderfunctions/nodata.js +0 -11
  189. package/dist/util/shaderfunctions/noisefunctions.js +0 -43
  190. package/dist/util/surface-line-data/arc-bboxes.js +0 -25
  191. package/dist/util/surface-line-data/arcs-to-cuts.js +0 -50
  192. package/dist/util/surface-line-data/cut-arc.js +0 -1
  193. package/dist/util/surface-line-data/flow.js +0 -28
  194. package/dist/util/surface-line-data/rbush-manager.js +0 -1
  195. package/dist/util/surface-line-data/types.js +0 -1
  196. package/dist/util/surface-line-data/web-worker.js +0 -1
  197. package/dist/util/webglobe/gldefaultstates.js +0 -7
  198. package/dist/util/webglobe/index.js +0 -18
  199. package/dist/util/webglobe/rasteroverlay.js +0 -78
  200. package/dist/util/webglobjectbuilders.js +0 -388
  201. package/dist/util/webglobjectbuilders1.js +0 -237
  202. package/dist/waveparticles/adaptor.js +0 -17
  203. package/dist/waveparticles/index.js +0 -10
  204. package/dist/waveparticles/plugin.js +0 -266
  205. package/dist/wind/imagetovectorfieldandmagnitude.js +0 -35
  206. package/dist/wind/index.js +0 -14
  207. package/dist/wind/plugin.js +0 -926
  208. package/dist/wind/vectorfieldimage.js +0 -25
  209. package/dist/write-text/attached-text-writer.js +0 -91
  210. package/dist/write-text/context-text.js +0 -98
  211. package/dist/write-text/context-text3.js +0 -155
  212. package/dist/write-text/index.js +0 -5
  213. package/dist/write-text/writer-plugin.js +0 -8
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.lineSphereIntersection = lineSphereIntersection;
4
- const vec3_1 = require("../vec3");
5
- const line_1 = require("../line");
6
- const _0vector = /*@__PURE__*/ vec3_1.vec3.create(0, 0, 0);
7
- function lineSphereIntersection(out, inLine, inSphere) {
8
- vec3_1.vec3.subtract(_0vector, inLine.origin, inSphere.center);
9
- const distanceSquared = vec3_1.vec3.lengthSquared(_0vector);
10
- const radiusSquared = inSphere.radius * inSphere.radius;
11
- const dot = vec3_1.vec3.dot(_0vector, inLine.direction);
12
- const dotSquared = dot * dot;
13
- const _a = dotSquared + radiusSquared - distanceSquared;
14
- if (_a < 0) {
15
- return false; // no intersection
16
- }
17
- else {
18
- const a = Math.sqrt(_a);
19
- const t1 = dot - a;
20
- const t2 = dot + a;
21
- line_1.line.at(out[0], inLine, t1);
22
- line_1.line.at(out[1], inLine, t2);
23
- return true;
24
- }
25
- }
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.planePlaneJuction = planePlaneJuction;
4
- const constants_1 = require("../constants");
5
- const vec3_1 = require("../vec3");
6
- const _normal1 = vec3_1.vec3.create();
7
- const _normal2 = vec3_1.vec3.create();
8
- function planePlaneJuction(out, plane1, plane2) {
9
- vec3_1.vec3.copy(_normal1, plane1.normal);
10
- vec3_1.vec3.copy(_normal2, plane2.normal);
11
- const distance1 = plane1.distance;
12
- const distance2 = plane2.distance;
13
- const { origin, direction } = out;
14
- const dot = vec3_1.vec3.dot(_normal1, _normal2);
15
- if (Math.abs(dot) > 1 - constants_1.EPSILON) {
16
- return false; // Planes are parallel, no intersection
17
- }
18
- vec3_1.vec3.cross(direction, _normal1, _normal2);
19
- const magnitudeSquired = vec3_1.vec3.lengthSquared(out.direction);
20
- if (magnitudeSquired < constants_1.EPSILON) {
21
- return false; // No valid intersection line
22
- }
23
- const magnitude = Math.sqrt(magnitudeSquired);
24
- direction[0] /= magnitude;
25
- direction[1] /= magnitude;
26
- direction[2] /= magnitude;
27
- let determinant;
28
- // Calculate the intersection point
29
- // set z = 0
30
- determinant = _normal1[0] * _normal2[1] - _normal1[1] * _normal2[0];
31
- if (Math.abs(determinant) > constants_1.EPSILON) {
32
- origin[0] = (distance1 * _normal2[1] - distance2 * _normal1[1]) / determinant;
33
- origin[1] = (distance2 * _normal1[0] - distance1 * _normal2[0]) / determinant;
34
- origin[2] = 0;
35
- }
36
- else {
37
- // set y = 0
38
- determinant = _normal1[0] * _normal2[2] - _normal1[2] * _normal2[0];
39
- if (Math.abs(determinant) > constants_1.EPSILON) {
40
- origin[0] = (distance1 * _normal2[2] - distance2 * _normal1[2]) / determinant;
41
- origin[1] = 0;
42
- origin[2] = (distance2 * _normal1[0] - distance1 * _normal2[0]) / determinant;
43
- }
44
- else {
45
- // set x = 0
46
- determinant = _normal1[1] * _normal2[2] - _normal1[2] * _normal2[1];
47
- if (Math.abs(determinant) > constants_1.EPSILON) {
48
- origin[0] = 0;
49
- origin[1] = (distance1 * _normal2[2] - distance2 * _normal1[2]) / determinant;
50
- origin[2] = (distance2 * _normal1[1] - distance1 * _normal2[1]) / determinant;
51
- }
52
- else {
53
- return false; // No valid intersection point
54
- }
55
- }
56
- }
57
- return true;
58
- }
package/dist/Math/line.js DELETED
@@ -1,56 +0,0 @@
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
- });
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,201 +0,0 @@
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;
@@ -1,60 +0,0 @@
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
- });
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.quaternion = void 0;
4
- const vec3_1 = require("./vec3");
5
- const constants_1 = require("./constants");
6
- exports.quaternion = Object.freeze({
7
- create(x = 0, y = 0, z = 0, w = 1) {
8
- return [x, y, z, w];
9
- },
10
- set(out, x, y, z, w) {
11
- out[0] = x;
12
- out[1] = y;
13
- out[2] = z;
14
- out[3] = w;
15
- },
16
- copy(out, a) {
17
- out[0] = a[0];
18
- out[1] = a[1];
19
- out[2] = a[2];
20
- out[3] = a[3];
21
- },
22
- clone(a) {
23
- return [a[0], a[1], a[2], a[3]];
24
- },
25
- multiply(out, a, b) {
26
- const x = a[0] * b[3] + a[3] * b[0] + a[1] * b[2] - a[2] * b[1];
27
- const y = a[1] * b[3] + a[3] * b[1] + a[2] * b[0] - a[0] * b[2];
28
- const z = a[2] * b[3] + a[3] * b[2] + a[0] * b[1] - a[1] * b[0];
29
- const w = a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2];
30
- this.set(out, x, y, z, w);
31
- return out;
32
- },
33
- randomUnit(out) {
34
- const u1 = Math.random();
35
- const u2 = Math.random();
36
- const u3 = Math.random();
37
- const sqrt1MinusU1 = Math.sqrt(1 - u1);
38
- const sqrtU1 = Math.sqrt(u1);
39
- const x = sqrt1MinusU1 * Math.sin(2 * Math.PI * u2);
40
- const y = sqrt1MinusU1 * Math.cos(2 * Math.PI * u2);
41
- const z = sqrtU1 * Math.sin(2 * Math.PI * u3);
42
- const w = sqrtU1 * Math.cos(2 * Math.PI * u3);
43
- this.set(out, x, y, z, w);
44
- this.normalize(out, out);
45
- return out;
46
- },
47
- rotateQuaternion(out, a, b) {
48
- const x = a[0] * b[3] + a[3] * b[0] + a[1] * b[2] - a[2] * b[1];
49
- const y = a[1] * b[3] + a[3] * b[1] + a[2] * b[0] - a[0] * b[2];
50
- const z = a[2] * b[3] + a[3] * b[2] + a[0] * b[1] - a[1] * b[0];
51
- const w = a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2];
52
- this.set(out, x, y, z, w);
53
- this.normalize(out, out);
54
- },
55
- lengthSquared(a) {
56
- return a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3];
57
- },
58
- length(a) {
59
- return Math.sqrt(this.lengthSquared(a));
60
- },
61
- normalize(out, input) {
62
- const len = Math.sqrt(this.lengthSquared(input));
63
- if (len < constants_1.EPSILON) {
64
- this.set(out, 0, 0, 0, 1);
65
- }
66
- else {
67
- const invLen = 1 / len;
68
- this.set(out, input[0] * invLen, input[1] * invLen, input[2] * invLen, input[3] * invLen);
69
- }
70
- },
71
- fromUnitVectors(out, from, to) {
72
- const d = vec3_1.vec3.dot(from, to) + 1;
73
- if (d < constants_1.EPSILON) {
74
- if (Math.abs(from[0]) > Math.abs(from[2])) {
75
- this.set(out, -from[1], from[0], 0, 0);
76
- }
77
- else {
78
- this.set(out, 0, -from[2], from[1], 0);
79
- }
80
- }
81
- else {
82
- const x = from[1] * to[2] - from[2] * to[1];
83
- const y = from[2] * to[0] - from[0] * to[2];
84
- const z = from[0] * to[1] - from[1] * to[0];
85
- this.set(out, x, y, z, d);
86
- }
87
- },
88
- fromTwoQuaternions(out, from, to) {
89
- const x = from[0] * to[3] + from[3] * to[0] + from[1] * to[2] - from[2] * to[1];
90
- const y = from[1] * to[3] + from[3] * to[1] + from[2] * to[0] - from[0] * to[2];
91
- const z = from[2] * to[3] + from[3] * to[2] + from[0] * to[1] - from[1] * to[0];
92
- const w = from[3] * to[3] - from[0] * to[0] - from[1] * to[1] - from[2] * to[2];
93
- this.set(out, x, y, z, w);
94
- this.normalize(out, out);
95
- },
96
- conjugate(out, a) {
97
- this.set(out, -a[0], -a[1], -a[2], a[3]);
98
- },
99
- fromAxisAngle(out, axis, angle) {
100
- const halfAngle = angle / 2;
101
- const s = Math.sin(halfAngle);
102
- this.set(out, axis[0] * s, axis[1] * s, axis[2] * s, Math.cos(halfAngle));
103
- },
104
- });
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vector3d_1 = require("./vector3d");
4
- const quaternion_1 = require("./quaternion");
package/dist/Math/vec3.js DELETED
@@ -1,126 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.vec3 = void 0;
4
- const constants_1 = require("./constants");
5
- exports.vec3 = Object.freeze({
6
- create(x = 0, y = 0, z = 1) {
7
- return [x, y, z];
8
- },
9
- set(out, x, y, z) {
10
- out[0] = x;
11
- out[1] = y;
12
- out[2] = z;
13
- },
14
- clone(a) {
15
- return [a[0], a[1], a[2]];
16
- },
17
- copy(out, a) {
18
- out[0] = a[0];
19
- out[1] = a[1];
20
- out[2] = a[2];
21
- return out;
22
- },
23
- add(out, a, b) {
24
- out[0] = a[0] + b[0];
25
- out[1] = a[1] + b[1];
26
- out[2] = a[2] + b[2];
27
- return out;
28
- },
29
- subtract(out, a, b) {
30
- out[0] = a[0] - b[0];
31
- out[1] = a[1] - b[1];
32
- out[2] = a[2] - b[2];
33
- },
34
- dot(a, b) {
35
- return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
36
- },
37
- cross(out, a, b) {
38
- const x = a[1] * b[2] - a[2] * b[1];
39
- const y = a[2] * b[0] - a[0] * b[2];
40
- const z = a[0] * b[1] - a[1] * b[0];
41
- out[0] = x;
42
- out[1] = y;
43
- out[2] = z;
44
- },
45
- multiplyScalar(out, a, b) {
46
- out[0] = a[0] * b;
47
- out[1] = a[1] * b;
48
- out[2] = a[2] * b;
49
- },
50
- divideScalar(out, a, b) {
51
- if (b === 0) {
52
- throw new Error('Division by zero');
53
- }
54
- out[0] = a[0] / b;
55
- out[1] = a[1] / b;
56
- out[2] = a[2] / b;
57
- },
58
- lengthSquared(a) {
59
- return a[0] * a[0] + a[1] * a[1] + a[2] * a[2];
60
- },
61
- length(a) {
62
- return Math.sqrt(this.lengthSquared(a));
63
- },
64
- normalize(outVec, inVec) {
65
- const len = this.length(inVec);
66
- if (len === 0) {
67
- throw new Error('Cannot normalize a zero vector');
68
- }
69
- outVec[0] = inVec[0] / len;
70
- outVec[1] = inVec[1] / len;
71
- outVec[2] = inVec[2] / len;
72
- },
73
- distanceSquared(a, b) {
74
- const dx = a[0] - b[0];
75
- const dy = a[1] - b[1];
76
- const dz = a[2] - b[2];
77
- return dx * dx + dy * dy + dz * dz;
78
- },
79
- distance(a, b) {
80
- return Math.sqrt(this.distanceSquared(a, b));
81
- },
82
- equals(a, b) {
83
- return (Math.abs(a[0] - b[0]) < constants_1.EPSILON &&
84
- Math.abs(a[1] - b[1]) < constants_1.EPSILON &&
85
- Math.abs(a[2] - b[2]) < constants_1.EPSILON);
86
- },
87
- toUnitVectorLongLat(out, a) {
88
- const len = this.length(a); // TODO Might drop length check
89
- if (len === 0) {
90
- throw new Error('Cannot convert a zero vector to unit vector');
91
- }
92
- out[0] = Math.atan2(a[1], a[0]); // Longitude
93
- out[1] = Math.asin(a[2] / len); // Latitude
94
- },
95
- fromUnitVectorLongLat(out, longLat) {
96
- const longitude = longLat[0];
97
- const latitude = longLat[1];
98
- const cosLat = Math.cos(latitude);
99
- out[0] = cosLat * Math.cos(longitude);
100
- out[1] = cosLat * Math.sin(longitude);
101
- out[2] = Math.sin(latitude);
102
- },
103
- applyQuaternion(out, a, q) {
104
- const x = a[0], y = a[1], z = a[2];
105
- const qx = q[0], qy = q[1], qz = q[2], qw = q[3];
106
- // Calculate the quaternion multiplication
107
- const ix = qw * x + qy * z - qz * y;
108
- const iy = qw * y + qz * x - qx * z;
109
- const iz = qw * z + qx * y - qy * x;
110
- const iw = -qx * x - qy * y - qz * z;
111
- // Apply the quaternion to the vector
112
- out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;
113
- out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;
114
- out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;
115
- },
116
- randomUnit(out) {
117
- const theta = Math.random() * 2 * Math.PI;
118
- const phi = Math.acos(2 * Math.random() - 1);
119
- out[0] = Math.sin(phi) * Math.cos(theta);
120
- out[1] = Math.sin(phi) * Math.sin(theta);
121
- out[2] = Math.cos(phi);
122
- },
123
- str(a) {
124
- return `Vec3(${a[0].toFixed(2)}, ${a[1].toFixed(2)}, ${a[2].toFixed(2)})`;
125
- }
126
- });
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findFirstIndexInRange = void 0;
4
- const findFirstIndexInRange = (container, value) => {
5
- let start = 0;
6
- let end = container.length - 1;
7
- let mid = 0;
8
- while (start <= end) {
9
- mid = Math.floor((start + end) / 2);
10
- if (container[mid] <= value && value <= container[mid + 1])
11
- return mid;
12
- if (container[mid] < value)
13
- start = mid + 1;
14
- else
15
- end = mid - 1;
16
- }
17
- return null;
18
- };
19
- exports.findFirstIndexInRange = findFirstIndexInRange;
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("./types");
4
- /**
5
- * @param {DrawSubsetOptions} drawSubsetOptions
6
- */
7
- // TODO: Draw all is an optional property for the target plugin, with this approach.
8
- class DrawSubsetOptionRegistry {
9
- constructor() {
10
- this._drawSubsetOptions = new Map();
11
- }
12
- register(key, drawSubsetOptions) {
13
- this._drawSubsetOptions.set(key, drawSubsetOptions);
14
- }
15
- unregister(key) {
16
- this._drawSubsetOptions.delete(key);
17
- }
18
- }