@openglobus/og 0.11.5 → 0.12.0

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 (267) hide show
  1. package/css/og.css +5 -2
  2. package/package.json +12 -14
  3. package/src/og/Clock.js +6 -10
  4. package/src/og/Events.js +5 -7
  5. package/src/og/Extent.js +73 -32
  6. package/src/og/Globe.js +25 -10
  7. package/src/og/ImageCanvas.js +18 -15
  8. package/src/og/LonLat.js +13 -10
  9. package/src/og/Popup.js +19 -17
  10. package/src/og/QueueArray.js +3 -4
  11. package/src/og/Rectangle.js +4 -6
  12. package/src/og/Stack.js +2 -4
  13. package/src/og/ajax.js +20 -14
  14. package/src/og/astro/earth.js +21 -15
  15. package/src/og/bv/Box.js +2 -3
  16. package/src/og/bv/Sphere.js +10 -7
  17. package/src/og/camera/Camera.js +70 -79
  18. package/src/og/camera/Frustum.js +19 -12
  19. package/src/og/camera/PlanetCamera.js +33 -34
  20. package/src/og/control/CompassButton.js +1 -2
  21. package/src/og/control/Control.js +7 -9
  22. package/src/og/control/DebugInfo.js +2 -3
  23. package/src/og/control/EarthNavigation.js +26 -17
  24. package/src/og/control/KeyboardNavigation.js +9 -9
  25. package/src/og/control/LayerSwitcher.js +21 -20
  26. package/src/og/control/Lighting.js +74 -64
  27. package/src/og/control/MouseNavigation.js +30 -29
  28. package/src/og/control/MouseWheelZoomControl.js +257 -0
  29. package/src/og/control/SegmentBoundVisualization.js +5 -6
  30. package/src/og/control/ShowFps.js +12 -7
  31. package/src/og/control/SimpleNavigation.js +5 -7
  32. package/src/og/control/Sun.js +24 -14
  33. package/src/og/control/ToggleWireframe.js +3 -3
  34. package/src/og/control/TouchNavigation.js +43 -32
  35. package/src/og/control/ZoomControl.js +40 -24
  36. package/src/og/control/index.js +2 -0
  37. package/src/og/control/visibleExtent/Segment.js +1862 -0
  38. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  39. package/src/og/control/visibleExtent/drawnode.js +751 -0
  40. package/src/og/ellipsoid/Ellipsoid.js +149 -57
  41. package/src/og/ellipsoid/wgs84.js +3 -3
  42. package/src/og/entity/BaseBillboard.js +72 -30
  43. package/src/og/entity/Billboard.js +9 -5
  44. package/src/og/entity/BillboardHandler.js +315 -62
  45. package/src/og/entity/Entity.js +742 -704
  46. package/src/og/entity/EntityCollection.js +47 -24
  47. package/src/og/entity/GeoObject.js +228 -0
  48. package/src/og/entity/GeoObjectHandler.js +895 -0
  49. package/src/og/entity/GeometryHandler.js +595 -123
  50. package/src/og/entity/Label.js +62 -30
  51. package/src/og/entity/LabelHandler.js +42 -243
  52. package/src/og/entity/LabelWorker.js +218 -0
  53. package/src/og/entity/Object3d.js +504 -0
  54. package/src/og/entity/PointCloud.js +76 -28
  55. package/src/og/entity/PointCloudHandler.js +5 -5
  56. package/src/og/entity/Ray.js +49 -16
  57. package/src/og/entity/Strip.js +72 -43
  58. package/src/og/entity/StripHandler.js +23 -23
  59. package/src/og/layer/BaseGeoImage.js +50 -19
  60. package/src/og/layer/CanvasTiles.js +16 -17
  61. package/src/og/layer/GeoImage.js +8 -16
  62. package/src/og/layer/GeoTexture2d.js +2 -10
  63. package/src/og/layer/GeoVideo.js +2 -10
  64. package/src/og/layer/KML.js +55 -33
  65. package/src/og/layer/Layer.js +24 -33
  66. package/src/og/layer/Material.js +1 -1
  67. package/src/og/layer/Vector.js +94 -48
  68. package/src/og/layer/WMS.js +33 -18
  69. package/src/og/layer/XYZ.js +24 -26
  70. package/src/og/light/LightSource.js +19 -12
  71. package/src/og/math/Mat3.js +24 -12
  72. package/src/og/math/Mat4.js +603 -603
  73. package/src/og/math/Plane.js +19 -18
  74. package/src/og/math/Ray.js +17 -12
  75. package/src/og/math/Vec2.js +24 -14
  76. package/src/og/math/Vec3.js +78 -32
  77. package/src/og/math/coder.js +7 -7
  78. package/src/og/proj/EPSG3857.js +3 -3
  79. package/src/og/proj/EPSG4326.js +3 -3
  80. package/src/og/proj/Proj.js +2 -4
  81. package/src/og/quadTree/Node.js +50 -95
  82. package/src/og/quadTree/quadTree.js +1 -1
  83. package/src/og/renderer/Renderer.js +106 -126
  84. package/src/og/renderer/RendererEvents.js +45 -23
  85. package/src/og/scene/BaseNode.js +2 -3
  86. package/src/og/scene/Planet.js +139 -191
  87. package/src/og/scene/RenderNode.js +15 -8
  88. package/src/og/segment/Segment.js +93 -268
  89. package/src/og/segment/Slice.js +45 -0
  90. package/src/og/shaders/drawnode.js +174 -360
  91. package/src/og/shaders/geoObject.js +211 -0
  92. package/src/og/shaders/pointCloud.js +41 -41
  93. package/src/og/shaders/shape.js +12 -18
  94. package/src/og/shaders/skybox.js +36 -36
  95. package/src/og/shaders/toneMapping.js +1 -0
  96. package/src/og/shapes/BaseShape.js +108 -36
  97. package/src/og/shapes/Icosphere.js +25 -10
  98. package/src/og/shapes/Sphere.js +8 -11
  99. package/src/og/terrain/EmptyTerrain.js +3 -2
  100. package/src/og/terrain/GlobusTerrain.js +2 -0
  101. package/src/og/utils/FontAtlas.js +6 -2
  102. package/src/og/utils/GeoImageCreator.js +5 -1
  103. package/src/og/utils/Loader.js +1 -1
  104. package/src/og/utils/PlainSegmentWorker.js +0 -13
  105. package/src/og/utils/TextureAtlas.js +18 -20
  106. package/src/og/utils/VectorTileCreator.js +1 -3
  107. package/src/og/utils/shared.js +2 -2
  108. package/src/og/webgl/Handler.js +219 -162
  109. package/src/og/webgl/Multisample.js +44 -16
  110. package/src/og/webgl/Program.js +78 -33
  111. package/src/og/webgl/callbacks.js +3 -3
  112. package/types/Clock.d.ts +0 -94
  113. package/types/Deferred.d.ts +0 -6
  114. package/types/Events.d.ts +0 -77
  115. package/types/Extent.d.ts +0 -166
  116. package/types/Globe.d.ts +0 -82
  117. package/types/ImageCanvas.d.ts +0 -123
  118. package/types/Lock.d.ts +0 -12
  119. package/types/LonLat.d.ts +0 -108
  120. package/types/Popup.d.ts +0 -42
  121. package/types/QueueArray.d.ts +0 -19
  122. package/types/Rectangle.d.ts +0 -80
  123. package/types/Stack.d.ts +0 -19
  124. package/types/ajax.d.ts +0 -24
  125. package/types/arial.d.ts +0 -48
  126. package/types/astro/astro.d.ts +0 -38
  127. package/types/astro/earth.d.ts +0 -7
  128. package/types/astro/jd.d.ts +0 -254
  129. package/types/bv/Box.d.ts +0 -30
  130. package/types/bv/Sphere.d.ts +0 -38
  131. package/types/bv/index.d.ts +0 -3
  132. package/types/camera/Camera.d.ts +0 -312
  133. package/types/camera/Frustum.d.ts +0 -133
  134. package/types/camera/PlanetCamera.d.ts +0 -218
  135. package/types/camera/index.d.ts +0 -3
  136. package/types/cons.d.ts +0 -40
  137. package/types/control/CompassButton.d.ts +0 -17
  138. package/types/control/Control.d.ts +0 -104
  139. package/types/control/DebugInfo.d.ts +0 -15
  140. package/types/control/EarthCoordinates.d.ts +0 -47
  141. package/types/control/EarthNavigation.d.ts +0 -42
  142. package/types/control/GeoImageDragControl.d.ts +0 -6
  143. package/types/control/KeyboardNavigation.d.ts +0 -21
  144. package/types/control/LayerSwitcher.d.ts +0 -21
  145. package/types/control/Lighting.d.ts +0 -16
  146. package/types/control/MouseNavigation.d.ts +0 -47
  147. package/types/control/ScaleControl.d.ts +0 -22
  148. package/types/control/ShowFps.d.ts +0 -11
  149. package/types/control/SimpleNavigation.d.ts +0 -25
  150. package/types/control/Sun.d.ts +0 -50
  151. package/types/control/ToggleWireframe.d.ts +0 -12
  152. package/types/control/TouchNavigation.d.ts +0 -48
  153. package/types/control/ZoomControl.d.ts +0 -27
  154. package/types/control/index.d.ts +0 -17
  155. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  156. package/types/ellipsoid/index.d.ts +0 -3
  157. package/types/ellipsoid/wgs84.d.ts +0 -6
  158. package/types/entity/BaseBillboard.d.ts +0 -208
  159. package/types/entity/Billboard.d.ts +0 -94
  160. package/types/entity/BillboardHandler.d.ts +0 -78
  161. package/types/entity/Entity.d.ts +0 -333
  162. package/types/entity/EntityCollection.d.ts +0 -311
  163. package/types/entity/Geometry.d.ts +0 -74
  164. package/types/entity/GeometryHandler.d.ts +0 -76
  165. package/types/entity/Label.d.ts +0 -189
  166. package/types/entity/LabelHandler.d.ts +0 -29
  167. package/types/entity/PointCloud.d.ts +0 -174
  168. package/types/entity/PointCloudHandler.d.ts +0 -38
  169. package/types/entity/Polyline.d.ts +0 -306
  170. package/types/entity/PolylineHandler.d.ts +0 -18
  171. package/types/entity/Ray.d.ts +0 -124
  172. package/types/entity/RayHandler.d.ts +0 -67
  173. package/types/entity/ShapeHandler.d.ts +0 -22
  174. package/types/entity/Strip.d.ts +0 -119
  175. package/types/entity/StripHandler.d.ts +0 -38
  176. package/types/entity/index.d.ts +0 -8
  177. package/types/index.core.d.ts +0 -65
  178. package/types/index.d.ts +0 -45
  179. package/types/index.webgl.d.ts +0 -7
  180. package/types/input/KeyboardHandler.d.ts +0 -10
  181. package/types/input/MouseHandler.d.ts +0 -5
  182. package/types/input/TouchHandler.d.ts +0 -5
  183. package/types/input/input.d.ts +0 -34
  184. package/types/layer/BaseGeoImage.d.ts +0 -94
  185. package/types/layer/CanvasTiles.d.ts +0 -68
  186. package/types/layer/GeoImage.d.ts +0 -52
  187. package/types/layer/GeoTexture2d.d.ts +0 -8
  188. package/types/layer/GeoVideo.d.ts +0 -55
  189. package/types/layer/KML.d.ts +0 -63
  190. package/types/layer/Layer.d.ts +0 -326
  191. package/types/layer/Material.d.ts +0 -45
  192. package/types/layer/Vector.d.ts +0 -208
  193. package/types/layer/WMS.d.ts +0 -63
  194. package/types/layer/XYZ.d.ts +0 -120
  195. package/types/layer/index.d.ts +0 -10
  196. package/types/light/LightSource.d.ts +0 -178
  197. package/types/math/Line2.d.ts +0 -11
  198. package/types/math/Line3.d.ts +0 -10
  199. package/types/math/Mat3.d.ts +0 -65
  200. package/types/math/Mat4.d.ts +0 -176
  201. package/types/math/Plane.d.ts +0 -18
  202. package/types/math/Quat.d.ts +0 -379
  203. package/types/math/Ray.d.ts +0 -82
  204. package/types/math/Vec2.d.ts +0 -309
  205. package/types/math/Vec3.d.ts +0 -460
  206. package/types/math/Vec4.d.ts +0 -162
  207. package/types/math/coder.d.ts +0 -43
  208. package/types/math/index.d.ts +0 -11
  209. package/types/math.d.ts +0 -261
  210. package/types/mercator.d.ts +0 -92
  211. package/types/proj/EPSG3857.d.ts +0 -6
  212. package/types/proj/EPSG4326.d.ts +0 -6
  213. package/types/proj/Proj.d.ts +0 -42
  214. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  215. package/types/quadTree/Node.d.ts +0 -61
  216. package/types/quadTree/quadTree.d.ts +0 -40
  217. package/types/renderer/Renderer.d.ts +0 -298
  218. package/types/renderer/RendererEvents.d.ts +0 -233
  219. package/types/res/images.d.ts +0 -3
  220. package/types/scene/Axes.d.ts +0 -11
  221. package/types/scene/BaseNode.d.ts +0 -60
  222. package/types/scene/Planet.d.ts +0 -577
  223. package/types/scene/RenderNode.d.ts +0 -142
  224. package/types/scene/SkyBox.d.ts +0 -10
  225. package/types/scene/index.d.ts +0 -4
  226. package/types/segment/Segment.d.ts +0 -279
  227. package/types/segment/SegmentLonLat.d.ts +0 -16
  228. package/types/segment/segmentHelper.d.ts +0 -13
  229. package/types/shaders/billboard.d.ts +0 -3
  230. package/types/shaders/depth.d.ts +0 -2
  231. package/types/shaders/drawnode.d.ts +0 -7
  232. package/types/shaders/label.d.ts +0 -4
  233. package/types/shaders/pointCloud.d.ts +0 -2
  234. package/types/shaders/polyline.d.ts +0 -3
  235. package/types/shaders/ray.d.ts +0 -2
  236. package/types/shaders/screenFrame.d.ts +0 -2
  237. package/types/shaders/shape.d.ts +0 -4
  238. package/types/shaders/skybox.d.ts +0 -2
  239. package/types/shaders/toneMapping.d.ts +0 -2
  240. package/types/shapes/BaseShape.d.ts +0 -250
  241. package/types/shapes/Sphere.d.ts +0 -41
  242. package/types/terrain/BilTerrain.d.ts +0 -7
  243. package/types/terrain/EmptyTerrain.d.ts +0 -72
  244. package/types/terrain/Geoid.d.ts +0 -26
  245. package/types/terrain/GlobusTerrain.d.ts +0 -116
  246. package/types/terrain/MapboxTerrain.d.ts +0 -7
  247. package/types/terrain/index.d.ts +0 -5
  248. package/types/utils/FontAtlas.d.ts +0 -14
  249. package/types/utils/GeoImageCreator.d.ts +0 -30
  250. package/types/utils/ImagesCacheManager.d.ts +0 -10
  251. package/types/utils/Loader.d.ts +0 -25
  252. package/types/utils/NormalMapCreator.d.ts +0 -39
  253. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  254. package/types/utils/TerrainWorker.d.ts +0 -9
  255. package/types/utils/TextureAtlas.d.ts +0 -111
  256. package/types/utils/VectorTileCreator.d.ts +0 -16
  257. package/types/utils/colorTable.d.ts +0 -143
  258. package/types/utils/earcut.d.ts +0 -6
  259. package/types/utils/shared.d.ts +0 -231
  260. package/types/webgl/Framebuffer.d.ts +0 -135
  261. package/types/webgl/Handler.d.ts +0 -388
  262. package/types/webgl/Multisample.d.ts +0 -89
  263. package/types/webgl/Program.d.ts +0 -155
  264. package/types/webgl/ProgramController.d.ts +0 -89
  265. package/types/webgl/callbacks.d.ts +0 -1
  266. package/types/webgl/index.d.ts +0 -6
  267. package/types/webgl/types.d.ts +0 -2
@@ -1,6 +1,6 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- import { Mat4 } from '../math/Mat4.js';
3
+ import { Mat4 } from "../math/Mat4.js";
4
4
 
5
5
  function planeNormalize(plane) {
6
6
  var t = 1.0 / Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);
@@ -15,9 +15,8 @@ function planeNormalize(plane) {
15
15
  * @class
16
16
  */
17
17
  class Frustum {
18
-
19
18
  /**
20
- * @param {*} options
19
+ * @param {*} options
21
20
  */
22
21
  constructor(options = {}) {
23
22
  /**
@@ -89,7 +88,8 @@ class Frustum {
89
88
  */
90
89
  this.far = 0.0;
91
90
 
92
- this._cameraFrustumIndex = options.cameraFrustumIndex != undefined ? options.cameraFrustumIndex : -1;
91
+ this._cameraFrustumIndex =
92
+ options.cameraFrustumIndex != undefined ? options.cameraFrustumIndex : -1;
93
93
 
94
94
  this.setProjectionMatrix(
95
95
  options.fov || 30.0,
@@ -144,15 +144,21 @@ class Frustum {
144
144
  * @param {number} far - Far camera distance.
145
145
  */
146
146
  setProjectionMatrix(angle, aspect, near, far) {
147
-
148
- this.top = near * Math.tan(angle * Math.PI / 360);
147
+ this.top = near * Math.tan((angle * Math.PI) / 360);
149
148
  this.bottom = -this.top;
150
149
  this.right = this.top * aspect;
151
150
  this.left = -this.right;
152
151
  this.near = near;
153
152
  this.far = far;
154
153
 
155
- this._projectionMatrix.setPerspective(this.left, this.right, this.bottom, this.top, near, far);
154
+ this._projectionMatrix.setPerspective(
155
+ this.left,
156
+ this.right,
157
+ this.bottom,
158
+ this.top,
159
+ near,
160
+ far
161
+ );
156
162
  this._projectionMatrix.inverseTo(this._inverseProjectionMatrix);
157
163
  }
158
164
 
@@ -162,7 +168,6 @@ class Frustum {
162
168
  * @param {Mat4} projectionView - projectionView matrix.
163
169
  */
164
170
  setViewMatrix(viewMatrix) {
165
-
166
171
  this._projectionViewMatrix = this._projectionMatrix.mul(viewMatrix);
167
172
  this._projectionViewMatrix.inverseTo(this._inverseProjectionViewMatrix);
168
173
 
@@ -295,11 +300,13 @@ class Frustum {
295
300
  * @returns {boolean} -
296
301
  */
297
302
  containsBox(box) {
298
- var result = true, cout, cin;
303
+ var result = true,
304
+ cout,
305
+ cin;
299
306
 
300
307
  for (var i = 0; i < 6; i++) {
301
-
302
- cout = 0; cin = 0;
308
+ cout = 0;
309
+ cin = 0;
303
310
 
304
311
  for (var k = 0; k < 8 && (cin === 0 || cout === 0); k++) {
305
312
  var d = box.vertices[k].dotArr(this._f[i]) + this._f[i][3];
@@ -31,26 +31,20 @@ import { Mat4 } from "../math/Mat4.js";
31
31
  * @param {Vec3} [options.up] - Camera eye position. Default (0,1,0)
32
32
  */
33
33
  class PlanetCamera extends Camera {
34
-
35
34
  /**
36
35
  * @param {RenderNode} planet - Planet render node.
37
36
  * @param {Object} [options] - Planet camera options:
38
37
  */
39
38
  constructor(planet, options) {
40
- super(
41
- planet.renderer,
42
- Object.assign(
43
- {},
44
- {
45
- frustums: /*[[100, 10000000]]*/ [
46
- [1, 100 + 0.075],
47
- [100, 1000 + 0.075],
48
- [1000, 1e6 + 10000],
49
- [1e6, 1e9]
50
- ] //[[1, 1e3 + 100], [1e3, 1e6 + 10000], [1e6, 1e9]]*/
51
- },
52
- options
53
- )
39
+ super(planet.renderer, {
40
+ frustums: [
41
+ [1, 100 + 0.075],
42
+ [100, 1000 + 0.075],
43
+ [1000, 1e6 + 10000],
44
+ [1e6, 1e9]
45
+ ], //[[1, 1e3 + 100], [1e3, 1e6 + 10000], [1e6, 1e9]]*/
46
+ ...options
47
+ }
54
48
  );
55
49
  /**
56
50
  * Assigned camera's planet.
@@ -145,7 +139,7 @@ class PlanetCamera extends Camera {
145
139
  super.update();
146
140
  this.updateGeodeticPosition();
147
141
  this.eyeNorm = this.eye.normal();
148
- this.slope = this._n.dot(this.eyeNorm);
142
+ this.slope = this._b.dot(this.eyeNorm);
149
143
  this.events.dispatch(this.events.viewchange, this);
150
144
  }
151
145
 
@@ -388,8 +382,8 @@ class PlanetCamera extends Camera {
388
382
  var ground_a = this.planet.ellipsoid.lonLatToCartesian(
389
383
  new LonLat(this._lonLat.lon, this._lonLat.lat)
390
384
  );
391
- var v_a = this._v,
392
- n_a = this._n;
385
+ var v_a = this._u,
386
+ n_a = this._b;
393
387
 
394
388
  var lonlat_b = this.planet.ellipsoid.cartesianToLonLat(cartesian);
395
389
  var up_b = up || Vec3.UP;
@@ -544,18 +538,18 @@ class PlanetCamera extends Camera {
544
538
  }
545
539
 
546
540
  rotateVertical(angle, center, minSlope = 0) {
547
- var rot = new Mat4().setRotation(this._u, angle);
541
+ var rot = new Mat4().setRotation(this._r, angle);
548
542
  var tr = new Mat4().setIdentity().translate(center);
549
543
  var ntr = new Mat4().setIdentity().translate(center.negateTo());
550
544
  var trm = tr.mul(rot).mul(ntr);
551
545
 
552
546
  let eye = trm.mulVec3(this.eye);
553
- let v = rot.mulVec3(this._v).normalize();
554
547
  let u = rot.mulVec3(this._u).normalize();
555
- let n = rot.mulVec3(this._n).normalize();
548
+ let r = rot.mulVec3(this._r).normalize();
549
+ let b = rot.mulVec3(this._b).normalize();
556
550
 
557
551
  let eyeNorm = eye.normal();
558
- let slope = n.dot(eyeNorm);
552
+ let slope = b.dot(eyeNorm);
559
553
 
560
554
  if (minSlope) {
561
555
  let dSlope = slope - this.slope;
@@ -563,20 +557,20 @@ class PlanetCamera extends Camera {
563
557
  if (slope < minSlope && dSlope < 0) return;
564
558
 
565
559
  if (
566
- (slope > 0.1 && v.dot(eyeNorm) > 0) ||
560
+ (slope > 0.1 && u.dot(eyeNorm) > 0) ||
567
561
  this.slope <= 0.1 ||
568
- this._v.dot(this.eye.normal()) <= 0.0
562
+ this._u.dot(this.eye.normal()) <= 0.0
569
563
  ) {
570
564
  this.eye = eye;
571
- this._v = v;
572
565
  this._u = u;
573
- this._n = n;
566
+ this._r = r;
567
+ this._b = b;
574
568
  }
575
569
  } else {
576
570
  this.eye = eye;
577
- this._v = v;
578
571
  this._u = u;
579
- this._n = n;
572
+ this._r = r;
573
+ this._b = b;
580
574
  }
581
575
  }
582
576
 
@@ -593,9 +587,9 @@ class PlanetCamera extends Camera {
593
587
  this.planet._normalMapCreator.lock(this._keyLock);
594
588
 
595
589
  this.eye = this._framesArr[c].eye;
596
- this._u = this._framesArr[c].u;
597
- this._v = this._framesArr[c].v;
598
- this._n = this._framesArr[c].n;
590
+ this._r = this._framesArr[c].u;
591
+ this._u = this._framesArr[c].v;
592
+ this._b = this._framesArr[c].n;
599
593
 
600
594
  if (this._frameCallback) {
601
595
  this._frameCallback();
@@ -637,15 +631,20 @@ class PlanetCamera extends Camera {
637
631
  getHeading() {
638
632
  let u = this.eye.normal();
639
633
  let f = Vec3.proj_b_to_plane(
640
- this.slope >= 0.97 ? this.getUp() : this.getForward(),
641
- u
642
- ).normalize(),
634
+ this.slope >= 0.97 ? this.getUp() : this.getForward(),
635
+ u
636
+ ).normalize(),
643
637
  n = Vec3.proj_b_to_plane(Vec3.UP, u).normalize();
644
638
  let res = Math.sign(u.dot(f.cross(n))) * Math.acos(f.dot(n)) * math.DEGREES;
645
639
  if (res < 0.0) {
646
640
  return 360.0 + res;
647
641
  }
648
642
  return res;
643
+ }
644
+
645
+ isVisible(poi) {
646
+ let e = this.eye.length();
647
+ return this.eye.distance(poi) < Math.sqrt(e * e - this.planet.ellipsoid._a2);
649
648
  }
650
649
  }
651
650
 
@@ -86,9 +86,8 @@ let svg = `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
86
86
  * @params {Object} [options] - Control options.
87
87
  */
88
88
  class CompassButton extends Control {
89
-
90
89
  /**
91
- *
90
+ *
92
91
  * @params {Object} [options] - Control options.
93
92
  */
94
93
  constructor(options) {
@@ -2,7 +2,7 @@
2
2
  * @module og/control/Control
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
7
  /**
8
8
  * Base control class for implementing renderer controls.
@@ -12,7 +12,6 @@
12
12
  * @param {Boolean} [options.autoActivated=true] - If true - calls initialize function after the renderer assigning.
13
13
  */
14
14
  class Control {
15
-
16
15
  /**
17
16
  * @param {Object} [options] - Control activation options:
18
17
  */
@@ -77,35 +76,35 @@ class Control {
77
76
  * @public
78
77
  * @virtual
79
78
  */
80
- oninit() { }
79
+ oninit() {}
81
80
 
82
81
  /**
83
82
  * Control renderer assigning function have to be overriden.
84
83
  * @public
85
84
  * @virtual
86
85
  */
87
- onadd() { }
86
+ onadd() {}
88
87
 
89
88
  /**
90
89
  * Control remove function have to be overriden.
91
90
  * @public
92
91
  * @virtual
93
92
  */
94
- onremove() { }
93
+ onremove() {}
95
94
 
96
95
  /**
97
96
  * Control activation function have to be overriden.
98
97
  * @public
99
98
  * @virtual
100
99
  */
101
- onactivate() { }
100
+ onactivate() {}
102
101
 
103
102
  /**
104
103
  * Control deactivation function have to be overriden.
105
104
  * @public
106
105
  * @virtual
107
106
  */
108
- ondeactivate() { }
107
+ ondeactivate() {}
109
108
 
110
109
  /**
111
110
  * Assign renderer to the control.
@@ -130,7 +129,6 @@ class Control {
130
129
  * @public
131
130
  */
132
131
  remove() {
133
-
134
132
  this.onremove && this.onremove();
135
133
 
136
134
  let r = this.renderer,
@@ -187,4 +185,4 @@ class Control {
187
185
  }
188
186
  }
189
187
 
190
- export { Control };
188
+ export { Control };
@@ -13,7 +13,6 @@ import { Control } from "./Control.js";
13
13
  * @param {Object} [options] - Control options.
14
14
  */
15
15
  class DebugInfo extends Control {
16
-
17
16
  /**
18
17
  * @param {Object} [options] - Control options.
19
18
  */
@@ -94,8 +93,8 @@ class DebugInfo extends Control {
94
93
  frame: () => p.camera.slope.toFixed(3)
95
94
  },
96
95
  {
97
- label: "lodRatio",
98
- frame: () => p._lodRatio.toFixed(3)
96
+ label: "lodSize",
97
+ frame: () => Math.round(p.lodSize)
99
98
  },
100
99
  {
101
100
  label: "deltaTime/FPS",
@@ -6,6 +6,7 @@ import { Quat } from "../math/Quat.js";
6
6
  import { Ray } from "../math/Ray.js";
7
7
  import { Vec3 } from "../math/Vec3.js";
8
8
  import { Control } from "./Control.js";
9
+ import { Mat4 } from "../math/Mat4.js";
9
10
 
10
11
  class Touch {
11
12
  constructor() {
@@ -29,6 +30,7 @@ class EarthNavigation extends Control {
29
30
  super(options);
30
31
 
31
32
  this.grabbedPoint = new Vec3();
33
+ this.grabbedDir = new Vec3();
32
34
  this.inertia = 0.007;
33
35
  this.grabbedSpheroid = new Sphere();
34
36
  this.planet = null;
@@ -39,11 +41,11 @@ class EarthNavigation extends Control {
39
41
  this.currState = 0;
40
42
 
41
43
  this.positionState = [
42
- { h: 17119745.303455353, max: 0.99, min: -0.99 },
43
- { h: 6866011, max: 0.99, min: -0.99 },
44
- { h: 3000000, max: 0.99, min: -0.99 },
45
- { h: 1000000, max: 0.99, min: -0.99 },
46
- { h: 500000, max: 0.99, min: -0.99 }
44
+ { h: 17119745.303455353, max: 0.98, min: -0.98 },
45
+ { h: 6866011, max: 0.98, min: -0.98 },
46
+ { h: 3000000, max: 0.98, min: -0.98 },
47
+ { h: 1000000, max: 0.98, min: -0.98 },
48
+ { h: 500000, max: 0.98, min: -0.98 }
47
49
  ];
48
50
 
49
51
  this.touches = [new Touch(), new Touch()];
@@ -163,9 +165,10 @@ class EarthNavigation extends Control {
163
165
  }
164
166
  }
165
167
 
166
- onMouseLeftButtonClick() {
168
+ onMouseLeftButtonClick(e) {
167
169
  this.renderer.handler.gl.canvas.classList.add("ogGrabbingPoiner");
168
170
  this.grabbedPoint = this.planet.getCartesianFromMouseTerrain(true);
171
+ this.grabbedDir.copy(e.direction);
169
172
  if (this.grabbedPoint) {
170
173
  this.grabbedSpheroid.radius = this.grabbedPoint.length();
171
174
  this.stopRotation();
@@ -195,24 +198,30 @@ class EarthNavigation extends Control {
195
198
  var targetPoint = new Ray(cam.eye, e.direction).hitSphere(this.grabbedSpheroid);
196
199
 
197
200
  if (targetPoint) {
198
- this._a =
199
- Math.acos(this.grabbedPoint.y / this.grabbedSpheroid.radius) -
201
+
202
+ this._a = Math.acos(this.grabbedPoint.y / this.grabbedSpheroid.radius) -
200
203
  Math.acos(targetPoint.y / this.grabbedSpheroid.radius);
201
204
 
202
- this._vRot = Quat.axisAngleToQuat(cam._u, this._a);
205
+ let rot = this._vRot = Quat.axisAngleToQuat(cam._u, this._a);
206
+
207
+ cam.set(rot.mulVec3(cam.eye), Vec3.ZERO, rot.mulVec3(cam.getUp()));
208
+ //cam.update();
209
+
203
210
  this._hRot = Quat.getRotationBetweenVectors(
204
211
  new Vec3(targetPoint.x, 0.0, targetPoint.z).normal(),
205
212
  new Vec3(this.grabbedPoint.x, 0.0, this.grabbedPoint.z).normal()
206
213
  );
207
- var rot = this._hRot.mul(this._vRot);
208
214
 
209
- var state = this.positionState[this.currState];
210
- var lim = rot.mulVec3(cam.eye).normal().dot(Vec3.UP);
211
- if (lim > state.max || lim < state.min) {
212
- rot = Quat.yRotation(rot.getYaw());
213
- }
214
- cam.set(rot.mulVec3(cam.eye), Vec3.ZERO, Vec3.UP);
215
- cam.update();
215
+ rot = this._hRot;
216
+
217
+ //var state = this.positionState[this.currState];
218
+ //var lim = cam.eye.normal().dot(Vec3.UP);
219
+
220
+ //if (lim > state.max || lim < state.min) {
221
+ // rot = Quat.yRotation(rot.getYaw());
222
+ cam.set(rot.mulVec3(cam.eye), Vec3.ZERO, rot.mulVec3(cam.getUp()));
223
+ cam.update();
224
+ //}
216
225
  }
217
226
  } else {
218
227
  this.scaleRot = 0;
@@ -2,12 +2,12 @@
2
2
  * @module og/control/KeyboardNavigation
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import * as math from '../math.js';
8
- import { Control } from './Control.js';
9
- import { input } from '../input/input.js';
10
- import { Vec3 } from '../math/Vec3.js';
7
+ import * as math from "../math.js";
8
+ import { Control } from "./Control.js";
9
+ import { input } from "../input/input.js";
10
+ import { Vec3 } from "../math/Vec3.js";
11
11
 
12
12
  /**
13
13
  * Planet camera keyboard navigation. Use W,S,A,D and left shift key for fly around a planet.
@@ -69,7 +69,7 @@ class KeyboardNavigation extends Control {
69
69
  if (this.renderer.events.isKeyPressed(input.KEY_SHIFT)) {
70
70
  cam.pitch(15 / this.renderer.handler.deltaTime);
71
71
  } else {
72
- cam.rotateVertical(cam._lonLat.height / 3000000 * math.RADIANS, Vec3.ZERO);
72
+ cam.rotateVertical((cam._lonLat.height / 3000000) * math.RADIANS, Vec3.ZERO);
73
73
  }
74
74
  cam.update();
75
75
  }
@@ -79,7 +79,7 @@ class KeyboardNavigation extends Control {
79
79
  if (this.renderer.events.isKeyPressed(input.KEY_SHIFT)) {
80
80
  cam.pitch(-15 / this.renderer.handler.deltaTime);
81
81
  } else {
82
- cam.rotateVertical(-cam._lonLat.height / 3000000 * math.RADIANS, Vec3.ZERO);
82
+ cam.rotateVertical((-cam._lonLat.height / 3000000) * math.RADIANS, Vec3.ZERO);
83
83
  }
84
84
  cam.update();
85
85
  }
@@ -89,7 +89,7 @@ class KeyboardNavigation extends Control {
89
89
  if (this.renderer.events.isKeyPressed(input.KEY_SHIFT)) {
90
90
  cam.yaw(15 / this.renderer.handler.deltaTime);
91
91
  } else {
92
- cam.rotateHorizontal(cam._lonLat.height / 3000000 * math.RADIANS, false, Vec3.ZERO);
92
+ cam.rotateHorizontal((cam._lonLat.height / 3000000) * math.RADIANS, false, Vec3.ZERO);
93
93
  }
94
94
  cam.update();
95
95
  }
@@ -99,7 +99,7 @@ class KeyboardNavigation extends Control {
99
99
  if (this.renderer.events.isKeyPressed(input.KEY_SHIFT)) {
100
100
  cam.yaw(-15 / this.renderer.handler.deltaTime);
101
101
  } else {
102
- cam.rotateHorizontal(-cam._lonLat.height / 3000000 * math.RADIANS, false, Vec3.ZERO);
102
+ cam.rotateHorizontal((-cam._lonLat.height / 3000000) * math.RADIANS, false, Vec3.ZERO);
103
103
  }
104
104
  cam.update();
105
105
  }
@@ -2,9 +2,9 @@
2
2
  * @module og/control/LayerSwitcher
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import { Control } from './Control.js';
7
+ import { Control } from "./Control.js";
8
8
 
9
9
  /**
10
10
  * Simple(OpenLayers like)layer switcher, includes base layers, overlays, geo images etc. groups.
@@ -56,16 +56,16 @@ class LayerSwitcher extends Control {
56
56
  }
57
57
 
58
58
  addSwitcher(type, obj, container, id) {
59
- var lineDiv = document.createElement('div');
59
+ var lineDiv = document.createElement("div");
60
60
 
61
61
  var that = this;
62
- var center = document.createElement('div');
63
- center.classList.add('ogViewExtentBtn');
62
+ var center = document.createElement("div");
63
+ center.classList.add("ogViewExtentBtn");
64
64
  center.onclick = function () {
65
65
  that.planet.flyExtent(obj.getExtent());
66
66
  };
67
67
 
68
- var inp = document.createElement('input');
68
+ var inp = document.createElement("input");
69
69
  inp.type = type;
70
70
  inp.name = "ogBaseLayerRadiosId" + (id || "");
71
71
  inp.checked = obj.getVisibility();
@@ -74,11 +74,12 @@ class LayerSwitcher extends Control {
74
74
  obj.setVisibility(this.checked);
75
75
  };
76
76
 
77
- obj.events && obj.events.on("visibilitychange", function (e) {
78
- inp.checked = e.getVisibility();
79
- });
77
+ obj.events &&
78
+ obj.events.on("visibilitychange", function (e) {
79
+ inp.checked = e.getVisibility();
80
+ });
80
81
 
81
- var lbl = document.createElement('label');
82
+ var lbl = document.createElement("label");
82
83
  lbl.className = "ogLayerSwitcherLabel";
83
84
  lbl.innerHTML = (obj.name || obj.src || "noname") + "</br>";
84
85
 
@@ -94,35 +95,35 @@ class LayerSwitcher extends Control {
94
95
  }
95
96
 
96
97
  createBaseLayersContainer() {
97
- var layersDiv = document.createElement('div');
98
+ var layersDiv = document.createElement("div");
98
99
  layersDiv.className = "layersDiv";
99
100
  this.dialog.appendChild(layersDiv);
100
101
 
101
- var baseLayersLbl = document.createElement('div');
102
+ var baseLayersLbl = document.createElement("div");
102
103
  baseLayersLbl.className = "layersDiv";
103
104
  baseLayersLbl.innerHTML = "Base Layer";
104
105
  layersDiv.appendChild(baseLayersLbl);
105
106
 
106
- this.baseLayersDiv = document.createElement('div');
107
+ this.baseLayersDiv = document.createElement("div");
107
108
  layersDiv.appendChild(this.baseLayersDiv);
108
109
  }
109
110
 
110
111
  createOverlaysContainer() {
111
- var overlaysDiv = document.createElement('div');
112
+ var overlaysDiv = document.createElement("div");
112
113
  overlaysDiv.className = "layersDiv";
113
114
  this.dialog.appendChild(overlaysDiv);
114
115
 
115
- var overlaysLbl = document.createElement('div');
116
+ var overlaysLbl = document.createElement("div");
116
117
  overlaysLbl.className = "layersDiv";
117
118
  overlaysLbl.innerHTML = "Overlays";
118
119
  overlaysDiv.appendChild(overlaysLbl);
119
120
 
120
- this.overlaysDiv = document.createElement('div');
121
+ this.overlaysDiv = document.createElement("div");
121
122
  overlaysDiv.appendChild(this.overlaysDiv);
122
123
  }
123
124
 
124
125
  createDialog() {
125
- this.dialog = document.createElement('div');
126
+ this.dialog = document.createElement("div");
126
127
  this.dialog.id = "ogLayerSwitcherDialog";
127
128
  this.dialog.className = "displayNone";
128
129
  this.renderer.div.appendChild(this.dialog);
@@ -138,8 +139,8 @@ class LayerSwitcher extends Control {
138
139
  }
139
140
 
140
141
  createSwitcher() {
141
- var button = document.createElement('div');
142
- button.className = 'ogLayerSwitcherButton';
142
+ var button = document.createElement("div");
143
+ button.className = "ogLayerSwitcherButton";
143
144
  button.id = "ogLayerSwitcherButtonMaximize";
144
145
  var that = this;
145
146
  button.onclick = function (e) {
@@ -155,4 +156,4 @@ class LayerSwitcher extends Control {
155
156
  }
156
157
  }
157
158
 
158
- export { LayerSwitcher };
159
+ export { LayerSwitcher };