@ntf/math 1.0.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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -0
  3. package/dist/cjs/algebra/function.js +7 -0
  4. package/dist/cjs/algebra/function.js.map +1 -0
  5. package/dist/cjs/algebra/linear.js +42 -0
  6. package/dist/cjs/algebra/linear.js.map +1 -0
  7. package/dist/cjs/algebra/quad.js +53 -0
  8. package/dist/cjs/algebra/quad.js.map +1 -0
  9. package/dist/cjs/common/error.js +14 -0
  10. package/dist/cjs/common/error.js.map +1 -0
  11. package/dist/cjs/common/sign.js +14 -0
  12. package/dist/cjs/common/sign.js.map +1 -0
  13. package/dist/cjs/common/types.js +35 -0
  14. package/dist/cjs/common/types.js.map +1 -0
  15. package/dist/cjs/geometry/angle.js +11 -0
  16. package/dist/cjs/geometry/angle.js.map +1 -0
  17. package/dist/cjs/geometry/bbox.js +87 -0
  18. package/dist/cjs/geometry/bbox.js.map +1 -0
  19. package/dist/cjs/geometry/circle.js +64 -0
  20. package/dist/cjs/geometry/circle.js.map +1 -0
  21. package/dist/cjs/geometry/object.js +3 -0
  22. package/dist/cjs/geometry/object.js.map +1 -0
  23. package/dist/cjs/geometry/rectangle.js +77 -0
  24. package/dist/cjs/geometry/rectangle.js.map +1 -0
  25. package/dist/cjs/geometry/square.js +66 -0
  26. package/dist/cjs/geometry/square.js.map +1 -0
  27. package/dist/cjs/geometry/triangle.js +65 -0
  28. package/dist/cjs/geometry/triangle.js.map +1 -0
  29. package/dist/cjs/index.js +58 -0
  30. package/dist/cjs/index.js.map +1 -0
  31. package/dist/cjs/matrices/mat3.js +184 -0
  32. package/dist/cjs/matrices/mat3.js.map +1 -0
  33. package/dist/cjs/matrices/mat4.js +262 -0
  34. package/dist/cjs/matrices/mat4.js.map +1 -0
  35. package/dist/cjs/quaternion.js +196 -0
  36. package/dist/cjs/quaternion.js.map +1 -0
  37. package/dist/cjs/vectors/vec2.js +151 -0
  38. package/dist/cjs/vectors/vec2.js.map +1 -0
  39. package/dist/cjs/vectors/vec3.js +148 -0
  40. package/dist/cjs/vectors/vec3.js.map +1 -0
  41. package/dist/esm/algebra/function.js +3 -0
  42. package/dist/esm/algebra/function.js.map +1 -0
  43. package/dist/esm/algebra/linear.js +38 -0
  44. package/dist/esm/algebra/linear.js.map +1 -0
  45. package/dist/esm/algebra/quad.js +49 -0
  46. package/dist/esm/algebra/quad.js.map +1 -0
  47. package/dist/esm/common/error.js +10 -0
  48. package/dist/esm/common/error.js.map +1 -0
  49. package/dist/esm/common/sign.js +10 -0
  50. package/dist/esm/common/sign.js.map +1 -0
  51. package/dist/esm/common/types.js +26 -0
  52. package/dist/esm/common/types.js.map +1 -0
  53. package/dist/esm/geometry/angle.js +5 -0
  54. package/dist/esm/geometry/angle.js.map +1 -0
  55. package/dist/esm/geometry/bbox.js +83 -0
  56. package/dist/esm/geometry/bbox.js.map +1 -0
  57. package/dist/esm/geometry/circle.js +60 -0
  58. package/dist/esm/geometry/circle.js.map +1 -0
  59. package/dist/esm/geometry/object.js +2 -0
  60. package/dist/esm/geometry/object.js.map +1 -0
  61. package/dist/esm/geometry/rectangle.js +73 -0
  62. package/dist/esm/geometry/rectangle.js.map +1 -0
  63. package/dist/esm/geometry/square.js +62 -0
  64. package/dist/esm/geometry/square.js.map +1 -0
  65. package/dist/esm/geometry/triangle.js +59 -0
  66. package/dist/esm/geometry/triangle.js.map +1 -0
  67. package/dist/esm/index.js +39 -0
  68. package/dist/esm/index.js.map +1 -0
  69. package/dist/esm/matrices/mat3.js +180 -0
  70. package/dist/esm/matrices/mat3.js.map +1 -0
  71. package/dist/esm/matrices/mat4.js +258 -0
  72. package/dist/esm/matrices/mat4.js.map +1 -0
  73. package/dist/esm/quaternion.js +192 -0
  74. package/dist/esm/quaternion.js.map +1 -0
  75. package/dist/esm/vectors/vec2.js +147 -0
  76. package/dist/esm/vectors/vec2.js.map +1 -0
  77. package/dist/esm/vectors/vec3.js +144 -0
  78. package/dist/esm/vectors/vec3.js.map +1 -0
  79. package/dist/types/algebra/function.d.ts +6 -0
  80. package/dist/types/algebra/function.d.ts.map +1 -0
  81. package/dist/types/algebra/linear.d.ts +14 -0
  82. package/dist/types/algebra/linear.d.ts.map +1 -0
  83. package/dist/types/algebra/quad.d.ts +18 -0
  84. package/dist/types/algebra/quad.d.ts.map +1 -0
  85. package/dist/types/common/error.d.ts +6 -0
  86. package/dist/types/common/error.d.ts.map +1 -0
  87. package/dist/types/common/sign.d.ts +2 -0
  88. package/dist/types/common/sign.d.ts.map +1 -0
  89. package/dist/types/common/types.d.ts +21 -0
  90. package/dist/types/common/types.d.ts.map +1 -0
  91. package/dist/types/geometry/angle.d.ts +5 -0
  92. package/dist/types/geometry/angle.d.ts.map +1 -0
  93. package/dist/types/geometry/bbox.d.ts +35 -0
  94. package/dist/types/geometry/bbox.d.ts.map +1 -0
  95. package/dist/types/geometry/circle.d.ts +26 -0
  96. package/dist/types/geometry/circle.d.ts.map +1 -0
  97. package/dist/types/geometry/object.d.ts +5 -0
  98. package/dist/types/geometry/object.d.ts.map +1 -0
  99. package/dist/types/geometry/rectangle.d.ts +31 -0
  100. package/dist/types/geometry/rectangle.d.ts.map +1 -0
  101. package/dist/types/geometry/square.d.ts +27 -0
  102. package/dist/types/geometry/square.d.ts.map +1 -0
  103. package/dist/types/geometry/triangle.d.ts +42 -0
  104. package/dist/types/geometry/triangle.d.ts.map +1 -0
  105. package/dist/types/index.d.ts +22 -0
  106. package/dist/types/index.d.ts.map +1 -0
  107. package/dist/types/matrices/mat3.d.ts +58 -0
  108. package/dist/types/matrices/mat3.d.ts.map +1 -0
  109. package/dist/types/matrices/mat4.d.ts +84 -0
  110. package/dist/types/matrices/mat4.d.ts.map +1 -0
  111. package/dist/types/quaternion.d.ts +49 -0
  112. package/dist/types/quaternion.d.ts.map +1 -0
  113. package/dist/types/vectors/vec2.d.ts +55 -0
  114. package/dist/types/vectors/vec2.d.ts.map +1 -0
  115. package/dist/types/vectors/vec3.d.ts +53 -0
  116. package/dist/types/vectors/vec3.d.ts.map +1 -0
  117. package/package.json +40 -0
@@ -0,0 +1,180 @@
1
+ import { ResolveError } from "../common/error.js";
2
+ import { check_array, check_number, check_number_array, check_string, check_string_array, has_property } from "../common/types.js";
3
+ import { Vec2 } from "../vectors/vec2.js";
4
+ export class Mat3 {
5
+ _raw;
6
+ get m00() { return this._raw[0]; }
7
+ set m00(val) { this._raw[0] = val; }
8
+ get m01() { return this._raw[1]; }
9
+ set m01(val) { this._raw[1] = val; }
10
+ get m02() { return this._raw[2]; }
11
+ set m02(val) { this._raw[2] = val; }
12
+ get m10() { return this._raw[3]; }
13
+ set m10(val) { this._raw[3] = val; }
14
+ get m11() { return this._raw[4]; }
15
+ set m11(val) { this._raw[4] = val; }
16
+ get m12() { return this._raw[5]; }
17
+ set m12(val) { this._raw[5] = val; }
18
+ get m20() { return this._raw[6]; }
19
+ set m20(val) { this._raw[6] = val; }
20
+ get m21() { return this._raw[7]; }
21
+ set m21(val) { this._raw[7] = val; }
22
+ get m22() { return this._raw[8]; }
23
+ set m22(val) { this._raw[8] = val; }
24
+ static resolve(a) {
25
+ if (a == null || typeof a == "undefined")
26
+ throw new ResolveError("Mat3", a);
27
+ if (check_number_array(a, 9)) {
28
+ return new this(a);
29
+ }
30
+ if (check_array(a, undefined, 3)) {
31
+ const row0 = a[0], row1 = a[1], row2 = a[2];
32
+ if (check_number_array(row0, 3) && check_number_array(row1, 3) && check_number_array(row2, 3))
33
+ return new this([
34
+ row0[0], row0[1], row0[2],
35
+ row1[0], row1[1], row1[2],
36
+ row2[0], row2[1], row2[2],
37
+ ]);
38
+ }
39
+ if (check_string(a)) {
40
+ const parts = a.split(",");
41
+ if (check_string_array(parts, 9))
42
+ return this.resolve(parts.map((i) => parseFloat(i)));
43
+ }
44
+ if (has_property(a, "m00", "number") && has_property(a, "m01", "number") && has_property(a, "m02", "number") &&
45
+ has_property(a, "m10", "number") && has_property(a, "m11", "number") && has_property(a, "m12", "number") &&
46
+ has_property(a, "m20", "number") && has_property(a, "m21", "number") && has_property(a, "m22", "number"))
47
+ return new this([
48
+ a.m00, a.m01, a.m02,
49
+ a.m10, a.m11, a.m12,
50
+ a.m20, a.m21, a.m22
51
+ ]);
52
+ if (check_number(a)) {
53
+ return new this([a, a, a, a, a, a, a, a, a]);
54
+ }
55
+ throw new ResolveError("Mat3", a);
56
+ }
57
+ static is(a) {
58
+ try {
59
+ this.resolve(a);
60
+ }
61
+ catch (e) {
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ static projection(width, height) {
67
+ return new this([
68
+ 2 / width, 0, 0,
69
+ 0, -2 / height, 0,
70
+ -1, 1, 1
71
+ ]);
72
+ }
73
+ constructor(init = [1, 0, 0, 0, 1, 0, 0, 0, 1]) {
74
+ this._raw = init;
75
+ }
76
+ toArray() {
77
+ return [
78
+ this.m00, this.m01, this.m02,
79
+ this.m10, this.m11, this.m12,
80
+ this.m20, this.m21, this.m22
81
+ ];
82
+ }
83
+ toNestetArray() {
84
+ return [
85
+ [this.m00, this.m01, this.m02],
86
+ [this.m10, this.m11, this.m12],
87
+ [this.m20, this.m21, this.m22]
88
+ ];
89
+ }
90
+ toJSON() {
91
+ return {
92
+ m00: this.m00, m01: this.m01, m02: this.m02,
93
+ m10: this.m10, m11: this.m11, m12: this.m12,
94
+ m20: this.m20, m21: this.m21, m22: this.m22
95
+ };
96
+ }
97
+ toString() {
98
+ return `${this.m00},${this.m01},${this.m02},${this.m10},${this.m11},${this.m12},${this.m20},${this.m21},${this.m22}`;
99
+ }
100
+ clone() {
101
+ return new Mat3([
102
+ this.m00, this.m01, this.m02,
103
+ this.m10, this.m11, this.m12,
104
+ this.m20, this.m21, this.m22
105
+ ]);
106
+ }
107
+ add(mat) {
108
+ const b = Mat3.resolve(mat);
109
+ const m = new Mat3;
110
+ for (let index = 0; index < this._raw.length; index++)
111
+ m._raw[index] = this._raw[index] + b._raw[index];
112
+ return this;
113
+ }
114
+ subtract(mat) {
115
+ const b = Mat3.resolve(mat);
116
+ const m = new Mat3;
117
+ for (let index = 0; index < this._raw.length; index++)
118
+ m._raw[index] = this._raw[index] - b._raw[index];
119
+ return this;
120
+ }
121
+ multiply(a) {
122
+ if (check_number(a))
123
+ return new Mat3([
124
+ this.m00 * a, this.m01 * a, this.m02 * a,
125
+ this.m10 * a, this.m11 * a, this.m12 * a,
126
+ this.m20 * a, this.m21 * a, this.m22 * a
127
+ ]);
128
+ const b = Mat3.resolve(a);
129
+ return new Mat3([
130
+ b.m00 * this.m00 + b.m01 * this.m10 + b.m02 * this.m20,
131
+ b.m00 * this.m01 + b.m01 * this.m11 + b.m02 * this.m21,
132
+ b.m00 * this.m02 + b.m01 * this.m12 + b.m02 * this.m22,
133
+ b.m10 * this.m00 + b.m11 * this.m10 + b.m12 * this.m20,
134
+ b.m10 * this.m01 + b.m11 * this.m11 + b.m12 * this.m21,
135
+ b.m10 * this.m02 + b.m11 * this.m12 + b.m12 * this.m22,
136
+ b.m20 * this.m00 + b.m21 * this.m10 + b.m22 * this.m20,
137
+ b.m20 * this.m01 + b.m21 * this.m11 + b.m22 * this.m21,
138
+ b.m20 * this.m02 + b.m21 * this.m12 + b.m22 * this.m22
139
+ ]);
140
+ }
141
+ translate(...args) {
142
+ const vec = Vec2.resolveArgs(args);
143
+ return this.multiply([
144
+ 1, 0, 0,
145
+ 0, 1, 0,
146
+ vec.x, vec.y, 1
147
+ ]);
148
+ }
149
+ rotate(angle) {
150
+ const c = Math.cos(angle);
151
+ const s = Math.sin(angle);
152
+ return this.multiply([
153
+ c, -s, 0,
154
+ s, c, 0,
155
+ 0, 0, 1
156
+ ]);
157
+ }
158
+ scale(...args) {
159
+ const vec = Vec2.resolve(args);
160
+ return this.multiply([
161
+ vec.x, 0, 0,
162
+ 0, vec.y, 0,
163
+ 0, 0, 1
164
+ ]);
165
+ }
166
+ determinant() {
167
+ return this.m00 * this.m11 * this.m22 - this.m21 * this.m12 -
168
+ this.m01 * this.m10 * this.m22 - this.m12 * this.m20 +
169
+ this.m02 * this.m10 * this.m21 - this.m11 * this.m20;
170
+ }
171
+ inverse() {
172
+ const det = this.determinant();
173
+ return new Mat3([
174
+ (this.m11 * this.m22 - this.m21 * this.m12) * det, (this.m02 * this.m21 - this.m01 * this.m22) * det, (this.m01 * this.m12 - this.m02 * this.m11) * det,
175
+ (this.m12 * this.m20 - this.m10 * this.m22) * det, (this.m00 * this.m22 - this.m02 * this.m20) * det, (this.m10 * this.m02 - this.m00 * this.m12) * det,
176
+ (this.m10 * this.m21 - this.m20 * this.m11) * det, (this.m20 * this.m01 - this.m00 * this.m21) * det, (this.m00 * this.m11 - this.m10 * this.m01) * det
177
+ ]);
178
+ }
179
+ }
180
+ //# sourceMappingURL=mat3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat3.js","sourceRoot":"","sources":["../../../source/matrices/mat3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,258 @@
1
+ import { ResolveError } from "../common/error.js";
2
+ import { Vec3 } from "../vectors/vec3.js";
3
+ import { check_number_array, check_number, check_string, check_string_array, has_property, check_array } from "../common/types.js";
4
+ export class Mat4 {
5
+ _raw;
6
+ get m00() { return this._raw[0]; }
7
+ set m00(val) { this._raw[0] = val; }
8
+ get m01() { return this._raw[1]; }
9
+ set m01(val) { this._raw[1] = val; }
10
+ get m02() { return this._raw[2]; }
11
+ set m02(val) { this._raw[2] = val; }
12
+ get m03() { return this._raw[3]; }
13
+ set m03(val) { this._raw[3] = val; }
14
+ get m10() { return this._raw[4]; }
15
+ set m10(val) { this._raw[4] = val; }
16
+ get m11() { return this._raw[5]; }
17
+ set m11(val) { this._raw[5] = val; }
18
+ get m12() { return this._raw[6]; }
19
+ set m12(val) { this._raw[6] = val; }
20
+ get m13() { return this._raw[7]; }
21
+ set m13(val) { this._raw[7] = val; }
22
+ get m20() { return this._raw[8]; }
23
+ set m20(val) { this._raw[8] = val; }
24
+ get m21() { return this._raw[9]; }
25
+ set m21(val) { this._raw[9] = val; }
26
+ get m22() { return this._raw[10]; }
27
+ set m22(val) { this._raw[10] = val; }
28
+ get m23() { return this._raw[11]; }
29
+ set m23(val) { this._raw[11] = val; }
30
+ get m30() { return this._raw[12]; }
31
+ set m30(val) { this._raw[12] = val; }
32
+ get m31() { return this._raw[13]; }
33
+ set m31(val) { this._raw[13] = val; }
34
+ get m32() { return this._raw[14]; }
35
+ set m32(val) { this._raw[14] = val; }
36
+ get m33() { return this._raw[15]; }
37
+ set m33(val) { this._raw[15] = val; }
38
+ static resolve(a) {
39
+ if (a == null || typeof a == "undefined")
40
+ throw new ResolveError("Mat4", a);
41
+ if (check_number_array(a, 16)) {
42
+ return new this(a);
43
+ }
44
+ if (check_array(a, undefined, 4)) {
45
+ const row0 = a[0], row1 = a[1], row2 = a[2], row3 = a[3];
46
+ if (check_number_array(row0, 4) && check_number_array(row1, 4) && check_number_array(row2, 4) && check_number_array(row3, 4))
47
+ return new this([
48
+ row0[0], row0[1], row0[2], row0[3],
49
+ row1[0], row1[1], row1[2], row1[3],
50
+ row2[0], row2[1], row2[2], row2[3],
51
+ row3[0], row3[1], row3[2], row3[3]
52
+ ]);
53
+ }
54
+ if (check_string(a)) {
55
+ const parts = a.split(",");
56
+ if (check_string_array(parts, 16))
57
+ return this.resolve(parts.map((i) => parseFloat(i)));
58
+ }
59
+ if (has_property(a, "m00", "number") && has_property(a, "m01", "number") && has_property(a, "m02", "number") && has_property(a, "m03", "number") &&
60
+ has_property(a, "m10", "number") && has_property(a, "m11", "number") && has_property(a, "m12", "number") && has_property(a, "m13", "number") &&
61
+ has_property(a, "m20", "number") && has_property(a, "m21", "number") && has_property(a, "m22", "number") && has_property(a, "m23", "number") &&
62
+ has_property(a, "m30", "number") && has_property(a, "m31", "number") && has_property(a, "m32", "number") && has_property(a, "m33", "number"))
63
+ return new this([
64
+ a.m00, a.m01, a.m02, a.m03,
65
+ a.m10, a.m11, a.m12, a.m13,
66
+ a.m20, a.m21, a.m22, a.m23,
67
+ a.m30, a.m31, a.m32, a.m33
68
+ ]);
69
+ if (check_number(a)) {
70
+ return new this([a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a]);
71
+ }
72
+ throw new ResolveError("Mat4", a);
73
+ }
74
+ static is(a) {
75
+ try {
76
+ this.resolve(a);
77
+ }
78
+ catch (e) {
79
+ return false;
80
+ }
81
+ return true;
82
+ }
83
+ static orthographic(left, right, bottom, top, near, far) {
84
+ return new this([
85
+ 2 / (right - left), 0, 0, 0,
86
+ 0, 2 / (top - bottom), 0, 0,
87
+ 0, 0, 2 / (near - far), 0,
88
+ (left + right) / (left - right),
89
+ (bottom + top) / (bottom - top),
90
+ (near + far) / (near - far), 1
91
+ ]);
92
+ }
93
+ static perspective(fov, aspect, near, far) {
94
+ const f = Math.tan(Math.PI * 0.5 - 0.5 * fov);
95
+ const rangeInv = 1.0 / (near - far);
96
+ return new this([
97
+ f / aspect, 0, 0, 0,
98
+ 0, f, 0, 0,
99
+ 0, 0, (near + far) * rangeInv, -1,
100
+ 0, 0, near * far * rangeInv * 2, 0
101
+ ]);
102
+ }
103
+ constructor(init = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]) {
104
+ this._raw = init;
105
+ }
106
+ toArray() {
107
+ return [
108
+ this.m00, this.m01, this.m02, this.m03,
109
+ this.m10, this.m11, this.m12, this.m13,
110
+ this.m20, this.m21, this.m22, this.m23,
111
+ this.m30, this.m31, this.m32, this.m33
112
+ ];
113
+ }
114
+ toNestetArray() {
115
+ return [
116
+ [this.m00, this.m01, this.m02, this.m03],
117
+ [this.m10, this.m11, this.m12, this.m13],
118
+ [this.m20, this.m21, this.m22, this.m23],
119
+ [this.m30, this.m31, this.m32, this.m33]
120
+ ];
121
+ }
122
+ toJSON() {
123
+ return {
124
+ m00: this.m00, m01: this.m01, m02: this.m02, m03: this.m03,
125
+ m10: this.m10, m11: this.m11, m12: this.m12, m13: this.m13,
126
+ m20: this.m20, m21: this.m21, m22: this.m22, m23: this.m23,
127
+ m30: this.m20, m31: this.m21, m32: this.m22, m33: this.m23
128
+ };
129
+ }
130
+ toString() {
131
+ return `${this.m00},${this.m01},${this.m02},${this.m03},${this.m10},${this.m11},${this.m12},${this.m13},${this.m20},${this.m21},${this.m22},${this.m23},${this.m30},${this.m31},${this.m32},${this.m33}`;
132
+ }
133
+ clone() {
134
+ return new Mat4([
135
+ this.m00, this.m01, this.m02, this.m03,
136
+ this.m10, this.m11, this.m12, this.m13,
137
+ this.m20, this.m21, this.m22, this.m23,
138
+ this.m30, this.m31, this.m32, this.m33
139
+ ]);
140
+ }
141
+ add(mat) {
142
+ const b = Mat4.resolve(mat);
143
+ const m = new Mat4;
144
+ for (let index = 0; index < this._raw.length; index++)
145
+ m._raw[index] = this._raw[index] + b._raw[index];
146
+ return m;
147
+ }
148
+ subtract(mat) {
149
+ const b = Mat4.resolve(mat);
150
+ const m = new Mat4;
151
+ for (let index = 0; index < this._raw.length; index++)
152
+ m._raw[index] = this._raw[index] - b._raw[index];
153
+ return m;
154
+ }
155
+ multiply(a) {
156
+ if (check_number(a)) {
157
+ return new Mat4([
158
+ this.m00 * a, this.m01 * a, this.m02 * a, this.m03 * a,
159
+ this.m10 * a, this.m11 * a, this.m12 * a, this.m13 * a,
160
+ this.m20 * a, this.m21 * a, this.m22 * a, this.m23 * a,
161
+ this.m30 * a, this.m31 * a, this.m32 * a, this.m33 * a
162
+ ]);
163
+ }
164
+ if (Mat4.is(a)) {
165
+ const b = Mat4.resolve(a);
166
+ return new Mat4([
167
+ b.m00 * this.m00 + b.m01 * this.m10 + b.m02 * this.m20 + b.m03 * this.m30,
168
+ b.m00 * this.m01 + b.m01 * this.m11 + b.m02 * this.m21 + b.m03 * this.m31,
169
+ b.m00 * this.m02 + b.m01 * this.m12 + b.m02 * this.m22 + b.m03 * this.m32,
170
+ b.m00 * this.m03 + b.m01 * this.m13 + b.m02 * this.m23 + b.m03 * this.m33,
171
+ b.m10 * this.m00 + b.m11 * this.m10 + b.m12 * this.m20 + b.m13 * this.m30,
172
+ b.m10 * this.m01 + b.m11 * this.m11 + b.m12 * this.m21 + b.m13 * this.m31,
173
+ b.m10 * this.m02 + b.m11 * this.m12 + b.m12 * this.m22 + b.m13 * this.m32,
174
+ b.m10 * this.m03 + b.m11 * this.m13 + b.m12 * this.m23 + b.m13 * this.m33,
175
+ b.m20 * this.m00 + b.m21 * this.m10 + b.m22 * this.m20 + b.m23 * this.m30,
176
+ b.m20 * this.m01 + b.m21 * this.m11 + b.m22 * this.m21 + b.m23 * this.m31,
177
+ b.m20 * this.m02 + b.m21 * this.m12 + b.m22 * this.m22 + b.m23 * this.m32,
178
+ b.m20 * this.m03 + b.m21 * this.m13 + b.m22 * this.m23 + b.m23 * this.m33,
179
+ b.m30 * this.m00 + b.m31 * this.m10 + b.m32 * this.m20 + b.m33 * this.m30,
180
+ b.m30 * this.m01 + b.m31 * this.m11 + b.m32 * this.m21 + b.m33 * this.m31,
181
+ b.m30 * this.m02 + b.m31 * this.m12 + b.m32 * this.m22 + b.m33 * this.m32,
182
+ b.m30 * this.m03 + b.m31 * this.m13 + b.m32 * this.m23 + b.m33 * this.m33,
183
+ ]);
184
+ }
185
+ if (Vec3.is(a)) {
186
+ const b = Vec3.resolve(a);
187
+ const vec = new Vec3(b.x * this.m00 + b.y * this.m10 + b.z * this.m20 + this.m30, b.x * this.m01 + b.y * this.m11 + b.z * this.m21 + this.m31, b.x * this.m02 + b.y * this.m12 + b.z * this.m22 + this.m32, b.x * this.m03 + b.y * this.m13 + b.z * this.m23 + this.m33);
188
+ if (vec.w != 0)
189
+ return vec.divide(vec.w);
190
+ return vec;
191
+ }
192
+ throw new ResolveError("Mat4 or Vec3 or number", a);
193
+ }
194
+ translate(...args) {
195
+ const vec = Vec3.resolveArgs(args);
196
+ return this.multiply([
197
+ 1, 0, 0, 0,
198
+ 0, 1, 0, 0,
199
+ 0, 0, 1, 0,
200
+ vec.x, vec.y, vec.z, 1
201
+ ]);
202
+ }
203
+ rotateX(angle) {
204
+ const c = Math.cos(angle);
205
+ const s = Math.sin(angle);
206
+ return this.multiply([
207
+ 1, 0, 0, 0,
208
+ 0, c, s, 0,
209
+ 0, -s, c, 0,
210
+ 0, 0, 0, 1
211
+ ]);
212
+ }
213
+ rotateY(angle) {
214
+ const c = Math.cos(angle);
215
+ const s = Math.sin(angle);
216
+ return this.multiply([
217
+ c, 0, -s, 0,
218
+ 0, 1, 0, 0,
219
+ s, 0, c, 0,
220
+ 0, 0, 0, 1
221
+ ]);
222
+ }
223
+ rotateZ(angle) {
224
+ const c = Math.cos(angle);
225
+ const s = Math.sin(angle);
226
+ return this.multiply([
227
+ c, s, 0, 0,
228
+ -s, c, 0, 0,
229
+ 0, 0, 1, 0,
230
+ 0, 0, 0, 1
231
+ ]);
232
+ }
233
+ rotate(...args) {
234
+ const vec = Vec3.resolveArgs(args);
235
+ return this.rotateX(vec.x).rotateY(vec.y).rotateZ(vec.z);
236
+ }
237
+ scale(...args) {
238
+ const vec = Vec3.resolveArgs(args);
239
+ return this.multiply([
240
+ vec.x, 0, 0, 0,
241
+ 0, vec.y, 0, 0,
242
+ 0, 0, vec.z, 0,
243
+ 0, 0, 0, 1
244
+ ]);
245
+ }
246
+ inverse() {
247
+ return new Mat4([
248
+ this.m00, this.m10, this.m20, 0,
249
+ this.m01, this.m11, this.m21, 0,
250
+ this.m02, this.m12, this.m22, 0,
251
+ -(this.m30 * this.m00 + this.m31 * this.m10 + this.m32 * this.m20),
252
+ -(this.m30 * this.m01 + this.m31 * this.m11 + this.m32 * this.m21),
253
+ -(this.m30 * this.m02 + this.m31 * this.m12 + this.m32 * this.m22),
254
+ 1
255
+ ]);
256
+ }
257
+ }
258
+ //# sourceMappingURL=mat4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat4.js","sourceRoot":"","sources":["../../../source/matrices/mat4.ts"],"names":[],"mappings":"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AG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBACzE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBAEzE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBACzE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBACzE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBACzE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBAEzE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBACzE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBACzE,C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"}