@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
|
@@ -1,42 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
gl.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
gl.uniform1f(_programWrapper.
|
|
32
|
-
gl.uniform1f(_programWrapper.
|
|
33
|
-
gl.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
_createProgramWrapper() {
|
|
39
|
-
const gl = this.gl;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TextureToGlobeProgram = void 0;
|
|
4
|
+
const webglobjectbuilders_1 = require("../webglobjectbuilders");
|
|
5
|
+
const __1 = require("..");
|
|
6
|
+
const __2 = require("..");
|
|
7
|
+
/** TODO:
|
|
8
|
+
* 3d icin calistir
|
|
9
|
+
*/
|
|
10
|
+
//TODO: DELETE THIS FILE.
|
|
11
|
+
class TextureToGlobeProgram {
|
|
12
|
+
constructor(gl, globe) {
|
|
13
|
+
this.globe = globe;
|
|
14
|
+
this.gl = gl;
|
|
15
|
+
this._is3D = true;
|
|
16
|
+
this._programWrapper = this._createProgramWrapper();
|
|
17
|
+
this._resizeHandler = this._resizeEventHandler.bind(this);
|
|
18
|
+
window.addEventListener('resize', this._resizeHandler, true);
|
|
19
|
+
}
|
|
20
|
+
_initUniforms() {
|
|
21
|
+
const { gl, _programWrapper } = this;
|
|
22
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
23
|
+
gl.useProgram(_programWrapper.program);
|
|
24
|
+
// set u_alpha
|
|
25
|
+
gl.uniformMatrix3fv(_programWrapper.u_bbox_matrix, false, new Float32Array([
|
|
26
|
+
1, 0, 0,
|
|
27
|
+
0, 1, 0,
|
|
28
|
+
0, 0, 1
|
|
29
|
+
]));
|
|
30
|
+
gl.uniform1f(_programWrapper.u_alpha, 1.0);
|
|
31
|
+
gl.uniform1f(_programWrapper.u_is3D, 1.0);
|
|
32
|
+
gl.uniform1f(_programWrapper.height, 0.0);
|
|
33
|
+
gl.useProgram(currentProgram);
|
|
34
|
+
}
|
|
35
|
+
_createProgramWrapper() {
|
|
36
|
+
const gl = this.gl;
|
|
40
37
|
const vertexSource = `#version 300 es
|
|
41
38
|
precision highp float;
|
|
42
39
|
|
|
@@ -57,8 +54,8 @@ class TextureToGlobeProgram {
|
|
|
57
54
|
out vec2 v_texcoord;
|
|
58
55
|
|
|
59
56
|
|
|
60
|
-
` + shaderfunctions.pixelXYToCartesian3DPoint + `
|
|
61
|
-
` + shaderfunctions.pixelXYToCartesian2DPoint + `
|
|
57
|
+
` + __1.shaderfunctions.pixelXYToCartesian3DPoint + `
|
|
58
|
+
` + __1.shaderfunctions.pixelXYToCartesian2DPoint + `
|
|
62
59
|
|
|
63
60
|
|
|
64
61
|
void main() {
|
|
@@ -73,8 +70,7 @@ class TextureToGlobeProgram {
|
|
|
73
70
|
gl_PointSize = 100.0;
|
|
74
71
|
v_texcoord = a_position * 0.5 + 0.5; // need a check
|
|
75
72
|
}
|
|
76
|
-
`;
|
|
77
|
-
|
|
73
|
+
`;
|
|
78
74
|
const fragmentSource = `#version 300 es
|
|
79
75
|
precision highp float;
|
|
80
76
|
|
|
@@ -90,114 +86,97 @@ class TextureToGlobeProgram {
|
|
|
90
86
|
// outColor.a *= u_alpha;
|
|
91
87
|
outColor = vec4(1.0, 0.0, 0.0, 0.5);
|
|
92
88
|
}
|
|
93
|
-
`;
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
gl.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
gl.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
gl.
|
|
130
|
-
gl.
|
|
131
|
-
gl.
|
|
132
|
-
gl.
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
gl.
|
|
143
|
-
gl.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
gl.useProgram(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
gl.useProgram(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const { gl, _programWrapper } = this;
|
|
161
|
-
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
162
|
-
gl.useProgram(_programWrapper.program);
|
|
163
|
-
gl.
|
|
164
|
-
gl.useProgram(currentProgram);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
gl
|
|
172
|
-
|
|
173
|
-
gl.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
gl.uniform1f(_programWrapper.u_is3D, this._is3D ? 1.0 : 0.0);
|
|
188
|
-
gl.useProgram(currentProgram);
|
|
189
|
-
this.resize();
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
free() {
|
|
193
|
-
window.removeEventListener('resize',
|
|
194
|
-
this._resizeHandler, true);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
_resizeEventHandler() {
|
|
198
|
-
this.resize();
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
export { TextureToGlobeProgram };
|
|
89
|
+
`;
|
|
90
|
+
const program = (0, webglobjectbuilders_1.createProgram)(gl, vertexSource, fragmentSource);
|
|
91
|
+
const vao = gl.createVertexArray();
|
|
92
|
+
const buffer = gl.createBuffer();
|
|
93
|
+
gl.bindVertexArray(vao);
|
|
94
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
95
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
|
|
96
|
+
0, 0,
|
|
97
|
+
1, 0,
|
|
98
|
+
1, 1,
|
|
99
|
+
0, 1
|
|
100
|
+
]), gl.STATIC_DRAW);
|
|
101
|
+
const a_position = -gl.getAttribLocation(program, 'a_position');
|
|
102
|
+
gl.enableVertexAttribArray(a_position);
|
|
103
|
+
gl.vertexAttribPointer(a_position, 2, gl.FLOAT, false, 0, 0);
|
|
104
|
+
gl.bindVertexArray(null);
|
|
105
|
+
return {
|
|
106
|
+
program: program,
|
|
107
|
+
vao: vao,
|
|
108
|
+
u_model_view_matrix: gl.getUniformLocation(program, 'u_model_view_matrix'),
|
|
109
|
+
u_proj_matrix: gl.getUniformLocation(program, 'u_proj_matrix'),
|
|
110
|
+
u_transpos: gl.getUniformLocation(program, 'u_transpos'),
|
|
111
|
+
u_mapWH: gl.getUniformLocation(program, 'u_mapWH'),
|
|
112
|
+
u_scrWH: gl.getUniformLocation(program, 'u_scrWH'),
|
|
113
|
+
u_texture: gl.getUniformLocation(program, 'u_texture'),
|
|
114
|
+
u_bbox_matrix: gl.getUniformLocation(program, 'u_bbox_matrix'),
|
|
115
|
+
u_is3D: gl.getUniformLocation(program, 'u_is3D'),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
draw(modelViewMatrix, projectionMatrix, transPos, texture) {
|
|
119
|
+
// console.log('draw')
|
|
120
|
+
const { gl, _programWrapper, _is3D } = this;
|
|
121
|
+
gl.useProgram(_programWrapper.program);
|
|
122
|
+
gl.bindVertexArray(_programWrapper.vao);
|
|
123
|
+
gl.uniformMatrix4fv(_programWrapper.u_model_view_matrix, false, modelViewMatrix);
|
|
124
|
+
gl.uniformMatrix4fv(_programWrapper.u_proj_matrix, false, projectionMatrix);
|
|
125
|
+
gl.uniform3f(_programWrapper.u_transpos, transPos.x, transPos.y, transPos.z);
|
|
126
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
127
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
128
|
+
gl.uniform1i(_programWrapper.u_texture, 0);
|
|
129
|
+
if (!_is3D) {
|
|
130
|
+
const mapWH = this.globe.api_GetCurrentWorldWH();
|
|
131
|
+
gl.uniform2f(_programWrapper.u_mapWH, mapWH.width, mapWH.height);
|
|
132
|
+
}
|
|
133
|
+
gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);
|
|
134
|
+
gl.drawArrays(gl.POINTS, 0, 4);
|
|
135
|
+
}
|
|
136
|
+
setBBox(minx, maxx, miny, maxy) {
|
|
137
|
+
const { gl, _programWrapper } = this;
|
|
138
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
139
|
+
gl.useProgram(_programWrapper.program);
|
|
140
|
+
gl.uniformMatrix3fv(_programWrapper.u_bbox_matrix, false, new Float32Array([
|
|
141
|
+
maxx - minx, 0, minx,
|
|
142
|
+
0, maxy - miny, miny,
|
|
143
|
+
0, 0, 1
|
|
144
|
+
]));
|
|
145
|
+
gl.useProgram(currentProgram);
|
|
146
|
+
}
|
|
147
|
+
setLatLongBBox(minx, maxx, miny, maxy) {
|
|
148
|
+
const bboxMatrix = (0, __2.latLongBboxtoPixelXYBbox)(minx, miny, maxx, maxy);
|
|
149
|
+
const { gl, _programWrapper } = this;
|
|
150
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
151
|
+
gl.useProgram(_programWrapper.program);
|
|
152
|
+
gl.uniformMatrix3fv(_programWrapper.u_bbox_matrix, false, bboxMatrix);
|
|
153
|
+
gl.useProgram(currentProgram);
|
|
154
|
+
}
|
|
155
|
+
setScreenWH() {
|
|
156
|
+
const { gl, _programWrapper, globe } = this;
|
|
157
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
158
|
+
gl.useProgram(_programWrapper.program);
|
|
159
|
+
gl.uniform2f(_programWrapper.u_scrWH, globe.api_ScrW(), globe.api_ScrH());
|
|
160
|
+
gl.useProgram(currentProgram);
|
|
161
|
+
}
|
|
162
|
+
resize() {
|
|
163
|
+
const { globe } = this;
|
|
164
|
+
this.setScreenWH();
|
|
165
|
+
}
|
|
166
|
+
setGeometry() {
|
|
167
|
+
const { gl, globe, _programWrapper } = this;
|
|
168
|
+
this._is3D = globe.api_GetCurrentGeometry() === 0;
|
|
169
|
+
const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
|
|
170
|
+
gl.useProgram(_programWrapper.program);
|
|
171
|
+
gl.uniform1f(_programWrapper.u_is3D, this._is3D ? 1.0 : 0.0);
|
|
172
|
+
gl.useProgram(currentProgram);
|
|
173
|
+
this.resize();
|
|
174
|
+
}
|
|
175
|
+
free() {
|
|
176
|
+
window.removeEventListener('resize', this._resizeHandler, true);
|
|
177
|
+
}
|
|
178
|
+
_resizeEventHandler() {
|
|
179
|
+
this.resize();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.TextureToGlobeProgram = TextureToGlobeProgram;
|
|
@@ -1,40 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
// Z in kolometers
|
|
3
|
+
//
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.circleOnSphere = exports.circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate = exports.circleLimpFromLongLatRadCenterMercatorCompass_accurate = exports.circleLimpFromLongLatRadCenterCartesian3D_accurate = exports.slerp = exports.realDistanceOnSphereR1 = exports.circleCircumferenceInterPolationOf2PointsRadian = exports.angleBetweenTwoPointsRadian = exports.cartesianToSpherical = exports.circleLimpFromLongLatRadCenterMercatorCompass = exports.circleLimpFromLongLatRadCenterMercatorRealDistancePadding = exports.circleLimpFromLongLatRadCenterMercatorRealDistance = exports.circleLimpFromLongLatRadCenterMercatorRealDistanceNew = exports.circleLimpFromLongLatRadCenterCartesian3D = exports.longLatRadToCartesian3DWithR = exports.longLatRadToCartesian3D = exports.longLatRadToMercator = exports.cartesian3DToGLPosition = exports.mercatorXYToGLPosition = exports.pixelXYToCartesian2DPoint = exports.pixelXYToCartesian3DPoint = exports.R_3D = exports.POLE_BY_PI = exports.PI = exports.R = exports.POLE = void 0;
|
|
6
|
+
exports.POLE = `
|
|
7
7
|
#ifndef POLE
|
|
8
8
|
#define POLE 20037508.34
|
|
9
9
|
#endif
|
|
10
|
-
`;
|
|
11
|
-
|
|
12
|
-
export const R = `
|
|
10
|
+
`;
|
|
11
|
+
exports.R = `
|
|
13
12
|
#ifndef R
|
|
14
13
|
#define R 6378137.0
|
|
15
14
|
#endif
|
|
16
|
-
`;
|
|
17
|
-
|
|
18
|
-
export const PI = `
|
|
15
|
+
`;
|
|
16
|
+
exports.PI = `
|
|
19
17
|
#ifndef PI
|
|
20
18
|
#define PI 3.141592653589793
|
|
21
19
|
|
|
22
20
|
#endif
|
|
23
|
-
`;
|
|
24
|
-
|
|
25
|
-
export const POLE_BY_PI = `
|
|
21
|
+
`;
|
|
22
|
+
exports.POLE_BY_PI = `
|
|
26
23
|
#ifndef POLE_BY_PI
|
|
27
24
|
#define POLE_BY_PI 6378137.0
|
|
28
25
|
#endif
|
|
29
|
-
`;
|
|
30
|
-
|
|
31
|
-
export const R_3D = `
|
|
26
|
+
`;
|
|
27
|
+
exports.R_3D = `
|
|
32
28
|
#ifndef R_3D
|
|
33
29
|
#define R_3D 6378.137
|
|
34
30
|
#endif
|
|
35
|
-
`;
|
|
36
|
-
|
|
37
|
-
export const pixelXYToCartesian3DPoint = R_3D + PI + `
|
|
31
|
+
`;
|
|
32
|
+
exports.pixelXYToCartesian3DPoint = exports.R_3D + exports.PI + `
|
|
38
33
|
vec3 pixelXYToCartesian3DPoint( vec3 position) {
|
|
39
34
|
float longRad = PI * (2.0 * position.x - 1.0);
|
|
40
35
|
float latRad = PI * position.y;
|
|
@@ -44,9 +39,8 @@ vec3 pixelXYToCartesian3DPoint( vec3 position) {
|
|
|
44
39
|
float z = radius * cos(latRad);
|
|
45
40
|
return vec3(x, y, z);
|
|
46
41
|
}
|
|
47
|
-
`;
|
|
48
|
-
|
|
49
|
-
export const pixelXYToCartesian2DPoint = PI + POLE + POLE_BY_PI + `
|
|
42
|
+
`;
|
|
43
|
+
exports.pixelXYToCartesian2DPoint = exports.PI + exports.POLE + exports.POLE_BY_PI + `
|
|
50
44
|
vec2 pixelXYToCartesian2DPoint( vec2 position, vec2 translate, vec2 mapWH, vec2 screenWH) {
|
|
51
45
|
float x = (2.0 * position.x - 1.0) * POLE;
|
|
52
46
|
x = ((x - translate.x) / mapWH.x) * screenWH.x;
|
|
@@ -54,56 +48,47 @@ vec2 pixelXYToCartesian2DPoint( vec2 position, vec2 translate, vec2 mapWH, vec2
|
|
|
54
48
|
y = (1.0 - (y - translate.y) / mapWH.y) * screenWH.y;
|
|
55
49
|
return vec2(x, y);
|
|
56
50
|
}
|
|
57
|
-
`;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
export const mercatorXYToGLPosition = `
|
|
51
|
+
`;
|
|
52
|
+
// TODO: rename it to mercatorXYToGLPosition
|
|
53
|
+
exports.mercatorXYToGLPosition = `
|
|
61
54
|
vec4 mercatorXYToGLPosition( vec2 position) { // projection, translate, mapWH, screenWH comes from camera uniform block
|
|
62
55
|
float x = (( position.x - translate.x ) / mapWH.x) * screenWH.x;
|
|
63
56
|
float y = (1.0 - (position.y - translate.y) / mapWH.y) * screenWH.y;
|
|
64
57
|
return projection * vec4(x, y, 0.0, 1.0);
|
|
65
58
|
}
|
|
66
|
-
`;
|
|
67
|
-
|
|
68
|
-
export const cartesian3DToGLPosition = `
|
|
59
|
+
`;
|
|
60
|
+
exports.cartesian3DToGLPosition = `
|
|
69
61
|
vec4 cartesian3DToGLPosition( vec3 position) {
|
|
70
62
|
return projection * view * vec4(position - translate, 1.0);
|
|
71
63
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// pi / pole = 2 / R
|
|
76
|
-
|
|
77
|
-
export const longLatRadToMercator = R + PI + `
|
|
64
|
+
`;
|
|
65
|
+
// pi / pole = 2 / R
|
|
66
|
+
exports.longLatRadToMercator = exports.R + exports.PI + `
|
|
78
67
|
vec2 longLatRadToMercator( vec2 longLatRad) {
|
|
79
68
|
float x = R * longLatRad.x;
|
|
80
69
|
float y = R * log( tan( PI / 4.0 + longLatRad.y / 2.0 ) );
|
|
81
70
|
y -= mix(-60.0, 60.0, abs(longLatRad.y + PI / 8.0) / (PI / 4.0));
|
|
82
71
|
return vec2(x, y);
|
|
83
72
|
}
|
|
84
|
-
`;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
export const longLatRadToCartesian3D = R_3D + `
|
|
73
|
+
`;
|
|
74
|
+
exports.longLatRadToCartesian3D = exports.R_3D + `
|
|
88
75
|
vec3 longLatRadToCartesian3D( vec2 longLat) {
|
|
89
76
|
float x = R_3D * cos(longLat.y) * cos(longLat.x);
|
|
90
77
|
float y = R_3D * cos(longLat.y) * sin(longLat.x);
|
|
91
78
|
float z = R_3D * sin(longLat.y);
|
|
92
79
|
return vec3(x, y, z);
|
|
93
80
|
}
|
|
94
|
-
`;
|
|
95
|
-
|
|
96
|
-
export const longLatRadToCartesian3DWithR = `
|
|
81
|
+
`;
|
|
82
|
+
exports.longLatRadToCartesian3DWithR = `
|
|
97
83
|
vec3 longLatRadToCartesian3DWithR( vec2 longLat, float radius) {
|
|
98
84
|
float x = radius * cos(longLat.y) * cos(longLat.x);
|
|
99
85
|
float y = radius * cos(longLat.y) * sin(longLat.x);
|
|
100
86
|
float z = radius * sin(longLat.y);
|
|
101
87
|
return vec3(x, y, z);
|
|
102
88
|
}
|
|
103
|
-
`;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
export const circleLimpFromLongLatRadCenterCartesian3D = R + `
|
|
89
|
+
`;
|
|
90
|
+
// TODO: Make it precise. It doesnt use haversine formula. If this changes, change the formmula which calculates text position.
|
|
91
|
+
exports.circleLimpFromLongLatRadCenterCartesian3D = exports.R + `
|
|
107
92
|
vec3 circleLimpFromLongLatRadCenterCartesian3D( vec2 center, float radius, float angle) {
|
|
108
93
|
vec3 geoW = longLatRadToCartesian3D(center);
|
|
109
94
|
vec3 normal = normalize(geoW);
|
|
@@ -116,13 +101,9 @@ vec3 circleLimpFromLongLatRadCenterCartesian3D( vec2 center, float radius, float
|
|
|
116
101
|
float projected_radius = sin(radius_in_angle) * R / 1000.0;
|
|
117
102
|
return (geoW * cos(radius_in_angle))+ tangent1 * projected_radius;
|
|
118
103
|
}
|
|
119
|
-
`;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// TODO: Make it precise. Y axis is not correct.
|
|
124
|
-
|
|
125
|
-
export const circleLimpFromLongLatRadCenterMercatorRealDistanceNew = PI + `
|
|
104
|
+
`;
|
|
105
|
+
// TODO: Make it precise. Y axis is not correct.
|
|
106
|
+
exports.circleLimpFromLongLatRadCenterMercatorRealDistanceNew = exports.PI + `
|
|
126
107
|
vec2 circleLimpFromLongLatRadCenterMercatorRealDistance(vec2 center, float radius, float angle) {
|
|
127
108
|
float ang = angle + PI / 2.0; // Shift angle to align with +x axis
|
|
128
109
|
float r = radius / R;
|
|
@@ -140,10 +121,8 @@ vec2 circleLimpFromLongLatRadCenterMercatorRealDistance(vec2 center, float radiu
|
|
|
140
121
|
R * longi,
|
|
141
122
|
R * log(tan(PI / 4.0 + lat / 2.0))
|
|
142
123
|
);
|
|
143
|
-
}`;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
export const circleLimpFromLongLatRadCenterMercatorRealDistance = PI + `
|
|
124
|
+
}`;
|
|
125
|
+
exports.circleLimpFromLongLatRadCenterMercatorRealDistance = exports.PI + `
|
|
147
126
|
vec2 circleLimpFromLongLatRadCenterMercatorRealDistance(vec2 center, float radius, float angle){
|
|
148
127
|
float ang = angle + PI / 2.0; // this is there because the other methods are implemented in, angle 0 is +x axis orientatation
|
|
149
128
|
float r = radius / R;
|
|
@@ -152,10 +131,9 @@ vec2 circleLimpFromLongLatRadCenterMercatorRealDistance(vec2 center, float radiu
|
|
|
152
131
|
float longi = center.x + atan(sin(ang) * sin(r) * cos(center.y), cos(r) - sin(center.y) * sin_lat);
|
|
153
132
|
return longLatRadToMercator(vec2(longi, lat));
|
|
154
133
|
}
|
|
155
|
-
`;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
export const circleLimpFromLongLatRadCenterMercatorRealDistancePadding = `
|
|
134
|
+
`;
|
|
135
|
+
// TODO: reconstruct this function
|
|
136
|
+
exports.circleLimpFromLongLatRadCenterMercatorRealDistancePadding = `
|
|
159
137
|
vec2 circleLimpFromLongLatRadCenterMercatorRealDistancePadding(vec2 center, float radius, float angle){
|
|
160
138
|
float radius_radian = radius / R;
|
|
161
139
|
float new_angle;
|
|
@@ -180,53 +158,40 @@ vec2 circleLimpFromLongLatRadCenterMercatorRealDistancePadding(vec2 center, floa
|
|
|
180
158
|
float y = center_.y - new_scale * radius * sin(new_angle);
|
|
181
159
|
return vec2(x, y);
|
|
182
160
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
export const circleLimpFromLongLatRadCenterMercatorCompass = `
|
|
161
|
+
`;
|
|
162
|
+
exports.circleLimpFromLongLatRadCenterMercatorCompass = `
|
|
187
163
|
vec2 circleLimpFromLongLatRadCenterMercatorCompass(vec2 center, float radius, float angle){
|
|
188
164
|
vec2 center_ = longLatRadToMercator(center);
|
|
189
165
|
float y = -sin(angle) * radius + center_.y;
|
|
190
166
|
float x = cos(angle) * radius + center_.x;
|
|
191
167
|
return vec2(x, y);
|
|
192
|
-
} `;
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
// Function to convert Cartesian coordinates back to spherical (latitude, longitude)
|
|
196
|
-
export const cartesianToSpherical = `
|
|
168
|
+
} `;
|
|
169
|
+
// Function to convert Cartesian coordinates back to spherical (latitude, longitude)
|
|
170
|
+
exports.cartesianToSpherical = `
|
|
197
171
|
vec2 cartesianToSpherical(vec3 point) {
|
|
198
172
|
float lat = degrees(asin(point.z)); // Latitude
|
|
199
173
|
float lon = degrees(atan(point.y, point.x)); // Longitude
|
|
200
174
|
|
|
201
175
|
return vec2(lat, lon);
|
|
202
|
-
} `;
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
export const angleBetweenTwoPointsRadian = `
|
|
176
|
+
} `;
|
|
177
|
+
// Main function to calculate an intermediate point
|
|
178
|
+
exports.angleBetweenTwoPointsRadian = `
|
|
209
179
|
float angleBetweenTwoPointsRadian(vec2 start_, vec2 end_) {
|
|
210
180
|
float start_lat = log(tan((1.0 - start_.y) * PI / 2.0));
|
|
211
181
|
float end_lat = log(tan((1.0 - end_.y) * PI / 2.0));
|
|
212
182
|
float angle = atan((end_lat - start_lat) / (end_.x - start_.x));
|
|
213
183
|
return angle;
|
|
214
184
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
export const circleCircumferenceInterPolationOf2PointsRadian = `
|
|
185
|
+
`;
|
|
186
|
+
exports.circleCircumferenceInterPolationOf2PointsRadian = `
|
|
218
187
|
float circleCircumferenceInterPolationOf2PointsRadian(vec2 center, vec2 target, float bearing_angle, float ratio) {
|
|
219
188
|
vec2 t = target - center;
|
|
220
189
|
float mainAngle = atan(t.x, t.y);
|
|
221
190
|
float angle = mainAngle - * ratio;
|
|
222
191
|
return angle;
|
|
223
192
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
export const realDistanceOnSphereR1 = `
|
|
193
|
+
`;
|
|
194
|
+
exports.realDistanceOnSphereR1 = `
|
|
230
195
|
float realDistanceOnSphereR1(vec2 longLat1, vec2 longLat2) {
|
|
231
196
|
float dLat = longLat2.y - longLat1.y;
|
|
232
197
|
float dLong = longLat2.x - longLat1.x;
|
|
@@ -234,10 +199,7 @@ float realDistanceOnSphereR1(vec2 longLat1, vec2 longLat2) {
|
|
|
234
199
|
float c = 2.0 * atan(sqrt(a), sqrt(1.0 - a));
|
|
235
200
|
return c;
|
|
236
201
|
}
|
|
237
|
-
`;
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
202
|
+
`;
|
|
241
203
|
const pointsOnSphereBetween = `
|
|
242
204
|
vec3 pointsOnSphereBetween(vec3 a, vec3 b, float ratio) {
|
|
243
205
|
// Normalize the input points to ensure they are on the unit sphere
|
|
@@ -264,17 +226,15 @@ vec3 pointsOnSphereBetween(vec3 a, vec3 b, float ratio) {
|
|
|
264
226
|
|
|
265
227
|
// Return the normalized result to ensure it lies on the sphere
|
|
266
228
|
return normalize(result);
|
|
267
|
-
}`;
|
|
268
|
-
|
|
269
|
-
|
|
229
|
+
}`;
|
|
270
230
|
const slerp = `
|
|
271
231
|
${pointsOnSphereBetween}
|
|
272
232
|
vec3 slerp(vec3 A, vec3 B, float t) {
|
|
273
233
|
return pointsOnSphereBetween(A, B, t) * mix(length(A), length(B), t);
|
|
274
234
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
const circleLimpFromLongLatRadCenterCartesian3D_accurate = R + `
|
|
235
|
+
`;
|
|
236
|
+
exports.slerp = slerp;
|
|
237
|
+
const circleLimpFromLongLatRadCenterCartesian3D_accurate = exports.R + `
|
|
278
238
|
vec3 circleLimpFromLongLatRadCenterCartesian3D_accurate( vec3 geoW, float radius, float angle) {
|
|
279
239
|
vec3 normal = normalize(geoW);
|
|
280
240
|
vec3 tangent1 = cross(normal, vec3(0.0, 0.0, -1.0));
|
|
@@ -285,9 +245,8 @@ vec3 circleLimpFromLongLatRadCenterCartesian3D_accurate( vec3 geoW, float radius
|
|
|
285
245
|
float radius_in_angle = radius/R;
|
|
286
246
|
float projected_radius = sin(radius_in_angle) * R / 1000.0;
|
|
287
247
|
return (geoW * cos(radius_in_angle)) + tangent1 * projected_radius;
|
|
288
|
-
}`;
|
|
289
|
-
|
|
290
|
-
|
|
248
|
+
}`;
|
|
249
|
+
exports.circleLimpFromLongLatRadCenterCartesian3D_accurate = circleLimpFromLongLatRadCenterCartesian3D_accurate;
|
|
291
250
|
const circleOnSphere = `
|
|
292
251
|
vec3 rotateVectorAroundAxis(vec3 v, vec3 axis, float angle) {
|
|
293
252
|
float c = cos(angle);
|
|
@@ -344,17 +303,17 @@ vec3 circleOnSphere(vec3 M, vec3 H, float A) {
|
|
|
344
303
|
|
|
345
304
|
// For simplicity, returning the direct result of rotation. Assume M and H were perfectly on the sphere.
|
|
346
305
|
return rotatedPoint;
|
|
347
|
-
}`;
|
|
348
|
-
|
|
306
|
+
}`;
|
|
307
|
+
exports.circleOnSphere = circleOnSphere;
|
|
349
308
|
const circleLimpFromLongLatRadCenterMercatorCompass_accurate = `
|
|
350
309
|
vec2 circleLimpFromLongLatRadCenterMercatorCompass_accurate(vec2 center, float radius, float angle){
|
|
351
310
|
float y = -sin(angle) * radius + center.y;
|
|
352
311
|
float x = cos(angle) * radius + center.x;
|
|
353
312
|
return vec2(x, y);
|
|
354
|
-
} `;
|
|
355
|
-
|
|
356
|
-
//TODO make it work...
|
|
357
|
-
const circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate = PI + `
|
|
313
|
+
} `;
|
|
314
|
+
exports.circleLimpFromLongLatRadCenterMercatorCompass_accurate = circleLimpFromLongLatRadCenterMercatorCompass_accurate;
|
|
315
|
+
//TODO make it work...
|
|
316
|
+
const circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate = exports.PI + `
|
|
358
317
|
vec2 circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate(vec2 mercator_center, float radius, float angle) {
|
|
359
318
|
vec2 center = vec2(mercator_center.x /6378137.0 , asin(tanh(mercator_center.y / 6378137.0 )));
|
|
360
319
|
float ang = angle + PI / 2.0; // Shift angle to align with +x axis
|
|
@@ -377,12 +336,5 @@ vec2 circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate(vec2 mercato
|
|
|
377
336
|
R * log(tan(PI/4.0+ center.y / 2.0))
|
|
378
337
|
);
|
|
379
338
|
return mercator_center - center_mercator + limp;
|
|
380
|
-
}`;
|
|
381
|
-
|
|
382
|
-
export {
|
|
383
|
-
slerp,
|
|
384
|
-
circleLimpFromLongLatRadCenterCartesian3D_accurate,
|
|
385
|
-
circleLimpFromLongLatRadCenterMercatorCompass_accurate,
|
|
386
|
-
circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate,
|
|
387
|
-
circleOnSphere,
|
|
388
|
-
}
|
|
339
|
+
}`;
|
|
340
|
+
exports.circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate = circleLimpFromLongLatRadCenterMercatorRealDistanceNew_accurate;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./geometrytransformations"), exports);
|
|
18
|
+
__exportStar(require("./nodata"), exports);
|