@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.
- package/Math/angle-calculation.js +15 -0
- package/Math/arc.js +65 -0
- package/Math/bounds/line-bbox.js +190 -0
- package/Math/constants.js +9 -0
- package/Math/frustum/camera.js +24 -0
- package/Math/frustum/from-globeinfo.js +48 -0
- package/Math/frustum/types.js +2 -0
- package/Math/globe-util/horizon-plane.js +112 -0
- package/Math/index.js +1 -0
- package/Math/juction/arc-plane.js +83 -0
- package/Math/juction/line-sphere.js +25 -0
- package/Math/juction/plane-plane.js +58 -0
- package/Math/line.js +58 -0
- package/Math/matrix4.js +1 -0
- package/Math/methods.js +206 -0
- package/Math/plane.js +62 -0
- package/Math/quaternion.js +108 -0
- package/Math/types.js +2 -0
- package/Math/utils.js +4 -0
- package/Math/vec3.js +129 -0
- package/algorithms/search-binary.js +19 -0
- package/altitude-locator/adaptors.js +1 -0
- package/altitude-locator/draw-subset-obj.js +19 -0
- package/altitude-locator/keymethod.js +1 -0
- package/altitude-locator/plugin.js +357 -0
- package/altitude-locator/types.js +23 -0
- package/arrowfield/adaptor.js +15 -0
- package/arrowfield/index.js +10 -0
- package/arrowfield/plugin.js +89 -0
- package/bearing-line/index.js +8 -0
- package/bearing-line/plugin.js +474 -0
- package/circle-line-chain/chain-list-map.js +211 -0
- package/circle-line-chain/init.js +1 -0
- package/circle-line-chain/plugin.js +449 -0
- package/circle-line-chain/util.js +5 -0
- package/compass-rose/compass-rose-padding-flat.js +247 -0
- package/compass-rose/compass-text-writer.js +161 -0
- package/compass-rose/index.js +7 -0
- package/compassrose/compassrose.js +300 -0
- package/compassrose/index.js +8 -0
- package/globe-types.js +1 -0
- package/heatwave/index.js +10 -0
- package/heatwave/isobar/objectarraylabels.js +206 -0
- package/heatwave/isobar/plugin.js +362 -0
- package/heatwave/isobar/quadtreecontours.js +316 -0
- package/heatwave/plugins/heatwaveglobeshell.js +224 -0
- package/index.js +11 -11
- package/jest.config.js +7 -0
- package/package.json +4 -4
- package/partialrings/buffer-manager.js +113 -0
- package/partialrings/index.js +41 -0
- package/partialrings/plugin.js +171 -0
- package/partialrings/program.js +197 -0
- package/pin/pin-object-array.js +308 -0
- package/pin/pin-point-totem.js +61 -0
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +66 -0
- package/point-heat-map/index.js +1 -0
- package/point-heat-map/plugin-webworker.js +131 -0
- package/point-heat-map/point-to-heat-map-flow.js +129 -0
- package/point-tracks/key-methods.js +5 -0
- package/point-tracks/plugin.js +353 -0
- package/programs/arrowfield/index.js +7 -0
- package/programs/arrowfield/logic.js +149 -0
- package/programs/arrowfield/object.js +68 -0
- package/programs/data2legend/density-to-legend.js +77 -0
- package/programs/data2legend/point-to-density-texture.js +75 -0
- package/programs/float2legendwithratio/index.js +8 -0
- package/programs/float2legendwithratio/logic.js +125 -0
- package/programs/float2legendwithratio/object.js +113 -0
- package/programs/globe-util/is-globe-moved.js +22 -0
- package/programs/globeshell/index.js +8 -0
- package/programs/globeshell/noise/noises.js +1 -0
- package/programs/globeshell/wiggle/index.js +8 -0
- package/programs/globeshell/wiggle/logic.js +252 -0
- package/programs/globeshell/wiggle/object.js +74 -0
- package/programs/helpers/blender/index.js +1 -0
- package/programs/helpers/blender/program.js +62 -0
- package/programs/helpers/fadeaway/index.js +7 -0
- package/programs/helpers/fadeaway/logic.js +50 -0
- package/programs/helpers/fadeaway/object.js +21 -0
- package/programs/helpers/index.js +8 -0
- package/programs/index.js +58 -0
- package/programs/interface.js +1 -0
- package/programs/line-on-globe/angled-line.js +117 -0
- package/programs/line-on-globe/circle-accurate-3d.js +91 -0
- package/programs/line-on-globe/circle-accurate-flat.js +158 -0
- package/programs/line-on-globe/circle-accurate.js +108 -0
- package/programs/line-on-globe/circle.js +102 -0
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +109 -0
- package/programs/line-on-globe/index.js +1 -0
- package/programs/line-on-globe/lines-color-instanced-flat.js +91 -0
- package/programs/line-on-globe/linestrip.js +110 -0
- package/programs/line-on-globe/naive-accurate-flexible.js +125 -0
- package/programs/line-on-globe/to-the-surface.js +82 -0
- package/programs/line-on-globe/util.js +8 -0
- package/programs/picking/pickable-renderer.js +104 -0
- package/programs/point-on-globe/element-globe-surface-glow.js +102 -0
- package/programs/point-on-globe/element-point-glow.js +85 -0
- package/programs/point-on-globe/square-pixel-point.js +125 -0
- package/programs/programcache.js +131 -0
- package/programs/rings/distancering/circleflatprogram.js +114 -0
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +358 -0
- package/programs/rings/distancering/circlepaddysharedbuffer.js +433 -0
- package/programs/rings/distancering/index.js +14 -0
- package/programs/rings/distancering/paddyflatprogram.js +119 -0
- package/programs/rings/distancering/paddyflatprogram2d.js +121 -0
- package/programs/rings/distancering/paddyflatprogram3d.js +119 -0
- package/programs/rings/distancering/shader.js +1 -0
- package/programs/rings/index.js +17 -0
- package/programs/rings/partial-ring/piece-of-pie.js +173 -0
- package/programs/totems/camerauniformblock.js +147 -0
- package/programs/totems/canvas-webglobe-info.js +102 -0
- package/programs/totems/gpu-selection-uniform-block.js +104 -0
- package/programs/totems/index.js +40 -0
- package/programs/two-d/pixel-circle.js +1 -0
- package/programs/two-d/pixel-padding-for-compass.js +101 -0
- package/programs/util.js +18 -0
- package/programs/vectorfields/index.js +23 -0
- package/programs/vectorfields/logics/drawrectangleparticles.js +66 -0
- package/programs/vectorfields/logics/index.js +12 -0
- package/programs/vectorfields/logics/pixelbased.js +86 -0
- package/programs/vectorfields/logics/ubo.js +57 -0
- package/programs/vectorfields/pingpongbuffermanager.js +80 -0
- package/rangerings/enum.js +5 -0
- package/rangerings/index.js +15 -0
- package/rangerings/plugin.js +610 -0
- package/rangerings/rangeringangletext.js +341 -0
- package/rangerings/ring-account.js +134 -0
- package/shaders/fragment-toy/firework.js +4 -0
- package/shaders/fragment-toy/singularity.js +5 -0
- package/shape-on-terrain/arc/naive/plugin.js +252 -0
- package/timetracks/adaptors-line-strip.js +82 -0
- package/timetracks/adaptors.js +136 -0
- package/timetracks/index.js +19 -0
- package/timetracks/plugin-line-strip.js +254 -0
- package/timetracks/plugin.js +262 -0
- package/timetracks/program-line-strip.js +418 -0
- package/timetracks/program.js +466 -0
- package/timetracks/programpoint-line-strip.js +101 -0
- package/timetracks/programpoint.js +101 -0
- package/types.js +15 -0
- package/util/account/bufferoffsetmanager.js +202 -0
- package/util/account/index.js +23 -0
- package/util/account/single-attribute-buffer-management/buffer-manager.js +112 -0
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +180 -0
- package/util/account/single-attribute-buffer-management/index.js +9 -0
- package/util/account/single-attribute-buffer-management/object-store.js +53 -0
- package/util/account/single-attribute-buffer-management/types.js +2 -0
- package/util/account/util.js +24 -0
- package/util/algorithms/index.js +1 -0
- package/util/algorithms/search-binary.js +28 -0
- package/util/check/get.js +18 -0
- package/util/check/index.js +1 -0
- package/util/check/typecheck.js +51 -0
- package/util/geometry/index.js +53 -0
- package/util/gl-util/buffer/attribute-loader.js +81 -0
- package/util/gl-util/buffer/index.js +6 -0
- package/util/gl-util/buffer/types.js +1 -0
- package/util/gl-util/draw-options/methods.js +38 -0
- package/util/gl-util/draw-options/types.js +15 -0
- package/util/gl-util/uniform-block/manager.js +168 -0
- package/util/gl-util/uniform-block/shader.js +1 -0
- package/util/gl-util/uniform-block/types.js +8 -0
- package/util/heatwavedatamanager/datamanager.js +212 -0
- package/util/heatwavedatamanager/index.js +10 -0
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +125 -0
- package/util/heatwavedatamanager/pointcoordsmeta.js +21 -0
- package/util/index.js +57 -0
- package/util/interpolation/index.js +1 -0
- package/util/interpolation/timetrack/index.js +5 -0
- package/util/interpolation/timetrack/timetrack-interpolator.js +81 -0
- package/util/interpolation/timetrack/web-worker-str.js +5 -0
- package/util/interpolation/timetrack/web-worker.js +48 -0
- package/util/jshelpers/data-filler.js +20 -0
- package/util/jshelpers/equality.js +20 -0
- package/util/jshelpers/index.js +37 -0
- package/util/jshelpers/timefilters.js +32 -0
- package/util/picking/fence.js +46 -0
- package/util/picking/picker-displayer.js +145 -0
- package/util/programs/draw-texture-on-canvas.js +71 -0
- package/util/programs/index.js +17 -0
- package/util/programs/shapesonglobe.js +174 -0
- package/util/programs/supersampletotextures.js +107 -0
- package/util/programs/texturetoglobe.js +132 -0
- package/util/shaderfunctions/geometrytransformations.js +45 -0
- package/util/shaderfunctions/index.js +18 -0
- package/util/shaderfunctions/nodata.js +5 -0
- package/util/shaderfunctions/noisefunctions.js +13 -0
- package/util/surface-line-data/arc-bboxes.js +25 -0
- package/util/surface-line-data/arcs-to-cuts.js +53 -0
- package/util/surface-line-data/cut-arc.js +1 -0
- package/util/surface-line-data/flow.js +28 -0
- package/util/surface-line-data/rbush-manager.js +1 -0
- package/util/surface-line-data/types.js +1 -0
- package/util/surface-line-data/web-worker.js +1 -0
- package/util/webglobe/gldefaultstates.js +7 -0
- package/util/webglobe/index.js +18 -0
- package/util/webglobe/rasteroverlay.js +80 -0
- package/util/webglobjectbuilders.js +393 -0
- package/util/webglobjectbuilders1.js +238 -0
- package/waveparticles/adaptor.js +18 -0
- package/waveparticles/index.js +10 -0
- package/waveparticles/plugin.js +271 -0
- package/wind/imagetovectorfieldandmagnitude.js +35 -0
- package/wind/index.js +14 -0
- package/wind/plugin.js +724 -0
- package/wind/vectorfieldimage.js +25 -0
- package/write-text/attached-text-writer.js +93 -0
- package/write-text/context-text.js +105 -0
- package/write-text/context-text3.js +160 -0
- package/write-text/index.js +5 -0
- 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; } });
|