@openglobus/og 0.11.1 → 0.11.6
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/package.json +18 -20
- package/src/og/Clock.js +11 -11
- package/src/og/Deferred.js +1 -1
- package/src/og/Events.js +9 -7
- package/src/og/Extent.js +117 -72
- package/src/og/Globe.js +35 -22
- package/src/og/ImageCanvas.js +24 -18
- package/src/og/Lock.js +2 -2
- package/src/og/LonLat.js +40 -37
- package/src/og/Popup.js +21 -15
- package/src/og/QueueArray.js +7 -3
- package/src/og/Rectangle.js +11 -6
- package/src/og/Stack.js +8 -5
- package/src/og/ajax.js +21 -33
- package/src/og/astro/astro.js +5 -5
- package/src/og/astro/earth.js +23 -17
- package/src/og/astro/jd.js +44 -39
- package/src/og/astro/orbit.js +20 -18
- package/src/og/astro/rotation.js +17 -8
- package/src/og/bv/Box.js +7 -3
- package/src/og/bv/Sphere.js +17 -9
- package/src/og/camera/Camera.js +137 -86
- package/src/og/camera/Frustum.js +30 -19
- package/src/og/camera/PlanetCamera.js +30 -26
- package/src/og/control/CompassButton.js +8 -2
- package/src/og/control/Control.js +13 -11
- package/src/og/control/DebugInfo.js +4 -1
- package/src/og/control/EarthCoordinates.js +62 -41
- package/src/og/control/EarthNavigation.js +20 -22
- package/src/og/control/GeoImageDragControl.js +1 -1
- package/src/og/control/KeyboardNavigation.js +12 -12
- package/src/og/control/LayerSwitcher.js +24 -23
- package/src/og/control/Lighting.js +1 -1
- package/src/og/control/MouseNavigation.js +1 -1
- package/src/og/control/ScaleControl.js +1 -1
- package/src/og/control/SegmentBoundVisualization.js +8 -9
- package/src/og/control/ShowFps.js +15 -10
- package/src/og/control/SimpleNavigation.js +8 -10
- package/src/og/control/Sun.js +25 -15
- package/src/og/control/ToggleWireframe.js +5 -5
- package/src/og/control/TouchNavigation.js +58 -45
- package/src/og/control/ZoomControl.js +41 -25
- package/src/og/control/index.js +4 -0
- package/src/og/ellipsoid/Ellipsoid.js +181 -85
- package/src/og/ellipsoid/wgs84.js +4 -4
- package/src/og/entity/BaseBillboard.js +97 -44
- package/src/og/entity/Billboard.js +15 -11
- package/src/og/entity/BillboardHandler.js +314 -64
- package/src/og/entity/Entity.js +106 -74
- package/src/og/entity/EntityCollection.js +72 -49
- package/src/og/entity/GeoObject.js +228 -0
- package/src/og/entity/GeoObjectHandler.js +910 -0
- package/src/og/entity/Geometry.js +29 -26
- package/src/og/entity/GeometryHandler.js +598 -126
- package/src/og/entity/Label.js +74 -40
- package/src/og/entity/LabelHandler.js +47 -246
- package/src/og/entity/LabelWorker.js +213 -0
- package/src/og/entity/Object3d.js +504 -0
- package/src/og/entity/PointCloud.js +81 -33
- package/src/og/entity/PointCloudHandler.js +9 -9
- package/src/og/entity/Polyline.js +39 -39
- package/src/og/entity/Ray.js +61 -28
- package/src/og/entity/ShapeHandler.js +1 -1
- package/src/og/entity/Strip.js +77 -48
- package/src/og/entity/StripHandler.js +27 -27
- package/src/og/entity/index.js +8 -16
- package/src/og/input/KeyboardHandler.js +107 -104
- package/src/og/input/MouseHandler.js +81 -78
- package/src/og/input/TouchHandler.js +55 -51
- package/src/og/layer/BaseGeoImage.js +61 -30
- package/src/og/layer/CanvasTiles.js +26 -24
- package/src/og/layer/GeoImage.js +10 -10
- package/src/og/layer/GeoTexture2d.js +1 -1
- package/src/og/layer/GeoVideo.js +3 -3
- package/src/og/layer/KML.js +66 -40
- package/src/og/layer/Layer.js +27 -17
- package/src/og/layer/Material.js +93 -61
- package/src/og/layer/Vector.js +118 -72
- package/src/og/layer/WMS.js +36 -19
- package/src/og/layer/XYZ.js +55 -48
- package/src/og/light/LightSource.js +47 -40
- package/src/og/math/Line2.js +24 -24
- package/src/og/math/Line3.js +103 -102
- package/src/og/math/Mat3.js +134 -121
- package/src/og/math/Mat4.js +603 -459
- package/src/og/math/Plane.js +21 -20
- package/src/og/math/Quat.js +980 -927
- package/src/og/math/Ray.js +195 -187
- package/src/og/math/Vec2.js +127 -117
- package/src/og/math/Vec3.js +206 -176
- package/src/og/math/Vec4.js +49 -53
- package/src/og/math/coder.js +18 -18
- package/src/og/math.js +12 -12
- package/src/og/mercator.js +11 -11
- package/src/og/proj/EPSG3857.js +4 -4
- package/src/og/proj/EPSG4326.js +4 -4
- package/src/og/proj/Proj.js +31 -31
- package/src/og/quadTree/EntityCollectionNode.js +310 -300
- package/src/og/quadTree/Node.js +1008 -993
- package/src/og/renderer/Renderer.js +768 -747
- package/src/og/renderer/RendererEvents.js +9 -6
- package/src/og/scene/Axes.js +1 -1
- package/src/og/scene/BaseNode.js +8 -9
- package/src/og/scene/Planet.js +115 -87
- package/src/og/scene/RenderNode.js +29 -22
- package/src/og/scene/SkyBox.js +1 -1
- package/src/og/segment/Segment.js +1886 -1878
- package/src/og/segment/SegmentLonLat.js +298 -268
- package/src/og/segment/segmentHelper.js +11 -11
- package/src/og/shaders/bloom.js +1 -1
- package/src/og/shaders/blur.js +2 -2
- package/src/og/shaders/depth.js +1 -1
- package/src/og/shaders/geoObject.js +211 -0
- package/src/og/shaders/label.js +1 -1
- package/src/og/shaders/lumFilter.js +1 -1
- package/src/og/shaders/pointCloud.js +42 -42
- package/src/og/shaders/screenFrame.js +1 -1
- package/src/og/shaders/shape.js +15 -21
- package/src/og/shaders/skybox.js +37 -37
- package/src/og/shaders/toneMapping.js +1 -1
- package/src/og/shapes/BaseShape.js +129 -57
- package/src/og/shapes/Icosphere.js +30 -15
- package/src/og/shapes/Sphere.js +13 -16
- package/src/og/terrain/BilTerrain.js +2 -1
- package/src/og/terrain/EmptyTerrain.js +2 -2
- package/src/og/terrain/Geoid.js +2 -2
- package/src/og/terrain/GlobusTerrain.js +10 -10
- package/src/og/terrain/MapboxTerrain.js +1 -1
- package/src/og/utils/GeoImageCreator.js +9 -9
- package/src/og/utils/Loader.js +6 -6
- package/src/og/utils/NormalMapCreator.js +13 -13
- package/src/og/utils/TerrainWorker.js +1 -1
- package/src/og/utils/TextureAtlas.js +20 -22
- package/src/og/utils/VectorTileCreator.js +5 -5
- package/src/og/utils/earcut.js +1 -1
- package/src/og/utils/shared.js +15 -15
- package/src/og/webgl/Framebuffer.js +101 -53
- package/src/og/webgl/Handler.js +125 -85
- package/src/og/webgl/Multisample.js +55 -27
- package/src/og/webgl/Program.js +80 -35
- package/src/og/webgl/ProgramController.js +27 -23
- package/src/og/webgl/callbacks.js +8 -8
- package/types/Clock.d.ts +6 -2
- package/types/Deferred.d.ts +1 -1
- package/types/Events.d.ts +8 -4
- package/types/Extent.d.ts +37 -33
- package/types/Globe.d.ts +15 -13
- package/types/ImageCanvas.d.ts +5 -3
- package/types/LonLat.d.ts +24 -24
- package/types/Popup.d.ts +4 -0
- package/types/QueueArray.d.ts +6 -2
- package/types/Rectangle.d.ts +10 -4
- package/types/Stack.d.ts +4 -0
- package/types/ajax.d.ts +1 -1
- package/types/astro/earth.d.ts +3 -2
- package/types/bv/Box.d.ts +10 -5
- package/types/bv/Sphere.d.ts +13 -7
- package/types/camera/Camera.d.ts +90 -81
- package/types/camera/Frustum.d.ts +26 -22
- package/types/camera/PlanetCamera.d.ts +49 -53
- package/types/control/CompassButton.d.ts +4 -4
- package/types/control/Control.d.ts +7 -4
- package/types/control/DebugInfo.d.ts +3 -4
- package/types/control/EarthCoordinates.d.ts +6 -6
- package/types/control/EarthNavigation.d.ts +42 -0
- package/types/control/KeyboardNavigation.d.ts +3 -4
- package/types/control/LayerSwitcher.d.ts +3 -5
- package/types/control/Lighting.d.ts +3 -3
- package/types/control/MouseNavigation.d.ts +47 -0
- package/types/control/ScaleControl.d.ts +3 -3
- package/types/control/ShowFps.d.ts +3 -4
- package/types/control/SimpleNavigation.d.ts +3 -6
- package/types/control/Sun.d.ts +8 -10
- package/types/control/ToggleWireframe.d.ts +3 -3
- package/types/control/TouchNavigation.d.ts +48 -0
- package/types/control/ZoomControl.d.ts +3 -4
- package/types/control/index.d.ts +3 -1
- package/types/ellipsoid/Ellipsoid.d.ts +47 -43
- package/types/ellipsoid/wgs84.d.ts +3 -2
- package/types/entity/BaseBillboard.d.ts +41 -34
- package/types/entity/Billboard.d.ts +7 -7
- package/types/entity/BillboardHandler.d.ts +4 -0
- package/types/entity/Entity.d.ts +101 -83
- package/types/entity/EntityCollection.d.ts +57 -43
- package/types/entity/GeoObject.d.ts +111 -0
- package/types/entity/GeoObjectHandler.d.ts +77 -0
- package/types/entity/Geometry.d.ts +9 -7
- package/types/entity/GeometryHandler.d.ts +2 -2
- package/types/entity/Label.d.ts +24 -29
- package/types/entity/LabelHandler.d.ts +9 -2
- package/types/entity/LabelWorker.d.ts +9 -0
- package/types/entity/PointCloud.d.ts +8 -8
- package/types/entity/PointCloudHandler.d.ts +3 -3
- package/types/entity/Polyline.d.ts +58 -55
- package/types/entity/Ray.d.ts +19 -18
- package/types/entity/Strip.d.ts +8 -7
- package/types/entity/StripHandler.d.ts +3 -3
- package/types/entity/index.d.ts +7 -7
- package/types/input/KeyboardHandler.d.ts +10 -0
- package/types/input/MouseHandler.d.ts +5 -0
- package/types/input/TouchHandler.d.ts +5 -0
- package/types/layer/BaseGeoImage.d.ts +23 -35
- package/types/layer/CanvasTiles.d.ts +15 -22
- package/types/layer/GeoImage.d.ts +5 -18
- package/types/layer/GeoVideo.d.ts +5 -30
- package/types/layer/KML.d.ts +20 -15
- package/types/layer/Layer.d.ts +326 -0
- package/types/layer/Material.d.ts +45 -0
- package/types/layer/Vector.d.ts +208 -0
- package/types/layer/WMS.d.ts +4 -7
- package/types/layer/XYZ.d.ts +19 -25
- package/types/light/LightSource.d.ts +54 -53
- package/types/math/Line2.d.ts +11 -0
- package/types/math/Line3.d.ts +10 -0
- package/types/math/Mat3.d.ts +30 -18
- package/types/math/Mat4.d.ts +71 -52
- package/types/math/Plane.d.ts +5 -4
- package/types/math/Quat.d.ts +379 -0
- package/types/math/Ray.d.ts +82 -0
- package/types/math/Vec2.d.ts +102 -101
- package/types/math/Vec3.d.ts +143 -142
- package/types/math/Vec4.d.ts +40 -39
- package/types/math/coder.d.ts +12 -11
- package/types/math.d.ts +8 -8
- package/types/mercator.d.ts +3 -3
- package/types/proj/EPSG3857.d.ts +3 -2
- package/types/proj/EPSG4326.d.ts +3 -2
- package/types/proj/Proj.d.ts +42 -0
- package/types/quadTree/EntityCollectionNode.d.ts +34 -0
- package/types/quadTree/Node.d.ts +61 -0
- package/types/renderer/Renderer.d.ts +300 -0
- package/types/renderer/RendererEvents.d.ts +10 -7
- package/types/scene/BaseNode.d.ts +9 -9
- package/types/scene/Planet.d.ts +131 -126
- package/types/scene/RenderNode.d.ts +22 -23
- package/types/segment/Segment.d.ts +279 -0
- package/types/segment/SegmentLonLat.d.ts +16 -0
- package/types/shaders/geoObject.d.ts +3 -0
- package/types/shapes/BaseShape.d.ts +43 -40
- package/types/shapes/Sphere.d.ts +7 -7
- package/types/terrain/BilTerrain.d.ts +0 -1
- package/types/terrain/EmptyTerrain.d.ts +4 -4
- package/types/terrain/GlobusTerrain.d.ts +17 -54
- package/types/terrain/MapboxTerrain.d.ts +0 -1
- package/types/utils/GeoImageCreator.d.ts +3 -2
- package/types/utils/TextureAtlas.d.ts +8 -8
- package/types/utils/shared.d.ts +25 -24
- package/types/webgl/Framebuffer.d.ts +5 -5
- package/types/webgl/Handler.d.ts +68 -43
- package/types/webgl/Multisample.d.ts +5 -5
- package/types/webgl/Program.d.ts +8 -2
- package/types/webgl/ProgramController.d.ts +18 -13
- package/src/og/inherits.js +0 -8
- package/src/og/utils/polylabel.js +0 -176
- package/types/inherits.d.ts +0 -4
package/src/og/math/Vec4.js
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* @module og/math/Vec4
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import { Vec3 } from
|
|
7
|
+
import { Vec3 } from "./Vec3.js";
|
|
8
|
+
import { frac } from "../math.js";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Class represents a 4d vector.
|
|
@@ -15,9 +16,7 @@ import { Vec3 } from './Vec3.js';
|
|
|
15
16
|
* @param {number} [w] - Fourth value.
|
|
16
17
|
*/
|
|
17
18
|
export class Vec4 {
|
|
18
|
-
|
|
19
19
|
constructor(x, y, z, w) {
|
|
20
|
-
|
|
21
20
|
/**
|
|
22
21
|
* @public
|
|
23
22
|
* @type {number}
|
|
@@ -41,57 +40,59 @@ export class Vec4 {
|
|
|
41
40
|
* @type {number}
|
|
42
41
|
*/
|
|
43
42
|
this.w = w || 0.0;
|
|
44
|
-
}
|
|
43
|
+
}
|
|
45
44
|
|
|
46
45
|
/**
|
|
47
46
|
* Identity vector [0,0,0,1].
|
|
48
47
|
* @const
|
|
49
|
-
* @type {
|
|
48
|
+
* @type {Vec4}
|
|
50
49
|
*/
|
|
51
|
-
static get identity() {
|
|
50
|
+
static get identity() {
|
|
51
|
+
return new Vec4(0, 0, 0, 1);
|
|
52
|
+
}
|
|
52
53
|
|
|
53
54
|
/**
|
|
54
55
|
* Creates 4d vector from array.
|
|
55
56
|
* @function
|
|
56
|
-
* @param {Array.<number
|
|
57
|
-
* @returns {
|
|
57
|
+
* @param {Array.<number>} - (exactly 4 entries)
|
|
58
|
+
* @returns {Vec4}
|
|
58
59
|
*/
|
|
59
60
|
static fromVec(arr) {
|
|
60
61
|
return new Vec4(arr[0], arr[1], arr[2], arr[3]);
|
|
61
|
-
}
|
|
62
|
+
}
|
|
62
63
|
|
|
63
64
|
/**
|
|
64
65
|
* Converts to 3d vector, without fourth value.
|
|
65
66
|
* @public
|
|
66
|
-
* @returns {
|
|
67
|
+
* @returns {Vec3}
|
|
67
68
|
*/
|
|
68
69
|
toVec3() {
|
|
69
70
|
return new Vec3(this.x, this.y, this.z);
|
|
70
|
-
}
|
|
71
|
+
}
|
|
71
72
|
|
|
72
73
|
/**
|
|
73
74
|
* Returns clone vector.
|
|
74
75
|
* @public
|
|
75
|
-
* @returns {
|
|
76
|
+
* @returns {Vec4}
|
|
76
77
|
*/
|
|
77
78
|
clone(v) {
|
|
78
79
|
return new Vec4(this.x, this.y, this.z, this.w);
|
|
79
|
-
}
|
|
80
|
+
}
|
|
80
81
|
|
|
81
82
|
/**
|
|
82
83
|
* Compares with vector. Returns true if it equals another.
|
|
83
84
|
* @public
|
|
84
|
-
* @param {
|
|
85
|
+
* @param {Vec4} p - Vector to compare.
|
|
85
86
|
* @returns {boolean}
|
|
86
87
|
*/
|
|
87
88
|
equal(v) {
|
|
88
89
|
return this.x === v.x && this.y === v.y && this.z === v.z && this.w === v.w;
|
|
89
|
-
}
|
|
90
|
+
}
|
|
90
91
|
|
|
91
92
|
/**
|
|
92
93
|
* Copy input vector's values.
|
|
93
|
-
* @param {
|
|
94
|
-
* @returns {
|
|
94
|
+
* @param {Vec4} v - Vector to copy.
|
|
95
|
+
* @returns {Vec4}
|
|
95
96
|
*/
|
|
96
97
|
copy(v) {
|
|
97
98
|
this.x = v.x;
|
|
@@ -99,26 +100,26 @@ export class Vec4 {
|
|
|
99
100
|
this.z = v.z;
|
|
100
101
|
this.w = v.w;
|
|
101
102
|
return this;
|
|
102
|
-
}
|
|
103
|
+
}
|
|
103
104
|
|
|
104
105
|
/**
|
|
105
106
|
* Converts vector to a number array.
|
|
106
107
|
* @public
|
|
107
|
-
* @returns {Array.<number
|
|
108
|
+
* @returns {Array.<number>} - (exactly 4 entries)
|
|
108
109
|
* @deprecated
|
|
109
110
|
*/
|
|
110
111
|
toVec() {
|
|
111
112
|
return [this.x, this.y, this.z, this.w];
|
|
112
|
-
}
|
|
113
|
+
}
|
|
113
114
|
|
|
114
115
|
/**
|
|
115
116
|
* Converts vector to a number array.
|
|
116
117
|
* @public
|
|
117
|
-
* @returns {Array.<number
|
|
118
|
+
* @returns {Array.<number>} - (exactly 4 entries)
|
|
118
119
|
*/
|
|
119
120
|
toArray() {
|
|
120
121
|
return [this.x, this.y, this.z, this.w];
|
|
121
|
-
}
|
|
122
|
+
}
|
|
122
123
|
|
|
123
124
|
/**
|
|
124
125
|
* Sets vector's values.
|
|
@@ -127,7 +128,7 @@ export class Vec4 {
|
|
|
127
128
|
* @param {number} y - Value Y.
|
|
128
129
|
* @param {number} z - Value Z.
|
|
129
130
|
* @param {number} w - Value W.
|
|
130
|
-
* @returns {
|
|
131
|
+
* @returns {Vec4}
|
|
131
132
|
*/
|
|
132
133
|
set(x, y, z, w) {
|
|
133
134
|
this.x = x;
|
|
@@ -135,13 +136,13 @@ export class Vec4 {
|
|
|
135
136
|
this.z = z;
|
|
136
137
|
this.w = w;
|
|
137
138
|
return this;
|
|
138
|
-
}
|
|
139
|
+
}
|
|
139
140
|
|
|
140
141
|
/**
|
|
141
142
|
* Adds vector to the current.
|
|
142
143
|
* @public
|
|
143
|
-
* @param {
|
|
144
|
-
* @returns {
|
|
144
|
+
* @param {Vec4}
|
|
145
|
+
* @returns {Vec4}
|
|
145
146
|
*/
|
|
146
147
|
addA(v) {
|
|
147
148
|
this.x += v.x;
|
|
@@ -149,13 +150,13 @@ export class Vec4 {
|
|
|
149
150
|
this.z += v.z;
|
|
150
151
|
this.w += v.w;
|
|
151
152
|
return this;
|
|
152
|
-
}
|
|
153
|
+
}
|
|
153
154
|
|
|
154
155
|
/**
|
|
155
156
|
* Subtract vector from the current.
|
|
156
157
|
* @public
|
|
157
|
-
* @param {
|
|
158
|
-
* @returns {
|
|
158
|
+
* @param {Vec4} v - Subtract vector.
|
|
159
|
+
* @returns {Vec4}
|
|
159
160
|
*/
|
|
160
161
|
subA(v) {
|
|
161
162
|
this.x -= v.x;
|
|
@@ -163,13 +164,13 @@ export class Vec4 {
|
|
|
163
164
|
this.z -= v.z;
|
|
164
165
|
this.w -= v.w;
|
|
165
166
|
return this;
|
|
166
|
-
}
|
|
167
|
+
}
|
|
167
168
|
|
|
168
169
|
/**
|
|
169
170
|
* Scale current vector.
|
|
170
171
|
* @public
|
|
171
172
|
* @param {number} scale - Scale value.
|
|
172
|
-
* @returns {
|
|
173
|
+
* @returns {Vec4}
|
|
173
174
|
*/
|
|
174
175
|
scale(scale) {
|
|
175
176
|
this.x *= scale;
|
|
@@ -177,12 +178,12 @@ export class Vec4 {
|
|
|
177
178
|
this.z *= scale;
|
|
178
179
|
this.w *= scale;
|
|
179
180
|
return this;
|
|
180
|
-
}
|
|
181
|
+
}
|
|
181
182
|
|
|
182
183
|
/**
|
|
183
184
|
* Makes vector affinity. Thereby fourh component becomes to 1.0.
|
|
184
185
|
* @public
|
|
185
|
-
* @returns {
|
|
186
|
+
* @returns {Vec4}
|
|
186
187
|
*/
|
|
187
188
|
affinity() {
|
|
188
189
|
var iw = 1 / this.w;
|
|
@@ -191,22 +192,22 @@ export class Vec4 {
|
|
|
191
192
|
this.z *= iw;
|
|
192
193
|
this.w = 1.0;
|
|
193
194
|
return this;
|
|
194
|
-
}
|
|
195
|
+
}
|
|
195
196
|
|
|
196
197
|
/**
|
|
197
198
|
* Scale current vector to another instance.
|
|
198
199
|
* @public
|
|
199
200
|
* @param {number} scale - Scale value.
|
|
200
|
-
* @returns {
|
|
201
|
+
* @returns {Vec3}
|
|
201
202
|
*/
|
|
202
203
|
scaleTo(scale) {
|
|
203
204
|
return new Vec4(this.x * scale, this.y * scale, this.z * scale, this.w * scale);
|
|
204
|
-
}
|
|
205
|
+
}
|
|
205
206
|
|
|
206
207
|
/**
|
|
207
208
|
* Vector's edge function that returns vector where each component is 0.0 if it's smaller then edge and otherwise 1.0.
|
|
208
209
|
* @public
|
|
209
|
-
* @returns {
|
|
210
|
+
* @returns {Vec4}
|
|
210
211
|
*/
|
|
211
212
|
getStep(edge) {
|
|
212
213
|
return new Vec4(
|
|
@@ -215,31 +216,26 @@ export class Vec4 {
|
|
|
215
216
|
this.z < edge ? 0.0 : 1.0,
|
|
216
217
|
this.w < edge ? 0.0 : 1.0
|
|
217
218
|
);
|
|
218
|
-
}
|
|
219
|
+
}
|
|
219
220
|
|
|
220
221
|
/**
|
|
221
222
|
* The vector fract function returns the vector of fractional parts of each value, i.e. x minus floor(x).
|
|
222
223
|
* @public
|
|
223
|
-
* @returns {
|
|
224
|
+
* @returns {Vec4}
|
|
224
225
|
*/
|
|
225
226
|
getFrac(v) {
|
|
226
|
-
return new Vec4(
|
|
227
|
-
|
|
228
|
-
og.math.frac(v.y),
|
|
229
|
-
og.math.frac(v.z),
|
|
230
|
-
og.math.frac(v.w)
|
|
231
|
-
);
|
|
232
|
-
};
|
|
227
|
+
return new Vec4(frac(v.x), frac(v.y), frac(v.z), frac(v.w));
|
|
228
|
+
}
|
|
233
229
|
|
|
234
230
|
/**
|
|
235
231
|
* Gets vectors dot production.
|
|
236
232
|
* @public
|
|
237
|
-
* @param {
|
|
233
|
+
* @param {math.Vec4} v - Another vector.
|
|
238
234
|
* @returns {number} - Dot product.
|
|
239
235
|
*/
|
|
240
236
|
dot(v) {
|
|
241
237
|
return v.x * this.x + v.y * this.y + v.z * this.z + v.w * this.w;
|
|
242
|
-
}
|
|
238
|
+
}
|
|
243
239
|
|
|
244
240
|
/**
|
|
245
241
|
* Returns true if vector's values are zero.
|
|
@@ -248,7 +244,7 @@ export class Vec4 {
|
|
|
248
244
|
*/
|
|
249
245
|
isZero() {
|
|
250
246
|
return !(this.x || this.y || this.z || this.w);
|
|
251
|
-
}
|
|
247
|
+
}
|
|
252
248
|
}
|
|
253
249
|
|
|
254
250
|
/**
|
|
@@ -258,8 +254,8 @@ export class Vec4 {
|
|
|
258
254
|
* @param {number} [y] - Second value.
|
|
259
255
|
* @param {number} [z] - Third value.
|
|
260
256
|
* @param {number} [w] - Fourth value.
|
|
261
|
-
* @returns {
|
|
257
|
+
* @returns {Vec4}
|
|
262
258
|
*/
|
|
263
259
|
export function vec4(x, y, z, w) {
|
|
264
|
-
return new
|
|
265
|
-
}
|
|
260
|
+
return new Vec4(x, y, z, w);
|
|
261
|
+
}
|
package/src/og/math/coder.js
CHANGED
|
@@ -2,54 +2,54 @@
|
|
|
2
2
|
* @module og/math/coder
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import * as math from
|
|
8
|
-
import { Vec4 } from
|
|
7
|
+
import * as math from "../math.js";
|
|
8
|
+
import { Vec4 } from "./Vec4.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Encode 32 bit float value to the RGBA vector.
|
|
12
12
|
* @function
|
|
13
13
|
* @param {number} v - 32 bit float value.
|
|
14
|
-
* @returns {
|
|
14
|
+
* @returns {math.Vec4} - RGBA vector value.
|
|
15
15
|
*/
|
|
16
16
|
export function encodeFloatToRGBA(v) {
|
|
17
|
-
var enc = new Vec4(1.0 * v % 1, 255.0 * v % 1, 65025.0 * v % 1, 160581375.0 * v % 1);
|
|
17
|
+
var enc = new Vec4((1.0 * v) % 1, (255.0 * v) % 1, (65025.0 * v) % 1, (160581375.0 * v) % 1);
|
|
18
18
|
var yzww = new Vec4(enc.y / 255, enc.z / 255, enc.w / 255, 0);
|
|
19
19
|
return enc.subA(yzww);
|
|
20
|
-
}
|
|
20
|
+
}
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Decode RGBA vector to 32 bit float value.
|
|
24
24
|
* @function
|
|
25
|
-
* @param {
|
|
25
|
+
* @param {Vec4} rgba - RGBA encoded 32 bit float value.
|
|
26
26
|
* @returns {number} - Float value.
|
|
27
27
|
*/
|
|
28
28
|
export function decodeFloatFromRGBA(rgba) {
|
|
29
29
|
var s = 1.0 - math.step(128.0, rgba.x) * 2.0;
|
|
30
30
|
var e = 2.0 * math.mod(rgba.x, 128.0) + math.step(128.0, rgba.y) - 127.0;
|
|
31
|
-
var m = math.mod(rgba.y, 128.0) * 65536.0 + rgba.z * 256.0 + rgba.w + 8388608.
|
|
31
|
+
var m = math.mod(rgba.y, 128.0) * 65536.0 + rgba.z * 256.0 + rgba.w + 8388608.0;
|
|
32
32
|
return s * math.exp2(e) * (m * 1.1920928955078125e-7);
|
|
33
|
-
}
|
|
33
|
+
}
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Decode RGBA vector to 32 bit float value.
|
|
37
37
|
* @function
|
|
38
|
-
* @param {
|
|
38
|
+
* @param {Vec4} rgba - RGBA encoded 32 bit float value.
|
|
39
39
|
* @returns {number} - Float value.
|
|
40
40
|
*/
|
|
41
41
|
export function decodeFloatFromRGBAArr(arr, use32) {
|
|
42
42
|
var s = 1.0 - math.step(128.0, arr[0]) * 2.0;
|
|
43
43
|
var e = 2.0 * math.mod(arr[0], 128.0) + math.step(128.0, arr[1]) - 127.0;
|
|
44
|
-
var m = math.mod(arr[1], 128.0) * 65536.0 + arr[2] * 256.0 + (use32 ? arr[3] : 0.0) + 8388608.
|
|
44
|
+
var m = math.mod(arr[1], 128.0) * 65536.0 + arr[2] * 256.0 + (use32 ? arr[3] : 0.0) + 8388608.0;
|
|
45
45
|
return s * math.exp2(e) * (m * 1.1920928955078125e-7);
|
|
46
|
-
}
|
|
46
|
+
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Separate 64 bit value to two 32 bit float values.
|
|
50
50
|
* @function
|
|
51
51
|
* @param {number} value - Double type value.
|
|
52
|
-
* @returns {Array.<number
|
|
52
|
+
* @returns {Array.<number>} Encoded array. (exactly 2 entries)
|
|
53
53
|
*/
|
|
54
54
|
export function doubleToTwoFloats(value) {
|
|
55
55
|
var high, low;
|
|
@@ -63,13 +63,13 @@ export function doubleToTwoFloats(value) {
|
|
|
63
63
|
low = Math.fround(value + doubleHigh);
|
|
64
64
|
}
|
|
65
65
|
return new Float32Array([high, low]);
|
|
66
|
-
}
|
|
66
|
+
}
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
* Separate 64 bit value to two 32 bit float values.
|
|
70
70
|
* @function
|
|
71
71
|
* @param {number} value - Double type value.
|
|
72
|
-
* @returns {Array.<number
|
|
72
|
+
* @returns {Array.<number>} Encoded array. (exactly 2 entries)
|
|
73
73
|
*/
|
|
74
74
|
export function doubleToTwoFloats2(value, highLowArr) {
|
|
75
75
|
if (value >= 0.0) {
|
|
@@ -82,13 +82,13 @@ export function doubleToTwoFloats2(value, highLowArr) {
|
|
|
82
82
|
highLowArr[1] = Math.fround(value + doubleHigh);
|
|
83
83
|
}
|
|
84
84
|
return highLowArr;
|
|
85
|
-
}
|
|
85
|
+
}
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
88
|
* Separate 64 bit value to two 32 bit float values.
|
|
89
89
|
* @function
|
|
90
90
|
* @param {number} value - Double type value.
|
|
91
|
-
* @returns {Array.<number
|
|
91
|
+
* @returns {Array.<number>} Encoded array. (exactly 2 entries)
|
|
92
92
|
*/
|
|
93
93
|
export function doubleToTwoFloatsV2(value, highLowVec) {
|
|
94
94
|
if (value >= 0.0) {
|
|
@@ -101,4 +101,4 @@ export function doubleToTwoFloatsV2(value, highLowVec) {
|
|
|
101
101
|
highLowVec.y = Math.fround(value + doubleHigh);
|
|
102
102
|
}
|
|
103
103
|
return highLowVec;
|
|
104
|
-
}
|
|
104
|
+
}
|
package/src/og/math.js
CHANGED
|
@@ -77,7 +77,7 @@ export const EPSILON20 = 1e-20;
|
|
|
77
77
|
* @param {number} base - Base value.
|
|
78
78
|
* @returns {number} -
|
|
79
79
|
* @example
|
|
80
|
-
*
|
|
80
|
+
* log(64, 2)
|
|
81
81
|
* //returns 6
|
|
82
82
|
*/
|
|
83
83
|
export function log(n, base) {
|
|
@@ -92,7 +92,7 @@ export function log(n, base) {
|
|
|
92
92
|
* @param {number} max - Maximal edge.
|
|
93
93
|
* @returns {number} -
|
|
94
94
|
* @example
|
|
95
|
-
*
|
|
95
|
+
* clamp(12, 1, 5)
|
|
96
96
|
* //returns 5
|
|
97
97
|
*/
|
|
98
98
|
export function clamp(number, min, max) {
|
|
@@ -200,9 +200,9 @@ export function mod(m, n) {
|
|
|
200
200
|
* @returns {number} -
|
|
201
201
|
*/
|
|
202
202
|
export function zeroTwoPI(a) {
|
|
203
|
-
var mod =
|
|
204
|
-
if (Math.abs(mod) <
|
|
205
|
-
return
|
|
203
|
+
var mod = mod(a, TWO_PI);
|
|
204
|
+
if (Math.abs(mod) < EPSILON14 && Math.abs(a) > EPSILON14) {
|
|
205
|
+
return TWO_PI;
|
|
206
206
|
}
|
|
207
207
|
return mod;
|
|
208
208
|
}
|
|
@@ -235,7 +235,7 @@ export function frac(x) {
|
|
|
235
235
|
* @returns {number} -
|
|
236
236
|
*/
|
|
237
237
|
export function log2(x) {
|
|
238
|
-
return Math.log(x) /
|
|
238
|
+
return Math.log(x) / LOG2;
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
/**
|
|
@@ -299,11 +299,11 @@ export function bezier1v(t, p0, p1, p2, p3) {
|
|
|
299
299
|
* Performs a 3D bezier interpolation.
|
|
300
300
|
* @function
|
|
301
301
|
* @param {number} t - Interpolation value.
|
|
302
|
-
* @param {
|
|
303
|
-
* @param {
|
|
304
|
-
* @param {
|
|
305
|
-
* @param {
|
|
306
|
-
* @returns {
|
|
302
|
+
* @param {Vec3} p0 - First control point.
|
|
303
|
+
* @param {Vec3} p1 - Second control point.
|
|
304
|
+
* @param {Vec3} p2 - Third control point.
|
|
305
|
+
* @param {Vec3} p3 - Fourth control point.
|
|
306
|
+
* @returns {Vec3} -
|
|
307
307
|
*/
|
|
308
308
|
export function bezier3v(t, p0, p1, p2, p3) {
|
|
309
309
|
var u = 1 - t;
|
|
@@ -346,7 +346,7 @@ export function norm_lon(lon) {
|
|
|
346
346
|
* @returns {number} -
|
|
347
347
|
*/
|
|
348
348
|
export function negativePItoPI(a) {
|
|
349
|
-
return
|
|
349
|
+
return zeroTwoPI(a + Math.PI) - Math.PI;
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
/**
|
package/src/og/mercator.js
CHANGED
|
@@ -48,7 +48,7 @@ export const ONE_BY_POLE_DOUBLE = 1.0 / POLE_DOUBLE;
|
|
|
48
48
|
|
|
49
49
|
export function forward(lonLat) {
|
|
50
50
|
return new LonLat(lonLat.lon * POLE / 180.0, Math.log(Math.tan((90.0 + lonLat.lat) * PI_BY_360)) * POLE_BY_PI, lonLat.height);
|
|
51
|
-
}
|
|
51
|
+
}
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* Converts degrees longitude to mercator coordinate.
|
|
@@ -58,7 +58,7 @@ export function forward(lonLat) {
|
|
|
58
58
|
*/
|
|
59
59
|
export function forward_lon(lon) {
|
|
60
60
|
return lon * POLE / 180.0;
|
|
61
|
-
}
|
|
61
|
+
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
64
|
* Converts degrees latitude to mercator coordinate.
|
|
@@ -68,7 +68,7 @@ export function forward_lon(lon) {
|
|
|
68
68
|
*/
|
|
69
69
|
export function forward_lat(lat) {
|
|
70
70
|
return Math.log(Math.tan((90.0 + lat) * PI_BY_360)) * POLE_BY_PI;
|
|
71
|
-
}
|
|
71
|
+
}
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
74
|
* Converts mercator longitude to degrees coordinate.
|
|
@@ -78,7 +78,7 @@ export function forward_lat(lat) {
|
|
|
78
78
|
*/
|
|
79
79
|
export function inverse_lon(lon) {
|
|
80
80
|
return 180 * lon / POLE;
|
|
81
|
-
}
|
|
81
|
+
}
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
84
|
* Converts mercator latitude to degrees coordinate.
|
|
@@ -88,7 +88,7 @@ export function inverse_lon(lon) {
|
|
|
88
88
|
*/
|
|
89
89
|
export function inverse_lat(lat) {
|
|
90
90
|
return INV_PI_BY_180 * (2.0 * Math.atan(Math.exp(lat * PI_BY_POLE)) - HALF_PI);
|
|
91
|
-
}
|
|
91
|
+
}
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* Returns mercator map tile grid horizontal coordinate index by geodetic
|
|
@@ -100,7 +100,7 @@ export function inverse_lat(lat) {
|
|
|
100
100
|
*/
|
|
101
101
|
export function getTileX(lon, zoom) {
|
|
102
102
|
return Math.floor((lon + 180) / 360.0 * Math.pow(2, zoom));
|
|
103
|
-
}
|
|
103
|
+
}
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
106
|
* Returns mercator map tile grid vertical coordinate index by geodetic
|
|
@@ -112,13 +112,13 @@ export function getTileX(lon, zoom) {
|
|
|
112
112
|
*/
|
|
113
113
|
export function getTileY(lat, zoom) {
|
|
114
114
|
return Math.floor((1.0 - Math.log(Math.tan(lat * PI_BY_180) + 1.0 / Math.cos(lat * PI_BY_180)) / Math.PI) * 0.5 * Math.pow(2, zoom));
|
|
115
|
-
}
|
|
115
|
+
}
|
|
116
116
|
|
|
117
117
|
/**
|
|
118
118
|
* Converts geodetic coordinate array to mercator coordinate array.
|
|
119
119
|
* @function
|
|
120
|
-
* @param {Array.<
|
|
121
|
-
* @returns {Array.<
|
|
120
|
+
* @param {Array.<LonLat>} lonLatArr - LonLat array to convert.
|
|
121
|
+
* @returns {Array.<LonLat>}
|
|
122
122
|
*/
|
|
123
123
|
export function forwardArray(lonlatArr) {
|
|
124
124
|
var res = [];
|
|
@@ -126,13 +126,13 @@ export function forwardArray(lonlatArr) {
|
|
|
126
126
|
res.push(lonlatArr[i].forwardMercator());
|
|
127
127
|
}
|
|
128
128
|
return res;
|
|
129
|
-
}
|
|
129
|
+
}
|
|
130
130
|
|
|
131
131
|
export function getTileExtent(x, y, z) {
|
|
132
132
|
let size = POLE2 / Math.pow(2, z),
|
|
133
133
|
sw = new LonLat(-POLE + x * size, POLE - y * size - size);
|
|
134
134
|
return new Extent(sw, new LonLat(sw.lon + size, sw.lat + size));
|
|
135
|
-
}
|
|
135
|
+
}
|
|
136
136
|
|
|
137
137
|
/**
|
|
138
138
|
* Max mercator latitude.
|
package/src/og/proj/EPSG3857.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* @module og/proj/EPSG3857
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import { Units, Proj } from
|
|
7
|
+
import { Units, Proj } from "./Proj.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* EPSG:3857 projection object.
|
|
11
|
-
* @type {
|
|
11
|
+
* @type {Proj}
|
|
12
12
|
*/
|
|
13
|
-
export const EPSG3857 = new Proj({ code: "epsg:3857", units: Units.METERS });
|
|
13
|
+
export const EPSG3857 = new Proj({ code: "epsg:3857", units: Units.METERS });
|
package/src/og/proj/EPSG4326.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* @module og/proj/EPSG4326
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import { Units, Proj } from
|
|
7
|
+
import { Units, Proj } from "./Proj.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* EPSG:4326 projection object.
|
|
11
|
-
* @type {
|
|
11
|
+
* @type {Proj}
|
|
12
12
|
*/
|
|
13
|
-
export const EPSG4326 = new Proj({ code: "epsg:4326", units: Units.DEGREES });
|
|
13
|
+
export const EPSG4326 = new Proj({ code: "epsg:4326", units: Units.DEGREES });
|
package/src/og/proj/Proj.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module og/proj/Proj
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Projection units: 'degrees', 'ft', 'm' or 'km'.
|
|
@@ -26,38 +26,38 @@ METERS_PER_UNIT[Units.FEET] = 0.3048;
|
|
|
26
26
|
METERS_PER_UNIT[Units.METERS] = 1;
|
|
27
27
|
METERS_PER_UNIT[Units.KILOMETERS] = 1000;
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
let _counter = 0;
|
|
30
|
+
class Proj {
|
|
31
|
+
constructor(options) {
|
|
32
|
+
/**
|
|
33
|
+
* @public
|
|
34
|
+
* @type {string}
|
|
35
|
+
*/
|
|
36
|
+
this.code = options.code;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @public
|
|
40
|
+
* @type {proj.Units}
|
|
41
|
+
*/
|
|
42
|
+
this.units = /** @type {Units} */ (options.units);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Projection identifier, especially usefull for comparison.
|
|
46
|
+
* @const
|
|
47
|
+
* @type {integer}
|
|
48
|
+
*/
|
|
49
|
+
this.id = _counter++;
|
|
50
|
+
}
|
|
30
51
|
|
|
31
52
|
/**
|
|
53
|
+
* Compare projections.
|
|
32
54
|
* @public
|
|
33
|
-
* @
|
|
55
|
+
* @param {Proj} proj - Projetion object.
|
|
56
|
+
* @returns {boolean}
|
|
34
57
|
*/
|
|
35
|
-
|
|
58
|
+
equal(proj) {
|
|
59
|
+
return proj.id === this.id;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
36
62
|
|
|
37
|
-
|
|
38
|
-
* @public
|
|
39
|
-
* @type {og.proj.Units}
|
|
40
|
-
*/
|
|
41
|
-
this.units = /** @type {Units} */ (options.units);
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Projection identifier, especially usefull for comparison.
|
|
45
|
-
* @const
|
|
46
|
-
* @type {integer}
|
|
47
|
-
*/
|
|
48
|
-
this.id = Proj._counter++;
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Compare projections.
|
|
53
|
-
* @public
|
|
54
|
-
* @param {og.Proj} proj - Projetion object.
|
|
55
|
-
* @returns {boolean}
|
|
56
|
-
*/
|
|
57
|
-
Proj.prototype.equal = function (proj) {
|
|
58
|
-
return proj.id === this.id;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
Proj._counter = 0;
|
|
62
|
-
|
|
63
|
-
export { Proj };
|
|
63
|
+
export { Proj };
|