@pirireis/webglobeplugins 0.9.6 → 0.9.8
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 → dist/Math}/angle-calculation.js +15 -14
- package/dist/Math/arc.js +65 -0
- package/{Math → dist/Math}/bounds/line-bbox.js +188 -225
- package/dist/Math/constants.js +9 -0
- package/{Math/frustum/camera.ts → dist/Math/frustum/camera.js} +24 -32
- package/{Math/frustum/from-globeinfo.ts → dist/Math/frustum/from-globeinfo.js} +48 -63
- package/dist/Math/frustum/types.js +2 -0
- package/{Math/globe-util/horizon-plane.ts → dist/Math/globe-util/horizon-plane.js} +112 -137
- package/dist/Math/index.js +1 -0
- package/dist/Math/juction/arc-plane.js +83 -0
- package/dist/Math/juction/line-sphere.js +25 -0
- package/{Math/juction/plane-plane.ts → dist/Math/juction/plane-plane.js} +58 -66
- package/dist/Math/line.js +56 -0
- package/dist/Math/matrix4.js +1 -0
- package/{Math → dist/Math}/methods.js +201 -237
- package/dist/Math/plane.js +60 -0
- package/{Math/quaternion.ts → dist/Math/quaternion.js} +104 -120
- package/dist/Math/types.js +2 -0
- package/dist/Math/utils.js +4 -0
- package/{Math/vec3.ts → dist/Math/vec3.js} +126 -155
- package/dist/algorithms/search-binary.js +19 -0
- package/dist/altitude-locator/adaptors.js +1 -0
- package/{altitude-locator → dist/altitude-locator}/draw-subset-obj.js +18 -27
- package/dist/altitude-locator/keymethod.js +1 -0
- package/{altitude-locator → dist/altitude-locator}/plugin.js +341 -439
- package/{altitude-locator → dist/altitude-locator}/types.js +23 -26
- package/{arrowfield → dist/arrowfield}/adaptor.js +14 -11
- package/dist/arrowfield/index.js +10 -0
- package/{arrowfield → dist/arrowfield}/plugin.js +86 -128
- package/dist/bearing-line/index.js +8 -0
- package/{bearing-line → dist/bearing-line}/plugin.js +449 -512
- package/{circle-line-chain → dist/circle-line-chain}/chain-list-map.js +205 -221
- package/dist/circle-line-chain/init.js +1 -0
- package/{circle-line-chain → dist/circle-line-chain}/plugin.js +424 -469
- package/dist/circle-line-chain/util.js +5 -0
- package/{compass-rose → dist/compass-rose}/compass-rose-padding-flat.js +225 -266
- package/{compass-rose → dist/compass-rose}/compass-text-writer.js +153 -173
- package/dist/compass-rose/index.js +7 -0
- package/{compassrose → dist/compassrose}/compassrose.js +296 -341
- package/dist/compassrose/index.js +8 -0
- package/dist/globe-types.js +1 -0
- package/dist/heatwave/index.js +10 -0
- package/{heatwave → dist/heatwave}/isobar/objectarraylabels.js +202 -247
- package/{heatwave → dist/heatwave}/isobar/plugin.js +343 -340
- package/{heatwave → dist/heatwave}/isobar/quadtreecontours.js +300 -336
- package/{heatwave → dist/heatwave}/plugins/heatwaveglobeshell.js +206 -258
- package/dist/index.js +58 -0
- package/{jest.config.js → dist/jest.config.js} +7 -6
- package/{partialrings → dist/partialrings}/buffer-manager.js +81 -89
- package/dist/partialrings/index.js +41 -0
- package/{partialrings → dist/partialrings}/plugin.js +135 -160
- package/{partialrings → dist/partialrings}/program.js +204 -242
- package/{pin → dist/pin}/pin-object-array.js +305 -381
- package/{pin → dist/pin}/pin-point-totem.js +60 -77
- package/{point-heat-map → dist/point-heat-map}/adaptors/timetracksplugin-format-to-this.js +66 -78
- package/dist/point-heat-map/index.js +1 -0
- package/{point-heat-map → dist/point-heat-map}/plugin-webworker.js +126 -151
- package/{point-heat-map → dist/point-heat-map}/point-to-heat-map-flow.js +127 -150
- package/dist/point-tracks/key-methods.js +5 -0
- package/{point-tracks → dist/point-tracks}/plugin.js +338 -394
- package/dist/programs/arrowfield/index.js +7 -0
- package/{programs → dist/programs}/arrowfield/logic.js +144 -173
- package/{programs → dist/programs}/arrowfield/object.js +66 -89
- package/{programs → dist/programs}/data2legend/density-to-legend.js +76 -90
- package/{programs → dist/programs}/data2legend/point-to-density-texture.js +76 -90
- package/dist/programs/float2legendwithratio/index.js +8 -0
- package/{programs → dist/programs}/float2legendwithratio/logic.js +122 -145
- package/{programs → dist/programs}/float2legendwithratio/object.js +110 -141
- package/{programs → dist/programs}/globe-util/is-globe-moved.js +21 -27
- package/dist/programs/globeshell/index.js +8 -0
- package/dist/programs/globeshell/noise/noises.js +1 -0
- package/dist/programs/globeshell/wiggle/index.js +8 -0
- package/{programs → dist/programs}/globeshell/wiggle/logic.js +246 -272
- package/{programs → dist/programs}/globeshell/wiggle/object.js +72 -93
- package/dist/programs/helpers/blender/index.js +1 -0
- package/{programs → dist/programs}/helpers/blender/program.js +61 -73
- package/dist/programs/helpers/fadeaway/index.js +7 -0
- package/{programs → dist/programs}/helpers/fadeaway/logic.js +49 -53
- package/dist/programs/helpers/fadeaway/object.js +20 -0
- package/dist/programs/helpers/index.js +8 -0
- package/dist/programs/index.js +58 -0
- package/dist/programs/interface.js +1 -0
- package/{programs → dist/programs}/line-on-globe/angled-line.js +125 -155
- package/{programs → dist/programs}/line-on-globe/circle-accurate-3d.js +95 -121
- package/{programs → dist/programs}/line-on-globe/circle-accurate-flat.js +158 -204
- package/{programs → dist/programs}/line-on-globe/circle-accurate.js +117 -141
- package/{programs → dist/programs}/line-on-globe/circle.js +111 -135
- package/{programs → dist/programs}/line-on-globe/degree-padding-around-circle-3d.js +111 -140
- package/dist/programs/line-on-globe/index.js +1 -0
- package/{programs → dist/programs}/line-on-globe/lines-color-instanced-flat.js +91 -106
- package/{programs/line-on-globe/linestrip.ts → dist/programs/line-on-globe/linestrip.js} +108 -165
- package/{programs → dist/programs}/line-on-globe/naive-accurate-flexible.js +127 -171
- package/{programs → dist/programs}/line-on-globe/to-the-surface.js +83 -101
- package/dist/programs/line-on-globe/util.js +8 -0
- package/{programs → dist/programs}/picking/pickable-renderer.js +107 -135
- package/{programs → dist/programs}/point-on-globe/element-globe-surface-glow.js +101 -127
- package/{programs → dist/programs}/point-on-globe/element-point-glow.js +88 -119
- package/{programs → dist/programs}/point-on-globe/square-pixel-point.js +126 -141
- package/{programs/programcache.ts → dist/programs/programcache.js} +131 -131
- package/{programs → dist/programs}/rings/distancering/circleflatprogram.js +115 -95
- package/{programs → dist/programs}/rings/distancering/circlepaddingfreeangleprogram.js +320 -329
- package/{programs → dist/programs}/rings/distancering/circlepaddysharedbuffer.js +357 -420
- package/dist/programs/rings/distancering/index.js +14 -0
- package/{programs → dist/programs}/rings/distancering/paddyflatprogram.js +120 -94
- package/{programs → dist/programs}/rings/distancering/paddyflatprogram2d.js +122 -98
- package/{programs → dist/programs}/rings/distancering/paddyflatprogram3d.js +120 -94
- package/dist/programs/rings/distancering/shader.js +1 -0
- package/dist/programs/rings/index.js +17 -0
- package/{programs → dist/programs}/rings/partial-ring/piece-of-pie.js +181 -221
- package/{programs → dist/programs}/totems/camerauniformblock.js +147 -184
- package/{programs → dist/programs}/totems/canvas-webglobe-info.js +102 -128
- package/{programs → dist/programs}/totems/gpu-selection-uniform-block.js +104 -128
- package/dist/programs/totems/index.js +40 -0
- package/dist/programs/two-d/pixel-circle.js +1 -0
- package/{programs → dist/programs}/two-d/pixel-padding-for-compass.js +101 -113
- package/{programs → dist/programs}/util.js +17 -20
- package/dist/programs/vectorfields/index.js +23 -0
- package/{programs → dist/programs}/vectorfields/logics/drawrectangleparticles.js +65 -83
- package/dist/programs/vectorfields/logics/index.js +12 -0
- package/{programs → dist/programs}/vectorfields/logics/pixelbased.js +84 -103
- package/{programs → dist/programs}/vectorfields/logics/ubo.js +55 -56
- package/{programs → dist/programs}/vectorfields/pingpongbuffermanager.js +76 -80
- package/dist/rangerings/enum.js +5 -0
- package/dist/rangerings/index.js +15 -0
- package/{rangerings → dist/rangerings}/plugin.js +560 -649
- package/{rangerings → dist/rangerings}/rangeringangletext.js +329 -368
- package/{rangerings → dist/rangerings}/ring-account.js +117 -129
- package/{shaders → dist/shaders}/fragment-toy/firework.js +5 -2
- package/{shaders → dist/shaders}/fragment-toy/singularity.js +5 -5
- package/{shape-on-terrain/arc/naive/plugin.ts → dist/shape-on-terrain/arc/naive/plugin.js} +252 -304
- package/{timetracks → dist/timetracks}/adaptors-line-strip.js +71 -80
- package/{timetracks → dist/timetracks}/adaptors.js +122 -133
- package/dist/timetracks/index.js +19 -0
- package/{timetracks → dist/timetracks}/plugin-line-strip.js +250 -295
- package/{timetracks → dist/timetracks}/plugin.js +258 -304
- package/{timetracks → dist/timetracks}/program-line-strip.js +416 -493
- package/{timetracks → dist/timetracks}/program.js +464 -542
- package/{timetracks → dist/timetracks}/programpoint-line-strip.js +101 -122
- package/{timetracks → dist/timetracks}/programpoint.js +101 -122
- package/{types.ts → dist/types.js} +15 -17
- package/{util → dist/util}/account/bufferoffsetmanager.js +179 -209
- package/dist/util/account/index.js +23 -0
- package/{util/account/single-attribute-buffer-management/buffer-manager.ts → dist/util/account/single-attribute-buffer-management/buffer-manager.js} +108 -119
- package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +150 -173
- package/dist/util/account/single-attribute-buffer-management/index.js +9 -0
- package/{util/account/single-attribute-buffer-management/object-store.ts → dist/util/account/single-attribute-buffer-management/object-store.js} +51 -65
- package/dist/util/account/single-attribute-buffer-management/types.js +2 -0
- package/{util → dist/util}/account/util.js +22 -22
- package/dist/util/algorithms/index.js +1 -0
- package/{util → dist/util}/algorithms/search-binary.js +28 -26
- package/dist/util/check/get.js +18 -0
- package/dist/util/check/index.js +1 -0
- package/dist/util/check/typecheck.js +49 -0
- package/{util → dist/util}/geometry/index.js +51 -53
- package/{util/gl-util/buffer/attribute-loader.ts → dist/util/gl-util/buffer/attribute-loader.js} +69 -85
- package/dist/util/gl-util/buffer/index.js +6 -0
- package/dist/util/gl-util/buffer/types.js +1 -0
- package/dist/util/gl-util/draw-options/methods.js +38 -0
- package/dist/util/gl-util/draw-options/types.js +15 -0
- package/{util/gl-util/uniform-block/manager.ts → dist/util/gl-util/uniform-block/manager.js} +156 -187
- package/dist/util/gl-util/uniform-block/shader.js +1 -0
- package/dist/util/gl-util/uniform-block/types.js +8 -0
- package/{util → dist/util}/heatwavedatamanager/datamanager.js +152 -168
- package/dist/util/heatwavedatamanager/index.js +10 -0
- package/{util → dist/util}/heatwavedatamanager/pointcoordinatesdatacalculator.js +122 -133
- package/{util → dist/util}/heatwavedatamanager/pointcoordsmeta.js +20 -22
- package/dist/util/index.js +57 -0
- package/dist/util/interpolation/index.js +1 -0
- package/dist/util/interpolation/timetrack/index.js +5 -0
- package/{util → dist/util}/interpolation/timetrack/timetrack-interpolator.js +79 -88
- package/{util → dist/util}/interpolation/timetrack/web-worker-str.js +5 -2
- package/{util → dist/util}/interpolation/timetrack/web-worker.js +48 -51
- package/{util → dist/util}/jshelpers/data-filler.js +20 -19
- package/{util → dist/util}/jshelpers/equality.js +20 -17
- package/dist/util/jshelpers/index.js +37 -0
- package/{util → dist/util}/jshelpers/timefilters.js +32 -32
- package/{util → dist/util}/picking/fence.js +46 -46
- package/{util → dist/util}/picking/picker-displayer.js +139 -177
- package/{util → dist/util}/programs/draw-texture-on-canvas.js +69 -82
- package/dist/util/programs/index.js +17 -0
- package/{util → dist/util}/programs/shapesonglobe.js +174 -206
- package/{util → dist/util}/programs/supersampletotextures.js +103 -132
- package/{util → dist/util}/programs/texturetoglobe.js +133 -154
- package/{util/shaderfunctions/geometrytransformations.ts → dist/util/shaderfunctions/geometrytransformations.js} +68 -116
- package/dist/util/shaderfunctions/index.js +18 -0
- package/{util → dist/util}/shaderfunctions/nodata.js +5 -4
- package/{util → dist/util}/shaderfunctions/noisefunctions.js +9 -10
- package/{util/surface-line-data/arc-bboxes.ts → dist/util/surface-line-data/arc-bboxes.js} +25 -42
- package/{util → dist/util}/surface-line-data/arcs-to-cuts.js +50 -74
- package/dist/util/surface-line-data/cut-arc.js +1 -0
- package/{util/surface-line-data/flow.ts → dist/util/surface-line-data/flow.js} +28 -52
- package/dist/util/surface-line-data/rbush-manager.js +1 -0
- package/dist/util/surface-line-data/types.js +1 -0
- package/dist/util/surface-line-data/web-worker.js +1 -0
- package/dist/util/webglobe/gldefaultstates.js +7 -0
- package/dist/util/webglobe/index.js +18 -0
- package/{util → dist/util}/webglobe/rasteroverlay.js +78 -96
- package/{util/webglobjectbuilders.ts → dist/util/webglobjectbuilders.js} +388 -456
- package/{util → dist/util}/webglobjectbuilders1.js +237 -271
- package/{waveparticles → dist/waveparticles}/adaptor.js +17 -16
- package/dist/waveparticles/index.js +10 -0
- package/{waveparticles → dist/waveparticles}/plugin.js +266 -313
- package/{wind → dist/wind}/imagetovectorfieldandmagnitude.js +35 -39
- package/dist/wind/index.js +14 -0
- package/{wind → dist/wind}/plugin.js +681 -812
- package/{wind → dist/wind}/vectorfieldimage.js +25 -27
- package/{write-text → dist/write-text}/attached-text-writer.js +91 -105
- package/{write-text → dist/write-text}/context-text.js +98 -125
- package/{write-text → dist/write-text}/context-text3.js +155 -178
- package/dist/write-text/index.js +5 -0
- package/{write-text → dist/write-text}/writer-plugin.js +8 -7
- package/package.json +5 -2
- package/Math/arc.ts +0 -76
- package/Math/constants.ts +0 -11
- package/Math/frustum/types.ts +0 -11
- package/Math/index.js +0 -0
- package/Math/juction/arc-plane.ts +0 -114
- package/Math/juction/line-sphere.ts +0 -30
- package/Math/line.ts +0 -70
- package/Math/matrix4.ts +0 -0
- package/Math/plane.ts +0 -86
- package/Math/roadmap.md +0 -10
- package/Math/types.ts +0 -45
- package/Math/utils.js +0 -3
- package/algorithms/search-binary.js +0 -14
- package/altitude-locator/adaptors.js +0 -0
- package/altitude-locator/keymethod.js +0 -0
- package/arrowfield/index.js +0 -3
- package/bearing-line/index.js +0 -2
- package/circle-line-chain/init.js +0 -0
- package/circle-line-chain/readme.md +0 -57
- package/circle-line-chain/util.js +0 -1
- package/compass-rose/index.js +0 -3
- package/compassrose/index.js +0 -2
- package/depth-locator/readme.md +0 -26
- package/globe-types.ts +0 -13
- package/heatwave/index.js +0 -4
- package/partialrings/goals.md +0 -17
- package/partialrings/index.js +0 -3
- package/point-heat-map/index.js +0 -0
- package/point-heat-map/readme.md +0 -15
- package/point-tracks/key-methods.js +0 -3
- package/programs/arrowfield/index.js +0 -2
- package/programs/float2legendwithratio/index.js +0 -3
- package/programs/globeshell/index.js +0 -2
- package/programs/globeshell/noise/noises.js +0 -0
- package/programs/globeshell/wiggle/index.js +0 -6
- package/programs/helpers/blender/index.js +0 -0
- package/programs/helpers/fadeaway/index.js +0 -3
- package/programs/helpers/fadeaway/object.js +0 -20
- package/programs/helpers/index.js +0 -2
- package/programs/index.js +0 -21
- package/programs/interface.ts +0 -7
- package/programs/line-on-globe/index.js +0 -0
- package/programs/line-on-globe/util.js +0 -8
- package/programs/rings/distancering/index.js +0 -5
- package/programs/rings/distancering/shader.js +0 -0
- package/programs/rings/index.js +0 -1
- package/programs/totems/camerauniformblock.d.ts +0 -48
- package/programs/totems/index.ts +0 -2
- package/programs/two-d/pixel-circle.js +0 -0
- package/programs/vectorfields/index.js +0 -3
- package/programs/vectorfields/logics/index.js +0 -5
- package/publish.bat +0 -60
- package/rangerings/enum.js +0 -3
- package/rangerings/index.js +0 -5
- package/shape-on-terrain/goal.md +0 -12
- package/tests/Math/junction/arc-plane.test.ts +0 -133
- package/tests/Math/junction/plane-plane.test.ts +0 -82
- package/tests/Math/plane.test.ts +0 -43
- package/tests/Math/vec3.test.ts +0 -14
- package/timetracks/index.js +0 -6
- package/timetracks/readme.md +0 -1
- package/tsconfig.json +0 -22
- package/util/account/index.js +0 -6
- package/util/account/single-attribute-buffer-management/index.ts +0 -13
- package/util/account/single-attribute-buffer-management/types.ts +0 -39
- package/util/algorithms/index.js +0 -0
- package/util/check/get.js +0 -13
- package/util/check/index.js +0 -0
- package/util/check/typecheck.js +0 -39
- package/util/gl-util/buffer/index.ts +0 -6
- package/util/gl-util/buffer/types.ts +0 -13
- package/util/gl-util/draw-options/methods.ts +0 -66
- package/util/gl-util/draw-options/types.ts +0 -28
- package/util/gl-util/uniform-block/roadmap.md +0 -70
- package/util/gl-util/uniform-block/shader.js +0 -0
- package/util/gl-util/uniform-block/types.ts +0 -27
- package/util/heatwavedatamanager/index.js +0 -3
- package/util/index.js +0 -13
- package/util/interpolation/index.js +0 -0
- package/util/interpolation/timetrack/index.js +0 -9
- package/util/jshelpers/index.js +0 -1
- package/util/programs/index.js +0 -1
- package/util/shaderfunctions/index.js +0 -2
- package/util/surface-line-data/cut-arc.js +0 -0
- package/util/surface-line-data/rbush-manager.js +0 -0
- package/util/surface-line-data/types.ts +0 -27
- package/util/surface-line-data/web-worker.js +0 -0
- package/util/webglobe/gldefaultstates.js +0 -5
- package/util/webglobe/index.js +0 -2
- package/waveparticles/index.js +0 -3
- package/wind/index.js +0 -5
- package/write-text/index.js +0 -1
package/rangerings/index.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { RangeRings } from "./plugin";
|
|
2
|
-
import { ringKeyMethod } from "./ring-account";
|
|
3
|
-
import RangeRingAngleText from './rangeringangletext';
|
|
4
|
-
import { ENUM_HIDE, ENUM_TEXT_HIDE } from './enum';
|
|
5
|
-
export { RangeRings, ENUM_HIDE, ENUM_TEXT_HIDE, RangeRingAngleText, ringKeyMethod };
|
package/shape-on-terrain/goal.md
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
The fact that a straight line have two points, lacks the ability to cover elevation data on higher zoom levels.
|
|
2
|
-
|
|
3
|
-
The purpose of this subplugin is to adapt the straight line to the terrain.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
### Steps
|
|
7
|
-
|
|
8
|
-
- filter by bbox with tree -> indexes
|
|
9
|
-
- find intersaction. Also filters in a more precise way then bbox. -> index and 2 points. 3d carteasian so it can be used on slerp.
|
|
10
|
-
- Populate the line points -> Array<lat long>
|
|
11
|
-
- 3d cartesian coords with globe api
|
|
12
|
-
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { Plane, Line, Vec3, Quaternion, Arc } from '../../../Math/types';
|
|
2
|
-
import { plane } from '../../../Math/plane';
|
|
3
|
-
import { line } from '../../../Math/line';
|
|
4
|
-
import { arc } from '../../../Math/arc';
|
|
5
|
-
import { vec3 } from '../../../Math/vec3';
|
|
6
|
-
import { quaternion } from '../../../Math/quaternion';
|
|
7
|
-
import { planePlaneJuction } from '../../../Math/juction/plane-plane';
|
|
8
|
-
import { arcSlice } from '../../../Math/juction/arc-plane';
|
|
9
|
-
import { EPSILON } from '../../../Math/constants';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const arcIn = arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
13
|
-
const arcOut: [Arc, Arc] = [
|
|
14
|
-
arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0)),
|
|
15
|
-
arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0))
|
|
16
|
-
];
|
|
17
|
-
const arcExpected = arc.create(vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
18
|
-
const junctionPlane = plane.create(vec3.create(0, 0, 1), 0);
|
|
19
|
-
|
|
20
|
-
const r2 = Math.sqrt(2) / 2;
|
|
21
|
-
const r3 = Math.sqrt(3) / 3;
|
|
22
|
-
|
|
23
|
-
beforeAll(() => {
|
|
24
|
-
// Initialize any necessary data or state before running the tests
|
|
25
|
-
arc.set(arcIn, vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
26
|
-
arc.set(arcOut[0], vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
27
|
-
arc.set(arcOut[1], vec3.create(0, 0, 1), vec3.create(1, 0, 0));
|
|
28
|
-
|
|
29
|
-
plane.set(junctionPlane, vec3.create(0, 0, 1), 0);
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
test('arcSlice - No intersection 1', () => {
|
|
38
|
-
junctionPlane.distance = 2; // Set distance to ensure no intersection
|
|
39
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
40
|
-
expect(result).toBe(false);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
test('arcSlice - Full intersection 1', () => {
|
|
46
|
-
junctionPlane.distance = 0; // Set distance to ensure full intersection
|
|
47
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
48
|
-
expect(result).toBe(true);
|
|
49
|
-
const isEqual = arc.equals(arcOut[0], arcExpected);
|
|
50
|
-
expect(isEqual).toBe(true);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
test('arcSlice-1', () => {
|
|
55
|
-
// Set up a case where the arc intersects with the plane
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const r3 = Math.sqrt(3);
|
|
59
|
-
const juctionNormal = vec3.create(r3, r3, r3);
|
|
60
|
-
|
|
61
|
-
plane.set(junctionPlane, juctionNormal, 0);
|
|
62
|
-
|
|
63
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
64
|
-
expect(result).toBe(true);
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
test('arcSlice - Plane intersection line is out of sphere', () => {
|
|
69
|
-
// Set up a case where the arc intersects with the plane
|
|
70
|
-
|
|
71
|
-
const point1 = vec3.create(0, 1, 0);
|
|
72
|
-
const point2 = vec3.create(0, 0, 1);
|
|
73
|
-
arc.set(arcIn, point1, point2);
|
|
74
|
-
|
|
75
|
-
const juctionNormal = vec3.create(r3, r3, r3);
|
|
76
|
-
|
|
77
|
-
const closestPoint = vec3.create(r2, r2, 0);
|
|
78
|
-
const distance = vec3.dot(juctionNormal, closestPoint) + EPSILON;
|
|
79
|
-
plane.set(junctionPlane, juctionNormal, distance);
|
|
80
|
-
|
|
81
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
82
|
-
expect(result).toBe(false);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
test("arcSlice - Planes are parallel", () => {
|
|
87
|
-
|
|
88
|
-
const point1 = vec3.create(0, 1, 0);
|
|
89
|
-
const point2 = vec3.create(0, 0, 1);
|
|
90
|
-
arc.set(arcIn, point1, point2);
|
|
91
|
-
|
|
92
|
-
plane.fromValues(junctionPlane, 1, 0, 0, 0.3); // Set a plane parallel to the arc's normal
|
|
93
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
94
|
-
expect(result).toBe(false); // Expect no intersection
|
|
95
|
-
|
|
96
|
-
junctionPlane.distance = -0.3;
|
|
97
|
-
|
|
98
|
-
const result2 = arcSlice(arcOut, arcIn, junctionPlane);
|
|
99
|
-
expect(result2).toBe(true); // Expect no intersection
|
|
100
|
-
const isEqual = arc.equals(arcOut[0], arcIn);
|
|
101
|
-
expect(isEqual).toBe(true); // Expect the output arc to be equal to the input arc
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
test("arcSlice - Arc sliced in half", () => {
|
|
106
|
-
|
|
107
|
-
const point1 = vec3.create(0, 1, 0);
|
|
108
|
-
const point2 = vec3.create(0, 0, 1);
|
|
109
|
-
arc.set(arcIn, point1, point2);
|
|
110
|
-
|
|
111
|
-
expect(vec3.equals(arcIn.normal, vec3.create(1, 0, 0))).toBe(true); // Arc normal should be (1, 0, 0)
|
|
112
|
-
|
|
113
|
-
plane.fromValues(junctionPlane, 0, -r2, r2, 0); // Set a plane parallel to the arc's normal
|
|
114
|
-
|
|
115
|
-
const result = arcSlice(arcOut, arcIn, junctionPlane);
|
|
116
|
-
expect(result).toBe(true); // Expect an intersection
|
|
117
|
-
const expectedPoint1 = vec3.create(0, r2, r2);
|
|
118
|
-
const expectedPoint2 = vec3.create(0, 0, 1);
|
|
119
|
-
arc.set(arcExpected, expectedPoint1, expectedPoint2);
|
|
120
|
-
const isEqual = arc.equals(arcOut[0], arcExpected);
|
|
121
|
-
expect(isEqual).toBe(true); // Expect the output arc to be equal to the expected arc
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
// test("arcSlice - Arc sliced in middle", () => {
|
|
126
|
-
// const point1 = vec3.create(0, 1, 0);
|
|
127
|
-
// const point2 = vec3.create(0, 0, 1);
|
|
128
|
-
// arc.set(arcIn, point1, point2);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
// plane.fromValues(junctionPlane, 0, r2, r2, )
|
|
132
|
-
|
|
133
|
-
// });
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { Plane, Line, Vec3, Quaternion } from '../../../Math/types';
|
|
2
|
-
import { plane } from '../../../Math/plane';
|
|
3
|
-
import { line } from '../../../Math/line';
|
|
4
|
-
import { vec3 } from '../../../Math/vec3';
|
|
5
|
-
import { quaternion } from '../../../Math/quaternion';
|
|
6
|
-
import { planePlaneJuction } from '../../../Math/juction/plane-plane';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let plane1: Plane;
|
|
10
|
-
let plane2: Plane;
|
|
11
|
-
let intersectionLine: Line;
|
|
12
|
-
let quaternion1: Quaternion;
|
|
13
|
-
|
|
14
|
-
beforeAll(() => {
|
|
15
|
-
plane1 = plane.create();
|
|
16
|
-
plane2 = plane.create();
|
|
17
|
-
intersectionLine = line.create();
|
|
18
|
-
quaternion1 = quaternion.create();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
test('plane-plane intersection - parallel planes', () => {
|
|
23
|
-
plane.fromValues(plane1, 0, 0, 1, 5); // Plane: z = 5
|
|
24
|
-
plane.fromValues(plane2, 0, 0, 1, 10); // Plane: z = 10
|
|
25
|
-
const result = planePlaneJuction(intersectionLine, plane1, plane2);
|
|
26
|
-
expect(result).toBe(false);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
test('plane-plane intersection - intersecting planes', () => {
|
|
30
|
-
plane.fromValues(plane1, 0, 0, 1, 5); // Plane: z = 5
|
|
31
|
-
plane.fromValues(plane2, 1, 0, 0, 3); // Plane: x = 3
|
|
32
|
-
|
|
33
|
-
const result = planePlaneJuction(intersectionLine, plane1, plane2);
|
|
34
|
-
expect(result).toBe(true);
|
|
35
|
-
expect(vec3.equals(intersectionLine.direction, vec3.create(0, 1, 0))).toBe(true);
|
|
36
|
-
expect(vec3.equals(intersectionLine.origin, vec3.create(3, 0, 5))).toBe(true);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
test('plane-plane intersection - rotating a plane', () => {
|
|
41
|
-
// plane1 z = 5
|
|
42
|
-
plane.fromValues(plane1, 0, 0, 1, 5);
|
|
43
|
-
|
|
44
|
-
// plane2 x = 3, for the start
|
|
45
|
-
vec3.randomUnit(plane2.normal);
|
|
46
|
-
plane2.distance = 3;
|
|
47
|
-
|
|
48
|
-
const result = planePlaneJuction(intersectionLine, plane1, plane2);
|
|
49
|
-
expect(result).toBe(true);
|
|
50
|
-
const quaRotateLine = line.clone(intersectionLine);
|
|
51
|
-
|
|
52
|
-
const step = 90;
|
|
53
|
-
quaternion.fromAxisAngle(quaternion1, plane1.normal, Math.PI / step); // Rotate 90 degrees around Y-axis
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
for (let i = 0; i < step; i++) {
|
|
57
|
-
|
|
58
|
-
vec3.applyQuaternion(plane2.normal, plane2.normal, quaternion1);
|
|
59
|
-
|
|
60
|
-
const result = planePlaneJuction(intersectionLine, plane1, plane2);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
line.applyQuaternion(quaRotateLine, quaRotateLine, quaternion1);
|
|
64
|
-
|
|
65
|
-
expect(result).toBe(true);
|
|
66
|
-
expect(vec3.equals(intersectionLine.direction, quaRotateLine.direction)).toBe(true);
|
|
67
|
-
expect(line.contains(intersectionLine, quaRotateLine.origin)).toBe(true);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test("plane-plane intersection 1", () => {
|
|
72
|
-
const r2 = Math.sqrt(2) / 2;
|
|
73
|
-
plane.fromValues(plane1, 1, 0, 0, 0);
|
|
74
|
-
plane.fromValues(plane2, 0, -r2, r2, 0);
|
|
75
|
-
const result = planePlaneJuction(intersectionLine, plane1, plane2);
|
|
76
|
-
|
|
77
|
-
expect(result).toBe(true);
|
|
78
|
-
console.log(intersectionLine);
|
|
79
|
-
expect(vec3.equals(intersectionLine.direction, vec3.create(0, r2, r2)) || vec3.equals(intersectionLine.direction, vec3.create(0, -r2, -r2))
|
|
80
|
-
).toBe(true);
|
|
81
|
-
expect(line.contains(intersectionLine, vec3.create(0, 0, 0))).toBe(true);
|
|
82
|
-
});
|
package/tests/Math/plane.test.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Plane, Vec3 } from "../../Math/types";
|
|
2
|
-
import { vec3 } from "../../Math/vec3";
|
|
3
|
-
import { plane } from "../../Math/plane";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const _planeA = /*@__PURE__*/ plane.create(vec3.create(1, 0, 0), 0);
|
|
7
|
-
const _planeB = /*@__PURE__*/ plane.create(vec3.create(0, 1, 0), 0);
|
|
8
|
-
const _vecA = /*@__PURE__*/ vec3.create(1, 0, 0);
|
|
9
|
-
|
|
10
|
-
beforeAll(() => {
|
|
11
|
-
vec3.set(_vecA, 1, 0, 0);
|
|
12
|
-
plane.set(_planeA, vec3.create(1, 0, 0), 0);
|
|
13
|
-
plane.set(_planeB, vec3.create(0, 1, 0), 0);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test("Plane: getUnitSphereRadiusAngle", () => {
|
|
17
|
-
const angleA = plane.getUnitSphereRadiusAngle(_planeA);
|
|
18
|
-
const angleB = plane.getUnitSphereRadiusAngle(_planeB);
|
|
19
|
-
|
|
20
|
-
expect(angleA).toBeCloseTo(Math.PI / 2, 5); // 90 degrees
|
|
21
|
-
expect(angleB).toBeCloseTo(Math.PI / 2, 5); // 90 degrees
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
test("Plane: getUnitSphereRadiusAngle 1", () => {
|
|
26
|
-
|
|
27
|
-
vec3.set(_vecA, 1, 1, 0);
|
|
28
|
-
vec3.normalize(_vecA, _vecA);
|
|
29
|
-
const distance = Math.sqrt(2) / 2; // Distance from origin to the plane
|
|
30
|
-
plane.set(_planeA, _vecA, distance);
|
|
31
|
-
const angleA = plane.getUnitSphereRadiusAngle(_planeA);
|
|
32
|
-
expect(angleA).toBeCloseTo(Math.PI / 4, 5); // 45 degrees
|
|
33
|
-
|
|
34
|
-
for (let i = 0; i < 100; i++) {
|
|
35
|
-
const distance = Math.random();
|
|
36
|
-
|
|
37
|
-
const angle = Math.acos(distance);
|
|
38
|
-
vec3.randomUnit(_vecA)
|
|
39
|
-
plane.set(_planeA, _vecA, distance);
|
|
40
|
-
const angleA = plane.getUnitSphereRadiusAngle(_planeA);
|
|
41
|
-
expect(angleA).toBeCloseTo(angle, 5); // Check if the angle is close to the expected value
|
|
42
|
-
}
|
|
43
|
-
});
|
package/tests/Math/vec3.test.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Vec3 } from "../../Math/types";
|
|
2
|
-
import { vec3 } from "../../Math/vec3";
|
|
3
|
-
|
|
4
|
-
test("vec3.create", () => {
|
|
5
|
-
const v = vec3.create(1, 2, 3);
|
|
6
|
-
expect(v).toEqual([1, 2, 3]);
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
test("vec3.length", () => {
|
|
11
|
-
const v = vec3.create(3, 4, 0);
|
|
12
|
-
const length = vec3.length(v);
|
|
13
|
-
expect(length).toBe(5);
|
|
14
|
-
});
|
package/timetracks/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import TimeTracks from './plugin';
|
|
2
|
-
import { Adaptor, fillSliceOfFloat32Array, createFloat32Array } from './adaptors';
|
|
3
|
-
|
|
4
|
-
import TimeTracksLineStrip from './plugin-line-strip';
|
|
5
|
-
import { addCuttingPointLineStrip, featuresToLineStringData, fillSliceOfFloat32ArrayLineStrip, latLongToPixelXY } from './adaptors-line-strip';
|
|
6
|
-
export { Adaptor, fillSliceOfFloat32Array, createFloat32Array, TimeTracks, TimeTracksLineStrip, addCuttingPointLineStrip, featuresToLineStringData, fillSliceOfFloat32ArrayLineStrip, latLongToPixelXY };
|
package/timetracks/readme.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
TODO: delete program, programpoint, maybe adaptors. which are related to the old version of this plugin.
|
package/tsconfig.json
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "es2018",
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"outDir": "../dist",
|
|
6
|
-
"strict": true,
|
|
7
|
-
"esModuleInterop": true,
|
|
8
|
-
"skipLibCheck": true,
|
|
9
|
-
"forceConsistentCasingInFileNames": true,
|
|
10
|
-
"allowJs": true,
|
|
11
|
-
"declaration": false
|
|
12
|
-
},
|
|
13
|
-
"include": [
|
|
14
|
-
"**/*.ts", // Include all .ts files in the current directory and subdirectories
|
|
15
|
-
"**/*.js" // Include all .js files in the current directory and subdirectories
|
|
16
|
-
],
|
|
17
|
-
"exclude": [
|
|
18
|
-
"node_modules",
|
|
19
|
-
"dist", // Exclude the output directory itself
|
|
20
|
-
"./tests/**/*", // Exclude tests directory
|
|
21
|
-
]
|
|
22
|
-
}
|
package/util/account/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { BufferOrchestrator } from "./buffer-orchestrator";
|
|
2
|
-
import { BufferManager } from "./buffer-manager";
|
|
3
|
-
import { ObjectStore } from "./object-store";
|
|
4
|
-
|
|
5
|
-
type BufferManagement = Map<string, {
|
|
6
|
-
bufferManager: BufferManager,
|
|
7
|
-
adaptor: (item: any) => Float32Array,
|
|
8
|
-
}>;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export { BufferOrchestrator, BufferManager, ObjectStore, BufferManagement };
|
|
12
|
-
|
|
13
|
-
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
type BufferManagersMap = Map<string, {
|
|
2
|
-
bufferManager: BufferManager;
|
|
3
|
-
adaptor: (item: any) => Float32Array;
|
|
4
|
-
}>;
|
|
5
|
-
|
|
6
|
-
interface BufferManager {
|
|
7
|
-
gl: WebGL2RenderingContext;
|
|
8
|
-
buffer: WebGLBuffer;
|
|
9
|
-
itemSize: number;
|
|
10
|
-
bufferType: string;
|
|
11
|
-
isFreed: boolean;
|
|
12
|
-
|
|
13
|
-
insertBulk(blocks: any[], offsets: number[]): void;
|
|
14
|
-
deleteBulk(offsets: number[]): void;
|
|
15
|
-
resetWithCapacity(capacity: number): void;
|
|
16
|
-
defrag(offsetValues: MapIterator<number> | number[], occupiedCapacity: number, newCapacity: number): void;
|
|
17
|
-
extendBuffer(occupiedCapacity: number, newCapacity: number): void;
|
|
18
|
-
free(): void;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
interface BufferOrchestrator {
|
|
22
|
-
offsetMap: Map<string, number>;
|
|
23
|
-
tombstoneOffsets: number[];
|
|
24
|
-
_length: number;
|
|
25
|
-
_capacity: number;
|
|
26
|
-
getOffset(key: string): number | undefined;
|
|
27
|
-
nextOffset(): number | boolean;
|
|
28
|
-
autoExtendBuffers(itemsLength: number, bufferManagersMap: BufferManagersMap): void;
|
|
29
|
-
updateBulk(items: any[], bufferManagersMap: BufferManagersMap, bufferKeys?: string[]): void;
|
|
30
|
-
deleteBulk(keys: string[], bufferManagersMap: BufferManagersMap): void;
|
|
31
|
-
resetWithCapacity(bufferManagersMap: BufferManagersMap, capacity: number | null): void;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export {
|
|
36
|
-
BufferManagersMap,
|
|
37
|
-
BufferManager,
|
|
38
|
-
BufferOrchestrator
|
|
39
|
-
}
|
package/util/algorithms/index.js
DELETED
|
File without changes
|
package/util/check/get.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export const mapGetOrThrow = (errorNote) => {
|
|
3
|
-
return (mapInstance, ids) => {
|
|
4
|
-
if (!ids) throw new Error("There is no map keys to get");
|
|
5
|
-
const result = [];
|
|
6
|
-
for (let i = 0; i < ids.length; i++) {
|
|
7
|
-
const e = mapInstance.get(ids[i]);
|
|
8
|
-
if (e === undefined) throw new Error(errorNote + " " + ids[i]);
|
|
9
|
-
result.push(e);
|
|
10
|
-
}
|
|
11
|
-
return result;
|
|
12
|
-
}
|
|
13
|
-
}
|
package/util/check/index.js
DELETED
|
File without changes
|
package/util/check/typecheck.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// Generic
|
|
2
|
-
|
|
3
|
-
const doesOwnProperties = (properties, errorMessage) => {
|
|
4
|
-
return (object) => {
|
|
5
|
-
properties.forEach(element => {
|
|
6
|
-
if (!Object.hasOwn(object, element)) throw new TypeError(errorMessage + ':' + element);
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const isHexColor = (hexColor) => /^#[0-9A-F]{6}$/i.test(hexColor);
|
|
12
|
-
export const isHexColorWithOpacity = (hexColor) => /^#[0-9A-F]{6}[0-9a-f]{0,2}$/i.test(hexColor);
|
|
13
|
-
|
|
14
|
-
export const opacityCheck = (opacity) => {
|
|
15
|
-
if (typeof opacity !== "number") throw new TypeError("style.opacity must a number");
|
|
16
|
-
if (opacity < 0 || 1 < opacity) throw new RangeError("Opacity Range Must be 0-1");
|
|
17
|
-
}
|
|
18
|
-
// Text Related
|
|
19
|
-
|
|
20
|
-
const fontCheckTypes = doesOwnProperties(["name", "textColor", "hollowColor", "size", "bold", "italic"], "font does not have");
|
|
21
|
-
const fontCheckColors = (textColor, hollowColor) => isHexColor(textColor) && isHexColor(hollowColor);
|
|
22
|
-
export const isTextFont = (textFont) => {
|
|
23
|
-
fontCheckTypes(textFont);
|
|
24
|
-
fontCheckColors(textFont.textColor, textFont.hollowColor);
|
|
25
|
-
if (typeof textFont.size !== "number") throw new TypeError("textFont size is not a number");
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export const constraintFloat = (x, lowerBound = null, upperBound = null) => {
|
|
30
|
-
if (typeof x !== "number") throw new Error("type must be numberic");
|
|
31
|
-
if (lowerBound === null && upperBound === null) return;
|
|
32
|
-
if (lowerBound !== null && lowerBound > x) throw new Error(`input must be greater than ${lowerBound}`);
|
|
33
|
-
if (upperBound !== null && x > upperBound) throw new Error(`input must be less than ${upperBound}`);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
export const isBoolean = (x) => {
|
|
38
|
-
if (typeof x !== "boolean") throw new TypeError("type must be boolean");
|
|
39
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import './types'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Represents the range of vertices or instances to draw.
|
|
5
|
-
*/
|
|
6
|
-
interface DrawRange {
|
|
7
|
-
first?: number;
|
|
8
|
-
count: number;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Parameters for drawing with optional element buffer and draw mode.
|
|
13
|
-
*/
|
|
14
|
-
interface DrawRangeIndexParams {
|
|
15
|
-
drawRange: DrawRange;
|
|
16
|
-
elementBuffer?: WebGLBuffer | null;
|
|
17
|
-
elementBufferIndexType?: GLenum;
|
|
18
|
-
drawMode?: GLenum | null;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Draws instanced geometry using WebGL2.
|
|
23
|
-
*/
|
|
24
|
-
const drawInstanced = (
|
|
25
|
-
gl: WebGL2RenderingContext,
|
|
26
|
-
mode: GLenum,
|
|
27
|
-
drawOptions: DrawRangeIndexParams,
|
|
28
|
-
vertexCount: number
|
|
29
|
-
): void => {
|
|
30
|
-
const { drawRange, elementBufferIndexType = gl.UNSIGNED_INT } = drawOptions;
|
|
31
|
-
const { first = 0, count: instanceCount = 1 } = drawRange;
|
|
32
|
-
if (first > 0 || drawOptions.elementBuffer) {
|
|
33
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, drawOptions.elementBuffer ?? null);
|
|
34
|
-
gl.drawElementsInstanced(mode, vertexCount, elementBufferIndexType, first, instanceCount);
|
|
35
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
|
|
36
|
-
} else {
|
|
37
|
-
gl.drawArraysInstanced(mode, first, vertexCount, instanceCount);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Draws geometry using WebGL2.
|
|
43
|
-
*/
|
|
44
|
-
const drawArrays = (
|
|
45
|
-
gl: WebGL2RenderingContext,
|
|
46
|
-
defaultMode: GLenum,
|
|
47
|
-
drawOptions: DrawRangeIndexParams
|
|
48
|
-
): void => {
|
|
49
|
-
const {
|
|
50
|
-
drawRange,
|
|
51
|
-
elementBuffer,
|
|
52
|
-
elementBufferIndexType = gl.UNSIGNED_INT,
|
|
53
|
-
drawMode = null
|
|
54
|
-
} = drawOptions;
|
|
55
|
-
const { first = 0, count } = drawRange;
|
|
56
|
-
const mode = drawMode ?? defaultMode;
|
|
57
|
-
if (elementBuffer) {
|
|
58
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, elementBuffer);
|
|
59
|
-
gl.drawElements(mode, count, elementBufferIndexType, first);
|
|
60
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
|
|
61
|
-
} else {
|
|
62
|
-
gl.drawArrays(mode, first, count);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export { drawArrays, drawInstanced }
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef DrawRange
|
|
3
|
-
* @type {Object}
|
|
4
|
-
* @property {int} first
|
|
5
|
-
* @property {int} count
|
|
6
|
-
*
|
|
7
|
-
* @typedef DrawRangeIndexParams
|
|
8
|
-
* @type {Object}
|
|
9
|
-
* @property {null|DrawRange} drawRange
|
|
10
|
-
* @property {null|ElementBuffer} elementBuffer
|
|
11
|
-
* @property {null|indexType} indexType
|
|
12
|
-
* @property {null|int} drawMode
|
|
13
|
-
*
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
type DrawRange = {
|
|
18
|
-
first: number;
|
|
19
|
-
count: number;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
type DrawRangeIndexParams = {
|
|
23
|
-
drawRange: DrawRange;
|
|
24
|
-
elementBuffer?: WebGLBuffer;
|
|
25
|
-
elementBufferIndexType?: number;
|
|
26
|
-
drawMode?: number;
|
|
27
|
-
};
|
|
28
|
-
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# UniformBlock Wrapper
|
|
2
|
-
|
|
3
|
-
- Uniform shader string
|
|
4
|
-
- bind/unbind
|
|
5
|
-
- set/get uniform value generic
|
|
6
|
-
|
|
7
|
-
## INPUT
|
|
8
|
-
- uniform block name
|
|
9
|
-
- Array<{type, name}> UniformBlockMembers
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## PROCESS
|
|
13
|
-
|
|
14
|
-
- Calculate and save starting offset of each member
|
|
15
|
-
- Create UBO
|
|
16
|
-
- Bind UBO
|
|
17
|
-
- Set uniform value
|
|
18
|
-
|
|
19
|
-
### Calculate and save starting offset of each member
|
|
20
|
-
|
|
21
|
-
layout(std140) is a convention. The calculation should be done according to this convention.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
type | size
|
|
25
|
-
--- | ---
|
|
26
|
-
float | 4
|
|
27
|
-
vec2 | 8
|
|
28
|
-
vec3 | 12
|
|
29
|
-
vec4 | 16
|
|
30
|
-
mat2 | 16
|
|
31
|
-
mat3 | 48
|
|
32
|
-
mat4 | 64
|
|
33
|
-
|
|
34
|
-
A line is 16 bytes aligned. Alignment can be shared if previous member is equal or bigger then the next member and the sum of the sizes are smaller then 16 bytes.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
## setMethod
|
|
46
|
-
|
|
47
|
-
update({
|
|
48
|
-
color = null,
|
|
49
|
-
bboxOffsetRad = null,
|
|
50
|
-
bboxSizeRad = null,
|
|
51
|
-
resolution = null,
|
|
52
|
-
tailLengthRatio = null,
|
|
53
|
-
wingLengthRatio = null,
|
|
54
|
-
height = null,
|
|
55
|
-
opacity = null,
|
|
56
|
-
noDataValue = null,
|
|
57
|
-
} = {}) {
|
|
58
|
-
const { gl, ubo } = this;
|
|
59
|
-
gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
|
|
60
|
-
if (color !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array(color));
|
|
61
|
-
if (opacity !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 12, new Float32Array([opacity]));
|
|
62
|
-
if (bboxOffsetRad !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 16, new Float32Array(bboxOffsetRad));
|
|
63
|
-
if (bboxSizeRad !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 24, new Float32Array(bboxSizeRad));
|
|
64
|
-
if (resolution !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 32, new Float32Array(resolution));
|
|
65
|
-
if (tailLengthRatio !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 40, new Float32Array([tailLengthRatio]));
|
|
66
|
-
if (wingLengthRatio !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 44, new Float32Array([wingLengthRatio]));
|
|
67
|
-
if (height !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 48, new Float32Array([height]));
|
|
68
|
-
if (noDataValue !== null) gl.bufferSubData(gl.UNIFORM_BUFFER, 52, new Float32Array([noDataValue]));
|
|
69
|
-
gl.bindBuffer(gl.UNIFORM_BUFFER, null);
|
|
70
|
-
}
|
|
File without changes
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {string} UniformBlockName
|
|
3
|
-
*
|
|
4
|
-
* @typedef {string} GLSLType | mat4, mat3, vec4, vec3, vec2, float, int, bool
|
|
5
|
-
* @typedef {{name: string, type: GLSLType, value: null|Float32Array}} UniformBlockMember
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
type UniformBlockName = string;
|
|
11
|
-
type GLSLType = "mat4" | "mat3" | "vec4" | "vec3" | "vec2" | "float" | "int" | "bool";
|
|
12
|
-
type UniformBlockMember = {
|
|
13
|
-
name: string;
|
|
14
|
-
type: GLSLType;
|
|
15
|
-
value: Float32Array | null;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
type NameValueMap = Map<string, Array<number> | DataView | ArrayBuffer>;
|
|
20
|
-
|
|
21
|
-
type UBOHandler = {
|
|
22
|
-
ubo: WebGLBuffer;
|
|
23
|
-
update: (nameValueMap: Map<string, any>) => void;
|
|
24
|
-
bind: () => void;
|
|
25
|
-
unbind: () => void;
|
|
26
|
-
free: () => void;
|
|
27
|
-
};
|