@pirireis/webglobeplugins 1.0.2 → 1.0.3
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.ts → angle-calculation.js} +14 -18
- package/Math/{arc-cdf-points.ts → arc-cdf-points.js} +272 -329
- package/Math/{arc-generate-points-exponantial.ts → arc-generate-points-exponantial.js} +254 -299
- package/Math/{arc.ts → arc.js} +292 -421
- package/Math/bounds/line-bbox.js +186 -225
- package/Math/{circle-cdf-points.ts → circle-cdf-points.js} +78 -143
- package/Math/{circle.ts → circle.js} +33 -49
- package/Math/{constants.ts → constants.js} +4 -12
- package/Math/contour/{quadtreecontours.ts → quadtreecontours.js} +300 -371
- package/Math/contour/quadtreecontours1.js +298 -336
- package/Math/{finite-line-2d.ts → finite-line-2d.js} +58 -68
- package/Math/{haversine.ts → haversine.js} +22 -33
- package/Math/index.js +1 -0
- package/Math/juction/{arc-plane.ts → arc-plane.js} +143 -203
- package/Math/juction/{line-sphere.ts → line-sphere.js} +22 -32
- package/Math/juction/{plane-plane.ts → plane-plane.js} +53 -62
- package/Math/{line.ts → line.js} +52 -84
- package/Math/matrix4.js +1 -0
- package/Math/{methods.ts → methods.js} +126 -182
- package/Math/{plane.ts → plane.js} +56 -92
- package/Math/{quaternion.ts → quaternion.js} +106 -128
- package/Math/templete-shapes/{grid-visually-equal.ts → grid-visually-equal.js} +65 -118
- package/Math/tessellation/constants.js +1 -0
- package/Math/tessellation/{methods.ts → methods.js} +49 -79
- package/Math/tessellation/{nearest-value-padding.ts → nearest-value-padding.js} +112 -147
- package/Math/tessellation/{spherical-triangle-area.ts → spherical-triangle-area.js} +99 -127
- package/Math/tessellation/{tile-merger.ts → tile-merger.js} +429 -578
- package/Math/tessellation/{triangle-tessellation.ts → triangle-tessellation.js} +386 -533
- package/Math/tessellation/types.js +1 -0
- package/Math/types.js +1 -0
- package/Math/utils.js +2 -3
- package/Math/{vec3.ts → vec3.js} +155 -227
- package/Math/{xyz-tile.ts → xyz-tile.js} +18 -26
- package/algorithms/search-binary.js +16 -14
- package/altitude-locator/adaptors.js +1 -0
- package/altitude-locator/keymethod.js +1 -0
- package/altitude-locator/plugin.js +344 -445
- package/altitude-locator/types.js +21 -26
- package/compass-rose/compass-rose-padding-flat.js +230 -274
- package/compass-rose/{compass-text-writer.ts → compass-text-writer.js} +155 -210
- package/compass-rose/index.js +3 -3
- package/{constants.ts → constants.js} +6 -8
- package/heatwave/datamanager.js +149 -168
- package/heatwave/heatwave.js +206 -261
- package/heatwave/index.js +5 -5
- package/heatwave/isobar.js +303 -340
- package/heatwave/{texture-point-sampler.ts → texture-point-sampler.js} +187 -220
- package/investigation-tools/draw/tiles/adapters.js +67 -0
- package/investigation-tools/draw/tiles/{tiles.ts → tiles.js} +128 -162
- package/jest.config.js +7 -6
- package/package.json +1 -1
- package/pin/pin-object-array1.js +300 -381
- package/pin/pin-point-totem1.js +60 -77
- package/programs/arrowfield/arrow-field.js +60 -89
- package/programs/arrowfield/logic.js +141 -173
- package/programs/data2legend/density-to-legend.js +68 -86
- package/programs/data2legend/point-to-density-texture.js +67 -84
- package/programs/float2legendwithratio/index.js +2 -3
- package/programs/float2legendwithratio/logic.js +118 -144
- package/programs/float2legendwithratio/object.js +104 -141
- package/programs/helpers/blender.js +58 -73
- package/programs/helpers/{fadeaway.ts → fadeaway.js} +60 -73
- package/programs/index.js +20 -19
- package/programs/line-on-globe/circle-accurate-3d.js +85 -112
- package/programs/line-on-globe/circle-accurate-flat.js +148 -200
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +102 -134
- package/programs/line-on-globe/index.js +1 -0
- package/programs/line-on-globe/lines-color-instanced-flat.js +80 -99
- package/programs/line-on-globe/linestrip/data.js +4 -0
- package/programs/line-on-globe/linestrip/{linestrip.ts → linestrip.js} +93 -152
- package/programs/line-on-globe/{naive-accurate-flexible.ts → naive-accurate-flexible.js} +126 -175
- package/programs/line-on-globe/util.js +5 -8
- package/programs/picking/pickable-polygon-renderer.js +98 -129
- package/programs/picking/pickable-renderer.js +98 -130
- package/programs/point-on-globe/element-globe-surface-glow.js +93 -122
- package/programs/point-on-globe/element-point-glow.js +80 -114
- package/programs/point-on-globe/square-pixel-point.js +121 -139
- package/programs/polygon-on-globe/{texture-dem-triangles.ts → texture-dem-triangles.js} +163 -207
- package/programs/{programcache.ts → programcache.js} +126 -134
- package/programs/rings/index.js +1 -1
- package/programs/rings/partial-ring/{piece-of-pie.ts → piece-of-pie.js} +152 -222
- package/programs/totems/camera-totem-attactment-interface.js +1 -0
- package/programs/totems/{camerauniformblock.ts → camerauniformblock.js} +225 -310
- package/programs/totems/{canvas-webglobe-info.ts → canvas-webglobe-info.js} +132 -147
- package/programs/totems/{dem-textures-manager.ts → dem-textures-manager.js} +257 -360
- package/programs/totems/{globe-changes.ts → globe-changes.js} +59 -79
- package/programs/totems/gpu-selection-uniform-block.js +99 -127
- package/programs/totems/{index.ts → index.js} +2 -2
- package/programs/two-d/pixel-padding-for-compass.js +87 -101
- package/programs/util.js +14 -19
- package/programs/vectorfields/logics/{constants.ts → constants.js} +4 -5
- package/programs/vectorfields/logics/{drawrectangleparticles.ts → drawrectangleparticles.js} +80 -115
- package/programs/vectorfields/logics/index.js +2 -4
- package/programs/vectorfields/logics/particle-ubo.js +16 -0
- package/programs/vectorfields/logics/{pixelbased.ts → pixelbased.js} +86 -115
- package/programs/vectorfields/logics/ubo.js +51 -57
- package/programs/vectorfields/{pingpongbuffermanager.ts → pingpongbuffermanager.js} +99 -113
- package/range-tools-on-terrain/bearing-line/{adapters.ts → adapters.js} +114 -154
- package/range-tools-on-terrain/bearing-line/{plugin.ts → plugin.js} +457 -569
- package/range-tools-on-terrain/bearing-line/types.js +1 -0
- package/range-tools-on-terrain/circle-line-chain/{adapters.ts → adapters.js} +85 -104
- package/range-tools-on-terrain/circle-line-chain/{chain-list-map.ts → chain-list-map.js} +382 -446
- package/range-tools-on-terrain/circle-line-chain/{plugin.ts → plugin.js} +464 -607
- package/range-tools-on-terrain/circle-line-chain/types.js +1 -0
- package/range-tools-on-terrain/range-ring/{adapters.ts → adapters.js} +93 -114
- package/range-tools-on-terrain/range-ring/{enum.ts → enum.js} +2 -2
- package/range-tools-on-terrain/range-ring/{plugin.ts → plugin.js} +377 -444
- package/range-tools-on-terrain/range-ring/rangeringangletext.js +331 -0
- package/range-tools-on-terrain/range-ring/types.js +9 -0
- package/semiplugins/interface.js +1 -0
- package/semiplugins/lightweight/{line-plugin.ts → line-plugin.js} +221 -342
- package/semiplugins/lightweight/{piece-of-pie-plugin.ts → piece-of-pie-plugin.js} +200 -275
- package/semiplugins/shape-on-terrain/{arc-plugin.ts → arc-plugin.js} +481 -616
- package/semiplugins/shape-on-terrain/{circle-plugin.ts → circle-plugin.js} +444 -588
- package/semiplugins/shape-on-terrain/{padding-1-degree.ts → padding-1-degree.js} +539 -713
- package/semiplugins/shape-on-terrain/terrain-polygon/{adapters.ts → adapters.js} +55 -69
- package/semiplugins/shape-on-terrain/terrain-polygon/data/{cache.ts → cache.js} +102 -149
- package/semiplugins/shape-on-terrain/terrain-polygon/data/{index-polygon-map.ts → index-polygon-map.js} +45 -58
- package/semiplugins/shape-on-terrain/terrain-polygon/data/{manager.ts → manager.js} +4 -4
- package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +177 -196
- package/semiplugins/shape-on-terrain/terrain-polygon/data/{polygon-to-triangles.ts → polygon-to-triangles.js} +100 -144
- package/semiplugins/shape-on-terrain/terrain-polygon/data/{random.ts → random.js} +121 -165
- package/semiplugins/shape-on-terrain/terrain-polygon/data/types.js +1 -0
- package/semiplugins/shape-on-terrain/terrain-polygon/data/{worker-contact.ts → worker-contact.js} +63 -81
- package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +125 -146
- package/semiplugins/shape-on-terrain/terrain-polygon/{terrain-polygon.ts → terrain-polygon.js} +219 -265
- package/semiplugins/shape-on-terrain/terrain-polygon/types.js +8 -0
- package/semiplugins/shell/bbox-renderer/index.js +2 -0
- package/semiplugins/shell/bbox-renderer/{logic.ts → logic.js} +209 -273
- package/semiplugins/shell/bbox-renderer/object.js +75 -0
- package/semiplugins/type.js +1 -0
- package/semiplugins/utility/{container-plugin.ts → container-plugin.js} +94 -126
- package/semiplugins/utility/{object-pass-container-plugin.ts → object-pass-container-plugin.js} +80 -101
- package/shaders/fragment-toy/firework.js +1 -1
- package/shaders/fragment-toy/singularity.js +2 -5
- package/tracks/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
- package/tracks/point-heat-map/index.js +1 -0
- package/tracks/point-heat-map/plugin-webworker.js +121 -148
- package/tracks/point-heat-map/point-to-heat-map-flow.js +121 -150
- package/tracks/point-tracks/key-methods.js +2 -3
- package/tracks/point-tracks/plugin.js +401 -487
- package/tracks/timetracks/adaptors-line-strip.js +65 -79
- package/tracks/timetracks/plugin-line-strip.js +240 -295
- package/tracks/timetracks/program-line-strip.js +411 -495
- package/tracks/timetracks/programpoint-line-strip.js +109 -137
- package/types.js +19 -0
- package/util/account/bufferoffsetmanager.js +176 -209
- package/util/account/create-buffermap-orchastration.js +39 -0
- package/util/account/index.js +3 -6
- package/util/account/single-attribute-buffer-management/{buffer-manager.ts → buffer-manager.js} +119 -151
- package/util/account/single-attribute-buffer-management/{buffer-orchestrator.ts → buffer-orchestrator.js} +212 -238
- package/util/account/single-attribute-buffer-management/{buffer-orchestrator1.ts → buffer-orchestrator1.js} +159 -184
- package/util/account/single-attribute-buffer-management/{index.ts → index.js} +4 -11
- package/util/account/single-attribute-buffer-management/{object-store.ts → object-store.js} +55 -76
- package/util/account/single-attribute-buffer-management/types.js +1 -0
- package/util/account/util.js +18 -22
- package/util/algorithms/index.js +1 -0
- package/util/algorithms/search-binary.js +25 -26
- package/util/build-strategy/{static-dynamic.ts → static-dynamic.js} +41 -50
- package/util/check/index.js +1 -0
- package/util/check/typecheck.js +66 -0
- package/util/{frame-counter-trigger.ts → frame-counter-trigger.js} +84 -99
- package/util/geometry/{index.ts → index.js} +121 -155
- package/util/gl-util/buffer/{attribute-loader.ts → attribute-loader.js} +62 -84
- package/util/gl-util/buffer/{index.ts → index.js} +3 -6
- package/util/gl-util/draw-options/{methods.ts → methods.js} +32 -47
- package/util/gl-util/uniform-block/{manager.ts → manager.js} +200 -232
- package/util/{globe-default-gl-states.ts → globe-default-gl-states.js} +4 -5
- package/util/{helper-methods.ts → helper-methods.js} +8 -9
- package/util/index.js +10 -9
- package/util/interpolation/index.js +1 -0
- package/util/interpolation/timetrack/index.js +2 -9
- package/util/interpolation/timetrack/timetrack-interpolator.js +79 -94
- package/util/interpolation/timetrack/web-worker.js +46 -51
- package/util/picking/{fence.ts → fence.js} +43 -47
- package/util/picking/{picker-displayer.ts → picker-displayer.js} +176 -226
- package/util/programs/draw-from-pixel-coords.js +164 -201
- package/util/programs/{draw-texture-on-canvas.ts → draw-texture-on-canvas.js} +69 -91
- package/util/programs/supersampletotextures.js +97 -130
- package/util/programs/texturetoglobe.js +128 -153
- package/util/shaderfunctions/{geometrytransformations.ts → geometrytransformations.js} +44 -106
- package/util/shaderfunctions/index.js +2 -2
- package/util/shaderfunctions/nodata.js +2 -4
- package/util/shaderfunctions/noisefunctions.js +7 -10
- package/util/{webglobjectbuilders.ts → webglobjectbuilders.js} +358 -446
- package/vectorfield/arrowfield/adaptor.js +11 -11
- package/vectorfield/arrowfield/index.js +3 -3
- package/vectorfield/arrowfield/plugin.js +83 -128
- package/vectorfield/waveparticles/adaptor.js +15 -16
- package/vectorfield/waveparticles/index.js +3 -3
- package/vectorfield/waveparticles/{plugin.ts → plugin.js} +415 -506
- package/vectorfield/wind/adapters/{image-to-fields.ts → image-to-fields.js} +61 -74
- package/vectorfield/wind/adapters/types.js +1 -0
- package/vectorfield/wind/{imagetovectorfieldandmagnitude.ts → imagetovectorfieldandmagnitude.js} +53 -78
- package/vectorfield/wind/index.js +5 -5
- package/vectorfield/wind/{plugin-persistant copy.ts → plugin-persistant copy.js } +364 -461
- package/vectorfield/wind/{plugin-persistant.ts → plugin-persistant.js} +375 -483
- package/vectorfield/wind/plugin.js +685 -883
- package/vectorfield/wind/vectorfieldimage.js +23 -27
- package/write-text/{context-text-bulk.ts → context-text-bulk.js} +200 -285
- package/write-text/context-text3.js +167 -0
- package/write-text/{context-text4.ts → context-text4.js} +146 -231
- package/write-text/context-textDELETE.js +94 -125
- package/write-text/objectarraylabels/{index.ts → index.js} +2 -2
- package/write-text/objectarraylabels/objectarraylabels.js +200 -247
- package/Math/matrix4.ts +0 -0
- package/Math/mesh/mapbox-delaunay.d.ts +0 -74
- package/Math/roadmap.md +0 -10
- package/Math/tessellation/constants.ts +0 -1
- package/Math/tessellation/roadmap.md +0 -48
- package/Math/tessellation/types.ts +0 -1
- package/Math/types.ts +0 -68
- package/investigation-tools/draw/tiles/adapters.ts +0 -133
- package/programs/line-on-globe/linestrip/data.ts +0 -29
- package/programs/polygon-on-globe/roadmap.md +0 -8
- package/programs/totems/camera-totem-attactment-interface.ts +0 -4
- package/programs/vectorfields/logics/particle-ubo.ts +0 -23
- package/publish.bat +0 -62
- package/range-tools-on-terrain/bearing-line/types.ts +0 -65
- package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
- package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
- package/range-tools-on-terrain/range-ring/types.ts +0 -30
- package/semiplugins/interface.ts +0 -14
- package/semiplugins/shape-on-terrain/goal.md +0 -12
- package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +0 -20
- package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +0 -209
- package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +0 -5
- package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +0 -37
- package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +0 -90
- package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +0 -69
- package/semiplugins/shell/bbox-renderer/index.ts +0 -2
- package/semiplugins/shell/bbox-renderer/object.ts +0 -129
- package/semiplugins/type.ts +0 -8
- package/terrain-plugin.mmd +0 -83
- package/tests/Math/arc-sampling-test.js +0 -367
- package/tests/Math/arc-sampling-test.ts +0 -429
- package/tests/Math/arc.test.ts +0 -77
- package/tests/Math/junction/arc-limit.test.ts +0 -7
- package/tests/Math/junction/arc-plane-points.test.ts +0 -196
- package/tests/Math/junction/arc-plane.test.ts +0 -172
- package/tests/Math/junction/line-sphere.test.ts +0 -127
- package/tests/Math/junction/plane-plane.test.ts +0 -91
- package/tests/Math/plane-test.ts +0 -17
- package/tests/Math/plane.test.ts +0 -43
- package/tests/Math/vec3.test.ts +0 -33
- package/tracks/point-heat-map/readme.md +0 -15
- package/tracks/timetracks/readme.md +0 -1
- package/tsconfig.json +0 -22
- package/types/@pirireis/webglobe.d.ts +0 -102
- package/types/delaunator.d.ts +0 -40
- package/types/earcut.d.ts +0 -11
- package/types/rbush.d.ts +0 -57
- package/types.ts +0 -319
- package/util/account/create-buffermap-orchastration.ts +0 -85
- package/util/account/single-attribute-buffer-management/types.ts +0 -43
- package/util/check/typecheck.ts +0 -74
- package/vectorfield/wind/adapters/types.ts +0 -12
- package/write-text/context-text3.ts +0 -252
- package/write-text/objectarraylabels/objectarraylabels.d.ts +0 -72
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Color } from "../../../../types";
|
|
2
|
-
import { TriangleTessellationMeta } from "../../../../Math/tessellation/triangle-tessellation";
|
|
3
|
-
import { PolygonPluginInput } from "../types";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
type CatchedType = {
|
|
8
|
-
polygon: PolygonPluginInput,
|
|
9
|
-
offset: number,
|
|
10
|
-
tessellationMeta: TriangleTessellationMeta,
|
|
11
|
-
minX: number,
|
|
12
|
-
minY: number,
|
|
13
|
-
maxX: number,
|
|
14
|
-
maxY: number,
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
type CacheTriangle = {
|
|
19
|
-
parentKey: string;
|
|
20
|
-
tessellationMeta: TriangleTessellationMeta;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
type Cache = Map<string,
|
|
25
|
-
{
|
|
26
|
-
triangles: CacheTriangle[],
|
|
27
|
-
properties: PolygonProperties
|
|
28
|
-
}>;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
type PolygonProperties = {
|
|
33
|
-
color: Color,
|
|
34
|
-
height: number,
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export { CacheTriangle, Cache, PolygonProperties, CatchedType };
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# Requirements
|
|
2
|
-
|
|
3
|
-
- webgl program
|
|
4
|
-
- interaction with globe elevation api
|
|
5
|
-
- mesh algorithm
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# WEBGL PROGRAM
|
|
9
|
-
|
|
10
|
-
Triangles with Webgl picking. Program can have color hightlighting too for selected item.
|
|
11
|
-
|
|
12
|
-
# Interation with Globe Elevation API
|
|
13
|
-
|
|
14
|
-
Elevation resolution is based on camera and focus positions.
|
|
15
|
-
Instead of blindly ask for elevation of coordinates, what else can be done?
|
|
16
|
-
|
|
17
|
-
## 1. Server side solution
|
|
18
|
-
A detailed version can be requested from server. Server create mesh. The mesh preferably high resolution.
|
|
19
|
-
Therefore zoom level and camera information is no longer parameters.
|
|
20
|
-
|
|
21
|
-
On edit mod the change is on fly. Server probably cannot catch the speed of spontanius editting. On this case less detailed mesh can be
|
|
22
|
-
processed be client side. One edit finished, client asks for detailed final version.
|
|
23
|
-
|
|
24
|
-
**Criterias:** Visual compatibility with Globe surface, Performance, Memory, Web Traffic(maybe opening a mesh server at backand)
|
|
25
|
-
|
|
26
|
-
# Mesh Algorithm & Data Structure
|
|
27
|
-
|
|
28
|
-
olygon to elevation mesh
|
|
29
|
-
|
|
30
|
-
Data structure would be points and indexes.
|
|
31
|
-
|
|
32
|
-
Adaptors employed to convert user input to desired ınput.
|
|
33
|
-
|
|
34
|
-
Flat version of mesh can be build on front end if possible
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
***********
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
[-] Mesh algorthm concave
|
|
42
|
-
[-] triangle plugin with gpu picking. input ( key, mesh (Variative size ?) , color,)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
--------
|
|
46
|
-
|
|
47
|
-
# Loading DEM to texture array
|
|
48
|
-
|
|
49
|
-
There is 6 Tiles with dem in an instance of time.
|
|
50
|
-
|
|
51
|
-
These 6 tiles can be loaded to gpu as texture[6].
|
|
52
|
-
And 6 bbox can be loaded as vec4[6] rgba -> ur lr rl ll
|
|
53
|
-
Each vertex finds which tile they are blonged to, and calculate dem from points relative position to their bbox
|
|
54
|
-
If a vertex is not inside of a tile elevation is Zero.
|
|
55
|
-
|
|
56
|
-
****
|
|
57
|
-
|
|
58
|
-
Taking interseption between points of six tile ( 5 * 5 * 6 ) and polygons will give necessery points.
|
|
59
|
-
|
|
60
|
-
In theory, That way we can contract polygon mesh that fits the Elevation model perfectly with minimal count of points.
|
|
61
|
-
|
|
62
|
-
{
|
|
63
|
-
If 'tiles' are not spontaninus. ve can predefine meshes acounding to current zoom level. If zoom level changes the shapes inside visibility bbox will be updated.
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
Hasana sorular
|
|
69
|
-
|
|
70
|
-
Ekrana yüklenen ekrandaki yükseklikler merkez baz alınarak 6 tane
|
|
71
|
-
|
|
72
|
-
5 * 5 * 6 ?
|
|
73
|
-
|
|
74
|
-
bir anda sadece 6 tile in yükseikli ile mi çizim yapılmakta ?
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
GLOBA bunları bboxları ile alabileceğim bir method çıkabilir miyiz?
|
|
78
|
-
|
|
79
|
-
Dönen istekleri alabileceğim
|
|
80
|
-
|
|
81
|
-
--
|
|
82
|
-
|
|
83
|
-
Hasan ile konuştum.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
mesh
|
|
89
|
-
|
|
90
|
-
try mapbox delunay
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* @module WebGLobePlugins/SemiPlugins/ShapeOnTerrain/TerrainPolygon
|
|
4
|
-
* @description
|
|
5
|
-
* Type definitions for TerrainPolygon plugin
|
|
6
|
-
* /
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { Color } from "../../../types";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @type PolygonInput
|
|
15
|
-
* @description
|
|
16
|
-
* Represents the input structure for defining a polygon on terrain.
|
|
17
|
-
* Position starts with the shell vertices followed by hole vertices.
|
|
18
|
-
* @param vertices - A flat array of vertex coordinates (e.g., [x1, y1, x2, y2, ...]).
|
|
19
|
-
* @param holes - An array of indices indicating the start of each hole in the positions array.
|
|
20
|
-
* @param dimensions - The number of dimensions for each vertex (typically 2 for 2D coordinates).
|
|
21
|
-
*/
|
|
22
|
-
export type PolygonPluginInput = {
|
|
23
|
-
key: string;
|
|
24
|
-
geometry: { vertices: number[]; holes: number[] }[]
|
|
25
|
-
color?: Color;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export type TerrainPolygonOptions = {
|
|
29
|
-
pickable: boolean;
|
|
30
|
-
variativeColorsOn: boolean;
|
|
31
|
-
defaultColor: Color;
|
|
32
|
-
pickedColor: Color;
|
|
33
|
-
opacity: number;
|
|
34
|
-
showTesselationPoints: boolean;
|
|
35
|
-
pickedCallback?: (polygon: PolygonPluginInput | null) => void;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export type PolygonInput = PolygonPluginInput & { index: number };
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
export type TrianglesMiddleData = {
|
|
43
|
-
key: string;
|
|
44
|
-
vertices: number[];
|
|
45
|
-
indices: number[];
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export type BBOXZOOMDATA = {
|
|
49
|
-
minX: number,
|
|
50
|
-
minY: number,
|
|
51
|
-
maxX: number,
|
|
52
|
-
maxY: number,
|
|
53
|
-
zoom: number
|
|
54
|
-
}[];
|
|
55
|
-
|
|
56
|
-
export type WorkerInput = {
|
|
57
|
-
pickableState: boolean | undefined;
|
|
58
|
-
variativeColorsOn: boolean | undefined;
|
|
59
|
-
bboxes: BBOXZOOMDATA | null | undefined;
|
|
60
|
-
insertDeleteQueue: (PolygonPluginInput | string)[] | null | undefined;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export type WorkerOutput = {
|
|
64
|
-
vec3s: Float32Array;
|
|
65
|
-
indices: Uint32Array;
|
|
66
|
-
longLats: Float32Array;
|
|
67
|
-
pickIndices: Float32Array | null;
|
|
68
|
-
variativeColors: Float32Array | null;
|
|
69
|
-
};
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { BBOXGlobeShellProgramCache } from './logic';
|
|
2
|
-
import { BBOXGlobeShellProgram, ShellBlockManager } from './logic';
|
|
3
|
-
import { Globe } from '../../../types';
|
|
4
|
-
|
|
5
|
-
interface BBOXConfig {
|
|
6
|
-
minLon?: number;
|
|
7
|
-
maxLon?: number;
|
|
8
|
-
minLat?: number;
|
|
9
|
-
maxLat?: number;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
interface WiggleConfig {
|
|
13
|
-
wiggleSpeed?: number | null;
|
|
14
|
-
wiggleInKM?: number | null;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface BBOXGlobeShellOptions {
|
|
18
|
-
minLon?: number;
|
|
19
|
-
maxLon?: number;
|
|
20
|
-
minLat?: number;
|
|
21
|
-
maxLat?: number;
|
|
22
|
-
height?: number;
|
|
23
|
-
u_opacity?: number;
|
|
24
|
-
wiggleInKM?: number;
|
|
25
|
-
wiggleSpeed?: number;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export class BBOXGlobeShell {
|
|
29
|
-
public readonly gl: WebGL2RenderingContext;
|
|
30
|
-
public readonly globe: Globe;
|
|
31
|
-
public readonly program: BBOXGlobeShellProgram;
|
|
32
|
-
public readonly shellBlockManager: ShellBlockManager;
|
|
33
|
-
public readonly update: ShellBlockManager['update'];
|
|
34
|
-
|
|
35
|
-
private innerTime: number;
|
|
36
|
-
private texture!: WebGLTexture;
|
|
37
|
-
private bbox!: Required<BBOXConfig>;
|
|
38
|
-
private wiggleInKM: number;
|
|
39
|
-
private wiggleSpeed: number;
|
|
40
|
-
|
|
41
|
-
constructor(
|
|
42
|
-
gl: WebGL2RenderingContext,
|
|
43
|
-
globe: Globe,
|
|
44
|
-
{
|
|
45
|
-
minLon = -180,
|
|
46
|
-
maxLon = 180,
|
|
47
|
-
minLat = -90,
|
|
48
|
-
maxLat = 90,
|
|
49
|
-
height = 0,
|
|
50
|
-
u_opacity = 1,
|
|
51
|
-
wiggleInKM = 0,
|
|
52
|
-
wiggleSpeed = 0,
|
|
53
|
-
}: BBOXGlobeShellOptions = {}
|
|
54
|
-
) {
|
|
55
|
-
this.gl = gl;
|
|
56
|
-
this.globe = globe;
|
|
57
|
-
this.program = BBOXGlobeShellProgramCache.get(globe);
|
|
58
|
-
this.shellBlockManager = this.program.getShellBlockBufferManager();
|
|
59
|
-
this.update = this.shellBlockManager.update.bind(this.shellBlockManager);
|
|
60
|
-
this.innerTime = 0;
|
|
61
|
-
this.wiggleInKM = wiggleInKM;
|
|
62
|
-
this.wiggleSpeed = wiggleSpeed;
|
|
63
|
-
this.setBBox({ minLon, maxLon, minLat, maxLat });
|
|
64
|
-
this.setOpacity(u_opacity);
|
|
65
|
-
this.setHeight(height);
|
|
66
|
-
this.setWiggle({ wiggleSpeed, wiggleInKM });
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
public setTexture(texture: WebGLTexture): void {
|
|
70
|
-
this.texture = texture;
|
|
71
|
-
this.globe.DrawRender();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public setHeight(height: number): void {
|
|
75
|
-
this.shellBlockManager.update({ height });
|
|
76
|
-
this.globe.DrawRender();
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
public setOpacity(opacity: number): void {
|
|
80
|
-
this.shellBlockManager.update({ opacity });
|
|
81
|
-
this.globe.DrawRender();
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
public setBBox({ minLon = -180, maxLon = 180, minLat = -90, maxLat = 90 }: BBOXConfig = {}): void {
|
|
85
|
-
this.bbox = { minLon, maxLon, minLat, maxLat };
|
|
86
|
-
// x
|
|
87
|
-
const horOffset = (minLon) * Math.PI / 180;
|
|
88
|
-
const horSize = (maxLon - minLon) * Math.PI / 180;
|
|
89
|
-
// y
|
|
90
|
-
const vertOffset = (90 - maxLat) * Math.PI / 180;
|
|
91
|
-
const vertSize = (maxLat - minLat) * Math.PI / 180;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.shellBlockManager.update(
|
|
95
|
-
{
|
|
96
|
-
gridSizeRad: [horSize, vertSize],
|
|
97
|
-
gridOffsetRad: [horOffset, vertOffset]
|
|
98
|
-
});
|
|
99
|
-
this.globe.DrawRender();
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
public setWiggle({ wiggleSpeed = null, wiggleInKM = null }: WiggleConfig): void {
|
|
103
|
-
if (wiggleInKM !== null) this.wiggleInKM = wiggleInKM;
|
|
104
|
-
if (wiggleSpeed !== null) this.wiggleSpeed = wiggleSpeed;
|
|
105
|
-
this.shellBlockManager.update({ wiggleInKM });
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* @param csRenderPass - modelView, projection, translate, mapWH, scrWH, should be set before calling this function
|
|
110
|
-
*/
|
|
111
|
-
public draw(csRenderPass?: any): void {
|
|
112
|
-
this.program.draw(
|
|
113
|
-
this.texture,
|
|
114
|
-
this.shellBlockManager,
|
|
115
|
-
false,
|
|
116
|
-
csRenderPass
|
|
117
|
-
);
|
|
118
|
-
if (this.wiggleInKM > 0 && this.wiggleSpeed > 0) {
|
|
119
|
-
this.innerTime += this.wiggleSpeed;
|
|
120
|
-
this.shellBlockManager.update({ innerTime: this.innerTime });
|
|
121
|
-
this.globe.DrawRender();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
public free(): void {
|
|
126
|
-
BBOXGlobeShellProgramCache.release(this.globe);
|
|
127
|
-
this.shellBlockManager.free();
|
|
128
|
-
}
|
|
129
|
-
}
|
package/semiplugins/type.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Color } from "../types";
|
|
2
|
-
|
|
3
|
-
export type PluginStyleOptions = {
|
|
4
|
-
variativeColorsOn?: boolean; // If true, the color will be variative based on the circle's radius.
|
|
5
|
-
defaultColor: Color;
|
|
6
|
-
defaultHeightFromGroundIn3D?: number; // Default height from ground in 3D mode.
|
|
7
|
-
|
|
8
|
-
}
|
package/terrain-plugin.mmd
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
config:
|
|
3
|
-
theme: redux-dark
|
|
4
|
-
look: classic
|
|
5
|
-
layout: elk
|
|
6
|
-
id: 2d4fb98c-b970-4dea-8e25-51a30073b15d
|
|
7
|
-
---
|
|
8
|
-
flowchart TB
|
|
9
|
-
subgraph subGraph0["Input Source"]
|
|
10
|
-
Client["Client / App Code"]
|
|
11
|
-
end
|
|
12
|
-
subgraph subGraph1["WebGL Resources"]
|
|
13
|
-
VAO["VAO"]
|
|
14
|
-
UBO["UBO Handler"]
|
|
15
|
-
end
|
|
16
|
-
subgraph subGraph2["TerrainPolygonSemiPlugin (Main Thread)"]
|
|
17
|
-
Init["init"]
|
|
18
|
-
Insert["insertBulk(polygons)"]
|
|
19
|
-
Delete["deleteBulk(keys)"]
|
|
20
|
-
SetBuffers["setBuffers(WorkerOutput)"]
|
|
21
|
-
Draw["draw3D()"]
|
|
22
|
-
subGraph1
|
|
23
|
-
end
|
|
24
|
-
subgraph subGraph3["Async Processing"]
|
|
25
|
-
WC["WorkerContact"]
|
|
26
|
-
|
|
27
|
-
subgraph WorkerContext ["Web Worker (worker.js)"]
|
|
28
|
-
OnMsg["onmessage"]
|
|
29
|
-
|
|
30
|
-
subgraph CacheSystem ["Cache System (cache.ts)"]
|
|
31
|
-
C_Insert["insert/remove"]
|
|
32
|
-
C_Tri["_entry (Triangulation)"]
|
|
33
|
-
C_RBush["RBush Index"]
|
|
34
|
-
C_Search["search(bboxes)"]
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
W_Loop["Loop Visible Triangles"]
|
|
38
|
-
W_Merge["Merge Buffers"]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
Core["Tessellation Core\n(partialTessellation)"]
|
|
42
|
-
end
|
|
43
|
-
subgraph subGraph4["GPU Memory (WebGL)"]
|
|
44
|
-
ElemBuf["Element Array Buffer\n(Indices)"]
|
|
45
|
-
Vec3Buf["Vec3 Buffer\n(Positions)"]
|
|
46
|
-
MercBuf["Mercator XY Buffer\n(LongLats)"]
|
|
47
|
-
Shader["TextureDemTriangles Program"]
|
|
48
|
-
end
|
|
49
|
-
Client -- "1. Instantiate" --> Init
|
|
50
|
-
Init -- Create --> WC & VAO & UBO
|
|
51
|
-
Init -- Get Program --> Shader
|
|
52
|
-
Client -- "2. Input Data" --> Insert
|
|
53
|
-
Insert -- Delegate --> WC
|
|
54
|
-
|
|
55
|
-
%% Worker Flow
|
|
56
|
-
WC -- "postMessage({queue, bboxes})" --> OnMsg
|
|
57
|
-
|
|
58
|
-
%% Cache Operations
|
|
59
|
-
OnMsg -- "Process Queue" --> C_Insert
|
|
60
|
-
C_Insert -- "Triangulate" --> C_Tri
|
|
61
|
-
C_Tri -- "Store" --> C_RBush
|
|
62
|
-
|
|
63
|
-
%% Render Prep Flow
|
|
64
|
-
OnMsg -- "Update View" --> C_Search
|
|
65
|
-
C_Search -- "Query" --> C_RBush
|
|
66
|
-
C_RBush -- "Visible Triangles" --> W_Loop
|
|
67
|
-
|
|
68
|
-
%% Tessellation Loop
|
|
69
|
-
W_Loop -- "Meta + Zoom" --> Core
|
|
70
|
-
Core -- "Geometry" --> W_Loop
|
|
71
|
-
W_Loop -- "Accumulate" --> W_Merge
|
|
72
|
-
|
|
73
|
-
%% Return to Main
|
|
74
|
-
W_Merge -- "Transferables" --> WC
|
|
75
|
-
WC -- Callback --> SetBuffers
|
|
76
|
-
|
|
77
|
-
SetBuffers -- Upload Data --> ElemBuf & Vec3Buf & MercBuf
|
|
78
|
-
SetBuffers -- Request Render --> Client
|
|
79
|
-
Client -- "3. Render Loop" --> Draw
|
|
80
|
-
Draw -- Bind --> VAO
|
|
81
|
-
Draw -- Update --> UBO
|
|
82
|
-
Draw -- Execute --> Shader
|
|
83
|
-
Shader -- Read --> ElemBuf & Vec3Buf & MercBuf
|