@openglobus/og 0.11.2 → 0.11.7

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 (273) hide show
  1. package/package.json +13 -13
  2. package/src/og/Clock.js +10 -10
  3. package/src/og/Events.js +8 -6
  4. package/src/og/Extent.js +82 -41
  5. package/src/og/Globe.js +25 -13
  6. package/src/og/ImageCanvas.js +22 -16
  7. package/src/og/LonLat.js +16 -13
  8. package/src/og/Popup.js +21 -14
  9. package/src/og/QueueArray.js +6 -2
  10. package/src/og/Rectangle.js +11 -6
  11. package/src/og/Stack.js +5 -2
  12. package/src/og/ajax.js +21 -33
  13. package/src/og/astro/astro.js +5 -5
  14. package/src/og/astro/earth.js +22 -16
  15. package/src/og/astro/jd.js +23 -18
  16. package/src/og/astro/orbit.js +13 -11
  17. package/src/og/astro/rotation.js +17 -8
  18. package/src/og/bv/Box.js +7 -3
  19. package/src/og/bv/Sphere.js +14 -11
  20. package/src/og/camera/Camera.js +51 -54
  21. package/src/og/camera/Frustum.js +29 -18
  22. package/src/og/camera/PlanetCamera.js +32 -23
  23. package/src/og/control/CompassButton.js +5 -1
  24. package/src/og/control/Control.js +12 -10
  25. package/src/og/control/DebugInfo.js +4 -1
  26. package/src/og/control/EarthCoordinates.js +54 -33
  27. package/src/og/control/KeyboardNavigation.js +10 -10
  28. package/src/og/control/LayerSwitcher.js +22 -21
  29. package/src/og/control/Lighting.js +34 -3
  30. package/src/og/control/MouseNavigation.js +1 -1
  31. package/src/og/control/ScaleControl.js +1 -1
  32. package/src/og/control/SegmentBoundVisualization.js +6 -7
  33. package/src/og/control/ShowFps.js +13 -8
  34. package/src/og/control/SimpleNavigation.js +6 -8
  35. package/src/og/control/Sun.js +25 -15
  36. package/src/og/control/ToggleWireframe.js +4 -4
  37. package/src/og/control/TouchNavigation.js +44 -33
  38. package/src/og/control/ZoomControl.js +41 -25
  39. package/src/og/ellipsoid/Ellipsoid.js +162 -66
  40. package/src/og/ellipsoid/wgs84.js +4 -4
  41. package/src/og/entity/BaseBillboard.js +100 -56
  42. package/src/og/entity/Billboard.js +14 -10
  43. package/src/og/entity/BillboardHandler.js +317 -60
  44. package/src/og/entity/Entity.js +100 -68
  45. package/src/og/entity/EntityCollection.js +70 -47
  46. package/src/og/entity/GeoObject.js +228 -0
  47. package/src/og/entity/GeoObjectHandler.js +910 -0
  48. package/src/og/entity/Geometry.js +27 -24
  49. package/src/og/entity/GeometryHandler.js +596 -124
  50. package/src/og/entity/Label.js +80 -49
  51. package/src/og/entity/LabelHandler.js +45 -244
  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 +80 -32
  55. package/src/og/entity/PointCloudHandler.js +8 -8
  56. package/src/og/entity/Polyline.js +16 -16
  57. package/src/og/entity/Ray.js +60 -27
  58. package/src/og/entity/Strip.js +77 -48
  59. package/src/og/entity/StripHandler.js +26 -26
  60. package/src/og/entity/index.js +8 -16
  61. package/src/og/layer/BaseGeoImage.js +54 -23
  62. package/src/og/layer/CanvasTiles.js +24 -24
  63. package/src/og/layer/GeoImage.js +9 -9
  64. package/src/og/layer/GeoVideo.js +3 -3
  65. package/src/og/layer/KML.js +63 -37
  66. package/src/og/layer/Layer.js +44 -21
  67. package/src/og/layer/Material.js +23 -20
  68. package/src/og/layer/Vector.js +114 -68
  69. package/src/og/layer/WMS.js +34 -17
  70. package/src/og/layer/XYZ.js +48 -46
  71. package/src/og/light/LightSource.js +46 -39
  72. package/src/og/math/Mat3.js +34 -22
  73. package/src/og/math/Mat4.js +603 -459
  74. package/src/og/math/Plane.js +21 -20
  75. package/src/og/math/Quat.js +182 -139
  76. package/src/og/math/Ray.js +38 -33
  77. package/src/og/math/Vec2.js +85 -75
  78. package/src/og/math/Vec3.js +142 -112
  79. package/src/og/math/Vec4.js +27 -31
  80. package/src/og/math/coder.js +10 -10
  81. package/src/og/math.js +12 -12
  82. package/src/og/proj/EPSG3857.js +4 -4
  83. package/src/og/proj/EPSG4326.js +4 -4
  84. package/src/og/proj/Proj.js +4 -6
  85. package/src/og/quadTree/Node.js +8 -8
  86. package/src/og/renderer/Renderer.js +59 -52
  87. package/src/og/renderer/RendererEvents.js +50 -27
  88. package/src/og/scene/BaseNode.js +7 -8
  89. package/src/og/scene/Planet.js +102 -103
  90. package/src/og/scene/RenderNode.js +28 -21
  91. package/src/og/segment/Segment.js +26 -21
  92. package/src/og/segment/SegmentLonLat.js +5 -5
  93. package/src/og/shaders/drawnode.js +135 -142
  94. package/src/og/shaders/geoObject.js +211 -0
  95. package/src/og/shaders/pointCloud.js +41 -41
  96. package/src/og/shaders/shape.js +12 -18
  97. package/src/og/shaders/skybox.js +36 -36
  98. package/src/og/shaders/toneMapping.js +1 -0
  99. package/src/og/shapes/BaseShape.js +126 -54
  100. package/src/og/shapes/Icosphere.js +29 -14
  101. package/src/og/shapes/Sphere.js +12 -15
  102. package/src/og/terrain/BilTerrain.js +1 -0
  103. package/src/og/terrain/EmptyTerrain.js +2 -2
  104. package/src/og/terrain/GlobusTerrain.js +9 -9
  105. package/src/og/utils/FontAtlas.js +6 -2
  106. package/src/og/utils/TextureAtlas.js +22 -24
  107. package/src/og/utils/VectorTileCreator.js +1 -3
  108. package/src/og/utils/shared.js +16 -16
  109. package/src/og/webgl/Framebuffer.js +88 -40
  110. package/src/og/webgl/Handler.js +243 -169
  111. package/src/og/webgl/Multisample.js +47 -19
  112. package/src/og/webgl/Program.js +79 -34
  113. package/src/og/webgl/ProgramController.js +17 -13
  114. package/src/og/webgl/callbacks.js +8 -8
  115. package/src/og/inherits.js +0 -8
  116. package/src/og/utils/polylabel.js +0 -176
  117. package/types/Clock.d.ts +0 -90
  118. package/types/Deferred.d.ts +0 -6
  119. package/types/Events.d.ts +0 -73
  120. package/types/Extent.d.ts +0 -166
  121. package/types/Globe.d.ts +0 -75
  122. package/types/ImageCanvas.d.ts +0 -121
  123. package/types/Lock.d.ts +0 -12
  124. package/types/LonLat.d.ts +0 -108
  125. package/types/Popup.d.ts +0 -38
  126. package/types/QueueArray.d.ts +0 -15
  127. package/types/Rectangle.d.ts +0 -74
  128. package/types/Stack.d.ts +0 -15
  129. package/types/ajax.d.ts +0 -24
  130. package/types/arial.d.ts +0 -48
  131. package/types/astro/astro.d.ts +0 -38
  132. package/types/astro/earth.d.ts +0 -6
  133. package/types/astro/jd.d.ts +0 -254
  134. package/types/bv/Box.d.ts +0 -25
  135. package/types/bv/Sphere.d.ts +0 -38
  136. package/types/bv/index.d.ts +0 -3
  137. package/types/camera/Camera.d.ts +0 -303
  138. package/types/camera/Frustum.d.ts +0 -129
  139. package/types/camera/PlanetCamera.d.ts +0 -223
  140. package/types/camera/index.d.ts +0 -3
  141. package/types/cons.d.ts +0 -40
  142. package/types/control/CompassButton.d.ts +0 -18
  143. package/types/control/Control.d.ts +0 -101
  144. package/types/control/DebugInfo.d.ts +0 -16
  145. package/types/control/EarthCoordinates.d.ts +0 -47
  146. package/types/control/EarthNavigation.d.ts +0 -42
  147. package/types/control/GeoImageDragControl.d.ts +0 -6
  148. package/types/control/KeyboardNavigation.d.ts +0 -22
  149. package/types/control/LayerSwitcher.d.ts +0 -23
  150. package/types/control/Lighting.d.ts +0 -16
  151. package/types/control/MouseNavigation.d.ts +0 -51
  152. package/types/control/ScaleControl.d.ts +0 -22
  153. package/types/control/ShowFps.d.ts +0 -12
  154. package/types/control/SimpleNavigation.d.ts +0 -28
  155. package/types/control/Sun.d.ts +0 -52
  156. package/types/control/ToggleWireframe.d.ts +0 -12
  157. package/types/control/TouchNavigation.d.ts +0 -50
  158. package/types/control/ZoomControl.d.ts +0 -28
  159. package/types/control/index.d.ts +0 -17
  160. package/types/ellipsoid/Ellipsoid.d.ts +0 -142
  161. package/types/ellipsoid/index.d.ts +0 -3
  162. package/types/ellipsoid/wgs84.d.ts +0 -5
  163. package/types/entity/BaseBillboard.d.ts +0 -208
  164. package/types/entity/Billboard.d.ts +0 -94
  165. package/types/entity/BillboardHandler.d.ts +0 -74
  166. package/types/entity/Entity.d.ts +0 -331
  167. package/types/entity/EntityCollection.d.ts +0 -303
  168. package/types/entity/Geometry.d.ts +0 -73
  169. package/types/entity/GeometryHandler.d.ts +0 -76
  170. package/types/entity/Label.d.ts +0 -194
  171. package/types/entity/LabelHandler.d.ts +0 -24
  172. package/types/entity/PointCloud.d.ts +0 -174
  173. package/types/entity/PointCloudHandler.d.ts +0 -38
  174. package/types/entity/Polyline.d.ts +0 -304
  175. package/types/entity/PolylineHandler.d.ts +0 -18
  176. package/types/entity/Ray.d.ts +0 -123
  177. package/types/entity/RayHandler.d.ts +0 -67
  178. package/types/entity/ShapeHandler.d.ts +0 -22
  179. package/types/entity/Strip.d.ts +0 -118
  180. package/types/entity/StripHandler.d.ts +0 -38
  181. package/types/entity/index.d.ts +0 -8
  182. package/types/index.core.d.ts +0 -65
  183. package/types/index.d.ts +0 -45
  184. package/types/index.webgl.d.ts +0 -7
  185. package/types/inherits.d.ts +0 -4
  186. package/types/input/KeyboardHandler.d.ts +0 -10
  187. package/types/input/MouseHandler.d.ts +0 -5
  188. package/types/input/TouchHandler.d.ts +0 -5
  189. package/types/input/input.d.ts +0 -34
  190. package/types/layer/BaseGeoImage.d.ts +0 -107
  191. package/types/layer/CanvasTiles.d.ts +0 -75
  192. package/types/layer/GeoImage.d.ts +0 -65
  193. package/types/layer/GeoTexture2d.d.ts +0 -8
  194. package/types/layer/GeoVideo.d.ts +0 -80
  195. package/types/layer/KML.d.ts +0 -58
  196. package/types/layer/Layer.d.ts +0 -321
  197. package/types/layer/Material.d.ts +0 -48
  198. package/types/layer/Vector.d.ts +0 -228
  199. package/types/layer/WMS.d.ts +0 -66
  200. package/types/layer/XYZ.d.ts +0 -130
  201. package/types/layer/index.d.ts +0 -10
  202. package/types/light/LightSource.d.ts +0 -177
  203. package/types/math/Line2.d.ts +0 -11
  204. package/types/math/Line3.d.ts +0 -10
  205. package/types/math/Mat3.d.ts +0 -63
  206. package/types/math/Mat4.d.ts +0 -173
  207. package/types/math/Plane.d.ts +0 -17
  208. package/types/math/Quat.d.ts +0 -376
  209. package/types/math/Ray.d.ts +0 -81
  210. package/types/math/Vec2.d.ts +0 -308
  211. package/types/math/Vec3.d.ts +0 -459
  212. package/types/math/Vec4.d.ts +0 -161
  213. package/types/math/coder.d.ts +0 -42
  214. package/types/math/index.d.ts +0 -11
  215. package/types/math.d.ts +0 -261
  216. package/types/mercator.d.ts +0 -92
  217. package/types/proj/EPSG3857.d.ts +0 -5
  218. package/types/proj/EPSG4326.d.ts +0 -5
  219. package/types/proj/Proj.d.ts +0 -42
  220. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  221. package/types/quadTree/Node.d.ts +0 -61
  222. package/types/quadTree/quadTree.d.ts +0 -40
  223. package/types/renderer/Renderer.d.ts +0 -296
  224. package/types/renderer/RendererEvents.d.ts +0 -230
  225. package/types/res/images.d.ts +0 -3
  226. package/types/scene/Axes.d.ts +0 -11
  227. package/types/scene/BaseNode.d.ts +0 -60
  228. package/types/scene/Planet.d.ts +0 -574
  229. package/types/scene/RenderNode.d.ts +0 -143
  230. package/types/scene/SkyBox.d.ts +0 -10
  231. package/types/scene/index.d.ts +0 -4
  232. package/types/segment/Segment.d.ts +0 -271
  233. package/types/segment/SegmentLonLat.d.ts +0 -62
  234. package/types/segment/segmentHelper.d.ts +0 -13
  235. package/types/shaders/billboard.d.ts +0 -3
  236. package/types/shaders/depth.d.ts +0 -2
  237. package/types/shaders/drawnode.d.ts +0 -7
  238. package/types/shaders/label.d.ts +0 -4
  239. package/types/shaders/pointCloud.d.ts +0 -2
  240. package/types/shaders/polyline.d.ts +0 -3
  241. package/types/shaders/ray.d.ts +0 -2
  242. package/types/shaders/screenFrame.d.ts +0 -2
  243. package/types/shaders/shape.d.ts +0 -4
  244. package/types/shaders/skybox.d.ts +0 -2
  245. package/types/shaders/toneMapping.d.ts +0 -2
  246. package/types/shapes/BaseShape.d.ts +0 -247
  247. package/types/shapes/Sphere.d.ts +0 -41
  248. package/types/terrain/BilTerrain.d.ts +0 -8
  249. package/types/terrain/EmptyTerrain.d.ts +0 -72
  250. package/types/terrain/Geoid.d.ts +0 -26
  251. package/types/terrain/GlobusTerrain.d.ts +0 -153
  252. package/types/terrain/MapboxTerrain.d.ts +0 -8
  253. package/types/terrain/index.d.ts +0 -5
  254. package/types/utils/FontAtlas.d.ts +0 -14
  255. package/types/utils/GeoImageCreator.d.ts +0 -30
  256. package/types/utils/ImagesCacheManager.d.ts +0 -10
  257. package/types/utils/Loader.d.ts +0 -25
  258. package/types/utils/NormalMapCreator.d.ts +0 -39
  259. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  260. package/types/utils/TerrainWorker.d.ts +0 -9
  261. package/types/utils/TextureAtlas.d.ts +0 -111
  262. package/types/utils/VectorTileCreator.d.ts +0 -16
  263. package/types/utils/colorTable.d.ts +0 -143
  264. package/types/utils/earcut.d.ts +0 -6
  265. package/types/utils/shared.d.ts +0 -230
  266. package/types/webgl/Framebuffer.d.ts +0 -135
  267. package/types/webgl/Handler.d.ts +0 -372
  268. package/types/webgl/Multisample.d.ts +0 -89
  269. package/types/webgl/Program.d.ts +0 -155
  270. package/types/webgl/ProgramController.d.ts +0 -84
  271. package/types/webgl/callbacks.d.ts +0 -1
  272. package/types/webgl/index.d.ts +0 -6
  273. package/types/webgl/types.d.ts +0 -2
@@ -2,11 +2,11 @@
2
2
  * @module og/ellipsoid/Ellipsoid
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import * as math from '../math.js';
8
- import { Vec3 } from '../math/Vec3.js';
9
- import { LonLat } from '../LonLat.js';
7
+ import * as math from "../math.js";
8
+ import { Vec3 } from "../math/Vec3.js";
9
+ import { LonLat } from "../LonLat.js";
10
10
 
11
11
  /**
12
12
  * Class represents a plant ellipsoid.
@@ -15,6 +15,10 @@ import { LonLat } from '../LonLat.js';
15
15
  * @param {number} polarSize - Polar ellipsoid size.
16
16
  */
17
17
  class Ellipsoid {
18
+ /**
19
+ * @param {number} equatorialSize - Equatorial ellipsoid size.
20
+ * @param {number} polarSize - Polar ellipsoid size.
21
+ */
18
22
  constructor(equatorialSize, polarSize) {
19
23
  this._a = equatorialSize;
20
24
  this._b = polarSize;
@@ -40,8 +44,10 @@ class Ellipsoid {
40
44
  }
41
45
 
42
46
  static getRelativeBearing(a, b) {
43
- let a_y = Math.cos(a), a_x = Math.sin(a),
44
- b_y = Math.cos(b), b_x = Math.sin(b);
47
+ let a_y = Math.cos(a),
48
+ a_x = Math.sin(a),
49
+ b_y = Math.cos(b),
50
+ b_x = Math.sin(b);
45
51
  let c = a_y * b_x - b_y * a_x,
46
52
  d = a_x * b_x + a_y * b_y;
47
53
  if (c > 0.0) {
@@ -71,7 +77,7 @@ class Ellipsoid {
71
77
 
72
78
  var l3 = l1 + Math.atan2(By, Math.cos(f1) + Bx);
73
79
 
74
- return new LonLat((l3 * math.DEGREES + 540) % 360 - 180, f3 * math.DEGREES);
80
+ return new LonLat(((l3 * math.DEGREES + 540) % 360) - 180, f3 * math.DEGREES);
75
81
  }
76
82
 
77
83
  /**
@@ -82,15 +88,25 @@ class Ellipsoid {
82
88
  * @returns {LonLat} Intermediate point between points.
83
89
  */
84
90
  static getIntermediatePointOnGreatCircle(lonLat1, lonLat2, fraction) {
85
- var f1 = lonLat1.lat * math.RADIANS, l1 = lonLat1.lon * math.RADIANS;
86
- var f2 = lonLat2.lat * math.RADIANS, l2 = lonLat2.lon * math.RADIANS;
87
-
88
- var sinf1 = Math.sin(f1), cosf1 = Math.cos(f1), sinl1 = Math.sin(l1), cosl1 = Math.cos(l1);
89
- var sinf2 = Math.sin(f2), cosf2 = Math.cos(f2), sinl2 = Math.sin(l2), cosl2 = Math.cos(l2);
91
+ var f1 = lonLat1.lat * math.RADIANS,
92
+ l1 = lonLat1.lon * math.RADIANS;
93
+ var f2 = lonLat2.lat * math.RADIANS,
94
+ l2 = lonLat2.lon * math.RADIANS;
95
+
96
+ var sinf1 = Math.sin(f1),
97
+ cosf1 = Math.cos(f1),
98
+ sinl1 = Math.sin(l1),
99
+ cosl1 = Math.cos(l1);
100
+ var sinf2 = Math.sin(f2),
101
+ cosf2 = Math.cos(f2),
102
+ sinl2 = Math.sin(l2),
103
+ cosl2 = Math.cos(l2);
90
104
 
91
105
  var df = f2 - f1,
92
106
  dl = l2 - l1;
93
- var a = Math.sin(df / 2) * Math.sin(df / 2) + Math.cos(f1) * Math.cos(f2) * Math.sin(dl / 2) * Math.sin(dl / 2);
107
+ var a =
108
+ Math.sin(df / 2) * Math.sin(df / 2) +
109
+ Math.cos(f1) * Math.cos(f2) * Math.sin(dl / 2) * Math.sin(dl / 2);
94
110
  var d = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
95
111
 
96
112
  var A = Math.sin((1 - fraction) * d) / Math.sin(d);
@@ -103,12 +119,15 @@ class Ellipsoid {
103
119
  var f3 = Math.atan2(z, Math.sqrt(x * x + y * y));
104
120
  var l3 = Math.atan2(y, x);
105
121
 
106
- return new LonLat((l3 * math.DEGREES + 540) % 360 - 180, f3 * math.DEGREES);
122
+ return new LonLat(((l3 * math.DEGREES + 540) % 360) - 180, f3 * math.DEGREES);
107
123
  }
108
124
 
109
125
  static getRhumbBearing(lonLat1, lonLat2) {
110
126
  var dLon = (lonLat2.lon - lonLat1.lon) * math.RADIANS;
111
- var dPhi = Math.log(Math.tan(lonLat2.lat * math.RADIANS / 2 + Math.PI / 4) / Math.tan(lonLat1.lat * math.RADIANS / 2 + Math.PI / 4));
127
+ var dPhi = Math.log(
128
+ Math.tan((lonLat2.lat * math.RADIANS) / 2 + Math.PI / 4) /
129
+ Math.tan((lonLat1.lat * math.RADIANS) / 2 + Math.PI / 4)
130
+ );
112
131
  if (Math.abs(dLon) > Math.PI) {
113
132
  if (dLon > 0) {
114
133
  dLon = (2 * Math.PI - dLon) * -1;
@@ -120,8 +139,10 @@ class Ellipsoid {
120
139
  }
121
140
 
122
141
  static getBearing(lonLat1, lonLat2) {
123
- var f1 = lonLat1.lat * math.RADIANS, l1 = lonLat1.lon * math.RADIANS;
124
- var f2 = lonLat2.lat * math.RADIANS, l2 = lonLat2.lon * math.RADIANS;
142
+ var f1 = lonLat1.lat * math.RADIANS,
143
+ l1 = lonLat1.lon * math.RADIANS;
144
+ var f2 = lonLat2.lat * math.RADIANS,
145
+ l2 = lonLat2.lon * math.RADIANS;
125
146
  var y = Math.sin(l2 - l1) * Math.cos(f2);
126
147
  var x = Math.cos(f1) * Math.sin(f2) - Math.sin(f1) * Math.cos(f2) * Math.cos(l2 - l1);
127
148
  return Math.atan2(y, x) * math.DEGREES;
@@ -138,8 +159,7 @@ class Ellipsoid {
138
159
  f2 = lonLat2.lat * math.RADIANS;
139
160
  var dl = (lonLat2.lon - lonLat1.lon) * math.RADIANS;
140
161
  var y = Math.sin(dl) * Math.cos(f2);
141
- var x = Math.cos(f1) * Math.sin(f2) -
142
- Math.sin(f1) * Math.cos(f2) * Math.cos(dl);
162
+ var x = Math.cos(f1) * Math.sin(f2) - Math.sin(f1) * Math.cos(f2) * Math.cos(dl);
143
163
  var D = Math.atan2(y, x);
144
164
  return (D * math.DEGREES + 360) % 360;
145
165
  }
@@ -162,19 +182,30 @@ class Ellipsoid {
162
182
  var df = f2 - f1,
163
183
  dl = l2 - l1;
164
184
 
165
- var d12 = 2 * Math.asin(Math.sqrt(Math.sin(df / 2) * Math.sin(df / 2) + Math.cos(f1) * Math.cos(f2) * Math.sin(dl / 2) * Math.sin(dl / 2)));
185
+ var d12 =
186
+ 2 *
187
+ Math.asin(
188
+ Math.sqrt(
189
+ Math.sin(df / 2) * Math.sin(df / 2) +
190
+ Math.cos(f1) * Math.cos(f2) * Math.sin(dl / 2) * Math.sin(dl / 2)
191
+ )
192
+ );
166
193
  if (d12 == 0) return null;
167
194
 
168
195
  // initial/final bearings between points
169
- var Da = Math.acos((Math.sin(f2) - Math.sin(f1) * Math.cos(d12)) / (Math.sin(d12) * Math.cos(f1)));
196
+ var Da = Math.acos(
197
+ (Math.sin(f2) - Math.sin(f1) * Math.cos(d12)) / (Math.sin(d12) * Math.cos(f1))
198
+ );
170
199
  if (isNaN(Da)) Da = 0; // protect against rounding
171
- var Db = Math.acos((Math.sin(f1) - Math.sin(f2) * Math.cos(d12)) / (Math.sin(d12) * Math.cos(f2)));
200
+ var Db = Math.acos(
201
+ (Math.sin(f1) - Math.sin(f2) * Math.cos(d12)) / (Math.sin(d12) * Math.cos(f2))
202
+ );
172
203
 
173
204
  var D12 = Math.sin(l2 - l1) > 0 ? Da : 2 * Math.PI - Da;
174
205
  var D21 = Math.sin(l2 - l1) > 0 ? 2 * Math.PI - Db : Db;
175
206
 
176
- var a1 = (D13 - D12 + Math.PI) % (2 * Math.PI) - Math.PI;
177
- var a2 = (D21 - D23 + Math.PI) % (2 * Math.PI) - Math.PI;
207
+ var a1 = ((D13 - D12 + Math.PI) % (2 * Math.PI)) - Math.PI;
208
+ var a2 = ((D21 - D23 + Math.PI) % (2 * Math.PI)) - Math.PI;
178
209
 
179
210
  if (Math.sin(a1) == 0 && Math.sin(a2) == 0) return null; // infinite intersections
180
211
  if (Math.sin(a1) * Math.sin(a2) < 0) return null; // ambiguous intersection
@@ -183,13 +214,23 @@ class Ellipsoid {
183
214
  // a2 = Math.abs(a2);
184
215
  // ... Ed Williams takes abs of a1/a2, but seems to break calculation?
185
216
 
186
- var a3 = Math.acos(-Math.cos(a1) * Math.cos(a2) + Math.sin(a1) * Math.sin(a2) * Math.cos(d12));
187
- var d13 = Math.atan2(Math.sin(d12) * Math.sin(a1) * Math.sin(a2), Math.cos(a2) + Math.cos(a1) * Math.cos(a3));
188
- var f3 = Math.asin(Math.sin(f1) * Math.cos(d13) + Math.cos(f1) * Math.sin(d13) * Math.cos(D13));
189
- var dl13 = Math.atan2(Math.sin(D13) * Math.sin(d13) * Math.cos(f1), Math.cos(d13) - Math.sin(f1) * Math.sin(f3));
217
+ var a3 = Math.acos(
218
+ -Math.cos(a1) * Math.cos(a2) + Math.sin(a1) * Math.sin(a2) * Math.cos(d12)
219
+ );
220
+ var d13 = Math.atan2(
221
+ Math.sin(d12) * Math.sin(a1) * Math.sin(a2),
222
+ Math.cos(a2) + Math.cos(a1) * Math.cos(a3)
223
+ );
224
+ var f3 = Math.asin(
225
+ Math.sin(f1) * Math.cos(d13) + Math.cos(f1) * Math.sin(d13) * Math.cos(D13)
226
+ );
227
+ var dl13 = Math.atan2(
228
+ Math.sin(D13) * Math.sin(d13) * Math.cos(f1),
229
+ Math.cos(d13) - Math.sin(f1) * Math.sin(f3)
230
+ );
190
231
  var l3 = l1 + dl13;
191
232
 
192
- return new LonLat((l3 * math.DEGREES + 540) % 360 - 180, f3 * math.DEGREES);
233
+ return new LonLat(((l3 * math.DEGREES + 540) % 360) - 180, f3 * math.DEGREES);
193
234
  }
194
235
 
195
236
  /**
@@ -226,7 +267,7 @@ class Ellipsoid {
226
267
  * Gets cartesian ECEF from Wgs84 geodetic coordiantes.
227
268
  * @public
228
269
  * @param {LonLat} lonlat - Degrees geodetic coordiantes.
229
- * @returns {og.Vec3} -
270
+ * @returns {Vec3} -
230
271
  */
231
272
  lonLatToCartesian(lonlat) {
232
273
  var latrad = math.RADIANS * lonlat.lat,
@@ -240,15 +281,16 @@ class Ellipsoid {
240
281
  return new Vec3(
241
282
  nc * Math.sin(lonrad),
242
283
  (N * (1.0 - this._e2) + lonlat.height) * slt,
243
- nc * Math.cos(lonrad));
284
+ nc * Math.cos(lonrad)
285
+ );
244
286
  }
245
287
 
246
288
  /**
247
289
  * Gets cartesian ECEF from Wgs84 geodetic coordiantes.
248
290
  * @public
249
291
  * @param {LonLat} lonlat - Degrees geodetic coordiantes.
250
- * @param {og.Vec3} res - Output result.
251
- * @returns {og.Vec3} -
292
+ * @param {Vec3} res - Output result.
293
+ * @returns {Vec3} -
252
294
  */
253
295
  lonLatToCartesianRes(lonlat, res) {
254
296
  var latrad = math.RADIANS * lonlat.lat,
@@ -272,7 +314,7 @@ class Ellipsoid {
272
314
  * @param {Number} lon - Longitude.
273
315
  * @param {Number} lat - Latitude.
274
316
  * @param {Number} height - Height.
275
- * @returns {og.Vec3} -
317
+ * @returns {Vec3} -
276
318
  */
277
319
  geodeticToCartesian(lon, lat, height = 0) {
278
320
  var latrad = math.RADIANS * lat,
@@ -286,17 +328,20 @@ class Ellipsoid {
286
328
  return new Vec3(
287
329
  nc * Math.sin(lonrad),
288
330
  (N * (1 - this._e2) + height) * slt,
289
- nc * Math.cos(lonrad));
331
+ nc * Math.cos(lonrad)
332
+ );
290
333
  }
291
334
 
292
335
  /**
293
336
  * Gets Wgs84 geodetic coordiantes from cartesian ECEF.
294
337
  * @public
295
- * @param {og.Vec3} cartesian - Cartesian coordinates.
338
+ * @param {Vec3} cartesian - Cartesian coordinates.
296
339
  * @returns {LonLat} -
297
340
  */
298
341
  cartesianToLonLat(cartesian) {
299
- var x = cartesian.z, y = cartesian.x, z = cartesian.y;
342
+ var x = cartesian.z,
343
+ y = cartesian.x,
344
+ z = cartesian.y;
300
345
  var ecc2 = this._e2;
301
346
  var ecc22 = this._e22;
302
347
  var r2 = x * x + y * y;
@@ -305,24 +350,37 @@ class Ellipsoid {
305
350
  var f = 54.0 * this._b2 * z2;
306
351
  var g = r2 + (1.0 - ecc2) * z2 + ecc2 * (this._a2 - this._b2);
307
352
  var g2 = g * g;
308
- var c = ecc22 * f * r2 / (g2 * g);
309
- var s = Math.pow((1.0 + c + Math.sqrt(c * (c + 2.0))), 0.33333333333333333);
310
- var p = f / (3.0 * Math.pow((1.0 + s + 1.0 / s), 2.0) * g2);
353
+ var c = (ecc22 * f * r2) / (g2 * g);
354
+ var s = Math.pow(1.0 + c + Math.sqrt(c * (c + 2.0)), 0.33333333333333333);
355
+ var p = f / (3.0 * Math.pow(1.0 + s + 1.0 / s, 2.0) * g2);
311
356
  var q = Math.sqrt(1.0 + 2.0 * ecc22 * p);
312
- var recc2r0 = r - ecc2 * (-(p * ecc2 * r) / 1 + q + Math.sqrt(0.5 * this._a2 * (1.0 + 1.0 / q) - p * (1.0 - ecc2) * z2 / (q * (1.0 + q)) - 0.5 * p * r2));
357
+ var recc2r0 =
358
+ r -
359
+ ecc2 *
360
+ (-(p * ecc2 * r) / 1 +
361
+ q +
362
+ Math.sqrt(
363
+ 0.5 * this._a2 * (1.0 + 1.0 / q) -
364
+ (p * (1.0 - ecc2) * z2) / (q * (1.0 + q)) -
365
+ 0.5 * p * r2
366
+ ));
313
367
  var recc2r02 = recc2r0 * recc2r0;
314
368
  var v = Math.sqrt(recc2r02 + (1.0 - ecc2) * z2);
315
- var z0 = this._b2 * z / (this._a * v);
369
+ var z0 = (this._b2 * z) / (this._a * v);
316
370
  var lat = Math.atan((z + this._k2 * z0) / r) * math.DEGREES;
317
371
  var lon = Math.atan2(y, x) * math.DEGREES;
318
- return new LonLat(lon, lat, cartesian.length() - this.geodeticToCartesian(lon, lat).length());
372
+ return new LonLat(
373
+ lon,
374
+ lat,
375
+ cartesian.length() - this.geodeticToCartesian(lon, lat).length()
376
+ );
319
377
  }
320
378
 
321
379
  /**
322
380
  * Gets ellipsoid surface normal.
323
381
  * @public
324
- * @param {og.Vec3} coord - Spatial coordiantes.
325
- * @returns {og.Vec3} -
382
+ * @param {Vec3} coord - Spatial coordiantes.
383
+ * @returns {Vec3} -
326
384
  */
327
385
  getSurfaceNormal3v(coord) {
328
386
  var r2 = this._invRadii2;
@@ -335,11 +393,22 @@ class Ellipsoid {
335
393
 
336
394
  getBearingDestination(lonLat1, bearing, distance) {
337
395
  bearing = bearing * math.RADIANS;
338
- var nlon = (lonLat1.lon + 540) % 360 - 180;
339
- var f1 = lonLat1.lat * math.RADIANS, l1 = nlon * math.RADIANS;
396
+ var nlon = ((lonLat1.lon + 540) % 360) - 180;
397
+ var f1 = lonLat1.lat * math.RADIANS,
398
+ l1 = nlon * math.RADIANS;
340
399
  var dR = distance / this._a;
341
- var f2 = Math.asin(Math.sin(f1) * Math.cos(dR) + Math.cos(f1) * Math.sin(dR) * Math.cos(bearing));
342
- return new LonLat((l1 + Math.atan2(Math.sin(bearing) * Math.sin(dR) * Math.cos(f1), Math.cos(dR) - Math.sin(f1) * Math.sin(f2))) * math.DEGREES, f2 * math.DEGREES);
400
+ var f2 = Math.asin(
401
+ Math.sin(f1) * Math.cos(dR) + Math.cos(f1) * Math.sin(dR) * Math.cos(bearing)
402
+ );
403
+ return new LonLat(
404
+ (l1 +
405
+ Math.atan2(
406
+ Math.sin(bearing) * Math.sin(dR) * Math.cos(f1),
407
+ Math.cos(dR) - Math.sin(f1) * Math.sin(f2)
408
+ )) *
409
+ math.DEGREES,
410
+ f2 * math.DEGREES
411
+ );
343
412
  }
344
413
 
345
414
  /**
@@ -351,8 +420,12 @@ class Ellipsoid {
351
420
  getGreatCircleDistance(lonLat1, lonLat2) {
352
421
  var dLat = (lonLat2.lat - lonLat1.lat) * math.RADIANS;
353
422
  var dLon = (lonLat2.lon - lonLat1.lon) * math.RADIANS;
354
- var a = Math.sin(dLat / 2.0) * Math.sin(dLat / 2.0) +
355
- Math.sin(dLon / 2.0) * Math.sin(dLon / 2) * Math.cos(lonLat1.lat * math.RADIANS) * Math.cos(lonLat2.lat * math.RADIANS);
423
+ var a =
424
+ Math.sin(dLat / 2.0) * Math.sin(dLat / 2.0) +
425
+ Math.sin(dLon / 2.0) *
426
+ Math.sin(dLon / 2) *
427
+ Math.cos(lonLat1.lat * math.RADIANS) *
428
+ Math.cos(lonLat2.lat * math.RADIANS);
356
429
  return this._a * 2.0 * Math.atan2(Math.sqrt(a), Math.sqrt(1.0 - a));
357
430
  }
358
431
 
@@ -373,28 +446,52 @@ class Ellipsoid {
373
446
  sinAlpha1 = Math.sin(alpha1),
374
447
  cosAlpha1 = Math.cos(alpha1),
375
448
  tanU1 = (1 - f) * Math.tan(lat1 * math.RADIANS),
376
- cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)), sinU1 = tanU1 * cosU1,
449
+ cosU1 = 1 / Math.sqrt(1 + tanU1 * tanU1),
450
+ sinU1 = tanU1 * cosU1,
377
451
  sigma1 = Math.atan2(tanU1, cosAlpha1),
378
452
  sinAlpha = cosU1 * sinAlpha1,
379
453
  cosSqAlpha = 1 - sinAlpha * sinAlpha,
380
- uSq = cosSqAlpha * (a * a - b * b) / (b * b),
381
- A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq))),
382
- B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq))),
454
+ uSq = (cosSqAlpha * (a * a - b * b)) / (b * b),
455
+ A = 1 + (uSq / 16384) * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq))),
456
+ B = (uSq / 1024) * (256 + uSq * (-128 + uSq * (74 - 47 * uSq))),
383
457
  sigma = s / (b * A),
384
458
  sigmaP = 2 * Math.PI;
385
459
  while (Math.abs(sigma - sigmaP) > 1e-12) {
386
460
  var cos2SigmaM = Math.cos(2 * sigma1 + sigma),
387
461
  sinSigma = Math.sin(sigma),
388
462
  cosSigma = Math.cos(sigma),
389
- deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));
463
+ deltaSigma =
464
+ B *
465
+ sinSigma *
466
+ (cos2SigmaM +
467
+ (B / 4) *
468
+ (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) -
469
+ (B / 6) *
470
+ cos2SigmaM *
471
+ (-3 + 4 * sinSigma * sinSigma) *
472
+ (-3 + 4 * cos2SigmaM * cos2SigmaM)));
390
473
  sigmaP = sigma;
391
474
  sigma = s / (b * A) + deltaSigma;
392
475
  }
393
476
  var tmp = sinU1 * sinSigma - cosU1 * cosSigma * cosAlpha1,
394
- lat2 = Math.atan2(sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1, (1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp)),
395
- lambda = Math.atan2(sinSigma * sinAlpha1, cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1),
396
- C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha)),
397
- L = lambda - (1 - C) * f * sinAlpha * (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM))),
477
+ lat2 = Math.atan2(
478
+ sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1,
479
+ (1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp)
480
+ ),
481
+ lambda = Math.atan2(
482
+ sinSigma * sinAlpha1,
483
+ cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1
484
+ ),
485
+ C = (f / 16) * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha)),
486
+ L =
487
+ lambda -
488
+ (1 - C) *
489
+ f *
490
+ sinAlpha *
491
+ (sigma +
492
+ C *
493
+ sinSigma *
494
+ (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM))),
398
495
  revAz = Math.atan2(sinAlpha, -tmp); // final bearing
399
496
  return new LonLat(lon1 + L * math.DEGREES, lat2 * math.DEGREES);
400
497
  }
@@ -403,12 +500,11 @@ class Ellipsoid {
403
500
  * Returns ray vector hit ellipsoid coordinates.
404
501
  * If the ray doesn't hit ellipsoid returns null.
405
502
  * @public
406
- * @param {og.Vec3} origin - Ray origin point.
407
- * @param {og.Vec3} direction - Ray direction.
408
- * @returns {og.Vec3} -
503
+ * @param {Vec3} origin - Ray origin point.
504
+ * @param {Vec3} direction - Ray direction.
505
+ * @returns {Vec3} -
409
506
  */
410
507
  hitRay(origin, direction) {
411
-
412
508
  var q = this._invRadii.mul(origin);
413
509
  var w = this._invRadii.mul(direction);
414
510
 
@@ -466,7 +562,7 @@ class Ellipsoid {
466
562
  // qw >= 0.0. Looking outward or tangent.
467
563
  return null;
468
564
  }
469
- }
565
+ }
470
566
  }
471
567
 
472
- export { Ellipsoid };
568
+ export { Ellipsoid };
@@ -2,12 +2,12 @@
2
2
  * @module og/ellipsoid/wgs84
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import { Ellipsoid } from './Ellipsoid.js';
7
+ import { Ellipsoid } from "./Ellipsoid.js";
8
8
 
9
9
  /**
10
10
  * WGS84 ellipsoid object.
11
- * @type {og.Ellipsoid}
11
+ * @type {Ellipsoid}
12
12
  */
13
- export const wgs84 = new Ellipsoid(6378137.000, 6356752.3142);
13
+ export const wgs84 = new Ellipsoid(6378137.0, 6356752.3142);