@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.
Files changed (255) hide show
  1. package/package.json +18 -20
  2. package/src/og/Clock.js +11 -11
  3. package/src/og/Deferred.js +1 -1
  4. package/src/og/Events.js +9 -7
  5. package/src/og/Extent.js +117 -72
  6. package/src/og/Globe.js +35 -22
  7. package/src/og/ImageCanvas.js +24 -18
  8. package/src/og/Lock.js +2 -2
  9. package/src/og/LonLat.js +40 -37
  10. package/src/og/Popup.js +21 -15
  11. package/src/og/QueueArray.js +7 -3
  12. package/src/og/Rectangle.js +11 -6
  13. package/src/og/Stack.js +8 -5
  14. package/src/og/ajax.js +21 -33
  15. package/src/og/astro/astro.js +5 -5
  16. package/src/og/astro/earth.js +23 -17
  17. package/src/og/astro/jd.js +44 -39
  18. package/src/og/astro/orbit.js +20 -18
  19. package/src/og/astro/rotation.js +17 -8
  20. package/src/og/bv/Box.js +7 -3
  21. package/src/og/bv/Sphere.js +17 -9
  22. package/src/og/camera/Camera.js +137 -86
  23. package/src/og/camera/Frustum.js +30 -19
  24. package/src/og/camera/PlanetCamera.js +30 -26
  25. package/src/og/control/CompassButton.js +8 -2
  26. package/src/og/control/Control.js +13 -11
  27. package/src/og/control/DebugInfo.js +4 -1
  28. package/src/og/control/EarthCoordinates.js +62 -41
  29. package/src/og/control/EarthNavigation.js +20 -22
  30. package/src/og/control/GeoImageDragControl.js +1 -1
  31. package/src/og/control/KeyboardNavigation.js +12 -12
  32. package/src/og/control/LayerSwitcher.js +24 -23
  33. package/src/og/control/Lighting.js +1 -1
  34. package/src/og/control/MouseNavigation.js +1 -1
  35. package/src/og/control/ScaleControl.js +1 -1
  36. package/src/og/control/SegmentBoundVisualization.js +8 -9
  37. package/src/og/control/ShowFps.js +15 -10
  38. package/src/og/control/SimpleNavigation.js +8 -10
  39. package/src/og/control/Sun.js +25 -15
  40. package/src/og/control/ToggleWireframe.js +5 -5
  41. package/src/og/control/TouchNavigation.js +58 -45
  42. package/src/og/control/ZoomControl.js +41 -25
  43. package/src/og/control/index.js +4 -0
  44. package/src/og/ellipsoid/Ellipsoid.js +181 -85
  45. package/src/og/ellipsoid/wgs84.js +4 -4
  46. package/src/og/entity/BaseBillboard.js +97 -44
  47. package/src/og/entity/Billboard.js +15 -11
  48. package/src/og/entity/BillboardHandler.js +314 -64
  49. package/src/og/entity/Entity.js +106 -74
  50. package/src/og/entity/EntityCollection.js +72 -49
  51. package/src/og/entity/GeoObject.js +228 -0
  52. package/src/og/entity/GeoObjectHandler.js +910 -0
  53. package/src/og/entity/Geometry.js +29 -26
  54. package/src/og/entity/GeometryHandler.js +598 -126
  55. package/src/og/entity/Label.js +74 -40
  56. package/src/og/entity/LabelHandler.js +47 -246
  57. package/src/og/entity/LabelWorker.js +213 -0
  58. package/src/og/entity/Object3d.js +504 -0
  59. package/src/og/entity/PointCloud.js +81 -33
  60. package/src/og/entity/PointCloudHandler.js +9 -9
  61. package/src/og/entity/Polyline.js +39 -39
  62. package/src/og/entity/Ray.js +61 -28
  63. package/src/og/entity/ShapeHandler.js +1 -1
  64. package/src/og/entity/Strip.js +77 -48
  65. package/src/og/entity/StripHandler.js +27 -27
  66. package/src/og/entity/index.js +8 -16
  67. package/src/og/input/KeyboardHandler.js +107 -104
  68. package/src/og/input/MouseHandler.js +81 -78
  69. package/src/og/input/TouchHandler.js +55 -51
  70. package/src/og/layer/BaseGeoImage.js +61 -30
  71. package/src/og/layer/CanvasTiles.js +26 -24
  72. package/src/og/layer/GeoImage.js +10 -10
  73. package/src/og/layer/GeoTexture2d.js +1 -1
  74. package/src/og/layer/GeoVideo.js +3 -3
  75. package/src/og/layer/KML.js +66 -40
  76. package/src/og/layer/Layer.js +27 -17
  77. package/src/og/layer/Material.js +93 -61
  78. package/src/og/layer/Vector.js +118 -72
  79. package/src/og/layer/WMS.js +36 -19
  80. package/src/og/layer/XYZ.js +55 -48
  81. package/src/og/light/LightSource.js +47 -40
  82. package/src/og/math/Line2.js +24 -24
  83. package/src/og/math/Line3.js +103 -102
  84. package/src/og/math/Mat3.js +134 -121
  85. package/src/og/math/Mat4.js +603 -459
  86. package/src/og/math/Plane.js +21 -20
  87. package/src/og/math/Quat.js +980 -927
  88. package/src/og/math/Ray.js +195 -187
  89. package/src/og/math/Vec2.js +127 -117
  90. package/src/og/math/Vec3.js +206 -176
  91. package/src/og/math/Vec4.js +49 -53
  92. package/src/og/math/coder.js +18 -18
  93. package/src/og/math.js +12 -12
  94. package/src/og/mercator.js +11 -11
  95. package/src/og/proj/EPSG3857.js +4 -4
  96. package/src/og/proj/EPSG4326.js +4 -4
  97. package/src/og/proj/Proj.js +31 -31
  98. package/src/og/quadTree/EntityCollectionNode.js +310 -300
  99. package/src/og/quadTree/Node.js +1008 -993
  100. package/src/og/renderer/Renderer.js +768 -747
  101. package/src/og/renderer/RendererEvents.js +9 -6
  102. package/src/og/scene/Axes.js +1 -1
  103. package/src/og/scene/BaseNode.js +8 -9
  104. package/src/og/scene/Planet.js +115 -87
  105. package/src/og/scene/RenderNode.js +29 -22
  106. package/src/og/scene/SkyBox.js +1 -1
  107. package/src/og/segment/Segment.js +1886 -1878
  108. package/src/og/segment/SegmentLonLat.js +298 -268
  109. package/src/og/segment/segmentHelper.js +11 -11
  110. package/src/og/shaders/bloom.js +1 -1
  111. package/src/og/shaders/blur.js +2 -2
  112. package/src/og/shaders/depth.js +1 -1
  113. package/src/og/shaders/geoObject.js +211 -0
  114. package/src/og/shaders/label.js +1 -1
  115. package/src/og/shaders/lumFilter.js +1 -1
  116. package/src/og/shaders/pointCloud.js +42 -42
  117. package/src/og/shaders/screenFrame.js +1 -1
  118. package/src/og/shaders/shape.js +15 -21
  119. package/src/og/shaders/skybox.js +37 -37
  120. package/src/og/shaders/toneMapping.js +1 -1
  121. package/src/og/shapes/BaseShape.js +129 -57
  122. package/src/og/shapes/Icosphere.js +30 -15
  123. package/src/og/shapes/Sphere.js +13 -16
  124. package/src/og/terrain/BilTerrain.js +2 -1
  125. package/src/og/terrain/EmptyTerrain.js +2 -2
  126. package/src/og/terrain/Geoid.js +2 -2
  127. package/src/og/terrain/GlobusTerrain.js +10 -10
  128. package/src/og/terrain/MapboxTerrain.js +1 -1
  129. package/src/og/utils/GeoImageCreator.js +9 -9
  130. package/src/og/utils/Loader.js +6 -6
  131. package/src/og/utils/NormalMapCreator.js +13 -13
  132. package/src/og/utils/TerrainWorker.js +1 -1
  133. package/src/og/utils/TextureAtlas.js +20 -22
  134. package/src/og/utils/VectorTileCreator.js +5 -5
  135. package/src/og/utils/earcut.js +1 -1
  136. package/src/og/utils/shared.js +15 -15
  137. package/src/og/webgl/Framebuffer.js +101 -53
  138. package/src/og/webgl/Handler.js +125 -85
  139. package/src/og/webgl/Multisample.js +55 -27
  140. package/src/og/webgl/Program.js +80 -35
  141. package/src/og/webgl/ProgramController.js +27 -23
  142. package/src/og/webgl/callbacks.js +8 -8
  143. package/types/Clock.d.ts +6 -2
  144. package/types/Deferred.d.ts +1 -1
  145. package/types/Events.d.ts +8 -4
  146. package/types/Extent.d.ts +37 -33
  147. package/types/Globe.d.ts +15 -13
  148. package/types/ImageCanvas.d.ts +5 -3
  149. package/types/LonLat.d.ts +24 -24
  150. package/types/Popup.d.ts +4 -0
  151. package/types/QueueArray.d.ts +6 -2
  152. package/types/Rectangle.d.ts +10 -4
  153. package/types/Stack.d.ts +4 -0
  154. package/types/ajax.d.ts +1 -1
  155. package/types/astro/earth.d.ts +3 -2
  156. package/types/bv/Box.d.ts +10 -5
  157. package/types/bv/Sphere.d.ts +13 -7
  158. package/types/camera/Camera.d.ts +90 -81
  159. package/types/camera/Frustum.d.ts +26 -22
  160. package/types/camera/PlanetCamera.d.ts +49 -53
  161. package/types/control/CompassButton.d.ts +4 -4
  162. package/types/control/Control.d.ts +7 -4
  163. package/types/control/DebugInfo.d.ts +3 -4
  164. package/types/control/EarthCoordinates.d.ts +6 -6
  165. package/types/control/EarthNavigation.d.ts +42 -0
  166. package/types/control/KeyboardNavigation.d.ts +3 -4
  167. package/types/control/LayerSwitcher.d.ts +3 -5
  168. package/types/control/Lighting.d.ts +3 -3
  169. package/types/control/MouseNavigation.d.ts +47 -0
  170. package/types/control/ScaleControl.d.ts +3 -3
  171. package/types/control/ShowFps.d.ts +3 -4
  172. package/types/control/SimpleNavigation.d.ts +3 -6
  173. package/types/control/Sun.d.ts +8 -10
  174. package/types/control/ToggleWireframe.d.ts +3 -3
  175. package/types/control/TouchNavigation.d.ts +48 -0
  176. package/types/control/ZoomControl.d.ts +3 -4
  177. package/types/control/index.d.ts +3 -1
  178. package/types/ellipsoid/Ellipsoid.d.ts +47 -43
  179. package/types/ellipsoid/wgs84.d.ts +3 -2
  180. package/types/entity/BaseBillboard.d.ts +41 -34
  181. package/types/entity/Billboard.d.ts +7 -7
  182. package/types/entity/BillboardHandler.d.ts +4 -0
  183. package/types/entity/Entity.d.ts +101 -83
  184. package/types/entity/EntityCollection.d.ts +57 -43
  185. package/types/entity/GeoObject.d.ts +111 -0
  186. package/types/entity/GeoObjectHandler.d.ts +77 -0
  187. package/types/entity/Geometry.d.ts +9 -7
  188. package/types/entity/GeometryHandler.d.ts +2 -2
  189. package/types/entity/Label.d.ts +24 -29
  190. package/types/entity/LabelHandler.d.ts +9 -2
  191. package/types/entity/LabelWorker.d.ts +9 -0
  192. package/types/entity/PointCloud.d.ts +8 -8
  193. package/types/entity/PointCloudHandler.d.ts +3 -3
  194. package/types/entity/Polyline.d.ts +58 -55
  195. package/types/entity/Ray.d.ts +19 -18
  196. package/types/entity/Strip.d.ts +8 -7
  197. package/types/entity/StripHandler.d.ts +3 -3
  198. package/types/entity/index.d.ts +7 -7
  199. package/types/input/KeyboardHandler.d.ts +10 -0
  200. package/types/input/MouseHandler.d.ts +5 -0
  201. package/types/input/TouchHandler.d.ts +5 -0
  202. package/types/layer/BaseGeoImage.d.ts +23 -35
  203. package/types/layer/CanvasTiles.d.ts +15 -22
  204. package/types/layer/GeoImage.d.ts +5 -18
  205. package/types/layer/GeoVideo.d.ts +5 -30
  206. package/types/layer/KML.d.ts +20 -15
  207. package/types/layer/Layer.d.ts +326 -0
  208. package/types/layer/Material.d.ts +45 -0
  209. package/types/layer/Vector.d.ts +208 -0
  210. package/types/layer/WMS.d.ts +4 -7
  211. package/types/layer/XYZ.d.ts +19 -25
  212. package/types/light/LightSource.d.ts +54 -53
  213. package/types/math/Line2.d.ts +11 -0
  214. package/types/math/Line3.d.ts +10 -0
  215. package/types/math/Mat3.d.ts +30 -18
  216. package/types/math/Mat4.d.ts +71 -52
  217. package/types/math/Plane.d.ts +5 -4
  218. package/types/math/Quat.d.ts +379 -0
  219. package/types/math/Ray.d.ts +82 -0
  220. package/types/math/Vec2.d.ts +102 -101
  221. package/types/math/Vec3.d.ts +143 -142
  222. package/types/math/Vec4.d.ts +40 -39
  223. package/types/math/coder.d.ts +12 -11
  224. package/types/math.d.ts +8 -8
  225. package/types/mercator.d.ts +3 -3
  226. package/types/proj/EPSG3857.d.ts +3 -2
  227. package/types/proj/EPSG4326.d.ts +3 -2
  228. package/types/proj/Proj.d.ts +42 -0
  229. package/types/quadTree/EntityCollectionNode.d.ts +34 -0
  230. package/types/quadTree/Node.d.ts +61 -0
  231. package/types/renderer/Renderer.d.ts +300 -0
  232. package/types/renderer/RendererEvents.d.ts +10 -7
  233. package/types/scene/BaseNode.d.ts +9 -9
  234. package/types/scene/Planet.d.ts +131 -126
  235. package/types/scene/RenderNode.d.ts +22 -23
  236. package/types/segment/Segment.d.ts +279 -0
  237. package/types/segment/SegmentLonLat.d.ts +16 -0
  238. package/types/shaders/geoObject.d.ts +3 -0
  239. package/types/shapes/BaseShape.d.ts +43 -40
  240. package/types/shapes/Sphere.d.ts +7 -7
  241. package/types/terrain/BilTerrain.d.ts +0 -1
  242. package/types/terrain/EmptyTerrain.d.ts +4 -4
  243. package/types/terrain/GlobusTerrain.d.ts +17 -54
  244. package/types/terrain/MapboxTerrain.d.ts +0 -1
  245. package/types/utils/GeoImageCreator.d.ts +3 -2
  246. package/types/utils/TextureAtlas.d.ts +8 -8
  247. package/types/utils/shared.d.ts +25 -24
  248. package/types/webgl/Framebuffer.d.ts +5 -5
  249. package/types/webgl/Handler.d.ts +68 -43
  250. package/types/webgl/Multisample.d.ts +5 -5
  251. package/types/webgl/Program.d.ts +8 -2
  252. package/types/webgl/ProgramController.d.ts +18 -13
  253. package/src/og/inherits.js +0 -8
  254. package/src/og/utils/polylabel.js +0 -176
  255. package/types/inherits.d.ts +0 -4
@@ -3,137 +3,138 @@
3
3
  import * as math from '../math.js';
4
4
  import { Vec3 } from './Vec3.js';
5
5
 
6
- const Line3 = function (p0, p1) {
7
- this.p0 = p0 || new Vec3();
8
- this.p1 = p1 || new Vec3();
9
- };
10
-
11
- Line3.prototype.getMagnitude = function () {
12
- return this.p0.distance(this.p1);
13
- };
14
-
15
- Line3.prototype.getSphereIntersection = function (sphere) {
16
- var p0 = this.p0,
17
- p1 = this.p1;
18
-
19
- var cx = sphere.x,
20
- cy = sphere.y,
21
- cz = sphere.z;
22
-
23
- var px = p0.x,
24
- py = p0.y,
25
- pz = p0.z;
26
-
27
- var vx = p1.x - px,
28
- vy = p1.y - py,
29
- vz = p1.z - pz;
30
-
31
- var A = vx * vx + vy * vy + vz * vz,
32
- B = 2.0 * (px * vx + py * vy + pz * vz - vx * cx - vy * cy - vz * cz),
33
- C = px * px - 2 * px * cx + cx * cx + py * py - 2 * py * cy + cy * cy +
34
- pz * pz - 2 * pz * cz + cz * cz - sphere.radius * sphere.radius;
35
- var D = B * B - 4 * A * C;
36
-
37
- if (D < 0) {
38
- return null;
6
+ export class Line3 {
7
+ constructor(p0, p1) {
8
+ this.p0 = p0 || new Vec3();
9
+ this.p1 = p1 || new Vec3();
39
10
  }
40
11
 
41
- var t1 = (-B - Math.Sqrt(D)) / (2.0 * A);
12
+ getMagnitude() {
13
+ return this.p0.distance(this.p1);
14
+ }
42
15
 
43
- var solution1 = new Vec3(
44
- p0.x * (1 - t1) + t1 * p1.x,
45
- p0.y * (1 - t1) + t1 * p1.y,
46
- p0.z * (1 - t1) + t1 * p1.z);
16
+ getSphereIntersection(sphere) {
17
+ var p0 = this.p0,
18
+ p1 = this.p1;
47
19
 
48
- if (D == 0) {
49
- return solution1;
50
- }
20
+ var cx = sphere.x,
21
+ cy = sphere.y,
22
+ cz = sphere.z;
51
23
 
52
- var t2 = (-B + Math.Sqrt(D)) / (2.0 * A);
53
- var solution2 = new Vec3(
54
- p0.x * (1 - t2) + t2 * p1.x,
55
- p0.y * (1 - t2) + t2 * p1.y,
56
- p0.z * (1 - t2) + t2 * p1.z);
24
+ var px = p0.x,
25
+ py = p0.y,
26
+ pz = p0.z;
57
27
 
58
- // prefer a solution that's on the line segment itself
59
- if (Math.Abs(t1 - 0.5) < Math.abs(t2 - 0.5)) {
60
- return [solution1, solution2];
61
- }
28
+ var vx = p1.x - px,
29
+ vy = p1.y - py,
30
+ vz = p1.z - pz;
62
31
 
63
- return [solution2, solution1];
64
- };
32
+ var A = vx * vx + vy * vy + vz * vz,
33
+ B = 2.0 * (px * vx + py * vy + pz * vz - vx * cx - vy * cy - vz * cz),
34
+ C = px * px - 2 * px * cx + cx * cx + py * py - 2 * py * cy + cy * cy +
35
+ pz * pz - 2 * pz * cz + cz * cz - sphere.radius * sphere.radius;
36
+ var D = B * B - 4 * A * C;
65
37
 
66
- Line3.prototype.intersects = function (line, res, res2) {
38
+ if (D < 0) {
39
+ return null;
40
+ }
67
41
 
68
- let p13 = this.p0.sub(line.p0),
69
- p43 = line.p1.sub(line.p0);
42
+ var t1 = (-B - Math.Sqrt(D)) / (2.0 * A);
70
43
 
71
- if (Math.abs(p43.x) < math.EPSILON10 && Math.abs(p43.y) < math.EPSILON10 && Math.abs(p43.z) < math.EPSILON10) {
72
- return false;
73
- }
44
+ var solution1 = new Vec3(
45
+ p0.x * (1 - t1) + t1 * p1.x,
46
+ p0.y * (1 - t1) + t1 * p1.y,
47
+ p0.z * (1 - t1) + t1 * p1.z);
74
48
 
75
- let p21 = this.p1.sub(this.p0);
49
+ if (D == 0) {
50
+ return solution1;
51
+ }
76
52
 
77
- if (Math.abs(p21.x) < math.EPSILON10 && Math.abs(p21.y) < math.EPSILON10 && Math.abs(p21.z) < math.EPSILON10) {
78
- return false;
53
+ var t2 = (-B + Math.Sqrt(D)) / (2.0 * A);
54
+ var solution2 = new Vec3(
55
+ p0.x * (1 - t2) + t2 * p1.x,
56
+ p0.y * (1 - t2) + t2 * p1.y,
57
+ p0.z * (1 - t2) + t2 * p1.z);
58
+
59
+ // prefer a solution that's on the line segment itself
60
+ if (Math.Abs(t1 - 0.5) < Math.abs(t2 - 0.5)) {
61
+ return [solution1, solution2];
62
+ }
63
+
64
+ return [solution2, solution1];
79
65
  }
80
66
 
81
- let d1343 = p13.x * p43.x + p13.y * p43.y + p13.z * p43.z,
82
- d4321 = p43.x * p21.x + p43.y * p21.y + p43.z * p21.z,
83
- d1321 = p13.x * p21.x + p13.y * p21.y + p13.z * p21.z,
84
- d4343 = p43.x * p43.x + p43.y * p43.y + p43.z * p43.z,
85
- d2121 = p21.x * p21.x + p21.y * p21.y + p21.z * p21.z;
67
+ intersects(line, res, res2) {
86
68
 
87
- let denom = d2121 * d4343 - d4321 * d4321;
69
+ let p13 = this.p0.sub(line.p0),
70
+ p43 = line.p1.sub(line.p0);
88
71
 
89
- if (Math.abs(denom) < math.EPSILON10) {
90
- return false;
91
- }
72
+ if (Math.abs(p43.x) < math.EPSILON10 && Math.abs(p43.y) < math.EPSILON10 && Math.abs(p43.z) < math.EPSILON10) {
73
+ return false;
74
+ }
92
75
 
93
- let numer = d1343 * d4321 - d1321 * d4343;
76
+ let p21 = this.p1.sub(this.p0);
94
77
 
95
- let mua = numer / denom;
78
+ if (Math.abs(p21.x) < math.EPSILON10 && Math.abs(p21.y) < math.EPSILON10 && Math.abs(p21.z) < math.EPSILON10) {
79
+ return false;
80
+ }
96
81
 
97
- res.x = this.p0.x + mua * p21.x;
98
- res.y = this.p0.y + mua * p21.y;
99
- res.z = this.p0.z + mua * p21.z;
82
+ let d1343 = p13.x * p43.x + p13.y * p43.y + p13.z * p43.z,
83
+ d4321 = p43.x * p21.x + p43.y * p21.y + p43.z * p21.z,
84
+ d1321 = p13.x * p21.x + p13.y * p21.y + p13.z * p21.z,
85
+ d4343 = p43.x * p43.x + p43.y * p43.y + p43.z * p43.z,
86
+ d2121 = p21.x * p21.x + p21.y * p21.y + p21.z * p21.z;
100
87
 
101
- if (res2) {
88
+ let denom = d2121 * d4343 - d4321 * d4321;
102
89
 
103
- let mub = (d1343 + d4321 * mua) / d4343;
90
+ if (Math.abs(denom) < math.EPSILON10) {
91
+ return false;
92
+ }
104
93
 
105
- res2.x = line.p0.x + mub * p43.x;
106
- res2.y = line.p0.y + mub * p43.y;
107
- res2.z = line.p0.z + mub * p43.z;
94
+ let numer = d1343 * d4321 - d1321 * d4343;
95
+
96
+ let mua = numer / denom;
97
+
98
+ res.x = this.p0.x + mua * p21.x;
99
+ res.y = this.p0.y + mua * p21.y;
100
+ res.z = this.p0.z + mua * p21.z;
101
+
102
+ if (res2) {
103
+
104
+ let mub = (d1343 + d4321 * mua) / d4343;
105
+
106
+ res2.x = line.p0.x + mub * p43.x;
107
+ res2.y = line.p0.y + mub * p43.y;
108
+ res2.z = line.p0.z + mub * p43.z;
109
+ }
110
+
111
+ return true;
108
112
  }
109
113
 
110
- return true;
111
- };
114
+ getNearestDistancePoint(point, res) {
112
115
 
113
- Line3.prototype.getNearestDistancePoint = function (point, res) {
116
+ let p0 = this.p0,
117
+ p1 = this.p1;
114
118
 
115
- let p0 = this.p0,
116
- p1 = this.p1;
119
+ let mag = this.getMagnitude();
117
120
 
118
- let mag = this.getMagnitude();
121
+ let u =
122
+ (
123
+ ((point.x - p0.x) * (p1.x - p0.x)) +
124
+ ((point.y - p0.y) * (p1.y - p0.y)) +
125
+ ((point.z - p0.z) * (p1.z - p0.z))
126
+ ) /
127
+ (mag * mag);
119
128
 
120
- let u =
121
- (
122
- ((point.x - p0.x) * (p1.x - p0.x)) +
123
- ((point.y - p0.y) * (p1.y - p0.y)) +
124
- ((point.z - p0.z) * (p1.z - p0.z))
125
- ) /
126
- (mag * mag);
129
+ res.x = p0.x + u * (p1.x - p0.x);
130
+ res.y = p0.y + u * (p1.y - p0.y);
131
+ res.z = p0.z + u * (p1.z - p0.z);
127
132
 
128
- res.x = p0.x + u * (p1.x - p0.x);
129
- res.y = p0.y + u * (p1.y - p0.y);
130
- res.z = p0.z + u * (p1.z - p0.z);
133
+ if (u < 0.0 || u > 1.0) {
134
+ return false;
135
+ }
131
136
 
132
- if (u < 0.0 || u > 1.0) {
133
- return false;
137
+ return true;
134
138
  }
135
139
 
136
- return true;
137
- };
138
-
139
- export { Line3 };
140
+ }
@@ -2,142 +2,155 @@
2
2
  * @module og/math/Mat3
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import { Mat4 } from './Mat4.js';
8
- import { Vec3 } from './Vec3.js';
7
+ import { Mat4 } from "./Mat4.js";
8
+ import { Vec3 } from "./Vec3.js";
9
9
 
10
10
  /**
11
11
  * Class represents a 3x3 matrix.
12
12
  * @class
13
13
  */
14
- const Mat3 = function () {
14
+ export class Mat3 {
15
+ constructor() {
16
+ /**
17
+ * A 3x3 matrix, indexable as a column-major order array.
18
+ * @public
19
+ * @type {Array.<number>}
20
+ */
21
+ this._m = new Array(9);
22
+ }
23
+
15
24
  /**
16
- * A 3x3 matrix, indexable as a column-major order array.
25
+ * Sets column-major order array matrix.
17
26
  * @public
18
- * @type {Array.<number>}
27
+ * @param {Array.<number>} m - Matrix array.
28
+ * @returns {Mat3}
19
29
  */
20
- this._m = new Array(9);
21
- };
22
-
23
- /**
24
- * Mat3 factory.
25
- * @static
26
- * @return {og.Mat3}
27
- */
30
+ set(m) {
31
+ this._m[0] = m[0];
32
+ this._m[1] = m[1];
33
+ this._m[2] = m[2];
34
+ this._m[3] = m[3];
35
+ this._m[4] = m[4];
36
+ this._m[5] = m[5];
37
+ this._m[6] = m[6];
38
+ this._m[7] = m[7];
39
+ this._m[8] = m[8];
40
+ return this;
41
+ }
28
42
 
29
- export function mat3() {
30
- return new Mat3();
31
- };
32
-
33
- /**
34
- * Sets column-major order array matrix.
35
- * @public
36
- * @param {Array.<number>} m - Matrix array.
37
- * @returns {og.Mat3}
38
- */
39
- Mat3.prototype.set = function (m) {
40
- this._m[0] = m[0];
41
- this._m[1] = m[1];
42
- this._m[2] = m[2];
43
- this._m[3] = m[3];
44
- this._m[4] = m[4];
45
- this._m[5] = m[5];
46
- this._m[6] = m[6];
47
- this._m[7] = m[7];
48
- this._m[8] = m[8];
49
- return this;
50
- };
43
+ /**
44
+ * Duplicates a Mat3 instance.
45
+ * @public
46
+ * @returns {Mat3}
47
+ */
48
+ clone() {
49
+ var res = new Mat3();
50
+ res.set(this);
51
+ return res;
52
+ }
51
53
 
52
- /**
53
- * Duplicates a Mat3 instance.
54
- * @public
55
- * @returns {og.Mat3}
56
- */
57
- Mat3.prototype.clone = function () {
58
- var res = new Mat3();
59
- res.set(this);
60
- return res;
61
- };
54
+ /**
55
+ * Copy matrix.
56
+ * @public
57
+ * @param {Mat3} a - Matrix to copy.
58
+ * @returns {Mat3}
59
+ */
60
+ copy(a) {
61
+ return this.set(a._m);
62
+ }
62
63
 
63
- /**
64
- * Copy matrix.
65
- * @public
66
- * @param {og.Mat3} a - Matrix to copy.
67
- * @returns {og.Mat3}
68
- */
69
- Mat3.prototype.copy = function (a) {
70
- return this.set(a._m);
71
- };
64
+ /**
65
+ * Creates trasposed matrix from the current.
66
+ * @public
67
+ * @returns {Mat3}
68
+ */
69
+ transposeTo() {
70
+ var res = new Mat3();
71
+ var m = this._m;
72
+ res._m[0] = m[0];
73
+ res._m[1] = m[3];
74
+ res._m[2] = m[6];
75
+ res._m[3] = m[1];
76
+ res._m[4] = m[4];
77
+ res._m[5] = m[7];
78
+ res._m[6] = m[2];
79
+ res._m[7] = m[5];
80
+ res._m[8] = m[8];
81
+ return res;
82
+ }
72
83
 
73
- /**
74
- * Creates trasposed matrix from the current.
75
- * @public
76
- * @returns {og.Mat3}
77
- */
78
- Mat3.prototype.transposeTo = function () {
79
- var res = new Mat3();
80
- var m = this._m;
81
- res._m[0] = m[0]; res._m[1] = m[3]; res._m[2] = m[6];
82
- res._m[3] = m[1]; res._m[4] = m[4]; res._m[5] = m[7];
83
- res._m[6] = m[2]; res._m[7] = m[5]; res._m[8] = m[8];
84
- return res;
85
- };
84
+ /**
85
+ * Sets matrix to identity.
86
+ * @public
87
+ * @returns {Mat3}
88
+ */
89
+ setIdentity() {
90
+ this._m[0] = 1;
91
+ this._m[1] = 0;
92
+ this._m[2] = 0;
93
+ this._m[3] = 0;
94
+ this._m[4] = 1;
95
+ this._m[5] = 0;
96
+ this._m[6] = 0;
97
+ this._m[7] = 0;
98
+ this._m[8] = 1;
99
+ return this;
100
+ }
86
101
 
87
- /**
88
- * Sets matrix to identity.
89
- * @public
90
- * @returns {og.Mat3}
91
- */
92
- Mat3.prototype.setIdentity = function () {
93
- this._m[0] = 1; this._m[1] = 0; this._m[2] = 0;
94
- this._m[3] = 0; this._m[4] = 1; this._m[5] = 0;
95
- this._m[6] = 0; this._m[7] = 0; this._m[8] = 1;
96
- return this;
97
- };
102
+ /**
103
+ * Multiply to 3d vector.
104
+ * @public
105
+ * @params {Vec3} p - 3d vector.
106
+ * @returns {Vec3}
107
+ */
108
+ mulVec(p) {
109
+ var d = p.x,
110
+ e = p.y,
111
+ g = p.z;
112
+ var m = this._m;
113
+ return new Vec3(
114
+ m[0] * d + m[3] * e + m[6] * g,
115
+ m[1] * d + m[4] * e + m[7] * g,
116
+ m[2] * d + m[5] * e + m[8] * g
117
+ );
118
+ }
98
119
 
99
- /**
100
- * Multiply to 3d vector.
101
- * @public
102
- * @params {og.Vec3} p - 3d vector.
103
- * @returns {og.Vec3}
104
- */
105
- Mat3.prototype.mulVec = function (p) {
106
- var d = p.x, e = p.y, g = p.z;
107
- var m = this._m;
108
- return new Vec3(
109
- m[0] * d + m[3] * e + m[6] * g,
110
- m[1] * d + m[4] * e + m[7] * g,
111
- m[2] * d + m[5] * e + m[8] * g
112
- );
113
- };
120
+ /**
121
+ * Converts to 4x4 matrix.
122
+ * @public
123
+ * @returns {Mat4}
124
+ */
125
+ toMatrix4() {
126
+ var res = new Mat4();
127
+ var b = res._m;
128
+ var a = this._m;
129
+ b[0] = a[0];
130
+ b[1] = a[1];
131
+ b[2] = a[2];
132
+ b[3] = 0;
133
+ b[4] = a[3];
134
+ b[5] = a[4];
135
+ b[6] = a[5];
136
+ b[7] = 0;
137
+ b[8] = a[6];
138
+ b[9] = a[7];
139
+ b[10] = a[8];
140
+ b[11] = 0;
141
+ b[12] = 0;
142
+ b[13] = 0;
143
+ b[14] = 0;
144
+ b[15] = 1;
145
+ return res;
146
+ }
147
+ }
114
148
 
115
149
  /**
116
- * Converts to 4x4 matrix.
117
- * @public
118
- * @returns {og.Mat4}
150
+ * Mat3 factory.
151
+ * @static
152
+ * @return {Mat3}
119
153
  */
120
- Mat3.prototype.toMatrix4 = function () {
121
- var res = new Mat4();
122
- var b = res._m;
123
- var a = this._m;
124
- b[0] = a[0];
125
- b[1] = a[1];
126
- b[2] = a[2];
127
- b[3] = 0;
128
- b[4] = a[3];
129
- b[5] = a[4];
130
- b[6] = a[5];
131
- b[7] = 0;
132
- b[8] = a[6];
133
- b[9] = a[7];
134
- b[10] = a[8];
135
- b[11] = 0;
136
- b[12] = 0;
137
- b[13] = 0;
138
- b[14] = 0;
139
- b[15] = 1;
140
- return res;
141
- };
142
-
143
- export { Mat3 };
154
+ export function mat3() {
155
+ return new Mat3();
156
+ }