@math.gl/core 3.5.6 → 3.6.0-alpha.2

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 (193) hide show
  1. package/dist/classes/base/math-array.d.ts +66 -0
  2. package/dist/classes/base/math-array.d.ts.map +1 -0
  3. package/dist/classes/base/math-array.js +216 -0
  4. package/dist/classes/base/matrix.d.ts +14 -0
  5. package/dist/classes/base/matrix.d.ts.map +1 -0
  6. package/dist/classes/base/matrix.js +61 -0
  7. package/dist/classes/base/vector.d.ts +44 -0
  8. package/dist/classes/base/vector.d.ts.map +1 -0
  9. package/dist/classes/base/vector.js +126 -0
  10. package/dist/classes/euler.d.ts +77 -0
  11. package/dist/classes/euler.d.ts.map +1 -0
  12. package/dist/classes/euler.js +485 -0
  13. package/dist/classes/matrix3.d.ts +60 -0
  14. package/dist/classes/matrix3.d.ts.map +1 -0
  15. package/dist/classes/matrix3.js +201 -0
  16. package/dist/classes/matrix4.d.ts +226 -0
  17. package/dist/classes/matrix4.d.ts.map +1 -0
  18. package/dist/classes/matrix4.js +538 -0
  19. package/dist/classes/pose.d.ts +40 -0
  20. package/dist/classes/pose.d.ts.map +1 -0
  21. package/dist/classes/pose.js +109 -0
  22. package/dist/classes/quaternion.d.ts +63 -0
  23. package/dist/classes/quaternion.d.ts.map +1 -0
  24. package/dist/classes/quaternion.js +262 -0
  25. package/dist/classes/spherical-coordinates.d.ts +60 -0
  26. package/dist/classes/spherical-coordinates.d.ts.map +1 -0
  27. package/dist/classes/spherical-coordinates.js +148 -0
  28. package/dist/classes/vector2.d.ts +55 -0
  29. package/dist/classes/vector2.d.ts.map +1 -0
  30. package/dist/classes/vector2.js +111 -0
  31. package/dist/classes/vector3.d.ts +56 -0
  32. package/dist/classes/vector3.d.ts.map +1 -0
  33. package/dist/classes/vector3.js +133 -0
  34. package/dist/classes/vector4.d.ts +41 -0
  35. package/dist/classes/vector4.d.ts.map +1 -0
  36. package/dist/classes/vector4.js +114 -0
  37. package/dist/es5/classes/base/math-array.js +57 -61
  38. package/dist/es5/classes/base/math-array.js.map +1 -1
  39. package/dist/es5/classes/base/matrix.js +0 -14
  40. package/dist/es5/classes/base/matrix.js.map +1 -1
  41. package/dist/es5/classes/base/vector.js +0 -12
  42. package/dist/es5/classes/base/vector.js.map +1 -1
  43. package/dist/es5/classes/euler.js +63 -49
  44. package/dist/es5/classes/euler.js.map +1 -1
  45. package/dist/es5/classes/matrix3.js +60 -33
  46. package/dist/es5/classes/matrix3.js.map +1 -1
  47. package/dist/es5/classes/matrix4.js +167 -164
  48. package/dist/es5/classes/matrix4.js.map +1 -1
  49. package/dist/es5/classes/pose.js +7 -6
  50. package/dist/es5/classes/pose.js.map +1 -1
  51. package/dist/es5/classes/quaternion.js +44 -36
  52. package/dist/es5/classes/quaternion.js.map +1 -1
  53. package/dist/es5/classes/spherical-coordinates.js +12 -8
  54. package/dist/es5/classes/spherical-coordinates.js.map +1 -1
  55. package/dist/es5/classes/vector2.js.map +1 -1
  56. package/dist/es5/classes/vector3.js +7 -2
  57. package/dist/es5/classes/vector3.js.map +1 -1
  58. package/dist/es5/classes/vector4.js +7 -2
  59. package/dist/es5/classes/vector4.js.map +1 -1
  60. package/dist/es5/docs/README.md +0 -0
  61. package/dist/es5/index.js +71 -89
  62. package/dist/es5/index.js.map +1 -1
  63. package/dist/es5/lib/assert.js.map +1 -1
  64. package/dist/es5/lib/common.js +40 -43
  65. package/dist/es5/lib/common.js.map +1 -1
  66. package/dist/es5/lib/gl-matrix-extras.js.map +1 -1
  67. package/dist/es5/lib/gl-matrix.d.js +2 -0
  68. package/dist/es5/lib/gl-matrix.d.js.map +1 -0
  69. package/dist/es5/lib/math-utils.js.map +1 -1
  70. package/dist/es5/lib/validators.js.map +1 -1
  71. package/dist/esm/classes/base/math-array.js +45 -47
  72. package/dist/esm/classes/base/math-array.js.map +1 -1
  73. package/dist/esm/classes/base/matrix.js +0 -11
  74. package/dist/esm/classes/base/matrix.js.map +1 -1
  75. package/dist/esm/classes/base/vector.js +0 -10
  76. package/dist/esm/classes/base/vector.js.map +1 -1
  77. package/dist/esm/classes/euler.js +61 -48
  78. package/dist/esm/classes/euler.js.map +1 -1
  79. package/dist/esm/classes/matrix3.js +55 -33
  80. package/dist/esm/classes/matrix3.js.map +1 -1
  81. package/dist/esm/classes/matrix4.js +156 -136
  82. package/dist/esm/classes/matrix4.js.map +1 -1
  83. package/dist/esm/classes/pose.js +8 -4
  84. package/dist/esm/classes/pose.js.map +1 -1
  85. package/dist/esm/classes/quaternion.js +37 -27
  86. package/dist/esm/classes/quaternion.js.map +1 -1
  87. package/dist/esm/classes/spherical-coordinates.js +15 -5
  88. package/dist/esm/classes/spherical-coordinates.js.map +1 -1
  89. package/dist/esm/classes/vector2.js.map +1 -1
  90. package/dist/esm/classes/vector3.js +7 -2
  91. package/dist/esm/classes/vector3.js.map +1 -1
  92. package/dist/esm/classes/vector4.js +7 -2
  93. package/dist/esm/classes/vector4.js.map +1 -1
  94. package/dist/esm/docs/README.md +0 -0
  95. package/dist/esm/index.js +2 -13
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/lib/assert.js.map +1 -1
  98. package/dist/esm/lib/common.js +41 -44
  99. package/dist/esm/lib/common.js.map +1 -1
  100. package/dist/esm/lib/gl-matrix-extras.js.map +1 -1
  101. package/dist/esm/lib/gl-matrix.d.js +2 -0
  102. package/dist/esm/lib/gl-matrix.d.js.map +1 -0
  103. package/dist/esm/lib/math-utils.js.map +1 -1
  104. package/dist/esm/lib/validators.js.map +1 -1
  105. package/dist/index.d.ts +17 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +24 -0
  108. package/dist/lib/assert.d.ts +2 -0
  109. package/dist/lib/assert.d.ts.map +1 -0
  110. package/dist/lib/assert.js +5 -0
  111. package/dist/lib/common.d.ts +93 -0
  112. package/dist/lib/common.d.ts.map +1 -0
  113. package/dist/lib/common.js +210 -0
  114. package/dist/lib/gl-matrix-extras.d.ts +7 -0
  115. package/dist/lib/gl-matrix-extras.d.ts.map +1 -0
  116. package/dist/lib/gl-matrix-extras.js +49 -0
  117. package/dist/lib/math-utils.d.ts +28 -0
  118. package/dist/lib/math-utils.d.ts.map +1 -0
  119. package/dist/lib/math-utils.js +28 -0
  120. package/dist/lib/validators.d.ts +6 -0
  121. package/dist/lib/validators.d.ts.map +1 -0
  122. package/dist/lib/validators.js +33 -0
  123. package/package.json +5 -4
  124. package/src/classes/base/math-array.ts +265 -0
  125. package/src/classes/base/{matrix.js → matrix.ts} +15 -19
  126. package/src/classes/base/{vector.js → vector.ts} +47 -54
  127. package/src/classes/{euler.js → euler.ts} +121 -221
  128. package/src/classes/matrix3.ts +253 -0
  129. package/src/classes/matrix4.ts +668 -0
  130. package/src/classes/{pose.js → pose.ts} +52 -49
  131. package/src/classes/{quaternion.js → quaternion.ts} +107 -95
  132. package/src/classes/{spherical-coordinates.js → spherical-coordinates.ts} +84 -54
  133. package/src/classes/vector2.ts +127 -0
  134. package/src/classes/{vector3.js → vector3.ts} +43 -55
  135. package/src/classes/{vector4.js → vector4.ts} +44 -48
  136. package/src/docs/README.md +0 -0
  137. package/{dist/esm/index.d.ts → src/index.ts} +32 -34
  138. package/src/lib/{assert.js → assert.ts} +1 -1
  139. package/src/lib/common.ts +304 -0
  140. package/src/lib/{gl-matrix-extras.js → gl-matrix-extras.ts} +26 -5
  141. package/src/lib/gl-matrix.d.ts +266 -0
  142. package/src/lib/{math-utils.js → math-utils.ts} +0 -0
  143. package/src/lib/{validators.js → validators.ts} +10 -6
  144. package/dist/es5/addons/polygon.d.ts +0 -17
  145. package/dist/es5/classes/base/math-array.d.ts +0 -56
  146. package/dist/es5/classes/base/matrix.d.ts +0 -15
  147. package/dist/es5/classes/base/vector.d.ts +0 -45
  148. package/dist/es5/classes/euler.d.ts +0 -92
  149. package/dist/es5/classes/matrix3.d.ts +0 -91
  150. package/dist/es5/classes/matrix4.d.ts +0 -161
  151. package/dist/es5/classes/pose.d.ts +0 -92
  152. package/dist/es5/classes/quaternion.d.ts +0 -107
  153. package/dist/es5/classes/spherical-coordinates.d.ts +0 -87
  154. package/dist/es5/classes/vector2.d.ts +0 -65
  155. package/dist/es5/classes/vector3.d.ts +0 -65
  156. package/dist/es5/classes/vector4.d.ts +0 -34
  157. package/dist/es5/index.d.ts +0 -54
  158. package/dist/es5/lib/common.d.ts +0 -80
  159. package/dist/esm/addons/polygon.d.ts +0 -17
  160. package/dist/esm/classes/base/math-array.d.ts +0 -56
  161. package/dist/esm/classes/base/matrix.d.ts +0 -15
  162. package/dist/esm/classes/base/vector.d.ts +0 -45
  163. package/dist/esm/classes/euler.d.ts +0 -92
  164. package/dist/esm/classes/matrix3.d.ts +0 -91
  165. package/dist/esm/classes/matrix4.d.ts +0 -161
  166. package/dist/esm/classes/pose.d.ts +0 -92
  167. package/dist/esm/classes/quaternion.d.ts +0 -107
  168. package/dist/esm/classes/spherical-coordinates.d.ts +0 -87
  169. package/dist/esm/classes/vector2.d.ts +0 -65
  170. package/dist/esm/classes/vector3.d.ts +0 -65
  171. package/dist/esm/classes/vector4.d.ts +0 -34
  172. package/dist/esm/lib/common.d.ts +0 -80
  173. package/src/addons/polygon.d.ts +0 -17
  174. package/src/classes/base/math-array.d.ts +0 -56
  175. package/src/classes/base/math-array.js +0 -250
  176. package/src/classes/base/matrix.d.ts +0 -15
  177. package/src/classes/base/vector.d.ts +0 -45
  178. package/src/classes/euler.d.ts +0 -92
  179. package/src/classes/matrix3.d.ts +0 -91
  180. package/src/classes/matrix3.js +0 -225
  181. package/src/classes/matrix4.d.ts +0 -161
  182. package/src/classes/matrix4.js +0 -530
  183. package/src/classes/pose.d.ts +0 -92
  184. package/src/classes/quaternion.d.ts +0 -107
  185. package/src/classes/spherical-coordinates.d.ts +0 -87
  186. package/src/classes/vector2.d.ts +0 -65
  187. package/src/classes/vector2.js +0 -122
  188. package/src/classes/vector3.d.ts +0 -65
  189. package/src/classes/vector4.d.ts +0 -34
  190. package/src/index.d.ts +0 -54
  191. package/src/index.js +0 -86
  192. package/src/lib/common.d.ts +0 -80
  193. package/src/lib/common.js +0 -222
@@ -0,0 +1,111 @@
1
+ // Copyright (c) 2017 Uber Technologies, Inc.
2
+ // MIT License
3
+ import Vector from './base/vector';
4
+ import { config, isArray } from '../lib/common';
5
+ import { checkNumber } from '../lib/validators';
6
+ import * as vec2 from 'gl-matrix/vec2';
7
+ /* eslint-disable camelcase */
8
+ import { vec2_transformMat4AsVector } from '../lib/gl-matrix-extras';
9
+ /**
10
+ * Two-element vector class.
11
+ * Subclass of Array<number>
12
+ */
13
+ export default class Vector2 extends Vector {
14
+ // Creates a new, empty vec2
15
+ constructor(x = 0, y = 0) {
16
+ // PERF NOTE: initialize elements as double precision numbers
17
+ super(2); // -0, -0);
18
+ if (isArray(x) && arguments.length === 1) {
19
+ this.copy(x);
20
+ }
21
+ else {
22
+ if (config.debug) {
23
+ checkNumber(x);
24
+ checkNumber(y);
25
+ }
26
+ this[0] = x;
27
+ this[1] = y;
28
+ }
29
+ }
30
+ set(x, y) {
31
+ this[0] = x;
32
+ this[1] = y;
33
+ return this.check();
34
+ }
35
+ copy(array) {
36
+ this[0] = array[0];
37
+ this[1] = array[1];
38
+ return this.check();
39
+ }
40
+ fromObject(object) {
41
+ if (config.debug) {
42
+ checkNumber(object.x);
43
+ checkNumber(object.y);
44
+ }
45
+ this[0] = object.x;
46
+ this[1] = object.y;
47
+ return this.check();
48
+ }
49
+ toObject(object) {
50
+ object.x = this[0];
51
+ object.y = this[1];
52
+ return object;
53
+ }
54
+ // Getters/setters
55
+ get ELEMENTS() {
56
+ return 2;
57
+ }
58
+ /**
59
+ * Returns angle from x axis
60
+ * @returns
61
+ */
62
+ horizontalAngle() {
63
+ return Math.atan2(this.y, this.x);
64
+ }
65
+ /**
66
+ * Returns angle from y axis
67
+ * @returns
68
+ */
69
+ verticalAngle() {
70
+ return Math.atan2(this.x, this.y);
71
+ }
72
+ // Transforms
73
+ /**
74
+ * Transforms as point
75
+ * @param matrix4
76
+ * @returns
77
+ */
78
+ transform(matrix4) {
79
+ return this.transformAsPoint(matrix4);
80
+ }
81
+ /**
82
+ * transforms as point (4th component is implicitly 1)
83
+ * @param matrix4
84
+ * @returns
85
+ */
86
+ transformAsPoint(matrix4) {
87
+ vec2.transformMat4(this, this, matrix4);
88
+ return this.check();
89
+ }
90
+ /**
91
+ * transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)
92
+ * @param matrix4
93
+ * @returns
94
+ */
95
+ transformAsVector(matrix4) {
96
+ vec2_transformMat4AsVector(this, this, matrix4);
97
+ return this.check();
98
+ }
99
+ transformByMatrix3(matrix3) {
100
+ vec2.transformMat3(this, this, matrix3);
101
+ return this.check();
102
+ }
103
+ transformByMatrix2x3(matrix2x3) {
104
+ vec2.transformMat2d(this, this, matrix2x3);
105
+ return this.check();
106
+ }
107
+ transformByMatrix2(matrix2) {
108
+ vec2.transformMat2(this, this, matrix2);
109
+ return this.check();
110
+ }
111
+ }
@@ -0,0 +1,56 @@
1
+ import { NumericArray } from '@math.gl/types';
2
+ import Vector from './base/vector';
3
+ /**
4
+ * Three-element vector class.
5
+ * Subclass of Array<number>
6
+ */
7
+ export default class Vector3 extends Vector {
8
+ static get ZERO(): Vector3;
9
+ /**
10
+ * @class
11
+ * @param x
12
+ * @param y
13
+ * @param z
14
+ */
15
+ constructor(x?: number | Readonly<NumericArray>, y?: number, z?: number);
16
+ set(x: number, y: number, z: number): this;
17
+ copy(array: Readonly<NumericArray>): this;
18
+ fromObject(object: {
19
+ x: number;
20
+ y: number;
21
+ z: number;
22
+ }): this;
23
+ toObject(object: {
24
+ x?: number;
25
+ y?: number;
26
+ z?: number;
27
+ }): {
28
+ x: number;
29
+ y: number;
30
+ z: number;
31
+ };
32
+ get ELEMENTS(): number;
33
+ get z(): number;
34
+ set z(value: number);
35
+ angle(vector: Readonly<NumericArray>): number;
36
+ cross(vector: Readonly<NumericArray>): this;
37
+ rotateX({ radians, origin }: {
38
+ radians: number;
39
+ origin?: Readonly<NumericArray>;
40
+ }): this;
41
+ rotateY({ radians, origin }: {
42
+ radians: number;
43
+ origin?: Readonly<NumericArray>;
44
+ }): this;
45
+ rotateZ({ radians, origin }: {
46
+ radians: number;
47
+ origin?: Readonly<NumericArray>;
48
+ }): this;
49
+ transform(matrix4: Readonly<NumericArray>): this;
50
+ transformAsPoint(matrix4: Readonly<NumericArray>): this;
51
+ transformAsVector(matrix4: Readonly<NumericArray>): this;
52
+ transformByMatrix3(matrix3: Readonly<NumericArray>): this;
53
+ transformByMatrix2(matrix2: Readonly<NumericArray>): this;
54
+ transformByQuaternion(quaternion: Readonly<NumericArray>): this;
55
+ }
56
+ //# sourceMappingURL=vector3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector3.d.ts","sourceRoot":"","sources":["../../src/classes/vector3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,MAAM,MAAM,eAAe,CAAC;AAWnC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IACzC,MAAM,KAAK,IAAI,IAAI,OAAO,CAMzB;IAED;;;;;OAKG;gBACS,CAAC,GAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAK,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU;IAmBhF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1C,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAOzC,UAAU,CAAC,MAAM,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI;IAY3D,QAAQ,CAAC,MAAM,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC;IASzF,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,CAAC,IAAI,MAAM,CAEd;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAID,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,MAAM;IAM7C,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAK3C,OAAO,CAAC,EAAC,OAAO,EAAE,MAAe,EAAC,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAAC,GAAG,IAAI;IAK7F,OAAO,CAAC,EAAC,OAAO,EAAE,MAAe,EAAC,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAAC,GAAG,IAAI;IAK7F,OAAO,CAAC,EAAC,OAAO,EAAE,MAAe,EAAC,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;KAAC,GAAG,IAAI;IAQ7F,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKhD,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAMvD,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKxD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKzD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKzD,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;CAIhE"}
@@ -0,0 +1,133 @@
1
+ import Vector from './base/vector';
2
+ import { config, isArray } from '../lib/common';
3
+ import { checkNumber } from '../lib/validators';
4
+ import * as vec3 from 'gl-matrix/vec3';
5
+ /* eslint-disable camelcase */
6
+ import { vec3_transformMat2, vec3_transformMat4AsVector } from '../lib/gl-matrix-extras';
7
+ const ORIGIN = [0, 0, 0];
8
+ let ZERO;
9
+ /**
10
+ * Three-element vector class.
11
+ * Subclass of Array<number>
12
+ */
13
+ export default class Vector3 extends Vector {
14
+ static get ZERO() {
15
+ if (!ZERO) {
16
+ ZERO = new Vector3(0, 0, 0);
17
+ Object.freeze(ZERO);
18
+ }
19
+ return ZERO;
20
+ }
21
+ /**
22
+ * @class
23
+ * @param x
24
+ * @param y
25
+ * @param z
26
+ */
27
+ constructor(x = 0, y = 0, z = 0) {
28
+ // PERF NOTE: initialize elements as double precision numbers
29
+ super(-0, -0, -0);
30
+ if (arguments.length === 1 && isArray(x)) {
31
+ this.copy(x);
32
+ }
33
+ else {
34
+ // this.set(x, y, z);
35
+ if (config.debug) {
36
+ checkNumber(x);
37
+ checkNumber(y);
38
+ checkNumber(z);
39
+ }
40
+ // @ts-expect-error TS2412: Property '0' of type 'number | [number, number, number]' is not assignable to numeric index type 'number'
41
+ this[0] = x;
42
+ this[1] = y;
43
+ this[2] = z;
44
+ }
45
+ }
46
+ set(x, y, z) {
47
+ this[0] = x;
48
+ this[1] = y;
49
+ this[2] = z;
50
+ return this.check();
51
+ }
52
+ copy(array) {
53
+ this[0] = array[0];
54
+ this[1] = array[1];
55
+ this[2] = array[2];
56
+ return this.check();
57
+ }
58
+ fromObject(object) {
59
+ if (config.debug) {
60
+ checkNumber(object.x);
61
+ checkNumber(object.y);
62
+ checkNumber(object.z);
63
+ }
64
+ this[0] = object.x;
65
+ this[1] = object.y;
66
+ this[2] = object.z;
67
+ return this.check();
68
+ }
69
+ toObject(object) {
70
+ object.x = this[0];
71
+ object.y = this[1];
72
+ object.z = this[2];
73
+ return object;
74
+ }
75
+ // Getters/setters
76
+ get ELEMENTS() {
77
+ return 3;
78
+ }
79
+ get z() {
80
+ return this[2];
81
+ }
82
+ set z(value) {
83
+ this[2] = checkNumber(value);
84
+ }
85
+ // ACCESSORS
86
+ angle(vector) {
87
+ return vec3.angle(this, vector);
88
+ }
89
+ // MODIFIERS
90
+ cross(vector) {
91
+ vec3.cross(this, this, vector);
92
+ return this.check();
93
+ }
94
+ rotateX({ radians, origin = ORIGIN }) {
95
+ vec3.rotateX(this, this, origin, radians);
96
+ return this.check();
97
+ }
98
+ rotateY({ radians, origin = ORIGIN }) {
99
+ vec3.rotateY(this, this, origin, radians);
100
+ return this.check();
101
+ }
102
+ rotateZ({ radians, origin = ORIGIN }) {
103
+ vec3.rotateZ(this, this, origin, radians);
104
+ return this.check();
105
+ }
106
+ // Transforms
107
+ // transforms as point (4th component is implicitly 1)
108
+ transform(matrix4) {
109
+ return this.transformAsPoint(matrix4);
110
+ }
111
+ // transforms as point (4th component is implicitly 1)
112
+ transformAsPoint(matrix4) {
113
+ vec3.transformMat4(this, this, matrix4);
114
+ return this.check();
115
+ }
116
+ // transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)
117
+ transformAsVector(matrix4) {
118
+ vec3_transformMat4AsVector(this, this, matrix4);
119
+ return this.check();
120
+ }
121
+ transformByMatrix3(matrix3) {
122
+ vec3.transformMat3(this, this, matrix3);
123
+ return this.check();
124
+ }
125
+ transformByMatrix2(matrix2) {
126
+ vec3_transformMat2(this, this, matrix2);
127
+ return this.check();
128
+ }
129
+ transformByQuaternion(quaternion) {
130
+ vec3.transformQuat(this, this, quaternion);
131
+ return this.check();
132
+ }
133
+ }
@@ -0,0 +1,41 @@
1
+ import Vector from './base/vector';
2
+ import { NumericArray } from '@math.gl/types';
3
+ import type Matrix4 from './matrix4';
4
+ /**
5
+ * Four-element vector class.
6
+ * Subclass of Array<number>
7
+ */
8
+ export default class Vector4 extends Vector {
9
+ static get ZERO(): Vector4;
10
+ constructor(x?: number | Readonly<NumericArray>, y?: number, z?: number, w?: number);
11
+ set(x: number, y: number, z: number, w: number): this;
12
+ copy(array: Readonly<NumericArray>): this;
13
+ fromObject(object: {
14
+ x: number;
15
+ y: number;
16
+ z: number;
17
+ w: number;
18
+ }): this;
19
+ toObject(object: {
20
+ x?: number;
21
+ y?: number;
22
+ z?: number;
23
+ w?: number;
24
+ }): {
25
+ x: number;
26
+ y: number;
27
+ z: number;
28
+ w: number;
29
+ };
30
+ get ELEMENTS(): number;
31
+ get z(): number;
32
+ set z(value: number);
33
+ get w(): number;
34
+ set w(value: number);
35
+ transform(matrix4: Readonly<NumericArray>): this;
36
+ transformByMatrix3(matrix3: Readonly<NumericArray>): this;
37
+ transformByMatrix2(matrix2: Readonly<NumericArray>): this;
38
+ transformByQuaternion(quaternion: Readonly<NumericArray>): this;
39
+ applyMatrix4(m: Matrix4): this;
40
+ }
41
+ //# sourceMappingURL=vector4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector4.d.ts","sourceRoot":"","sources":["../../src/classes/vector4.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,eAAe,CAAC;AAMnC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAIrC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM;IACzC,MAAM,KAAK,IAAI,IAAI,OAAO,CAMzB;gBAEW,CAAC,GAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAK,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU;IAoB/F,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAQrD,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAQzC,UAAU,CAAC,MAAM,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI;IActE,QAAQ,CAAC,MAAM,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG;QAClE,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX;IAeD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,CAAC,IAAI,MAAM,CAEd;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IACD,IAAI,CAAC,IAAI,MAAM,CAEd;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKhD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKzD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAKzD,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;IAM/D,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;CAI/B"}
@@ -0,0 +1,114 @@
1
+ // Copyright (c) 2017 Uber Technologies, Inc.
2
+ // MIT License
3
+ import Vector from './base/vector';
4
+ import { config, isArray } from '../lib/common';
5
+ import { checkNumber } from '../lib/validators';
6
+ import * as vec4 from 'gl-matrix/vec3';
7
+ /* eslint-disable camelcase */
8
+ import { vec4_transformMat2, vec4_transformMat3 } from '../lib/gl-matrix-extras';
9
+ let ZERO;
10
+ /**
11
+ * Four-element vector class.
12
+ * Subclass of Array<number>
13
+ */
14
+ export default class Vector4 extends Vector {
15
+ static get ZERO() {
16
+ if (!ZERO) {
17
+ ZERO = new Vector4(0, 0, 0, 0);
18
+ Object.freeze(ZERO);
19
+ }
20
+ return ZERO;
21
+ }
22
+ constructor(x = 0, y = 0, z = 0, w = 0) {
23
+ // PERF NOTE: initialize elements as double precision numbers
24
+ super(-0, -0, -0, -0);
25
+ if (isArray(x) && arguments.length === 1) {
26
+ this.copy(x);
27
+ }
28
+ else {
29
+ // this.set(x, y, z, w);
30
+ if (config.debug) {
31
+ checkNumber(x);
32
+ checkNumber(y);
33
+ checkNumber(z);
34
+ checkNumber(w);
35
+ }
36
+ this[0] = x;
37
+ this[1] = y;
38
+ this[2] = z;
39
+ this[3] = w;
40
+ }
41
+ }
42
+ set(x, y, z, w) {
43
+ this[0] = x;
44
+ this[1] = y;
45
+ this[2] = z;
46
+ this[3] = w;
47
+ return this.check();
48
+ }
49
+ copy(array) {
50
+ this[0] = array[0];
51
+ this[1] = array[1];
52
+ this[2] = array[2];
53
+ this[3] = array[3];
54
+ return this.check();
55
+ }
56
+ fromObject(object) {
57
+ if (config.debug) {
58
+ checkNumber(object.x);
59
+ checkNumber(object.y);
60
+ checkNumber(object.z);
61
+ checkNumber(object.w);
62
+ }
63
+ this[0] = object.x;
64
+ this[1] = object.y;
65
+ this[2] = object.z;
66
+ this[3] = object.w;
67
+ return this;
68
+ }
69
+ toObject(object) {
70
+ object.x = this[0];
71
+ object.y = this[1];
72
+ object.z = this[2];
73
+ object.w = this[3];
74
+ return object;
75
+ }
76
+ // Getters/setters
77
+ /* eslint-disable no-multi-spaces, brace-style, no-return-assign */
78
+ get ELEMENTS() {
79
+ return 4;
80
+ }
81
+ get z() {
82
+ return this[2];
83
+ }
84
+ set z(value) {
85
+ this[2] = checkNumber(value);
86
+ }
87
+ get w() {
88
+ return this[3];
89
+ }
90
+ set w(value) {
91
+ this[3] = checkNumber(value);
92
+ }
93
+ transform(matrix4) {
94
+ vec4.transformMat4(this, this, matrix4);
95
+ return this.check();
96
+ }
97
+ transformByMatrix3(matrix3) {
98
+ vec4_transformMat3(this, this, matrix3);
99
+ return this.check();
100
+ }
101
+ transformByMatrix2(matrix2) {
102
+ vec4_transformMat2(this, this, matrix2);
103
+ return this.check();
104
+ }
105
+ transformByQuaternion(quaternion) {
106
+ vec4.transformQuat(this, this, quaternion);
107
+ return this.check();
108
+ }
109
+ // three.js compatibility
110
+ applyMatrix4(m) {
111
+ m.transform(this, this);
112
+ return this;
113
+ }
114
+ }
@@ -19,8 +19,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
19
19
 
20
20
  var _common = require("../../lib/common");
21
21
 
22
- var _assert = _interopRequireDefault(require("../../lib/assert"));
23
-
24
22
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
23
 
26
24
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -61,21 +59,10 @@ var MathArray = function (_extendableBuiltin2) {
61
59
  }
62
60
 
63
61
  (0, _createClass2.default)(MathArray, [{
64
- key: "ELEMENTS",
65
- get: function get() {
66
- (0, _assert.default)(false);
67
- return 0;
68
- }
69
- }, {
70
62
  key: "clone",
71
63
  value: function clone() {
72
64
  return new this.constructor().copy(this);
73
65
  }
74
- }, {
75
- key: "from",
76
- value: function from(arrayOrObject) {
77
- return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
78
- }
79
66
  }, {
80
67
  key: "fromArray",
81
68
  value: function fromArray(array) {
@@ -87,6 +74,23 @@ var MathArray = function (_extendableBuiltin2) {
87
74
 
88
75
  return this.check();
89
76
  }
77
+ }, {
78
+ key: "toArray",
79
+ value: function toArray() {
80
+ var targetArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
81
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
82
+
83
+ for (var i = 0; i < this.ELEMENTS; ++i) {
84
+ targetArray[offset + i] = this[i];
85
+ }
86
+
87
+ return targetArray;
88
+ }
89
+ }, {
90
+ key: "from",
91
+ value: function from(arrayOrObject) {
92
+ return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
93
+ }
90
94
  }, {
91
95
  key: "to",
92
96
  value: function to(arrayOrObject) {
@@ -101,18 +105,6 @@ var MathArray = function (_extendableBuiltin2) {
101
105
  value: function toTarget(target) {
102
106
  return target ? this.to(target) : this;
103
107
  }
104
- }, {
105
- key: "toArray",
106
- value: function toArray() {
107
- var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
108
- var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
109
-
110
- for (var i = 0; i < this.ELEMENTS; ++i) {
111
- array[offset + i] = this[i];
112
- }
113
-
114
- return array;
115
- }
116
108
  }, {
117
109
  key: "toFloat32Array",
118
110
  value: function toFloat32Array() {
@@ -177,9 +169,7 @@ var MathArray = function (_extendableBuiltin2) {
177
169
  key: "lerp",
178
170
  value: function lerp(a, b, t) {
179
171
  if (t === undefined) {
180
- t = b;
181
- b = a;
182
- a = this;
172
+ return this.lerp(this, a, b);
183
173
  }
184
174
 
185
175
  for (var i = 0; i < this.ELEMENTS; ++i) {
@@ -224,10 +214,10 @@ var MathArray = function (_extendableBuiltin2) {
224
214
  }
225
215
 
226
216
  for (var _i = 0, _vectors = vectors; _i < _vectors.length; _i++) {
227
- var vector = _vectors[_i];
217
+ var _vector = _vectors[_i];
228
218
 
229
219
  for (var i = 0; i < this.ELEMENTS; ++i) {
230
- this[i] += vector[i];
220
+ this[i] += _vector[i];
231
221
  }
232
222
  }
233
223
 
@@ -241,10 +231,10 @@ var MathArray = function (_extendableBuiltin2) {
241
231
  }
242
232
 
243
233
  for (var _i2 = 0, _vectors2 = vectors; _i2 < _vectors2.length; _i2++) {
244
- var vector = _vectors2[_i2];
234
+ var _vector2 = _vectors2[_i2];
245
235
 
246
236
  for (var i = 0; i < this.ELEMENTS; ++i) {
247
- this[i] -= vector[i];
237
+ this[i] -= _vector2[i];
248
238
  }
249
239
  }
250
240
 
@@ -253,16 +243,47 @@ var MathArray = function (_extendableBuiltin2) {
253
243
  }, {
254
244
  key: "scale",
255
245
  value: function scale(_scale) {
256
- if (Array.isArray(_scale)) {
257
- return this.multiply(_scale);
246
+ if (typeof _scale === 'number') {
247
+ for (var i = 0; i < this.ELEMENTS; ++i) {
248
+ this[i] *= _scale;
249
+ }
250
+ } else {
251
+ for (var _i3 = 0; _i3 < this.ELEMENTS && _i3 < _scale.length; ++_i3) {
252
+ this[_i3] *= _scale[_i3];
253
+ }
258
254
  }
259
255
 
256
+ return this.check();
257
+ }
258
+ }, {
259
+ key: "multiplyByScalar",
260
+ value: function multiplyByScalar(scalar) {
260
261
  for (var i = 0; i < this.ELEMENTS; ++i) {
261
- this[i] *= _scale;
262
+ this[i] *= scalar;
262
263
  }
263
264
 
264
265
  return this.check();
265
266
  }
267
+ }, {
268
+ key: "check",
269
+ value: function check() {
270
+ if (_common.config.debug && !this.validate()) {
271
+ throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
272
+ }
273
+
274
+ return this;
275
+ }
276
+ }, {
277
+ key: "validate",
278
+ value: function validate() {
279
+ var valid = this.length === this.ELEMENTS;
280
+
281
+ for (var i = 0; i < this.ELEMENTS; ++i) {
282
+ valid = valid && Number.isFinite(this[i]);
283
+ }
284
+
285
+ return valid;
286
+ }
266
287
  }, {
267
288
  key: "sub",
268
289
  value: function sub(a) {
@@ -303,7 +324,7 @@ var MathArray = function (_extendableBuiltin2) {
303
324
  }, {
304
325
  key: "divideScalar",
305
326
  value: function divideScalar(a) {
306
- return this.scale(1 / a);
327
+ return this.multiplyByScalar(1 / a);
307
328
  }
308
329
  }, {
309
330
  key: "clampScalar",
@@ -314,36 +335,11 @@ var MathArray = function (_extendableBuiltin2) {
314
335
 
315
336
  return this.check();
316
337
  }
317
- }, {
318
- key: "multiplyByScalar",
319
- value: function multiplyByScalar(scalar) {
320
- return this.scale(scalar);
321
- }
322
338
  }, {
323
339
  key: "elements",
324
340
  get: function get() {
325
341
  return this;
326
342
  }
327
- }, {
328
- key: "check",
329
- value: function check() {
330
- if (_common.config.debug && !this.validate()) {
331
- throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
332
- }
333
-
334
- return this;
335
- }
336
- }, {
337
- key: "validate",
338
- value: function validate() {
339
- var valid = this.length === this.ELEMENTS;
340
-
341
- for (var i = 0; i < this.ELEMENTS; ++i) {
342
- valid = valid && Number.isFinite(this[i]);
343
- }
344
-
345
- return valid;
346
- }
347
343
  }]);
348
344
  return MathArray;
349
345
  }(_extendableBuiltin(Array));