@pirireis/webglobeplugins 0.9.9 → 0.9.11

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 (212) hide show
  1. package/Math/angle-calculation.js +15 -0
  2. package/Math/arc.js +65 -0
  3. package/Math/bounds/line-bbox.js +190 -0
  4. package/Math/constants.js +9 -0
  5. package/Math/frustum/camera.js +24 -0
  6. package/Math/frustum/from-globeinfo.js +48 -0
  7. package/Math/frustum/types.js +2 -0
  8. package/Math/globe-util/horizon-plane.js +112 -0
  9. package/Math/index.js +1 -0
  10. package/Math/juction/arc-plane.js +83 -0
  11. package/Math/juction/line-sphere.js +25 -0
  12. package/Math/juction/plane-plane.js +58 -0
  13. package/Math/line.js +58 -0
  14. package/Math/matrix4.js +1 -0
  15. package/Math/methods.js +206 -0
  16. package/Math/plane.js +62 -0
  17. package/Math/quaternion.js +108 -0
  18. package/Math/types.js +2 -0
  19. package/Math/utils.js +4 -0
  20. package/Math/vec3.js +129 -0
  21. package/algorithms/search-binary.js +19 -0
  22. package/altitude-locator/adaptors.js +1 -0
  23. package/altitude-locator/draw-subset-obj.js +19 -0
  24. package/altitude-locator/keymethod.js +1 -0
  25. package/altitude-locator/plugin.js +357 -0
  26. package/altitude-locator/types.js +23 -0
  27. package/arrowfield/adaptor.js +15 -0
  28. package/arrowfield/index.js +10 -0
  29. package/arrowfield/plugin.js +89 -0
  30. package/bearing-line/index.js +8 -0
  31. package/bearing-line/plugin.js +474 -0
  32. package/circle-line-chain/chain-list-map.js +211 -0
  33. package/circle-line-chain/init.js +1 -0
  34. package/circle-line-chain/plugin.js +449 -0
  35. package/circle-line-chain/util.js +5 -0
  36. package/compass-rose/compass-rose-padding-flat.js +247 -0
  37. package/compass-rose/compass-text-writer.js +161 -0
  38. package/compass-rose/index.js +7 -0
  39. package/compassrose/compassrose.js +300 -0
  40. package/compassrose/index.js +8 -0
  41. package/globe-types.js +1 -0
  42. package/heatwave/index.js +10 -0
  43. package/heatwave/isobar/objectarraylabels.js +206 -0
  44. package/heatwave/isobar/plugin.js +362 -0
  45. package/heatwave/isobar/quadtreecontours.js +316 -0
  46. package/heatwave/plugins/heatwaveglobeshell.js +224 -0
  47. package/index.js +11 -11
  48. package/jest.config.js +7 -0
  49. package/package.json +4 -4
  50. package/partialrings/buffer-manager.js +113 -0
  51. package/partialrings/index.js +41 -0
  52. package/partialrings/plugin.js +171 -0
  53. package/partialrings/program.js +197 -0
  54. package/pin/pin-object-array.js +308 -0
  55. package/pin/pin-point-totem.js +61 -0
  56. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +66 -0
  57. package/point-heat-map/index.js +1 -0
  58. package/point-heat-map/plugin-webworker.js +131 -0
  59. package/point-heat-map/point-to-heat-map-flow.js +129 -0
  60. package/point-tracks/key-methods.js +5 -0
  61. package/point-tracks/plugin.js +353 -0
  62. package/programs/arrowfield/index.js +7 -0
  63. package/programs/arrowfield/logic.js +149 -0
  64. package/programs/arrowfield/object.js +68 -0
  65. package/programs/data2legend/density-to-legend.js +77 -0
  66. package/programs/data2legend/point-to-density-texture.js +75 -0
  67. package/programs/float2legendwithratio/index.js +8 -0
  68. package/programs/float2legendwithratio/logic.js +125 -0
  69. package/programs/float2legendwithratio/object.js +113 -0
  70. package/programs/globe-util/is-globe-moved.js +22 -0
  71. package/programs/globeshell/index.js +8 -0
  72. package/programs/globeshell/noise/noises.js +1 -0
  73. package/programs/globeshell/wiggle/index.js +8 -0
  74. package/programs/globeshell/wiggle/logic.js +252 -0
  75. package/programs/globeshell/wiggle/object.js +74 -0
  76. package/programs/helpers/blender/index.js +1 -0
  77. package/programs/helpers/blender/program.js +62 -0
  78. package/programs/helpers/fadeaway/index.js +7 -0
  79. package/programs/helpers/fadeaway/logic.js +50 -0
  80. package/programs/helpers/fadeaway/object.js +21 -0
  81. package/programs/helpers/index.js +8 -0
  82. package/programs/index.js +58 -0
  83. package/programs/interface.js +1 -0
  84. package/programs/line-on-globe/angled-line.js +117 -0
  85. package/programs/line-on-globe/circle-accurate-3d.js +91 -0
  86. package/programs/line-on-globe/circle-accurate-flat.js +158 -0
  87. package/programs/line-on-globe/circle-accurate.js +108 -0
  88. package/programs/line-on-globe/circle.js +102 -0
  89. package/programs/line-on-globe/degree-padding-around-circle-3d.js +109 -0
  90. package/programs/line-on-globe/index.js +1 -0
  91. package/programs/line-on-globe/lines-color-instanced-flat.js +91 -0
  92. package/programs/line-on-globe/linestrip.js +110 -0
  93. package/programs/line-on-globe/naive-accurate-flexible.js +125 -0
  94. package/programs/line-on-globe/to-the-surface.js +82 -0
  95. package/programs/line-on-globe/util.js +8 -0
  96. package/programs/picking/pickable-renderer.js +104 -0
  97. package/programs/point-on-globe/element-globe-surface-glow.js +102 -0
  98. package/programs/point-on-globe/element-point-glow.js +85 -0
  99. package/programs/point-on-globe/square-pixel-point.js +125 -0
  100. package/programs/programcache.js +131 -0
  101. package/programs/rings/distancering/circleflatprogram.js +114 -0
  102. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +358 -0
  103. package/programs/rings/distancering/circlepaddysharedbuffer.js +433 -0
  104. package/programs/rings/distancering/index.js +14 -0
  105. package/programs/rings/distancering/paddyflatprogram.js +119 -0
  106. package/programs/rings/distancering/paddyflatprogram2d.js +121 -0
  107. package/programs/rings/distancering/paddyflatprogram3d.js +119 -0
  108. package/programs/rings/distancering/shader.js +1 -0
  109. package/programs/rings/index.js +17 -0
  110. package/programs/rings/partial-ring/piece-of-pie.js +173 -0
  111. package/programs/totems/camerauniformblock.js +147 -0
  112. package/programs/totems/canvas-webglobe-info.js +102 -0
  113. package/programs/totems/gpu-selection-uniform-block.js +104 -0
  114. package/programs/totems/index.js +40 -0
  115. package/programs/two-d/pixel-circle.js +1 -0
  116. package/programs/two-d/pixel-padding-for-compass.js +101 -0
  117. package/programs/util.js +18 -0
  118. package/programs/vectorfields/index.js +23 -0
  119. package/programs/vectorfields/logics/drawrectangleparticles.js +66 -0
  120. package/programs/vectorfields/logics/index.js +12 -0
  121. package/programs/vectorfields/logics/pixelbased.js +86 -0
  122. package/programs/vectorfields/logics/ubo.js +57 -0
  123. package/programs/vectorfields/pingpongbuffermanager.js +80 -0
  124. package/rangerings/enum.js +5 -0
  125. package/rangerings/index.js +15 -0
  126. package/rangerings/plugin.js +610 -0
  127. package/rangerings/rangeringangletext.js +341 -0
  128. package/rangerings/ring-account.js +134 -0
  129. package/shaders/fragment-toy/firework.js +4 -0
  130. package/shaders/fragment-toy/singularity.js +5 -0
  131. package/shape-on-terrain/arc/naive/plugin.js +252 -0
  132. package/timetracks/adaptors-line-strip.js +82 -0
  133. package/timetracks/adaptors.js +136 -0
  134. package/timetracks/index.js +19 -0
  135. package/timetracks/plugin-line-strip.js +254 -0
  136. package/timetracks/plugin.js +262 -0
  137. package/timetracks/program-line-strip.js +418 -0
  138. package/timetracks/program.js +466 -0
  139. package/timetracks/programpoint-line-strip.js +101 -0
  140. package/timetracks/programpoint.js +101 -0
  141. package/types.js +15 -0
  142. package/util/account/bufferoffsetmanager.js +202 -0
  143. package/util/account/index.js +23 -0
  144. package/util/account/single-attribute-buffer-management/buffer-manager.js +112 -0
  145. package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +180 -0
  146. package/util/account/single-attribute-buffer-management/index.js +9 -0
  147. package/util/account/single-attribute-buffer-management/object-store.js +53 -0
  148. package/util/account/single-attribute-buffer-management/types.js +2 -0
  149. package/util/account/util.js +24 -0
  150. package/util/algorithms/index.js +1 -0
  151. package/util/algorithms/search-binary.js +28 -0
  152. package/util/check/get.js +18 -0
  153. package/util/check/index.js +1 -0
  154. package/util/check/typecheck.js +51 -0
  155. package/util/geometry/index.js +53 -0
  156. package/util/gl-util/buffer/attribute-loader.js +81 -0
  157. package/util/gl-util/buffer/index.js +6 -0
  158. package/util/gl-util/buffer/types.js +1 -0
  159. package/util/gl-util/draw-options/methods.js +38 -0
  160. package/util/gl-util/draw-options/types.js +15 -0
  161. package/util/gl-util/uniform-block/manager.js +168 -0
  162. package/util/gl-util/uniform-block/shader.js +1 -0
  163. package/util/gl-util/uniform-block/types.js +8 -0
  164. package/util/heatwavedatamanager/datamanager.js +212 -0
  165. package/util/heatwavedatamanager/index.js +10 -0
  166. package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +125 -0
  167. package/util/heatwavedatamanager/pointcoordsmeta.js +21 -0
  168. package/util/index.js +57 -0
  169. package/util/interpolation/index.js +1 -0
  170. package/util/interpolation/timetrack/index.js +5 -0
  171. package/util/interpolation/timetrack/timetrack-interpolator.js +81 -0
  172. package/util/interpolation/timetrack/web-worker-str.js +5 -0
  173. package/util/interpolation/timetrack/web-worker.js +48 -0
  174. package/util/jshelpers/data-filler.js +20 -0
  175. package/util/jshelpers/equality.js +20 -0
  176. package/util/jshelpers/index.js +37 -0
  177. package/util/jshelpers/timefilters.js +32 -0
  178. package/util/picking/fence.js +46 -0
  179. package/util/picking/picker-displayer.js +145 -0
  180. package/util/programs/draw-texture-on-canvas.js +71 -0
  181. package/util/programs/index.js +17 -0
  182. package/util/programs/shapesonglobe.js +174 -0
  183. package/util/programs/supersampletotextures.js +107 -0
  184. package/util/programs/texturetoglobe.js +132 -0
  185. package/util/shaderfunctions/geometrytransformations.js +45 -0
  186. package/util/shaderfunctions/index.js +18 -0
  187. package/util/shaderfunctions/nodata.js +5 -0
  188. package/util/shaderfunctions/noisefunctions.js +13 -0
  189. package/util/surface-line-data/arc-bboxes.js +25 -0
  190. package/util/surface-line-data/arcs-to-cuts.js +53 -0
  191. package/util/surface-line-data/cut-arc.js +1 -0
  192. package/util/surface-line-data/flow.js +28 -0
  193. package/util/surface-line-data/rbush-manager.js +1 -0
  194. package/util/surface-line-data/types.js +1 -0
  195. package/util/surface-line-data/web-worker.js +1 -0
  196. package/util/webglobe/gldefaultstates.js +7 -0
  197. package/util/webglobe/index.js +18 -0
  198. package/util/webglobe/rasteroverlay.js +80 -0
  199. package/util/webglobjectbuilders.js +393 -0
  200. package/util/webglobjectbuilders1.js +238 -0
  201. package/waveparticles/adaptor.js +18 -0
  202. package/waveparticles/index.js +10 -0
  203. package/waveparticles/plugin.js +271 -0
  204. package/wind/imagetovectorfieldandmagnitude.js +35 -0
  205. package/wind/index.js +14 -0
  206. package/wind/plugin.js +724 -0
  207. package/wind/vectorfieldimage.js +25 -0
  208. package/write-text/attached-text-writer.js +93 -0
  209. package/write-text/context-text.js +105 -0
  210. package/write-text/context-text3.js +160 -0
  211. package/write-text/index.js +5 -0
  212. package/write-text/writer-plugin.js +8 -0
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ // import { LineStripProgramCache } from "../../../programs/line-on-globe/linestrip"
3
+ // import "../../../programs/interface";
4
+ // import { createBufferAndReadInfo } from '../../../util/gl-util/buffer/attribute-loader';
5
+ // import { populateFloat32Array } from "../../../util/jshelpers/data-filler";
6
+ // import { BufferManagement, BufferManager, BufferOrchestrator } from "../../../util/account/single-attribute-buffer-management/index";
7
+ // import { globe3Dcoordinates, globe2Dcoordinates, RADIANS } from "../../../Math/methods";
8
+ // import { Vector3D } from "../../../Math/vector3d";
9
+ // import { Arc } from "../../../Math/arc";
10
+ // import { Plane } from "../../../Math/plane";
11
+ // import { arcFrustumPlanesIntersection } from "../../../Math/intersections/arc-frustum-planes";
12
+ // import { CameraUniformBlockTotemCache, CameraUniformBlockTotem } from "../../../programs/totems/camerauniformblock";
13
+ // import { FrustumPlanes } from "../../../Math/frustum/types";
14
+ // const VERTEX_COUNT = 360;
15
+ // const INITAL_CAPACITY = 10;
16
+ // const _0vector = new Vector3D();
17
+ // const _0arc = new Arc();
18
+ // // window add properties
19
+ // declare global {
20
+ // interface Window {
21
+ // startPoint: Vector3D;
22
+ // endPoint: Vector3D;
23
+ // }
24
+ // }
25
+ // let interval = 1;
26
+ // const testVec = new Vector3D(0, 0, 1);
27
+ // testVec.setFromLongLat(30 * RADIANS, 30 * RADIANS);
28
+ // console.log("testVec", testVec.x, testVec.y, testVec.z);
29
+ // testVec.setFromLongLat(50 * RADIANS, 50 * RADIANS);
30
+ // console.log("testVec", testVec.x, testVec.y, testVec.z);
31
+ // export class NaiveLineOnTerrainPlugin {
32
+ // public id: string;
33
+ // private program: ProgramInterface;
34
+ // private _bufferManagersCompMap: BufferManagement;
35
+ // private _bufferManagersCompMapTest: BufferManagement;
36
+ // private _bufferOrchestrator: BufferOrchestrator = new BufferOrchestrator({ capacity: INITAL_CAPACITY });
37
+ // private _testOrchestrator: BufferOrchestrator = new BufferOrchestrator({ capacity: INITAL_CAPACITY });
38
+ // private _opacity: number = 1;
39
+ // private _arcUBOHandler: UBOHandler;
40
+ // private _vao: WebGLVertexArrayObject;
41
+ // private _vaoAllTest: WebGLVertexArrayObject;
42
+ // private _ubohandlerAllTest: UBOHandler;
43
+ // private globe: any;
44
+ // private gl: WebGL2RenderingContext;
45
+ // private _arcMap: Map<string, Arc>;
46
+ // private _arcMapTest: Map<string, Arc>;
47
+ // private _screenPlane: Plane = new Plane();
48
+ // private _doBuild: boolean = false
49
+ // private _cameraUniformBlock: CameraUniformBlockTotem;
50
+ // public fieldOfView = 50 * RADIANS; // 50 degrees in radians
51
+ // constructor(id: string) {
52
+ // this.id = id;
53
+ // this._arcMap = new Map();
54
+ // this._arcMapTest = new Map();
55
+ // }
56
+ // insertArcFromLongLat(key: string, startPoint: { long: number, lat: number }, endPoint: { long: number, lat: number }) {
57
+ // if (this._arcMap.has(key)) {
58
+ // this._arcMap.delete(key);
59
+ // }
60
+ // const start = _0vector.setFromLongLat(startPoint.long * RADIANS, startPoint.lat * RADIANS).clone();
61
+ // const end = _0vector.setFromLongLat(endPoint.long * RADIANS, endPoint.lat * RADIANS).clone();
62
+ // window.startPoint = start;
63
+ // window.endPoint = end;
64
+ // const arc = new Arc(start, end);
65
+ // this._arcMap.set(key, arc);
66
+ // this._arcMapTest.set(key, arc.clone());
67
+ // const longLatArr = new Float32Array(2 * VERTEX_COUNT);
68
+ // const _3Dpoints = arc.populatePoints3D(VERTEX_COUNT);
69
+ // const longLat = {
70
+ // long: 1,
71
+ // lat: 1
72
+ // };
73
+ // for (let i = 0; i < _3Dpoints.length / 3; i++) {
74
+ // _0vector.set(_3Dpoints[i * 3], _3Dpoints[i * 3 + 1], _3Dpoints[i * 3 + 2]).toLongLat(longLat);
75
+ // longLatArr.set([longLat.long / RADIANS, longLat.lat / RADIANS], i * 2);
76
+ // }
77
+ // const result = [{
78
+ // key: key,
79
+ // longLatArr: longLatArr,
80
+ // }
81
+ // ]
82
+ // this._testOrchestrator.insertBulk(result, this._bufferManagersCompMapTest);
83
+ // this._doBuild = true;
84
+ // }
85
+ // init(globe: any, gl: WebGL2RenderingContext) {
86
+ // this.globe = globe;
87
+ // this.gl = gl;
88
+ // this.program = LineStripProgramCache.get(globe);
89
+ // const g3D = globe3Dcoordinates(globe, 30);
90
+ // const g2D = globe2Dcoordinates(globe);
91
+ // this._cameraUniformBlock = CameraUniformBlockTotemCache.get(globe);
92
+ // this._bufferManagersCompMap = new Map(
93
+ // [
94
+ // ["position3d", {
95
+ // bufferManager: new BufferManager(gl, 3 * (VERTEX_COUNT + 1), { bufferType: "DYNAMIC_DRAW", initialCapacity: INITAL_CAPACITY }),
96
+ // adaptor: (item: any) => {
97
+ // const { longLatArr } = item;
98
+ // const result = g3D(longLatArr, { paddingCount: 1 });
99
+ // // console.log("result", result);
100
+ // return result;
101
+ // }
102
+ // }],
103
+ // ["position2d", {
104
+ // bufferManager: new BufferManager(gl, 2 * (VERTEX_COUNT + 1), { bufferType: "DYNAMIC_DRAW", initialCapacity: INITAL_CAPACITY }),
105
+ // adaptor: (item: any) => {
106
+ // const { longLatArr } = item;
107
+ // return g2D(longLatArr, { paddingCount: 1 });
108
+ // }
109
+ // }
110
+ // ],
111
+ // ]
112
+ // );
113
+ // this._bufferManagersCompMapTest = new Map([
114
+ // ["positionTest3d", {
115
+ // bufferManager: new BufferManager(gl, 3 * (VERTEX_COUNT + 1), { bufferType: "DYNAMIC_DRAW", initialCapacity: INITAL_CAPACITY }),
116
+ // adaptor: (item: any) => {
117
+ // const { longLatArr } = item;
118
+ // const result = g3D(longLatArr, { paddingCount: 1 });
119
+ // return result;
120
+ // }
121
+ // }],
122
+ // ["positionTest2d", {
123
+ // bufferManager: new BufferManager(gl, 2 * (VERTEX_COUNT + 1), { bufferType: "DYNAMIC_DRAW", initialCapacity: INITAL_CAPACITY }),
124
+ // adaptor: (item: any) => {
125
+ // const { longLatArr } = item;
126
+ // return g2D(longLatArr, { paddingCount: 1 });
127
+ // }
128
+ // }
129
+ // ]
130
+ // ]
131
+ // );
132
+ // this._bufferOrchestrator = new BufferOrchestrator(gl, this._bufferManagersCompMap);
133
+ // this._arcUBOHandler = this.program.createUBO();
134
+ // this._arcUBOHandler.update(new Map([
135
+ // ["u_color", new Float32Array([1, 0, 0, 1])],
136
+ // ]));
137
+ // this._ubohandlerAllTest = this.program.createUBO();
138
+ // this._ubohandlerAllTest.update(new Map([
139
+ // ["u_color", new Float32Array([0, 0, 1, 1])],
140
+ // ]));
141
+ // this._vao = this.program.createVAO(
142
+ // createBufferAndReadInfo(this._bufferManagersCompMap.get("position3d").bufferManager.buffer),
143
+ // createBufferAndReadInfo(this._bufferManagersCompMap.get("position2d").bufferManager.buffer),
144
+ // null,
145
+ // null,
146
+ // null,
147
+ // );
148
+ // this._vaoAllTest = this.program.createVAO(
149
+ // createBufferAndReadInfo(this._bufferManagersCompMapTest.get("positionTest3d").bufferManager.buffer),
150
+ // createBufferAndReadInfo(this._bufferManagersCompMapTest.get("positionTest2d").bufferManager.buffer),
151
+ // null,
152
+ // null,
153
+ // null,
154
+ // );
155
+ // }
156
+ // setFieldOfView(fieldOfView: number) {
157
+ // this.fieldOfView = fieldOfView * RADIANS; // convert degrees to radians
158
+ // this.globe.DrawRender();
159
+ // }
160
+ // _buildArcs() {
161
+ // // updatePlane
162
+ // const { globe, _arcMap } = this;
163
+ // const planes = this._cameraUniformBlock.getFrustumPlanes() as FrustumPlanes;
164
+ // //
165
+ // const cameraPostition = new Vector3D();
166
+ // cameraPostition.copy(globe.Fp as Vector3D).normalize();
167
+ // // calculateHorizonPlane(globe, _screenPlane, this.fieldOfView);
168
+ // const result = [];
169
+ // const longLat = {
170
+ // long: 1,
171
+ // lat: 1
172
+ // }
173
+ // let counter = 0;
174
+ // for (const [key, arc] of _arcMap) {
175
+ // // const isArc = arc.intersectionMedium(_screenPlane, _0arc) as Arc;
176
+ // _0arc.copy(arc);
177
+ // const isArc = arcFrustumPlanesIntersection(_0arc, planes, _0arc);
178
+ // if (!isArc) {
179
+ // continue;
180
+ // }
181
+ // counter++;
182
+ // const longLatArr = new Float32Array(2 * VERTEX_COUNT);
183
+ // // const _3Dpoints = _0arc.populatePoints3DInRespectToCamera(cameraPostition, VERTEX_COUNT);
184
+ // const _3Dpoints = _0arc.populatePoints3D(VERTEX_COUNT);
185
+ // for (let i = 0; i < _3Dpoints.length / 3; i++) {
186
+ // _0vector.set(_3Dpoints[i * 3], _3Dpoints[i * 3 + 1], _3Dpoints[i * 3 + 2]).toLongLat(longLat);
187
+ // longLatArr.set([longLat.long / RADIANS, longLat.lat / RADIANS], i * 2);
188
+ // }
189
+ // result.push({
190
+ // key: key,
191
+ // longLatArr: longLatArr,
192
+ // });
193
+ // // if (!arc.imaginaryPlane.equals(_0arc.imaginaryPlane) || !arc.imaginaryPlane.equalsReverseOriantation(_0arc.imaginaryPlane)) {
194
+ // // // console.log("Arc with key", key, "has imaginary plane equal to the original arc's imaginary plane.");
195
+ // // throw new Error("The arc segment is not on the parent arc")
196
+ // // }
197
+ // }
198
+ // interval += 1;
199
+ // if (interval === 100) {
200
+ // interval = 1;
201
+ // console.log("Arc count on screen:", counter);
202
+ // }
203
+ // // update buffer
204
+ // this._bufferOrchestrator.resetWithCapacity(this._bufferManagersCompMap, result.length);
205
+ // this._bufferOrchestrator.insertBulk(result, this._bufferManagersCompMap);
206
+ // this._doBuild = false;
207
+ // this._checkIfCorrupted(); // check if any arc is corrupted
208
+ // }
209
+ // draw3D() {
210
+ // // Drawing logic here
211
+ // this._buildArcs() // can be async
212
+ // const { gl, program, _bufferOrchestrator } = this;
213
+ // gl.disable(gl.DEPTH_TEST);
214
+ // const drawOptionTest = {
215
+ // drawRange: {
216
+ // first: 0,
217
+ // count: this._testOrchestrator.length * (VERTEX_COUNT + 1)
218
+ // },
219
+ // indexes: null
220
+ // }
221
+ // program.draw(
222
+ // this._vaoAllTest,
223
+ // drawOptionTest,
224
+ // this._opacity,
225
+ // this._ubohandlerAllTest
226
+ // );
227
+ // const drawOptions = {
228
+ // drawRange: {
229
+ // first: 0,
230
+ // count: _bufferOrchestrator.length * (VERTEX_COUNT + 1)
231
+ // },
232
+ // indexes: null
233
+ // }
234
+ // program.draw(
235
+ // this._vao,
236
+ // drawOptions,
237
+ // this._opacity,
238
+ // this._arcUBOHandler
239
+ // );
240
+ // gl.enable(gl.DEPTH_TEST);
241
+ // }
242
+ // _checkIfCorrupted() {
243
+ // for (const [key, arc] of this._arcMap) {
244
+ // if (!arc.p0.equals(arc.p1)) {
245
+ // continue; // valid arc
246
+ // }
247
+ // console.warn(`Arc with key ${key} is corrupted: p0 and p1 are the same point.`);
248
+ // // this._arcMap.delete(key);
249
+ // // this._arcMapTest.delete(key);
250
+ // }
251
+ // }
252
+ // }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.latLongToPixelXY = void 0;
13
+ exports.addCuttingPointLineStrip = addCuttingPointLineStrip;
14
+ exports.featuresToLineStringData = featuresToLineStringData;
15
+ exports.fillSliceOfFloat32ArrayLineStrip = fillSliceOfFloat32ArrayLineStrip;
16
+ var util_1 = require("../util");
17
+ Object.defineProperty(exports, "latLongToPixelXY", { enumerable: true, get: function () { return util_1.latLongToPixelXY; } });
18
+ /**
19
+ * @param {Array.<Array.<number>>} coordinates
20
+ * @param {Array.<number>} timestamps
21
+ * @param {Array.<String>} styleGroupNameArray
22
+ * @param {Object.<string, TrackStyleGroup>} _groupColorMap
23
+ * @param {Float32Array} floatArray
24
+ * @param {number} offset
25
+ *
26
+ * create floatArray with createFloat32Array before calling this function.
27
+ * start offset from 0.
28
+ * feed the floatArray with a track data and offset that is returned from the previous call.
29
+ */
30
+ function featuresToLineStringData(data) {
31
+ /**
32
+ * features are the tracks
33
+ * feature[i].geometry.coordinates are the points of the track
34
+ * feature[i].properties.messageTime are the timestamps of the points
35
+ *
36
+ */
37
+ var features = data.features;
38
+ var size = data.features.length - 1;
39
+ var startTime = features[0].properties.messageTime[0];
40
+ var endTime = features[0].properties.messageTime[features[0].properties.messageTime.length - 1];
41
+ for (var _i = 0, features_1 = features; _i < features_1.length; _i++) {
42
+ var feature = features_1[_i];
43
+ size += feature.properties.messageTime.length;
44
+ startTime = Math.min(startTime, feature.properties.messageTime[0]);
45
+ endTime = Math.max(endTime, feature.properties.messageTime[feature.properties.messageTime.length - 1]);
46
+ }
47
+ var array = new Float32Array(size * 9);
48
+ var offset = 0;
49
+ {
50
+ var feature = features[0];
51
+ var coordinates = feature.geometry.coordinates;
52
+ var timestamps = feature.properties.messageTime.map(function (time) { return (time - startTime) / 1000; });
53
+ offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
54
+ }
55
+ for (var i = 1; i < features.length; i++) {
56
+ var feature = features[i];
57
+ var coordinates = feature.geometry.coordinates;
58
+ var timestamps = feature.properties.messageTime.map(function (time) { return (time - startTime) / 1000; });
59
+ offset = addCuttingPointLineStrip(array, offset);
60
+ offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
61
+ }
62
+ return { data: array, startTime: startTime, endTime: endTime };
63
+ }
64
+ function fillSliceOfFloat32ArrayLineStrip(floatArray, offset, coordinates, timestamps, _a) {
65
+ var _b = _a === void 0 ? {} : _a, _c = _b.styleGroupNameArray, styleGroupNameArray = _c === void 0 ? null : _c, _d = _b.groupColorFunction, groupColorFunction = _d === void 0 ? function () { return [Math.random(), Math.random(), Math.random()]; } : _d;
66
+ var startTime = timestamps[0];
67
+ var endTime = timestamps[timestamps.length - 1];
68
+ for (var i = 0; i < coordinates.length; i++) {
69
+ var time = timestamps[i];
70
+ var coord = coordinates[i];
71
+ var styleGroupName = styleGroupNameArray ? styleGroupNameArray[i] : "default";
72
+ var _e = (0, util_1.latLongToPixelXY)(coord[1], coord[0]), x = _e.x, y = _e.y;
73
+ var z = coord[2] ? coord[2] / 1000.0 : 0;
74
+ floatArray.set(__spreadArray(__spreadArray([x, y, z, time], groupColorFunction(styleGroupName), true), [startTime, endTime], false), offset);
75
+ offset += 9;
76
+ }
77
+ return offset;
78
+ }
79
+ function addCuttingPointLineStrip(floatArray, offset) {
80
+ floatArray.set(new Float32Array(9).fill(NaN), offset);
81
+ return offset + 9;
82
+ }
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Adaptor = void 0;
13
+ exports.fillSliceOfFloat32Array = fillSliceOfFloat32Array;
14
+ exports.createFloat32Array = createFloat32Array;
15
+ var util_1 = require("../util");
16
+ var _latLongToPixelXY = util_1.latLongToPixelXY;
17
+ var Adaptor = /** @class */ (function () {
18
+ /**
19
+ * @param {Object.<string, Color>} groupColorMap
20
+ * @typedef {Array} Color | [r, g, b] | between 0-1
21
+ */
22
+ function Adaptor(groupColorMap) {
23
+ this._groupColorMap = groupColorMap;
24
+ }
25
+ /**
26
+ * @param {Object} geojsonObject
27
+ * @param {number} startTime
28
+ * @param {string} timePropertyName
29
+ * @param {string} styleGroupPropertyName
30
+ * @returns {lineData} lineData for Plugin
31
+ */
32
+ Adaptor.prototype.fromGeoJson = function (geojsonObject, startTime, timePropertyName, styleGroupPropertyName) {
33
+ if (timePropertyName === void 0) { timePropertyName = "messageTime"; }
34
+ if (styleGroupPropertyName === void 0) { styleGroupPropertyName = "styleGroup"; }
35
+ var features = geojsonObject.features.filter(function (feature) { return feature.geometry.coordinates.length > 1; });
36
+ var buffer = createFloat32Array(features.map(function (feature) { return feature.geometry.coordinates; }));
37
+ var offset = 0;
38
+ for (var _i = 0, features_1 = features; _i < features_1.length; _i++) {
39
+ var feature = features_1[_i];
40
+ var coordinates = feature.geometry.coordinates;
41
+ var timestamps = feature.properties[timePropertyName].map(function (time) { return (time - startTime) / 1000; });
42
+ var styleGroupNameArray = feature.properties[styleGroupPropertyName];
43
+ offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
44
+ }
45
+ return buffer;
46
+ };
47
+ /**
48
+ * Inputs are lists of tracks. Each track is a list of coordinates, timestamps and styleGroupNames.
49
+ * @param {Array.<Array.<Array.<number>>>} coordinatesList | [ [ [lon, lat, z], [lon, lat, z], ...], ...
50
+ * @param {Array.<Array.<number>>} timestampsList | [ [time, time, ...], ...
51
+ * @param {Array.<Array.<String>>} colorGroupList | [ [styleGroupName, styleGroupName, ...], ...
52
+ * @param {number} startTime | epoch time
53
+ * @returns {lineData} lineData for Plugin
54
+ */
55
+ Adaptor.prototype.fromLists = function (coordinatesList, timestampsList, colorGroupList, startTime) {
56
+ var buffer = createFloat32Array(coordinatesList);
57
+ var offset = 0;
58
+ for (var i = 0; i < coordinatesList.length; i++) {
59
+ var coordinates = coordinatesList[i];
60
+ var timestamps = timestampsList[i].map(function (time) { return (time - startTime) / 1000; });
61
+ var styleGroupNameArray = colorGroupList[i];
62
+ offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
63
+ }
64
+ return buffer;
65
+ };
66
+ return Adaptor;
67
+ }());
68
+ exports.Adaptor = Adaptor;
69
+ /**
70
+ * @param {Array.<Array.<number>>} coordinates
71
+ * @param {Array.<number>} timestamps
72
+ * @param {Array.<String>} styleGroupNameArray
73
+ * @param {Object.<string, TrackStyleGroup>} _groupColorMap
74
+ * @param {Float32Array} floatArray
75
+ * @param {number} offset
76
+ *
77
+ * create floatArray with createFloat32Array before calling this function.
78
+ * start offset from 0.
79
+ * feed the floatArray with a track data and offset that is returned from the previous call.
80
+ */
81
+ function fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, _groupColorMap, floatArray, offset) {
82
+ if (coordinates[0].length === 2) {
83
+ var startTime = timestamps[0];
84
+ var endTime = timestamps[timestamps.length - 1];
85
+ var prevPointData = null;
86
+ { // first point
87
+ var _a = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]), x = _a.x, y = _a.y;
88
+ prevPointData = __spreadArray([x, y, 0, timestamps[0]], _groupColorMap[styleGroupNameArray[0]], true);
89
+ }
90
+ { // middle points until end
91
+ for (var i = 1; i < coordinates.length; i++) {
92
+ var time = timestamps[i];
93
+ var coord = coordinates[i];
94
+ var _b = _latLongToPixelXY(coord[1], coord[0]), x = _b.x, y = _b.y;
95
+ floatArray.set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], prevPointData, true), [startTime, endTime, x, y, 0, time], false), _groupColorMap[styleGroupNameArray[i]], true), [startTime, endTime], false), offset);
96
+ prevPointData = __spreadArray([x, y, 0, time], _groupColorMap[styleGroupNameArray[i]], true);
97
+ offset += 18;
98
+ }
99
+ }
100
+ }
101
+ else {
102
+ var startTime = timestamps[0];
103
+ var endTime = timestamps[timestamps.length - 1];
104
+ var prevPointData = null;
105
+ { // first point
106
+ var _c = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]), x = _c.x, y = _c.y;
107
+ prevPointData = __spreadArray([x, y, coordinates[0][2] / 1000.0, timestamps[0]], _groupColorMap[styleGroupNameArray[0]], true);
108
+ }
109
+ { // middle points until end
110
+ for (var i = 1; i < coordinates.length; i++) {
111
+ var time = timestamps[i];
112
+ var coord = coordinates[i];
113
+ var _d = _latLongToPixelXY(coord[1], coord[0]), x = _d.x, y = _d.y;
114
+ floatArray.set(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], prevPointData, true), [startTime, endTime, x, y, coord[2] / 1000.0, time], false), _groupColorMap[styleGroupNameArray[i]], true), [startTime, endTime], false), offset);
115
+ prevPointData = __spreadArray([x, y, coord[2] / 1000.0, time], _groupColorMap[styleGroupNameArray[i]], true);
116
+ offset += 18;
117
+ }
118
+ }
119
+ }
120
+ return offset;
121
+ }
122
+ /**
123
+ *
124
+ * @param {*} coordinatesArray
125
+ * @returns Float32Array
126
+ * Coordinates array is needed to calculate the size of the buffer.
127
+ */
128
+ function createFloat32Array(coordinatesArray) {
129
+ var filteredSize = 0;
130
+ for (var _i = 0, coordinatesArray_1 = coordinatesArray; _i < coordinatesArray_1.length; _i++) {
131
+ var coordinates = coordinatesArray_1[_i];
132
+ filteredSize += coordinates.length * 2 - 2;
133
+ }
134
+ var array = new Float32Array(filteredSize * 9);
135
+ return array;
136
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.latLongToPixelXY = exports.fillSliceOfFloat32ArrayLineStrip = exports.featuresToLineStringData = exports.addCuttingPointLineStrip = exports.TimeTracksLineStrip = exports.TimeTracks = exports.createFloat32Array = exports.fillSliceOfFloat32Array = exports.Adaptor = void 0;
7
+ var plugin_1 = __importDefault(require("./plugin"));
8
+ exports.TimeTracks = plugin_1.default;
9
+ var adaptors_1 = require("./adaptors");
10
+ Object.defineProperty(exports, "Adaptor", { enumerable: true, get: function () { return adaptors_1.Adaptor; } });
11
+ Object.defineProperty(exports, "fillSliceOfFloat32Array", { enumerable: true, get: function () { return adaptors_1.fillSliceOfFloat32Array; } });
12
+ Object.defineProperty(exports, "createFloat32Array", { enumerable: true, get: function () { return adaptors_1.createFloat32Array; } });
13
+ var plugin_line_strip_1 = __importDefault(require("./plugin-line-strip"));
14
+ exports.TimeTracksLineStrip = plugin_line_strip_1.default;
15
+ var adaptors_line_strip_1 = require("./adaptors-line-strip");
16
+ Object.defineProperty(exports, "addCuttingPointLineStrip", { enumerable: true, get: function () { return adaptors_line_strip_1.addCuttingPointLineStrip; } });
17
+ Object.defineProperty(exports, "featuresToLineStringData", { enumerable: true, get: function () { return adaptors_line_strip_1.featuresToLineStringData; } });
18
+ Object.defineProperty(exports, "fillSliceOfFloat32ArrayLineStrip", { enumerable: true, get: function () { return adaptors_line_strip_1.fillSliceOfFloat32ArrayLineStrip; } });
19
+ Object.defineProperty(exports, "latLongToPixelXY", { enumerable: true, get: function () { return adaptors_line_strip_1.latLongToPixelXY; } });