@pirireis/webglobeplugins 0.9.11 → 0.9.12
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 +8 -8
- package/Math/arc.js +18 -18
- package/Math/bounds/line-bbox.js +78 -80
- package/Math/constants.js +3 -3
- package/Math/juction/arc-plane.js +23 -23
- package/Math/juction/line-sphere.js +11 -11
- package/Math/juction/plane-plane.js +11 -11
- package/Math/line.js +14 -16
- package/Math/methods.js +65 -70
- package/Math/plane.js +16 -18
- package/Math/quaternion.js +45 -49
- package/Math/utils.js +2 -2
- package/Math/vec3.js +42 -45
- package/algorithms/search-binary.js +4 -4
- package/altitude-locator/draw-subset-obj.js +7 -8
- package/altitude-locator/plugin.js +98 -114
- package/arrowfield/adaptor.js +3 -4
- package/arrowfield/index.js +2 -2
- package/arrowfield/plugin.js +62 -65
- package/bearing-line/index.js +1 -1
- package/bearing-line/plugin.js +200 -226
- package/circle-line-chain/chain-list-map.js +82 -88
- package/circle-line-chain/plugin.js +134 -165
- package/circle-line-chain/util.js +1 -1
- package/compass-rose/compass-rose-padding-flat.js +108 -133
- package/compass-rose/compass-text-writer.js +62 -70
- package/compass-rose/index.js +2 -2
- package/compassrose/compassrose.js +46 -50
- package/compassrose/index.js +1 -1
- package/heatwave/index.js +2 -2
- package/heatwave/isobar/objectarraylabels.js +44 -48
- package/heatwave/isobar/plugin.js +104 -123
- package/heatwave/isobar/quadtreecontours.js +76 -92
- package/heatwave/plugins/heatwaveglobeshell.js +69 -87
- package/index.js +11 -11
- package/package.json +1 -1
- package/partialrings/buffer-manager.js +32 -64
- package/partialrings/index.js +1 -1
- package/partialrings/plugin.js +48 -84
- package/partialrings/program.js +136 -47
- package/pin/pin-object-array.js +83 -86
- package/pin/pin-point-totem.js +21 -22
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +10 -10
- package/point-heat-map/plugin-webworker.js +40 -45
- package/point-heat-map/point-to-heat-map-flow.js +40 -42
- package/point-tracks/key-methods.js +1 -1
- package/point-tracks/plugin.js +137 -162
- package/programs/arrowfield/index.js +1 -1
- package/programs/arrowfield/logic.js +170 -62
- package/programs/arrowfield/object.js +33 -35
- package/programs/data2legend/density-to-legend.js +45 -21
- package/programs/data2legend/point-to-density-texture.js +52 -27
- package/programs/float2legendwithratio/index.js +1 -1
- package/programs/float2legendwithratio/logic.js +88 -42
- package/programs/float2legendwithratio/object.js +43 -46
- package/programs/globe-util/is-globe-moved.js +10 -11
- package/programs/globeshell/index.js +1 -1
- package/programs/globeshell/wiggle/index.js +1 -1
- package/programs/globeshell/wiggle/logic.js +191 -98
- package/programs/globeshell/wiggle/object.js +33 -35
- package/programs/helpers/blender/program.js +36 -19
- package/programs/helpers/fadeaway/index.js +1 -1
- package/programs/helpers/fadeaway/logic.js +35 -13
- package/programs/helpers/fadeaway/object.js +9 -10
- package/programs/helpers/index.js +1 -1
- package/programs/index.js +8 -8
- package/programs/line-on-globe/angled-line.js +91 -32
- package/programs/line-on-globe/circle-accurate-3d.js +82 -32
- package/programs/line-on-globe/circle-accurate-flat.js +108 -50
- package/programs/line-on-globe/circle-accurate.js +103 -33
- package/programs/line-on-globe/circle.js +97 -32
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +83 -33
- package/programs/line-on-globe/lines-color-instanced-flat.js +79 -34
- package/programs/line-on-globe/linestrip.js +111 -45
- package/programs/line-on-globe/naive-accurate-flexible.js +120 -50
- package/programs/line-on-globe/to-the-surface.js +58 -29
- package/programs/line-on-globe/util.js +1 -1
- package/programs/picking/pickable-renderer.js +117 -33
- package/programs/point-on-globe/element-globe-surface-glow.js +78 -38
- package/programs/point-on-globe/element-point-glow.js +103 -35
- package/programs/point-on-globe/square-pixel-point.js +76 -27
- package/programs/programcache.js +13 -13
- package/programs/rings/distancering/circleflatprogram.js +63 -21
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +156 -145
- package/programs/rings/distancering/circlepaddysharedbuffer.js +121 -197
- package/programs/rings/distancering/index.js +4 -4
- package/programs/rings/distancering/paddyflatprogram.js +73 -20
- package/programs/rings/distancering/paddyflatprogram2d.js +75 -22
- package/programs/rings/distancering/paddyflatprogram3d.js +73 -20
- package/programs/rings/partial-ring/piece-of-pie.js +137 -35
- package/programs/totems/camerauniformblock.js +64 -51
- package/programs/totems/canvas-webglobe-info.js +48 -40
- package/programs/totems/gpu-selection-uniform-block.js +44 -40
- package/programs/totems/index.js +1 -1
- package/programs/two-d/pixel-padding-for-compass.js +90 -29
- package/programs/util.js +6 -7
- package/programs/vectorfields/index.js +1 -1
- package/programs/vectorfields/logics/drawrectangleparticles.js +70 -29
- package/programs/vectorfields/logics/index.js +3 -3
- package/programs/vectorfields/logics/pixelbased.js +91 -35
- package/programs/vectorfields/logics/ubo.js +31 -25
- package/programs/vectorfields/pingpongbuffermanager.js +30 -34
- package/rangerings/index.js +4 -4
- package/rangerings/plugin.js +202 -258
- package/rangerings/rangeringangletext.js +108 -120
- package/rangerings/ring-account.js +52 -69
- package/shaders/fragment-toy/firework.js +55 -1
- package/shaders/fragment-toy/singularity.js +55 -1
- package/timetracks/adaptors-line-strip.js +26 -37
- package/timetracks/adaptors.js +47 -61
- package/timetracks/index.js +4 -4
- package/timetracks/plugin-line-strip.js +63 -71
- package/timetracks/plugin.js +69 -77
- package/timetracks/program-line-strip.js +296 -103
- package/timetracks/program.js +419 -113
- package/timetracks/programpoint-line-strip.js +97 -44
- package/timetracks/programpoint.js +90 -44
- package/util/account/bufferoffsetmanager.js +72 -95
- package/util/account/index.js +1 -1
- package/util/account/single-attribute-buffer-management/buffer-manager.js +44 -44
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +68 -94
- package/util/account/single-attribute-buffer-management/index.js +3 -3
- package/util/account/single-attribute-buffer-management/object-store.js +29 -30
- package/util/account/util.js +2 -4
- package/util/algorithms/search-binary.js +4 -4
- package/util/check/get.js +5 -5
- package/util/check/typecheck.js +13 -15
- package/util/geometry/index.js +9 -11
- package/util/gl-util/buffer/attribute-loader.js +8 -20
- package/util/gl-util/buffer/index.js +1 -1
- package/util/gl-util/draw-options/methods.js +8 -9
- package/util/gl-util/uniform-block/manager.js +67 -67
- package/util/heatwavedatamanager/datamanager.js +56 -116
- package/util/heatwavedatamanager/index.js +2 -2
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +37 -40
- package/util/heatwavedatamanager/pointcoordsmeta.js +9 -10
- package/util/index.js +6 -6
- package/util/interpolation/timetrack/index.js +1 -1
- package/util/interpolation/timetrack/timetrack-interpolator.js +27 -29
- package/util/interpolation/timetrack/web-worker-str.js +179 -1
- package/util/interpolation/timetrack/web-worker.js +4 -4
- package/util/jshelpers/data-filler.js +7 -7
- package/util/jshelpers/timefilters.js +7 -7
- package/util/picking/fence.js +7 -7
- package/util/picking/picker-displayer.js +46 -52
- package/util/programs/draw-texture-on-canvas.js +39 -21
- package/util/programs/shapesonglobe.js +104 -64
- package/util/programs/supersampletotextures.js +45 -39
- package/util/programs/texturetoglobe.js +98 -48
- package/util/shaderfunctions/geometrytransformations.js +322 -27
- package/util/shaderfunctions/nodata.js +7 -1
- package/util/shaderfunctions/noisefunctions.js +39 -9
- package/util/surface-line-data/arcs-to-cuts.js +20 -23
- package/util/webglobe/rasteroverlay.js +35 -37
- package/util/webglobjectbuilders.js +55 -60
- package/util/webglobjectbuilders1.js +48 -49
- package/waveparticles/adaptor.js +6 -7
- package/waveparticles/index.js +2 -2
- package/waveparticles/plugin.js +79 -84
- package/wind/imagetovectorfieldandmagnitude.js +15 -15
- package/wind/index.js +4 -4
- package/wind/plugin.js +453 -251
- package/wind/vectorfieldimage.js +5 -5
- package/write-text/attached-text-writer.js +46 -48
- package/write-text/context-text.js +51 -58
- package/write-text/context-text3.js +69 -74
|
@@ -1,4 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.firework = void 0;
|
|
4
|
-
exports.firework =
|
|
4
|
+
exports.firework = `
|
|
5
|
+
float firework(vec2 point_coord, float phase) {
|
|
6
|
+
float t = phase + 5.0;
|
|
7
|
+
float z = 6.0;
|
|
8
|
+
const int n = 53; // particle count
|
|
9
|
+
|
|
10
|
+
vec3 startColor = vec3(0.0, 0.64, 0.2);
|
|
11
|
+
vec3 endColor = vec3(0.06, 0.35, 0.85);
|
|
12
|
+
|
|
13
|
+
float startRadius = 0.84;
|
|
14
|
+
float endRadius = 1.6;
|
|
15
|
+
|
|
16
|
+
float power = 0.51;
|
|
17
|
+
float duration = 4.0;
|
|
18
|
+
|
|
19
|
+
vec2 v = z * (2.0 * point_coord - vec2(1.0) );
|
|
20
|
+
|
|
21
|
+
vec3 col = vec3(0.0);
|
|
22
|
+
vec2 pm = v.yx * 2.8;
|
|
23
|
+
|
|
24
|
+
float dMax = duration;
|
|
25
|
+
float evo = (sin(phase * 0.01 + 400.0) * 0.5 + 0.5) * 99.0 + 1.0;
|
|
26
|
+
|
|
27
|
+
float mb = 0.0;
|
|
28
|
+
float mbRadius = 0.0;
|
|
29
|
+
float sum = 0.0;
|
|
30
|
+
|
|
31
|
+
for(int i = 0; i < n; i++) {
|
|
32
|
+
float d = fract(t * power + 48934.4238 * sin(float(i / int(evo)) * 692.7398));
|
|
33
|
+
|
|
34
|
+
float a = 6.28 * float(i) / float(n);
|
|
35
|
+
float x = d * cos(a) * duration;
|
|
36
|
+
float y = d * sin(a) * duration;
|
|
37
|
+
|
|
38
|
+
float distRatio = d / dMax;
|
|
39
|
+
mbRadius = mix(startRadius, endRadius, distRatio);
|
|
40
|
+
|
|
41
|
+
vec2 p = v - vec2(x, y);
|
|
42
|
+
mb = mbRadius / dot(p, p);
|
|
43
|
+
|
|
44
|
+
sum += mb;
|
|
45
|
+
col = mix(col, mix(startColor, endColor, distRatio), mb / sum);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
sum /= float(n);
|
|
49
|
+
col = normalize(col) * sum;
|
|
50
|
+
sum = clamp(sum, 0.0, 0.4);
|
|
51
|
+
|
|
52
|
+
vec3 tex = vec3(1.0);
|
|
53
|
+
col *= smoothstep(tex, vec3(0.0), vec3(sum));
|
|
54
|
+
|
|
55
|
+
float alpha = sum * 2.5;
|
|
56
|
+
return clamp(alpha, 0.0, 1.0);
|
|
57
|
+
}
|
|
58
|
+
`;
|
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.singularity = void 0;
|
|
4
|
-
|
|
4
|
+
const singularity = `
|
|
5
|
+
|
|
6
|
+
vec3 palette(float d){
|
|
7
|
+
return mix(vec3(0.2, 0.7, 0.9), vec3(1.0, 0.0, 1.0), d);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
vec2 rotate(vec2 p, float a){
|
|
11
|
+
float c = cos(a);
|
|
12
|
+
float s = sin(a);
|
|
13
|
+
return p * mat2(c, s, -s, c);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
float map(vec3 p){
|
|
17
|
+
for (int i = 0; i < 4; ++i){
|
|
18
|
+
float t = u_phase * 0.2;
|
|
19
|
+
p.xz = rotate(p.xz, t);
|
|
20
|
+
p.xy = rotate(p.xy, t * 1.89);
|
|
21
|
+
p.xz = abs(p.xz);
|
|
22
|
+
p.xz -= 0.85;
|
|
23
|
+
}
|
|
24
|
+
return dot(sign(p), p) / 5.0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
vec4 rm(vec3 ro, vec3 rd){
|
|
28
|
+
float t = 0.0;
|
|
29
|
+
vec3 col = vec3(0.0);
|
|
30
|
+
float d;
|
|
31
|
+
for (float i = 0.0; i < 56.0; i++){
|
|
32
|
+
vec3 p = ro + rd * t;
|
|
33
|
+
d = map(p) * 0.5;
|
|
34
|
+
if (d < 0.02){
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
if (d > 100.0){
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
col += palette(length(p) * 0.1) / (400.0 * d);
|
|
41
|
+
t += d;
|
|
42
|
+
}
|
|
43
|
+
return vec4(col, 1.0 / d * 2.0 );
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
vec4 singularity(vec2 pointCoord, float u_phase) {
|
|
47
|
+
vec2 uv = (pointCoord - 0.5); // Normalized coordinates from gl_PointCoord
|
|
48
|
+
vec3 ro = vec3(0.0, 0.0, -50.0);
|
|
49
|
+
ro.xz = rotate(ro.xz, u_phase);
|
|
50
|
+
vec3 cf = normalize(-ro);
|
|
51
|
+
vec3 cs = normalize(cross(cf, vec3(0.0, 1.0, 0.0)));
|
|
52
|
+
vec3 cu = normalize(cross(cf, cs));
|
|
53
|
+
|
|
54
|
+
vec3 uuv = ro + cf * 3.0 + uv.x * cs + uv.y * cu;
|
|
55
|
+
vec3 rd = normalize(uuv - ro);
|
|
56
|
+
|
|
57
|
+
return rm(ro, rd);
|
|
58
|
+
}`;
|
|
5
59
|
exports.singularity = singularity;
|
|
@@ -1,19 +1,10 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.latLongToPixelXY = void 0;
|
|
13
4
|
exports.addCuttingPointLineStrip = addCuttingPointLineStrip;
|
|
14
5
|
exports.featuresToLineStringData = featuresToLineStringData;
|
|
15
6
|
exports.fillSliceOfFloat32ArrayLineStrip = fillSliceOfFloat32ArrayLineStrip;
|
|
16
|
-
|
|
7
|
+
const util_1 = require("../util");
|
|
17
8
|
Object.defineProperty(exports, "latLongToPixelXY", { enumerable: true, get: function () { return util_1.latLongToPixelXY; } });
|
|
18
9
|
/**
|
|
19
10
|
* @param {Array.<Array.<number>>} coordinates
|
|
@@ -34,44 +25,42 @@ function featuresToLineStringData(data) {
|
|
|
34
25
|
* feature[i].properties.messageTime are the timestamps of the points
|
|
35
26
|
*
|
|
36
27
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
for (
|
|
42
|
-
var feature = features_1[_i];
|
|
28
|
+
const features = data.features;
|
|
29
|
+
let size = data.features.length - 1;
|
|
30
|
+
let startTime = features[0].properties.messageTime[0];
|
|
31
|
+
let endTime = features[0].properties.messageTime[features[0].properties.messageTime.length - 1];
|
|
32
|
+
for (let feature of features) {
|
|
43
33
|
size += feature.properties.messageTime.length;
|
|
44
34
|
startTime = Math.min(startTime, feature.properties.messageTime[0]);
|
|
45
35
|
endTime = Math.max(endTime, feature.properties.messageTime[feature.properties.messageTime.length - 1]);
|
|
46
36
|
}
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
const array = new Float32Array(size * 9);
|
|
38
|
+
let offset = 0;
|
|
49
39
|
{
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
const feature = features[0];
|
|
41
|
+
const coordinates = feature.geometry.coordinates;
|
|
42
|
+
const timestamps = feature.properties.messageTime.map((time) => (time - startTime) / 1000);
|
|
53
43
|
offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
|
|
54
44
|
}
|
|
55
|
-
for (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
45
|
+
for (let i = 1; i < features.length; i++) {
|
|
46
|
+
const feature = features[i];
|
|
47
|
+
const coordinates = feature.geometry.coordinates;
|
|
48
|
+
const timestamps = feature.properties.messageTime.map((time) => (time - startTime) / 1000);
|
|
59
49
|
offset = addCuttingPointLineStrip(array, offset);
|
|
60
50
|
offset = fillSliceOfFloat32ArrayLineStrip(array, offset, coordinates, timestamps);
|
|
61
51
|
}
|
|
62
|
-
return { data: array, startTime
|
|
52
|
+
return { data: array, startTime, endTime };
|
|
63
53
|
}
|
|
64
|
-
function fillSliceOfFloat32ArrayLineStrip(floatArray, offset, coordinates, timestamps,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
floatArray.set(__spreadArray(__spreadArray([x, y, z, time], groupColorFunction(styleGroupName), true), [startTime, endTime], false), offset);
|
|
54
|
+
function fillSliceOfFloat32ArrayLineStrip(floatArray, offset, coordinates, timestamps, { styleGroupNameArray = null, groupColorFunction = () => [Math.random(), Math.random(), Math.random()] } = {}) {
|
|
55
|
+
const startTime = timestamps[0];
|
|
56
|
+
const endTime = timestamps[timestamps.length - 1];
|
|
57
|
+
for (let i = 0; i < coordinates.length; i++) {
|
|
58
|
+
const time = timestamps[i];
|
|
59
|
+
const coord = coordinates[i];
|
|
60
|
+
const styleGroupName = styleGroupNameArray ? styleGroupNameArray[i] : "default";
|
|
61
|
+
const { x, y } = (0, util_1.latLongToPixelXY)(coord[1], coord[0]);
|
|
62
|
+
const z = coord[2] ? coord[2] / 1000.0 : 0;
|
|
63
|
+
floatArray.set([x, y, z, time, ...groupColorFunction(styleGroupName), startTime, endTime], offset);
|
|
75
64
|
offset += 9;
|
|
76
65
|
}
|
|
77
66
|
return offset;
|
package/timetracks/adaptors.js
CHANGED
|
@@ -1,25 +1,16 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.Adaptor = void 0;
|
|
13
4
|
exports.fillSliceOfFloat32Array = fillSliceOfFloat32Array;
|
|
14
5
|
exports.createFloat32Array = createFloat32Array;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
const _latLongToPixelXY = util_1.latLongToPixelXY;
|
|
8
|
+
class Adaptor {
|
|
18
9
|
/**
|
|
19
10
|
* @param {Object.<string, Color>} groupColorMap
|
|
20
11
|
* @typedef {Array} Color | [r, g, b] | between 0-1
|
|
21
12
|
*/
|
|
22
|
-
|
|
13
|
+
constructor(groupColorMap) {
|
|
23
14
|
this._groupColorMap = groupColorMap;
|
|
24
15
|
}
|
|
25
16
|
/**
|
|
@@ -29,21 +20,18 @@ var Adaptor = /** @class */ (function () {
|
|
|
29
20
|
* @param {string} styleGroupPropertyName
|
|
30
21
|
* @returns {lineData} lineData for Plugin
|
|
31
22
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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];
|
|
23
|
+
fromGeoJson(geojsonObject, startTime, timePropertyName = "messageTime", styleGroupPropertyName = "styleGroup") {
|
|
24
|
+
const features = geojsonObject.features.filter(feature => feature.geometry.coordinates.length > 1);
|
|
25
|
+
const buffer = createFloat32Array(features.map(feature => feature.geometry.coordinates));
|
|
26
|
+
let offset = 0;
|
|
27
|
+
for (let feature of features) {
|
|
28
|
+
const coordinates = feature.geometry.coordinates;
|
|
29
|
+
const timestamps = feature.properties[timePropertyName].map((time) => (time - startTime) / 1000);
|
|
30
|
+
const styleGroupNameArray = feature.properties[styleGroupPropertyName];
|
|
43
31
|
offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
|
|
44
32
|
}
|
|
45
33
|
return buffer;
|
|
46
|
-
}
|
|
34
|
+
}
|
|
47
35
|
/**
|
|
48
36
|
* Inputs are lists of tracks. Each track is a list of coordinates, timestamps and styleGroupNames.
|
|
49
37
|
* @param {Array.<Array.<Array.<number>>>} coordinatesList | [ [ [lon, lat, z], [lon, lat, z], ...], ...
|
|
@@ -52,19 +40,18 @@ var Adaptor = /** @class */ (function () {
|
|
|
52
40
|
* @param {number} startTime | epoch time
|
|
53
41
|
* @returns {lineData} lineData for Plugin
|
|
54
42
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
for (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
43
|
+
fromLists(coordinatesList, timestampsList, colorGroupList, startTime) {
|
|
44
|
+
const buffer = createFloat32Array(coordinatesList);
|
|
45
|
+
let offset = 0;
|
|
46
|
+
for (let i = 0; i < coordinatesList.length; i++) {
|
|
47
|
+
const coordinates = coordinatesList[i];
|
|
48
|
+
const timestamps = timestampsList[i].map((time) => (time - startTime) / 1000);
|
|
49
|
+
const styleGroupNameArray = colorGroupList[i];
|
|
62
50
|
offset = fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, this._groupColorMap, buffer, offset);
|
|
63
51
|
}
|
|
64
52
|
return buffer;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
}());
|
|
53
|
+
}
|
|
54
|
+
}
|
|
68
55
|
exports.Adaptor = Adaptor;
|
|
69
56
|
/**
|
|
70
57
|
* @param {Array.<Array.<number>>} coordinates
|
|
@@ -80,39 +67,39 @@ exports.Adaptor = Adaptor;
|
|
|
80
67
|
*/
|
|
81
68
|
function fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, _groupColorMap, floatArray, offset) {
|
|
82
69
|
if (coordinates[0].length === 2) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
70
|
+
const startTime = timestamps[0];
|
|
71
|
+
const endTime = timestamps[timestamps.length - 1];
|
|
72
|
+
let prevPointData = null;
|
|
86
73
|
{ // first point
|
|
87
|
-
|
|
88
|
-
prevPointData =
|
|
74
|
+
const { x, y } = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]);
|
|
75
|
+
prevPointData = [x, y, 0, timestamps[0], ..._groupColorMap[styleGroupNameArray[0]]];
|
|
89
76
|
}
|
|
90
77
|
{ // middle points until end
|
|
91
|
-
for (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
floatArray.set(
|
|
96
|
-
prevPointData =
|
|
78
|
+
for (let i = 1; i < coordinates.length; i++) {
|
|
79
|
+
const time = timestamps[i];
|
|
80
|
+
const coord = coordinates[i];
|
|
81
|
+
const { x, y } = _latLongToPixelXY(coord[1], coord[0]);
|
|
82
|
+
floatArray.set([...prevPointData, startTime, endTime, x, y, 0, time, ..._groupColorMap[styleGroupNameArray[i]], startTime, endTime], offset);
|
|
83
|
+
prevPointData = [x, y, 0, time, ..._groupColorMap[styleGroupNameArray[i]]];
|
|
97
84
|
offset += 18;
|
|
98
85
|
}
|
|
99
86
|
}
|
|
100
87
|
}
|
|
101
88
|
else {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
89
|
+
const startTime = timestamps[0];
|
|
90
|
+
const endTime = timestamps[timestamps.length - 1];
|
|
91
|
+
let prevPointData = null;
|
|
105
92
|
{ // first point
|
|
106
|
-
|
|
107
|
-
prevPointData =
|
|
93
|
+
const { x, y } = _latLongToPixelXY(coordinates[0][1], coordinates[0][0]);
|
|
94
|
+
prevPointData = [x, y, coordinates[0][2] / 1000.0, timestamps[0], ..._groupColorMap[styleGroupNameArray[0]]];
|
|
108
95
|
}
|
|
109
96
|
{ // middle points until end
|
|
110
|
-
for (
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
floatArray.set(
|
|
115
|
-
prevPointData =
|
|
97
|
+
for (let i = 1; i < coordinates.length; i++) {
|
|
98
|
+
const time = timestamps[i];
|
|
99
|
+
const coord = coordinates[i];
|
|
100
|
+
const { x, y } = _latLongToPixelXY(coord[1], coord[0]);
|
|
101
|
+
floatArray.set([...prevPointData, startTime, endTime, x, y, coord[2] / 1000.0, time, ..._groupColorMap[styleGroupNameArray[i]], startTime, endTime], offset);
|
|
102
|
+
prevPointData = [x, y, coord[2] / 1000.0, time, ..._groupColorMap[styleGroupNameArray[i]]];
|
|
116
103
|
offset += 18;
|
|
117
104
|
}
|
|
118
105
|
}
|
|
@@ -126,11 +113,10 @@ function fillSliceOfFloat32Array(coordinates, timestamps, styleGroupNameArray, _
|
|
|
126
113
|
* Coordinates array is needed to calculate the size of the buffer.
|
|
127
114
|
*/
|
|
128
115
|
function createFloat32Array(coordinatesArray) {
|
|
129
|
-
|
|
130
|
-
for (
|
|
131
|
-
var coordinates = coordinatesArray_1[_i];
|
|
116
|
+
let filteredSize = 0;
|
|
117
|
+
for (let coordinates of coordinatesArray) {
|
|
132
118
|
filteredSize += coordinates.length * 2 - 2;
|
|
133
119
|
}
|
|
134
|
-
|
|
120
|
+
const array = new Float32Array(filteredSize * 9);
|
|
135
121
|
return array;
|
|
136
122
|
}
|
package/timetracks/index.js
CHANGED
|
@@ -4,15 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.latLongToPixelXY = exports.fillSliceOfFloat32ArrayLineStrip = exports.featuresToLineStringData = exports.addCuttingPointLineStrip = exports.TimeTracksLineStrip = exports.TimeTracks = exports.createFloat32Array = exports.fillSliceOfFloat32Array = exports.Adaptor = void 0;
|
|
7
|
-
|
|
7
|
+
const plugin_1 = __importDefault(require("./plugin"));
|
|
8
8
|
exports.TimeTracks = plugin_1.default;
|
|
9
|
-
|
|
9
|
+
const adaptors_1 = require("./adaptors");
|
|
10
10
|
Object.defineProperty(exports, "Adaptor", { enumerable: true, get: function () { return adaptors_1.Adaptor; } });
|
|
11
11
|
Object.defineProperty(exports, "fillSliceOfFloat32Array", { enumerable: true, get: function () { return adaptors_1.fillSliceOfFloat32Array; } });
|
|
12
12
|
Object.defineProperty(exports, "createFloat32Array", { enumerable: true, get: function () { return adaptors_1.createFloat32Array; } });
|
|
13
|
-
|
|
13
|
+
const plugin_line_strip_1 = __importDefault(require("./plugin-line-strip"));
|
|
14
14
|
exports.TimeTracksLineStrip = plugin_line_strip_1.default;
|
|
15
|
-
|
|
15
|
+
const adaptors_line_strip_1 = require("./adaptors-line-strip");
|
|
16
16
|
Object.defineProperty(exports, "addCuttingPointLineStrip", { enumerable: true, get: function () { return adaptors_line_strip_1.addCuttingPointLineStrip; } });
|
|
17
17
|
Object.defineProperty(exports, "featuresToLineStringData", { enumerable: true, get: function () { return adaptors_line_strip_1.featuresToLineStringData; } });
|
|
18
18
|
Object.defineProperty(exports, "fillSliceOfFloat32ArrayLineStrip", { enumerable: true, get: function () { return adaptors_line_strip_1.fillSliceOfFloat32ArrayLineStrip; } });
|