@openglobus/og 0.16.3 → 0.17.1

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.
Files changed (197) hide show
  1. package/README.md +1 -1
  2. package/css/og.css +24 -2
  3. package/dist/@openglobus/og.css +1 -1
  4. package/dist/@openglobus/og.esm.js +2 -2
  5. package/dist/@openglobus/og.esm.js.map +1 -1
  6. package/dist/@openglobus/og.umd.js +2 -2
  7. package/dist/@openglobus/og.umd.js.map +1 -1
  8. package/package.json +1 -1
  9. package/src/og/Clock.js +1 -5
  10. package/src/og/Events.js +2 -6
  11. package/src/og/Extent.js +5 -9
  12. package/src/og/Globe.js +93 -56
  13. package/src/og/ImageCanvas.js +13 -6
  14. package/src/og/Lock.js +44 -48
  15. package/src/og/LonLat.js +1 -5
  16. package/src/og/Object3d.js +2 -2
  17. package/src/og/QueueArray.js +1 -1
  18. package/src/og/Stack.js +49 -53
  19. package/src/og/astro/earth.js +112 -116
  20. package/src/og/astro/jd.js +514 -518
  21. package/src/og/astro/orbit.js +119 -123
  22. package/src/og/astro/rotation.js +36 -40
  23. package/src/og/bv/Box.js +77 -81
  24. package/src/og/bv/Sphere.js +57 -61
  25. package/src/og/camera/Camera.js +20 -7
  26. package/src/og/camera/Frustum.js +4 -4
  27. package/src/og/camera/PlanetCamera.js +15 -22
  28. package/src/og/cons.js +1 -1
  29. package/src/og/control/Atmosphere.js +0 -4
  30. package/src/og/control/Control.js +9 -8
  31. package/src/og/control/DebugInfo.js +3 -7
  32. package/src/og/control/DrawingSwitcher.js +117 -0
  33. package/src/og/control/EarthCoordinates.js +214 -214
  34. package/src/og/control/EarthNavigation.js +6 -13
  35. package/src/og/control/GeoImageDragControl.js +0 -4
  36. package/src/og/control/KeyboardNavigation.js +0 -4
  37. package/src/og/control/LayerAnimation.js +0 -4
  38. package/src/og/control/LayerSwitcher.js +2 -4
  39. package/src/og/control/Lighting.js +12 -16
  40. package/src/og/control/MouseNavigation.js +1 -5
  41. package/src/og/control/MouseWheelZoomControl.js +0 -4
  42. package/src/og/control/RulerSwitcher.js +0 -4
  43. package/src/og/control/ScaleControl.js +2 -6
  44. package/src/og/control/ShowFps.js +40 -44
  45. package/src/og/control/SimpleNavigation.js +10 -10
  46. package/src/og/control/SimpleSkyBackground.js +0 -4
  47. package/src/og/control/Sun.js +0 -4
  48. package/src/og/control/ToggleWireframe.js +35 -39
  49. package/src/og/control/ZoomControl.js +0 -4
  50. package/src/og/control/drawing/DrawingControl.js +51 -0
  51. package/src/og/control/drawing/LineStringDrawingScene.js +203 -0
  52. package/src/og/control/drawing/PolygonDrawingScene.js +785 -0
  53. package/src/og/control/elevationProfile/ElevationProfile.js +275 -0
  54. package/src/og/control/index.js +5 -1
  55. package/src/og/control/ruler/Ruler.js +0 -4
  56. package/src/og/control/ruler/RulerScene.js +3 -2
  57. package/src/og/control/selection/Selection.js +0 -4
  58. package/src/og/control/selection/SelectionScene.js +2 -4
  59. package/src/og/control/timeline/TimelineControl.js +4 -4
  60. package/src/og/control/timeline/TimelineModel.js +2 -2
  61. package/src/og/control/timeline/TimelineView.js +1 -0
  62. package/src/og/control/visibleExtent/Segment.js +7 -7
  63. package/src/og/control/visibleExtent/drawnode.js +0 -4
  64. package/src/og/ellipsoid/Ellipsoid.js +236 -325
  65. package/src/og/ellipsoid/wgs84.js +0 -4
  66. package/src/og/entity/BaseBillboard.js +375 -379
  67. package/src/og/entity/Billboard.js +0 -4
  68. package/src/og/entity/BillboardHandler.js +3 -7
  69. package/src/og/entity/Entity.js +22 -22
  70. package/src/og/entity/EntityCollection.js +14 -18
  71. package/src/og/entity/GeoObject.js +6 -8
  72. package/src/og/entity/GeoObjectHandler.js +30 -24
  73. package/src/og/entity/Geometry.js +5 -4
  74. package/src/og/entity/GeometryHandler.js +18 -19
  75. package/src/og/entity/Label.js +0 -4
  76. package/src/og/entity/LabelHandler.js +10 -14
  77. package/src/og/entity/LabelWorker.js +1 -1
  78. package/src/og/entity/PointCloud.js +2 -6
  79. package/src/og/entity/PointCloudHandler.js +122 -126
  80. package/src/og/entity/Polyline.js +15 -17
  81. package/src/og/entity/PolylineHandler.js +104 -108
  82. package/src/og/entity/Ray.js +29 -29
  83. package/src/og/entity/RayHandler.js +2 -2
  84. package/src/og/entity/Strip.js +1 -1
  85. package/src/og/entity/StripHandler.js +2 -2
  86. package/src/og/index.js +3 -1
  87. package/src/og/input/KeyboardHandler.js +128 -132
  88. package/src/og/input/MouseHandler.js +94 -98
  89. package/src/og/input/TouchHandler.js +59 -63
  90. package/src/og/input/input.js +44 -48
  91. package/src/og/layer/BaseGeoImage.js +6 -9
  92. package/src/og/layer/CanvasTiles.js +1 -5
  93. package/src/og/layer/GeoImage.js +0 -4
  94. package/src/og/layer/GeoTexture2d.js +0 -4
  95. package/src/og/layer/GeoVideo.js +0 -4
  96. package/src/og/layer/KML.js +1 -0
  97. package/src/og/layer/Layer.js +22 -26
  98. package/src/og/layer/Material.js +0 -4
  99. package/src/og/layer/Vector.js +25 -22
  100. package/src/og/layer/WMS.js +182 -186
  101. package/src/og/layer/XYZ.js +0 -4
  102. package/src/og/light/LightSource.js +0 -4
  103. package/src/og/math/Line2.js +28 -32
  104. package/src/og/math/Mat3.js +152 -156
  105. package/src/og/math/Ray.js +0 -4
  106. package/src/og/math/Vec2.js +0 -4
  107. package/src/og/math/Vec3.js +5 -4
  108. package/src/og/math/Vec4.js +0 -4
  109. package/src/og/math/coder.js +104 -104
  110. package/src/og/math.js +42 -10
  111. package/src/og/mercator.js +1 -1
  112. package/src/og/proj/EPSG3857.js +13 -13
  113. package/src/og/proj/Proj.js +59 -63
  114. package/src/og/quadTree/EPSG4326QuadTreeStrategy.js +1 -0
  115. package/src/og/quadTree/EarthQuadTreeStrategy.js +1 -0
  116. package/src/og/quadTree/EntityCollectionNode.js +12 -16
  117. package/src/og/quadTree/MarsQuadTreeStrategy.js +1 -0
  118. package/src/og/quadTree/Node.js +15 -14
  119. package/src/og/quadTree/QuadTreeStrategy.js +1 -0
  120. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +1 -0
  121. package/src/og/renderer/Renderer.js +114 -27
  122. package/src/og/renderer/RendererEvents.js +0 -4
  123. package/src/og/scene/Axes.js +74 -78
  124. package/src/og/scene/BaseNode.js +1 -5
  125. package/src/og/scene/Planet.js +127 -130
  126. package/src/og/scene/RenderNode.js +20 -12
  127. package/src/og/scene/SkyBox.js +104 -108
  128. package/src/og/segment/Segment.js +10 -6
  129. package/src/og/segment/SegmentLonLat.js +3 -7
  130. package/src/og/segment/segmentHelper.js +229 -225
  131. package/src/og/shaders/atmos.js +1 -1
  132. package/src/og/shaders/billboard.js +0 -4
  133. package/src/og/shaders/drawnode.js +5 -9
  134. package/src/og/shaders/geoObject.js +0 -4
  135. package/src/og/shaders/label.js +0 -4
  136. package/src/og/shaders/pickingMask.js +0 -4
  137. package/src/og/shaders/pointCloud.js +0 -4
  138. package/src/og/shaders/polyline.js +0 -4
  139. package/src/og/shaders/ray.js +0 -4
  140. package/src/og/shaders/skybox.js +0 -4
  141. package/src/og/terrain/EmptyTerrain.js +0 -4
  142. package/src/og/utils/FontAtlas.js +0 -4
  143. package/src/og/utils/GeoImageCreator.js +2 -3
  144. package/src/og/utils/NormalMapCreator.js +11 -12
  145. package/src/og/utils/PlainSegmentWorker.js +9 -9
  146. package/src/og/utils/TerrainWorker.js +2 -2
  147. package/src/og/utils/TextureAtlas.js +1 -1
  148. package/src/og/utils/VectorTileCreator.js +3 -9
  149. package/src/og/utils/earcut.js +8 -8
  150. package/src/og/utils/shared.js +30 -11
  151. package/src/og/webgl/Framebuffer.js +2 -6
  152. package/src/og/webgl/Handler.js +46 -20
  153. package/src/og/webgl/Multisample.js +2 -6
  154. package/src/og/webgl/Program.js +4 -8
  155. package/src/og/webgl/ProgramController.js +2 -2
  156. package/types/Clock.d.ts +1 -1
  157. package/types/Extent.d.ts +5 -5
  158. package/types/Globe.d.ts +15 -1
  159. package/types/ImageCanvas.d.ts +5 -0
  160. package/types/bv/Box.d.ts +1 -1
  161. package/types/bv/Sphere.d.ts +3 -3
  162. package/types/camera/Camera.d.ts +3 -2
  163. package/types/camera/PlanetCamera.d.ts +4 -4
  164. package/types/control/DrawingSwitcher.d.ts +13 -0
  165. package/types/control/EarthCoordinates.d.ts +1 -1
  166. package/types/control/Lighting.d.ts +8 -8
  167. package/types/control/drawing/DrawingControl.d.ts +14 -0
  168. package/types/control/drawing/LineStringDrawingScene.d.ts +5 -0
  169. package/types/control/drawing/PolygonDrawingScene.d.ts +99 -0
  170. package/types/control/index.d.ts +3 -1
  171. package/types/control/ruler/RulerScene.d.ts +0 -1
  172. package/types/control/selection/SelectionScene.d.ts +0 -1
  173. package/types/ellipsoid/Ellipsoid.d.ts +53 -64
  174. package/types/entity/Entity.d.ts +3 -2
  175. package/types/entity/GeoObject.d.ts +1 -2
  176. package/types/entity/Geometry.d.ts +5 -0
  177. package/types/entity/Polyline.d.ts +1 -1
  178. package/types/entity/Ray.d.ts +1 -0
  179. package/types/index.d.ts +1 -0
  180. package/types/layer/BaseGeoImage.d.ts +1 -1
  181. package/types/layer/CanvasTiles.d.ts +1 -1
  182. package/types/layer/Layer.d.ts +1 -1
  183. package/types/layer/Vector.d.ts +1 -0
  184. package/types/math/Vec3.d.ts +2 -0
  185. package/types/math.d.ts +7 -0
  186. package/types/renderer/Renderer.d.ts +7 -1
  187. package/types/scene/Axes.d.ts +0 -1
  188. package/types/scene/Planet.d.ts +27 -26
  189. package/types/scene/RenderNode.d.ts +2 -0
  190. package/types/scene/SkyBox.d.ts +0 -1
  191. package/types/segment/Segment.d.ts +3 -2
  192. package/types/segment/SegmentLonLat.d.ts +0 -1
  193. package/types/utils/GeoImageCreator.d.ts +1 -1
  194. package/types/utils/NormalMapCreator.d.ts +1 -1
  195. package/types/utils/VectorTileCreator.d.ts +2 -2
  196. package/types/utils/shared.d.ts +2 -0
  197. package/types/webgl/Handler.d.ts +6 -4
@@ -0,0 +1,275 @@
1
+ 'use strict';
2
+
3
+ import { Vec3 } from "../../math/Vec3.js";
4
+ import { Deferred } from "../../Deferred.js";
5
+ import { Events } from '../../Events.js';
6
+
7
+ /**
8
+ * Point types
9
+ * @type {number}
10
+ */
11
+ const SAFE = 0;
12
+ const WARNING = 1;
13
+ const COLLISION = 2;
14
+
15
+ /**
16
+ * drawData index names
17
+ * @type {number}
18
+ */
19
+ const TRACK = 0;
20
+ const GROUND = 1;
21
+
22
+ const SEGMMENT_LENGTH = 1.0; // Distance between query points on the ground
23
+ const GROUND_OFFSET = 1.0; // Ground level offset
24
+ const BOTTOM_PADDING = 0.1; // Range minY padding in percentage from the bottom
25
+ const TOP_PADDING = 0.1; // Range maxY padding in percentage from the top
26
+
27
+ const HEIGHT_EPS = 0.1; // Warning height level error
28
+
29
+ class ElevationProfile {
30
+ constructor(options = {}) {
31
+ this.events = new Events(["profilecollected"]);
32
+
33
+ this.planet = options.planet;
34
+
35
+ this._warningHeightLevel = 50;
36
+ this._pointsReady = false;
37
+ this._isWarning = false;
38
+
39
+ this._minX = 0;
40
+ this._maxX = 1000;
41
+ this._minY = 0;
42
+ this._maxY = 200;
43
+
44
+ this._drawData = [][0];
45
+
46
+ this._promiseArr = [];
47
+ this._promiseCounter = 0;
48
+ this._pMaxY = 0;
49
+ this._pMinY = 0;
50
+ this._pDist = 0;
51
+ this._pTrackCoords = [[0, 0, SAFE]];
52
+ this._pGroundCoords = [[0, 0, SAFE]];
53
+ this._pIndex = 0;
54
+ }
55
+
56
+ setWarningHeightLevel(warningHeight = 0) {
57
+ this._warningHeightLevel = warningHeight;
58
+ }
59
+
60
+ setRange(minX, maxX, minY, maxY) {
61
+ this._minX = minX;
62
+ this._maxX = maxX;
63
+ this._minY = minY;
64
+ this._maxY = maxY;
65
+ }
66
+
67
+ _getHeightAsync(ll, pIndex) {
68
+ let def = new Deferred();
69
+ this.planet.terrain.getHeightAsync(ll, (elv) => {
70
+ elv += this.planet.terrain.geoid.getHeightLonLat(ll);
71
+ this._pGroundCoords[pIndex][1] = elv;
72
+ this._pGroundCoords[pIndex][2] = SAFE;
73
+ this._pGroundCoords[pIndex][3] = ll.height;
74
+ this._setPointType(pIndex);
75
+ def.resolve(elv);
76
+ });
77
+ return def.promise;
78
+ }
79
+
80
+ _collectCoordsBetweenTwoTrackPoints(internalPoints, scaleFactor, p0, trackDir) {
81
+ for (let j = 1; j <= internalPoints; j++) {
82
+ this._pDist += SEGMMENT_LENGTH;
83
+ this._pIndex++;
84
+
85
+ // Point on the track segment
86
+ let dirSegLen = j * scaleFactor;
87
+ let pjd = p0.add(trackDir.scaleTo(dirSegLen));
88
+ let llx = this.planet.ellipsoid.cartesianToLonLat(pjd);
89
+
90
+ this._pGroundCoords[this._pIndex] = [this._pDist, 0, SAFE];
91
+
92
+ ((lonlat, index) => {
93
+ this._promiseArr.push(
94
+ this._getHeightAsync(lonlat, index)
95
+ .then((elv) => {
96
+ if (elv > this._pMaxY) this._pMaxY = elv;
97
+ if (elv < this._pMinY) this._pMinY = elv;
98
+ })
99
+ );
100
+ })(llx, this._pIndex);
101
+ }
102
+ }
103
+
104
+ _collectAllPoints(pointsLonLat) {
105
+
106
+ let p0 = new Vec3(),
107
+ p1 = new Vec3();
108
+
109
+ for (let i = 1, len = pointsLonLat.length; i < len; i++) {
110
+ let lonlat0 = pointsLonLat[i - 1],
111
+ lonlat1 = pointsLonLat[i];
112
+
113
+ this.planet.ellipsoid.lonLatToCartesianRes(lonlat0, p0);
114
+ this.planet.ellipsoid.lonLatToCartesianRes(lonlat1, p1);
115
+
116
+ let trackDir = p1.sub(p0);
117
+ let dirLength = trackDir.length();
118
+ let n0 = this.planet.ellipsoid.getSurfaceNormal3v(p0);
119
+ let proj = Vec3.proj_b_to_plane(trackDir, n0);
120
+ let projLen = proj.length();
121
+ let internalPoints = Math.floor(projLen / SEGMMENT_LENGTH);
122
+ let scaleFactor = SEGMMENT_LENGTH * dirLength / projLen;
123
+
124
+ this._getGroundElevation(lonlat0);
125
+
126
+ proj.normalize();
127
+ trackDir.normalize();
128
+
129
+ // Getting internal point elevations and looking for the collisions
130
+ this._collectCoordsBetweenTwoTrackPoints(internalPoints, scaleFactor, p0, trackDir);
131
+
132
+ this._pDist += projLen - internalPoints * SEGMMENT_LENGTH;
133
+ this._pIndex++;
134
+
135
+ let elv = lonlat1.height;
136
+ if (elv > this._pMaxY) this._pMaxY = elv;
137
+ if (elv < this._pMinY) this._pMinY = elv;
138
+
139
+ this._pTrackCoords[i] = [this._pDist, elv];
140
+ }
141
+ }
142
+
143
+ _getGroundElevation(lonLat) {
144
+ this._pGroundCoords[this._pIndex] = [this._pDist, 0, SAFE];
145
+ this._promiseArr.push(
146
+ this._getHeightAsync(lonLat, this._pIndex)
147
+ .then((elv) => {
148
+ if (typeof elv === 'number') {
149
+ if ((elv > this._pMaxY) && (elv)) this._pMaxY = elv;
150
+ if ((elv < this._pMinY) && (elv)) this._pMinY = elv;
151
+ }
152
+ })
153
+ );
154
+ }
155
+
156
+ _collectPromise(resolve) {
157
+ Promise.all(this._promiseArr).then(() => {
158
+ resolve({
159
+ dist: this._pDist,
160
+ minY: this._pMinY,
161
+ maxY: this._pMaxY,
162
+ trackCoords: this._pTrackCoords,
163
+ groundCoords: this._pGroundCoords
164
+ });
165
+ });
166
+ }
167
+
168
+ _calcPointsAsync(pointsLonLat) {
169
+ return new Promise((resolve, reject) => {
170
+ this._pTrackCoords = [[0, pointsLonLat[0].height]];
171
+ this._pMaxY = pointsLonLat[0].height;
172
+ this._pMinY = this._pMaxY;
173
+ this._pDist = 0;
174
+ this._pGroundCoords = [[0, 0, SAFE]];
175
+ this._pIndex = 0;
176
+ this._promiseArr = [];
177
+
178
+ this._collectAllPoints(pointsLonLat);
179
+ this._getGroundElevation(pointsLonLat[pointsLonLat.length - 1]);
180
+ this._collectPromise(resolve);
181
+ });
182
+ }
183
+
184
+ get minX() {
185
+ return this._minX;
186
+ }
187
+
188
+ get maxX() {
189
+ return this._maxX;
190
+ }
191
+
192
+ get minY() {
193
+ return this._minY;
194
+ }
195
+
196
+ get maxY() {
197
+ return this._maxY;
198
+ }
199
+
200
+ get pointsReady() {
201
+ return this._pointsReady;
202
+ }
203
+
204
+ get isWarningOrCollision() {
205
+ return this._isWarning;
206
+ }
207
+
208
+ collectProfile(pointsLonLat) {
209
+ this._pointsReady = false;
210
+ this._isWarning = false;
211
+
212
+ if (!pointsLonLat || !pointsLonLat.length) return;
213
+
214
+ this._promiseCounter++;
215
+
216
+ ((counter) => {
217
+ this._calcPointsAsync(pointsLonLat).then((p) => {
218
+ if (counter === this._promiseCounter) {
219
+ this.setRange(0, p.dist, p.minY - BOTTOM_PADDING * Math.abs(p.minY), p.maxY + Math.abs(p.maxY) * TOP_PADDING);
220
+ this._pointsReady = true;
221
+ this._drawData = [p.trackCoords, p.groundCoords];
222
+ this.events.dispatch(this.events.profilecollected, this._drawData, this);
223
+ }
224
+ });
225
+ })(this._promiseCounter);
226
+ }
227
+
228
+ _setPointType(pIndex) {
229
+ if ((this._pGroundCoords[pIndex][3] >= this._pGroundCoords[pIndex][1]) &&
230
+ (this._pGroundCoords[pIndex][3] < this._pGroundCoords[pIndex][1] + this._warningHeightLevel - HEIGHT_EPS)) {
231
+ this._pGroundCoords[pIndex][2] = WARNING;
232
+ }
233
+
234
+ if (this._pGroundCoords[pIndex][3] <= this._pGroundCoords[pIndex][1] + GROUND_OFFSET) {
235
+ this._pGroundCoords[pIndex][2] = COLLISION;
236
+ }
237
+
238
+ if (this._pGroundCoords[pIndex][2] == WARNING || this._pGroundCoords[pIndex][2] == COLLISION) {
239
+ this._isWarning = true;
240
+ }
241
+ }
242
+
243
+ _setPointsType() {
244
+ this._isWarning = false;
245
+
246
+ this._pTrackCoords = this._drawData[TRACK];
247
+ this._pGroundCoords = this._drawData[GROUND];
248
+
249
+ for (let i = 0; i < this._pGroundCoords.length; i++) {
250
+ this._setPointType(i);
251
+ }
252
+
253
+ this._drawData[GROUND] = this._pGroundCoords;
254
+ this.events.dispatch(this.events.profilecollected, this._drawData, this);
255
+ }
256
+
257
+ clear() {
258
+ this._pointsReady = false;
259
+ this._isWarning = false;
260
+ this._drawData = [][0];
261
+ this._pMaxY = 0;
262
+ this._pMinY = 0;
263
+ this._pDist = 0;
264
+ this._pTrackCoords = [[0, 0, SAFE]];
265
+ this._pGroundCoords = [[0, 0, SAFE]];
266
+ this._pIndex = 0;
267
+ }
268
+ }
269
+
270
+ export {
271
+ SAFE,
272
+ COLLISION,
273
+ WARNING,
274
+ ElevationProfile
275
+ };
@@ -21,6 +21,8 @@ import { Sun } from "./Sun.js";
21
21
  import { ToggleWireframe } from "./ToggleWireframe.js";
22
22
  import { TouchNavigation } from "./TouchNavigation.js";
23
23
  import { ZoomControl } from "./ZoomControl.js";
24
+ import { DrawingSwitcher } from "./DrawingSwitcher.js";
25
+ import { DrawingControl } from "./drawing/DrawingControl.js";
24
26
 
25
27
  import { TimelineControl } from "./timeline/TimelineControl.js";
26
28
 
@@ -48,5 +50,7 @@ export {
48
50
  SimpleSkyBackground,
49
51
  Selection,
50
52
  LayerAnimation,
51
- TimelineControl
53
+ TimelineControl,
54
+ DrawingSwitcher,
55
+ DrawingControl
52
56
  };
@@ -1,7 +1,3 @@
1
- /**
2
- * @module og/control/Ruler
3
- */
4
-
5
1
  "use strict";
6
2
 
7
3
  import { Control } from "../Control.js";
@@ -275,8 +275,9 @@ class RulerScene extends RenderNode {
275
275
 
276
276
  let endPos = this._planet.ellipsoid.lonLatToCartesian(endLonLat);
277
277
 
278
- let length = this._planet.ellipsoid.getGreatCircleDistance(startLonLat, endLonLat);
279
- this._heading = Ellipsoid.getRhumbBearing(startLonLat, endLonLat);
278
+ let res = this._planet.ellipsoid.inverse(startLonLat, endLonLat);
279
+ let length = res.distance;
280
+ this._heading = res.initialAzimuth;
280
281
 
281
282
  let path = [];
282
283
  let dir = endPos.sub(startPos);
@@ -1,7 +1,3 @@
1
- /**
2
- * @module og/control/Selector
3
- */
4
-
5
1
  "use strict";
6
2
 
7
3
  import { ToggleButton } from "../../ui/ToggleButton.js";
@@ -233,17 +233,15 @@ class SelectionScene extends RenderNode {
233
233
 
234
234
  let endPos = this._planet.ellipsoid.lonLatToCartesian(endLonLat);
235
235
 
236
- let length = this._planet.ellipsoid.getGreatCircleDistance(startLonLat, endLonLat);
236
+ let res = this._planet.ellipsoid.direct(startLonLat, endLonLat);
237
237
 
238
- this._heading = Ellipsoid.getRhumbBearing(startLonLat, endLonLat);
238
+ this._heading = res.initialAzimuth;
239
239
 
240
240
  let path = [];
241
241
 
242
-
243
242
  this._cornerEntity[0].setCartesian3v(startPos);
244
243
  this._cornerEntity[1].setCartesian3v(endPos);
245
244
 
246
-
247
245
  let corners = [
248
246
  startPos,
249
247
  this._planet.ellipsoid.lonLatToCartesian(new LonLat(endLonLat.lon, startLonLat.lat, startLonLat.height)),
@@ -26,14 +26,14 @@ class TimelineControl extends Control {
26
26
  }
27
27
  super(options);
28
28
 
29
- let currentDate = options.current || new Date();
29
+ let currentDate = options.current || new Date();
30
30
  let startDate = options.rangeStart || addHours(currentDate, -12);
31
- let endDate = options.rangeEnd || addHours(currentDate, 12);
31
+ let endDate = options.rangeEnd || addHours(currentDate, 12);
32
32
 
33
33
  this._timelineView = new TimelineView({
34
34
  rangeStart: startDate,
35
35
  rangeEnd: endDate,
36
- current: currentDate
36
+ currentDate: currentDate
37
37
  });
38
38
 
39
39
  this._toggleBtn = new ToggleButton({
@@ -83,7 +83,7 @@ class TimelineControl extends Control {
83
83
  this.renderer.controls.mouseNavigation.deactivate();
84
84
  });
85
85
 
86
- this._timelineView.on("stopdrag", () => {
86
+ this._timelineView.on("stopdrag", (e) => {
87
87
  this.renderer.controls.mouseNavigation.activate();
88
88
  });
89
89
 
@@ -46,8 +46,8 @@ class TimelineModel {
46
46
  }
47
47
 
48
48
  stopped() {
49
- return this._requestAnimationFrameId == 0;
50
-   }
49
+ return this._requestAnimationFrameId == 0;
50
+ }
51
51
 
52
52
  _animationFrameCallback() {
53
53
  this._requestAnimationFrameId = window.requestAnimationFrame(() => {
@@ -390,6 +390,7 @@ class TimelineView extends View {
390
390
  this._canvasEl.height = this._frameEl.clientHeight * this._canvasScale;
391
391
  this._canvasEl.style.width = `${this._frameEl.clientWidth}px`;
392
392
  this._canvasEl.style.height = `${this._frameEl.clientHeight}px`;
393
+
393
394
  }
394
395
  }
395
396
 
@@ -269,11 +269,11 @@ class Segment {
269
269
  * @returns {Vec3} -
270
270
  */
271
271
  getEntityTerrainPoint(entity, res) {
272
- return this.getTerrainPoint(entity._cartesian, entity._lonlatMerc, res);
272
+ return this.getTerrainPoint(entity._cartesian, entity._lonLatMerc, res);
273
273
  }
274
274
 
275
275
  isEntityInside(e) {
276
- return this._extent.isInside(e._lonlatMerc);
276
+ return this._extent.isInside(e._lonLatMerc);
277
277
  }
278
278
 
279
279
  /**
@@ -281,7 +281,7 @@ class Segment {
281
281
  * @public
282
282
  * @param {Vec3} xyz - Cartesian object position.
283
283
  * @param {LonLat} insideSegmentPosition - Geodetic object position.
284
- * @param {Vec3} [res] - Result cartesian coordiantes on the terrain.
284
+ * @param {Vec3} [res] - Result cartesian coordinates on the terrain.
285
285
  * @param {Vec3} [normal] - Terrain point normal.
286
286
  * @returns {number} -
287
287
  */
@@ -363,8 +363,8 @@ class Segment {
363
363
  * @param {LonLat} lonlat - Coordinates to project.
364
364
  * @returns {LonLat} -
365
365
  */
366
- projectNative(lonlat) {
367
- return lonlat.forwardMercator();
366
+ projectNative(lonLat) {
367
+ return lonLat.forwardMercator();
368
368
  }
369
369
 
370
370
  /**
@@ -861,7 +861,7 @@ class Segment {
861
861
  */
862
862
  deleteMaterials() {
863
863
  var m = this.materials;
864
- for (var i = 0; i < m.length; i++) {
864
+ for (let i = 0; i < m.length; i++) {
865
865
  var mi = m[i];
866
866
  if (mi) {
867
867
  mi.clear();
@@ -1368,7 +1368,7 @@ class Segment {
1368
1368
  nmVertsLow = this.normalMapVerticesLow,
1369
1369
  nmNorms = this.normalMapNormals;
1370
1370
 
1371
- for (var k = 0; k < gsgs; k++) {
1371
+ for (let k = 0; k < gsgs; k++) {
1372
1372
  var j = k % gs,
1373
1373
  i = ~~(k / gs);
1374
1374
 
@@ -1,7 +1,3 @@
1
- /**
2
- * @module og/shaders/drawnode
3
- */
4
-
5
1
  "use strict";
6
2
 
7
3
  import { Program } from "../../webgl/Program.js";