@openglobus/og 0.12.1 → 0.13.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 (230) hide show
  1. package/README.md +0 -2
  2. package/dist/@openglobus/og.css +1 -0
  3. package/dist/@openglobus/og.esm.js +21 -0
  4. package/dist/@openglobus/og.esm.js.map +1 -0
  5. package/dist/@openglobus/og.umd.js +21 -0
  6. package/dist/@openglobus/og.umd.js.map +1 -0
  7. package/package.json +8 -8
  8. package/src/og/Extent.js +3 -3
  9. package/src/og/Globe.js +277 -275
  10. package/src/og/ImageCanvas.js +3 -3
  11. package/src/og/LonLat.js +9 -9
  12. package/src/og/QueueArray.js +2 -2
  13. package/src/og/Rectangle.js +5 -5
  14. package/src/og/bv/Box.js +1 -1
  15. package/src/og/bv/Sphere.js +2 -2
  16. package/src/og/camera/Camera.js +1 -1
  17. package/src/og/camera/PlanetCamera.js +649 -646
  18. package/src/og/control/LayerSwitcher.js +1 -1
  19. package/src/og/control/MouseNavigation.js +22 -13
  20. package/src/og/control/MouseWheelZoomControl.js +2 -2
  21. package/src/og/control/ScaleControl.js +1 -1
  22. package/src/og/control/TouchNavigation.js +319 -319
  23. package/src/og/control/ZoomControl.js +132 -132
  24. package/src/og/control/visibleExtent/Segment.js +12 -12
  25. package/src/og/ellipsoid/Ellipsoid.js +577 -567
  26. package/src/og/entity/BillboardHandler.js +878 -1051
  27. package/src/og/entity/Entity.js +1 -1
  28. package/src/og/entity/EntityCollection.js +847 -857
  29. package/src/og/entity/GeoObjectHandler.js +37 -18
  30. package/src/og/entity/LabelHandler.js +888 -1040
  31. package/src/og/entity/LabelWorker.js +0 -6
  32. package/src/og/entity/PointCloud.js +495 -495
  33. package/src/og/entity/Polyline.js +2218 -2222
  34. package/src/og/entity/RayHandler.js +1 -1
  35. package/src/og/layer/CanvasTiles.js +6 -3
  36. package/src/og/layer/GeoImage.js +1 -1
  37. package/src/og/layer/KML.js +24 -17
  38. package/src/og/layer/Layer.js +806 -751
  39. package/src/og/layer/Vector.js +997 -1010
  40. package/src/og/layer/XYZ.js +359 -357
  41. package/src/og/math/Line2.js +4 -4
  42. package/src/og/math/Quat.js +2 -2
  43. package/src/og/math/Ray.js +2 -2
  44. package/src/og/math/Vec2.js +524 -524
  45. package/src/og/math/Vec3.js +900 -900
  46. package/src/og/math/Vec4.js +261 -261
  47. package/src/og/math.js +397 -398
  48. package/src/og/quadTree/EntityCollectionNode.js +389 -387
  49. package/src/og/renderer/Renderer.js +14 -20
  50. package/src/og/renderer/RendererEvents.js +1034 -1045
  51. package/src/og/scene/Planet.js +26 -23
  52. package/src/og/scene/RenderNode.js +347 -354
  53. package/src/og/segment/Segment.js +3 -1
  54. package/src/og/segment/SegmentLonLat.js +1 -4
  55. package/src/og/shaders/billboard.js +220 -204
  56. package/src/og/shaders/drawnode.js +603 -603
  57. package/src/og/shaders/geoObject.js +15 -6
  58. package/src/og/shaders/label.js +596 -456
  59. package/src/og/shaders/polyline.js +365 -361
  60. package/src/og/terrain/MapboxTerrain.js +1 -1
  61. package/src/og/utils/FontAtlas.js +209 -200
  62. package/src/og/utils/GeoImageCreator.js +4 -5
  63. package/src/og/utils/TextureAtlas.js +4 -4
  64. package/src/og/utils/VectorTileCreator.js +414 -414
  65. package/src/og/utils/shared.js +1 -1
  66. package/src/og/webgl/Handler.js +28 -60
  67. package/src/og/webgl/Multisample.js +260 -260
  68. package/src/og/webgl/Program.js +411 -396
  69. package/types/Clock.d.ts +94 -0
  70. package/types/Deferred.d.ts +6 -0
  71. package/types/Events.d.ts +77 -0
  72. package/types/Extent.d.ts +166 -0
  73. package/types/Globe.d.ts +85 -0
  74. package/types/ImageCanvas.d.ts +123 -0
  75. package/types/Lock.d.ts +12 -0
  76. package/types/LonLat.d.ts +108 -0
  77. package/types/Popup.d.ts +42 -0
  78. package/types/QueueArray.d.ts +19 -0
  79. package/types/Rectangle.d.ts +80 -0
  80. package/types/Stack.d.ts +19 -0
  81. package/types/ajax.d.ts +24 -0
  82. package/types/arial.d.ts +48 -0
  83. package/types/astro/astro.d.ts +38 -0
  84. package/types/astro/earth.d.ts +7 -0
  85. package/types/astro/jd.d.ts +254 -0
  86. package/types/bv/Box.d.ts +30 -0
  87. package/types/bv/Sphere.d.ts +38 -0
  88. package/types/bv/index.d.ts +3 -0
  89. package/types/camera/Camera.d.ts +312 -0
  90. package/types/camera/Frustum.d.ts +133 -0
  91. package/types/camera/PlanetCamera.d.ts +219 -0
  92. package/types/camera/index.d.ts +3 -0
  93. package/types/cons.d.ts +40 -0
  94. package/types/control/CompassButton.d.ts +17 -0
  95. package/types/control/Control.d.ts +104 -0
  96. package/types/control/DebugInfo.d.ts +15 -0
  97. package/types/control/EarthCoordinates.d.ts +47 -0
  98. package/types/control/EarthNavigation.d.ts +43 -0
  99. package/types/control/GeoImageDragControl.d.ts +6 -0
  100. package/types/control/KeyboardNavigation.d.ts +21 -0
  101. package/types/control/LayerSwitcher.d.ts +21 -0
  102. package/types/control/Lighting.d.ts +16 -0
  103. package/types/control/MouseNavigation.d.ts +48 -0
  104. package/types/control/MouseWheelZoomControl.d.ts +45 -0
  105. package/types/control/ScaleControl.d.ts +22 -0
  106. package/types/control/ShowFps.d.ts +11 -0
  107. package/types/control/SimpleNavigation.d.ts +25 -0
  108. package/types/control/Sun.d.ts +50 -0
  109. package/types/control/ToggleWireframe.d.ts +12 -0
  110. package/types/control/TouchNavigation.d.ts +48 -0
  111. package/types/control/ZoomControl.d.ts +27 -0
  112. package/types/control/index.d.ts +18 -0
  113. package/types/ellipsoid/Ellipsoid.d.ts +153 -0
  114. package/types/ellipsoid/index.d.ts +3 -0
  115. package/types/ellipsoid/wgs84.d.ts +6 -0
  116. package/types/entity/BaseBillboard.d.ts +215 -0
  117. package/types/entity/Billboard.d.ts +94 -0
  118. package/types/entity/BillboardHandler.d.ts +75 -0
  119. package/types/entity/Entity.d.ts +348 -0
  120. package/types/entity/EntityCollection.d.ts +309 -0
  121. package/types/entity/GeoObject.d.ts +111 -0
  122. package/types/entity/GeoObjectHandler.d.ts +81 -0
  123. package/types/entity/Geometry.d.ts +74 -0
  124. package/types/entity/GeometryHandler.d.ts +76 -0
  125. package/types/entity/Label.d.ts +189 -0
  126. package/types/entity/LabelHandler.d.ts +29 -0
  127. package/types/entity/LabelWorker.d.ts +11 -0
  128. package/types/entity/PointCloud.d.ts +174 -0
  129. package/types/entity/PointCloudHandler.d.ts +38 -0
  130. package/types/entity/Polyline.d.ts +306 -0
  131. package/types/entity/PolylineHandler.d.ts +18 -0
  132. package/types/entity/Ray.d.ts +124 -0
  133. package/types/entity/RayHandler.d.ts +67 -0
  134. package/types/entity/ShapeHandler.d.ts +22 -0
  135. package/types/entity/Strip.d.ts +119 -0
  136. package/types/entity/StripHandler.d.ts +38 -0
  137. package/types/entity/index.d.ts +8 -0
  138. package/types/index.core.d.ts +65 -0
  139. package/types/index.d.ts +45 -0
  140. package/types/index.webgl.d.ts +7 -0
  141. package/types/input/KeyboardHandler.d.ts +10 -0
  142. package/types/input/MouseHandler.d.ts +5 -0
  143. package/types/input/TouchHandler.d.ts +5 -0
  144. package/types/input/input.d.ts +34 -0
  145. package/types/layer/BaseGeoImage.d.ts +94 -0
  146. package/types/layer/CanvasTiles.d.ts +67 -0
  147. package/types/layer/GeoImage.d.ts +52 -0
  148. package/types/layer/GeoTexture2d.d.ts +8 -0
  149. package/types/layer/GeoVideo.d.ts +55 -0
  150. package/types/layer/KML.d.ts +68 -0
  151. package/types/layer/Layer.d.ts +315 -0
  152. package/types/layer/Material.d.ts +45 -0
  153. package/types/layer/Vector.d.ts +201 -0
  154. package/types/layer/WMS.d.ts +61 -0
  155. package/types/layer/XYZ.d.ts +119 -0
  156. package/types/layer/index.d.ts +10 -0
  157. package/types/light/LightSource.d.ts +178 -0
  158. package/types/math/Line2.d.ts +11 -0
  159. package/types/math/Line3.d.ts +10 -0
  160. package/types/math/Mat3.d.ts +65 -0
  161. package/types/math/Mat4.d.ts +176 -0
  162. package/types/math/Plane.d.ts +18 -0
  163. package/types/math/Quat.d.ts +379 -0
  164. package/types/math/Ray.d.ts +82 -0
  165. package/types/math/Vec2.d.ts +309 -0
  166. package/types/math/Vec3.d.ts +467 -0
  167. package/types/math/Vec4.d.ts +162 -0
  168. package/types/math/coder.d.ts +43 -0
  169. package/types/math/index.d.ts +11 -0
  170. package/types/math.d.ts +261 -0
  171. package/types/mercator.d.ts +92 -0
  172. package/types/proj/EPSG3857.d.ts +6 -0
  173. package/types/proj/EPSG4326.d.ts +6 -0
  174. package/types/proj/Proj.d.ts +42 -0
  175. package/types/quadTree/EntityCollectionNode.d.ts +34 -0
  176. package/types/quadTree/Node.d.ts +60 -0
  177. package/types/quadTree/quadTree.d.ts +40 -0
  178. package/types/renderer/Renderer.d.ts +290 -0
  179. package/types/renderer/RendererEvents.d.ts +237 -0
  180. package/types/res/images.d.ts +3 -0
  181. package/types/scene/Axes.d.ts +11 -0
  182. package/types/scene/BaseNode.d.ts +60 -0
  183. package/types/scene/Planet.d.ts +576 -0
  184. package/types/scene/RenderNode.d.ts +142 -0
  185. package/types/scene/SkyBox.d.ts +10 -0
  186. package/types/scene/index.d.ts +4 -0
  187. package/types/segment/Segment.d.ts +275 -0
  188. package/types/segment/SegmentLonLat.d.ts +17 -0
  189. package/types/segment/Slice.d.ts +10 -0
  190. package/types/segment/segmentHelper.d.ts +13 -0
  191. package/types/shaders/billboard.d.ts +3 -0
  192. package/types/shaders/depth.d.ts +2 -0
  193. package/types/shaders/drawnode.d.ts +7 -0
  194. package/types/shaders/geoObject.d.ts +3 -0
  195. package/types/shaders/label.d.ts +4 -0
  196. package/types/shaders/pointCloud.d.ts +2 -0
  197. package/types/shaders/polyline.d.ts +3 -0
  198. package/types/shaders/ray.d.ts +2 -0
  199. package/types/shaders/screenFrame.d.ts +2 -0
  200. package/types/shaders/shape.d.ts +4 -0
  201. package/types/shaders/skybox.d.ts +2 -0
  202. package/types/shaders/toneMapping.d.ts +2 -0
  203. package/types/shapes/BaseShape.d.ts +250 -0
  204. package/types/shapes/Sphere.d.ts +41 -0
  205. package/types/terrain/BilTerrain.d.ts +7 -0
  206. package/types/terrain/EmptyTerrain.d.ts +73 -0
  207. package/types/terrain/Geoid.d.ts +26 -0
  208. package/types/terrain/GlobusTerrain.d.ts +116 -0
  209. package/types/terrain/MapboxTerrain.d.ts +7 -0
  210. package/types/terrain/index.d.ts +5 -0
  211. package/types/utils/FontAtlas.d.ts +16 -0
  212. package/types/utils/GeoImageCreator.d.ts +30 -0
  213. package/types/utils/ImagesCacheManager.d.ts +10 -0
  214. package/types/utils/Loader.d.ts +25 -0
  215. package/types/utils/NormalMapCreator.d.ts +39 -0
  216. package/types/utils/PlainSegmentWorker.d.ts +10 -0
  217. package/types/utils/TerrainWorker.d.ts +9 -0
  218. package/types/utils/TextureAtlas.d.ts +111 -0
  219. package/types/utils/VectorTileCreator.d.ts +16 -0
  220. package/types/utils/colorTable.d.ts +143 -0
  221. package/types/utils/earcut.d.ts +6 -0
  222. package/types/utils/shared.d.ts +231 -0
  223. package/types/webgl/Framebuffer.d.ts +135 -0
  224. package/types/webgl/Handler.d.ts +392 -0
  225. package/types/webgl/Multisample.d.ts +89 -0
  226. package/types/webgl/Program.d.ts +163 -0
  227. package/types/webgl/ProgramController.d.ts +89 -0
  228. package/types/webgl/callbacks.d.ts +1 -0
  229. package/types/webgl/index.d.ts +6 -0
  230. package/types/webgl/types.d.ts +2 -0
@@ -1,261 +1,261 @@
1
- /**
2
- * @module og/math/Vec4
3
- */
4
-
5
- "use strict";
6
-
7
- import { Vec3 } from "./Vec3.js";
8
- import { frac } from "../math.js";
9
-
10
- /**
11
- * Class represents a 4d vector.
12
- * @class
13
- * @param {number} [x] - First value.
14
- * @param {number} [y] - Second value.
15
- * @param {number} [z] - Third value.
16
- * @param {number} [w] - Fourth value.
17
- */
18
- export class Vec4 {
19
- constructor(x, y, z, w) {
20
- /**
21
- * @public
22
- * @type {number}
23
- */
24
- this.x = x || 0.0;
25
-
26
- /**
27
- * @public
28
- * @type {number}
29
- */
30
- this.y = y || 0.0;
31
-
32
- /**
33
- * @public
34
- * @type {number}
35
- */
36
- this.z = z || 0.0;
37
-
38
- /**
39
- * @public
40
- * @type {number}
41
- */
42
- this.w = w || 0.0;
43
- }
44
-
45
- /**
46
- * Identity vector [0,0,0,1].
47
- * @const
48
- * @type {Vec4}
49
- */
50
- static get identity() {
51
- return new Vec4(0, 0, 0, 1);
52
- }
53
-
54
- /**
55
- * Creates 4d vector from array.
56
- * @function
57
- * @param {Array.<number>} - (exactly 4 entries)
58
- * @returns {Vec4}
59
- */
60
- static fromVec(arr) {
61
- return new Vec4(arr[0], arr[1], arr[2], arr[3]);
62
- }
63
-
64
- /**
65
- * Converts to 3d vector, without fourth value.
66
- * @public
67
- * @returns {Vec3}
68
- */
69
- toVec3() {
70
- return new Vec3(this.x, this.y, this.z);
71
- }
72
-
73
- /**
74
- * Returns clone vector.
75
- * @public
76
- * @returns {Vec4}
77
- */
78
- clone(v) {
79
- return new Vec4(this.x, this.y, this.z, this.w);
80
- }
81
-
82
- /**
83
- * Compares with vector. Returns true if it equals another.
84
- * @public
85
- * @param {Vec4} p - Vector to compare.
86
- * @returns {boolean}
87
- */
88
- equal(v) {
89
- return this.x === v.x && this.y === v.y && this.z === v.z && this.w === v.w;
90
- }
91
-
92
- /**
93
- * Copy input vector's values.
94
- * @param {Vec4} v - Vector to copy.
95
- * @returns {Vec4}
96
- */
97
- copy(v) {
98
- this.x = v.x;
99
- this.y = v.y;
100
- this.z = v.z;
101
- this.w = v.w;
102
- return this;
103
- }
104
-
105
- /**
106
- * Converts vector to a number array.
107
- * @public
108
- * @returns {Array.<number>} - (exactly 4 entries)
109
- * @deprecated
110
- */
111
- toVec() {
112
- return [this.x, this.y, this.z, this.w];
113
- }
114
-
115
- /**
116
- * Converts vector to a number array.
117
- * @public
118
- * @returns {Array.<number>} - (exactly 4 entries)
119
- */
120
- toArray() {
121
- return [this.x, this.y, this.z, this.w];
122
- }
123
-
124
- /**
125
- * Sets vector's values.
126
- * @public
127
- * @param {number} x - Value X.
128
- * @param {number} y - Value Y.
129
- * @param {number} z - Value Z.
130
- * @param {number} w - Value W.
131
- * @returns {Vec4}
132
- */
133
- set(x, y, z, w) {
134
- this.x = x;
135
- this.y = y;
136
- this.z = z;
137
- this.w = w;
138
- return this;
139
- }
140
-
141
- /**
142
- * Adds vector to the current.
143
- * @public
144
- * @param {Vec4}
145
- * @returns {Vec4}
146
- */
147
- addA(v) {
148
- this.x += v.x;
149
- this.y += v.y;
150
- this.z += v.z;
151
- this.w += v.w;
152
- return this;
153
- }
154
-
155
- /**
156
- * Subtract vector from the current.
157
- * @public
158
- * @param {Vec4} v - Subtract vector.
159
- * @returns {Vec4}
160
- */
161
- subA(v) {
162
- this.x -= v.x;
163
- this.y -= v.y;
164
- this.z -= v.z;
165
- this.w -= v.w;
166
- return this;
167
- }
168
-
169
- /**
170
- * Scale current vector.
171
- * @public
172
- * @param {number} scale - Scale value.
173
- * @returns {Vec4}
174
- */
175
- scale(scale) {
176
- this.x *= scale;
177
- this.y *= scale;
178
- this.z *= scale;
179
- this.w *= scale;
180
- return this;
181
- }
182
-
183
- /**
184
- * Makes vector affinity. Thereby fourh component becomes to 1.0.
185
- * @public
186
- * @returns {Vec4}
187
- */
188
- affinity() {
189
- var iw = 1 / this.w;
190
- this.x *= iw;
191
- this.y *= iw;
192
- this.z *= iw;
193
- this.w = 1.0;
194
- return this;
195
- }
196
-
197
- /**
198
- * Scale current vector to another instance.
199
- * @public
200
- * @param {number} scale - Scale value.
201
- * @returns {Vec3}
202
- */
203
- scaleTo(scale) {
204
- return new Vec4(this.x * scale, this.y * scale, this.z * scale, this.w * scale);
205
- }
206
-
207
- /**
208
- * Vector's edge function that returns vector where each component is 0.0 if it's smaller then edge and otherwise 1.0.
209
- * @public
210
- * @returns {Vec4}
211
- */
212
- getStep(edge) {
213
- return new Vec4(
214
- this.x < edge ? 0.0 : 1.0,
215
- this.y < edge ? 0.0 : 1.0,
216
- this.z < edge ? 0.0 : 1.0,
217
- this.w < edge ? 0.0 : 1.0
218
- );
219
- }
220
-
221
- /**
222
- * The vector fract function returns the vector of fractional parts of each value, i.e. x minus floor(x).
223
- * @public
224
- * @returns {Vec4}
225
- */
226
- getFrac(v) {
227
- return new Vec4(frac(v.x), frac(v.y), frac(v.z), frac(v.w));
228
- }
229
-
230
- /**
231
- * Gets vectors dot production.
232
- * @public
233
- * @param {math.Vec4} v - Another vector.
234
- * @returns {number} - Dot product.
235
- */
236
- dot(v) {
237
- return v.x * this.x + v.y * this.y + v.z * this.z + v.w * this.w;
238
- }
239
-
240
- /**
241
- * Returns true if vector's values are zero.
242
- * @public
243
- * @returns {boolean} -
244
- */
245
- isZero() {
246
- return !(this.x || this.y || this.z || this.w);
247
- }
248
- }
249
-
250
- /**
251
- * Vector 4d object creator.
252
- * @function
253
- * @param {number} [x] - First cvalue.
254
- * @param {number} [y] - Second value.
255
- * @param {number} [z] - Third value.
256
- * @param {number} [w] - Fourth value.
257
- * @returns {Vec4}
258
- */
259
- export function vec4(x, y, z, w) {
260
- return new Vec4(x, y, z, w);
261
- }
1
+ /**
2
+ * @module og/math/Vec4
3
+ */
4
+
5
+ "use strict";
6
+
7
+ import { Vec3 } from "./Vec3.js";
8
+ import { frac } from "../math.js";
9
+
10
+ /**
11
+ * Class represents a 4d vector.
12
+ * @class
13
+ * @param {number} [x] - First value.
14
+ * @param {number} [y] - Second value.
15
+ * @param {number} [z] - Third value.
16
+ * @param {number} [w] - Fourth value.
17
+ */
18
+ export class Vec4 {
19
+ constructor(x = 0.0, y = 0.0, z = 0.0, w = 0.0) {
20
+ /**
21
+ * @public
22
+ * @type {number}
23
+ */
24
+ this.x = x || 0.0;
25
+
26
+ /**
27
+ * @public
28
+ * @type {number}
29
+ */
30
+ this.y = y || 0.0;
31
+
32
+ /**
33
+ * @public
34
+ * @type {number}
35
+ */
36
+ this.z = z || 0.0;
37
+
38
+ /**
39
+ * @public
40
+ * @type {number}
41
+ */
42
+ this.w = w || 0.0;
43
+ }
44
+
45
+ /**
46
+ * Identity vector [0,0,0,1].
47
+ * @const
48
+ * @type {Vec4}
49
+ */
50
+ static get identity() {
51
+ return new Vec4(0, 0, 0, 1);
52
+ }
53
+
54
+ /**
55
+ * Creates 4d vector from array.
56
+ * @function
57
+ * @param {Array.<number>} - (exactly 4 entries)
58
+ * @returns {Vec4}
59
+ */
60
+ static fromVec(arr) {
61
+ return new Vec4(arr[0], arr[1], arr[2], arr[3]);
62
+ }
63
+
64
+ /**
65
+ * Converts to 3d vector, without fourth value.
66
+ * @public
67
+ * @returns {Vec3}
68
+ */
69
+ toVec3() {
70
+ return new Vec3(this.x, this.y, this.z);
71
+ }
72
+
73
+ /**
74
+ * Returns clone vector.
75
+ * @public
76
+ * @returns {Vec4}
77
+ */
78
+ clone() {
79
+ return new Vec4(this.x, this.y, this.z, this.w);
80
+ }
81
+
82
+ /**
83
+ * Compares with vector. Returns true if it equals another.
84
+ * @public
85
+ * @param {Vec4} p - Vector to compare.
86
+ * @returns {boolean}
87
+ */
88
+ equal(v) {
89
+ return this.x === v.x && this.y === v.y && this.z === v.z && this.w === v.w;
90
+ }
91
+
92
+ /**
93
+ * Copy input vector's values.
94
+ * @param {Vec4} v - Vector to copy.
95
+ * @returns {Vec4}
96
+ */
97
+ copy(v) {
98
+ this.x = v.x;
99
+ this.y = v.y;
100
+ this.z = v.z;
101
+ this.w = v.w;
102
+ return this;
103
+ }
104
+
105
+ /**
106
+ * Converts vector to a number array.
107
+ * @public
108
+ * @returns {Array.<number>} - (exactly 4 entries)
109
+ * @deprecated
110
+ */
111
+ toVec() {
112
+ return [this.x, this.y, this.z, this.w];
113
+ }
114
+
115
+ /**
116
+ * Converts vector to a number array.
117
+ * @public
118
+ * @returns {Array.<number>} - (exactly 4 entries)
119
+ */
120
+ toArray() {
121
+ return [this.x, this.y, this.z, this.w];
122
+ }
123
+
124
+ /**
125
+ * Sets vector's values.
126
+ * @public
127
+ * @param {number} x - Value X.
128
+ * @param {number} y - Value Y.
129
+ * @param {number} z - Value Z.
130
+ * @param {number} w - Value W.
131
+ * @returns {Vec4}
132
+ */
133
+ set(x, y, z, w) {
134
+ this.x = x;
135
+ this.y = y;
136
+ this.z = z;
137
+ this.w = w;
138
+ return this;
139
+ }
140
+
141
+ /**
142
+ * Adds vector to the current.
143
+ * @public
144
+ * @param {Vec4}
145
+ * @returns {Vec4}
146
+ */
147
+ addA(v) {
148
+ this.x += v.x;
149
+ this.y += v.y;
150
+ this.z += v.z;
151
+ this.w += v.w;
152
+ return this;
153
+ }
154
+
155
+ /**
156
+ * Subtract vector from the current.
157
+ * @public
158
+ * @param {Vec4} v - Subtract vector.
159
+ * @returns {Vec4}
160
+ */
161
+ subA(v) {
162
+ this.x -= v.x;
163
+ this.y -= v.y;
164
+ this.z -= v.z;
165
+ this.w -= v.w;
166
+ return this;
167
+ }
168
+
169
+ /**
170
+ * Scale current vector.
171
+ * @public
172
+ * @param {number} scale - Scale value.
173
+ * @returns {Vec4}
174
+ */
175
+ scale(scale) {
176
+ this.x *= scale;
177
+ this.y *= scale;
178
+ this.z *= scale;
179
+ this.w *= scale;
180
+ return this;
181
+ }
182
+
183
+ /**
184
+ * Makes vector affinity. Thereby fourh component becomes to 1.0.
185
+ * @public
186
+ * @returns {Vec4}
187
+ */
188
+ affinity() {
189
+ var iw = 1 / this.w;
190
+ this.x *= iw;
191
+ this.y *= iw;
192
+ this.z *= iw;
193
+ this.w = 1.0;
194
+ return this;
195
+ }
196
+
197
+ /**
198
+ * Scale current vector to another instance.
199
+ * @public
200
+ * @param {number} scale - Scale value.
201
+ * @returns {Vec3}
202
+ */
203
+ scaleTo(scale) {
204
+ return new Vec4(this.x * scale, this.y * scale, this.z * scale, this.w * scale);
205
+ }
206
+
207
+ /**
208
+ * Vector's edge function that returns vector where each component is 0.0 if it's smaller then edge and otherwise 1.0.
209
+ * @public
210
+ * @returns {Vec4}
211
+ */
212
+ getStep(edge) {
213
+ return new Vec4(
214
+ this.x < edge ? 0.0 : 1.0,
215
+ this.y < edge ? 0.0 : 1.0,
216
+ this.z < edge ? 0.0 : 1.0,
217
+ this.w < edge ? 0.0 : 1.0
218
+ );
219
+ }
220
+
221
+ /**
222
+ * The vector fract function returns the vector of fractional parts of each value, i.e. x minus floor(x).
223
+ * @public
224
+ * @returns {Vec4}
225
+ */
226
+ getFrac(v) {
227
+ return new Vec4(frac(v.x), frac(v.y), frac(v.z), frac(v.w));
228
+ }
229
+
230
+ /**
231
+ * Gets vectors dot production.
232
+ * @public
233
+ * @param {math.Vec4} v - Another vector.
234
+ * @returns {number} - Dot product.
235
+ */
236
+ dot(v) {
237
+ return v.x * this.x + v.y * this.y + v.z * this.z + v.w * this.w;
238
+ }
239
+
240
+ /**
241
+ * Returns true if vector's values are zero.
242
+ * @public
243
+ * @returns {boolean} -
244
+ */
245
+ isZero() {
246
+ return !(this.x || this.y || this.z || this.w);
247
+ }
248
+ }
249
+
250
+ /**
251
+ * Vector 4d object creator.
252
+ * @function
253
+ * @param {number} [x] - First cvalue.
254
+ * @param {number} [y] - Second value.
255
+ * @param {number} [z] - Third value.
256
+ * @param {number} [w] - Fourth value.
257
+ * @returns {Vec4}
258
+ */
259
+ export function vec4(x, y, z, w) {
260
+ return new Vec4(x, y, z, w);
261
+ }