@flighthq/geometry 0.1.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.
- package/dist/aabb.d.ts +88 -0
- package/dist/aabb.d.ts.map +1 -0
- package/dist/aabb.js +230 -0
- package/dist/aabb.js.map +1 -0
- package/dist/boundingSphere.d.ts +62 -0
- package/dist/boundingSphere.d.ts.map +1 -0
- package/dist/boundingSphere.js +188 -0
- package/dist/boundingSphere.js.map +1 -0
- package/dist/capsule.d.ts +38 -0
- package/dist/capsule.d.ts.map +1 -0
- package/dist/capsule.js +215 -0
- package/dist/capsule.js.map +1 -0
- package/dist/frustum.d.ts +49 -0
- package/dist/frustum.d.ts.map +1 -0
- package/dist/frustum.js +149 -0
- package/dist/frustum.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/matrix.d.ts +152 -0
- package/dist/matrix.d.ts.map +1 -0
- package/dist/matrix.js +488 -0
- package/dist/matrix.js.map +1 -0
- package/dist/matrix3.d.ts +63 -0
- package/dist/matrix3.d.ts.map +1 -0
- package/dist/matrix3.js +408 -0
- package/dist/matrix3.js.map +1 -0
- package/dist/matrix3Pool.d.ts +6 -0
- package/dist/matrix3Pool.d.ts.map +1 -0
- package/dist/matrix3Pool.js +26 -0
- package/dist/matrix3Pool.js.map +1 -0
- package/dist/matrix4.d.ts +238 -0
- package/dist/matrix4.d.ts.map +1 -0
- package/dist/matrix4.js +931 -0
- package/dist/matrix4.js.map +1 -0
- package/dist/matrix4Pool.d.ts +6 -0
- package/dist/matrix4Pool.d.ts.map +1 -0
- package/dist/matrix4Pool.js +26 -0
- package/dist/matrix4Pool.js.map +1 -0
- package/dist/matrixPool.d.ts +6 -0
- package/dist/matrixPool.d.ts.map +1 -0
- package/dist/matrixPool.js +26 -0
- package/dist/matrixPool.js.map +1 -0
- package/dist/obb.d.ts +44 -0
- package/dist/obb.d.ts.map +1 -0
- package/dist/obb.js +248 -0
- package/dist/obb.js.map +1 -0
- package/dist/plane.d.ts +66 -0
- package/dist/plane.d.ts.map +1 -0
- package/dist/plane.js +140 -0
- package/dist/plane.js.map +1 -0
- package/dist/quaternion.d.ts +128 -0
- package/dist/quaternion.d.ts.map +1 -0
- package/dist/quaternion.js +508 -0
- package/dist/quaternion.js.map +1 -0
- package/dist/quaternionPool.d.ts +6 -0
- package/dist/quaternionPool.d.ts.map +1 -0
- package/dist/quaternionPool.js +29 -0
- package/dist/quaternionPool.js.map +1 -0
- package/dist/ray3d.d.ts +69 -0
- package/dist/ray3d.d.ts.map +1 -0
- package/dist/ray3d.js +264 -0
- package/dist/ray3d.js.map +1 -0
- package/dist/rectangle.d.ts +56 -0
- package/dist/rectangle.d.ts.map +1 -0
- package/dist/rectangle.js +235 -0
- package/dist/rectangle.js.map +1 -0
- package/dist/rectanglePool.d.ts +6 -0
- package/dist/rectanglePool.d.ts.map +1 -0
- package/dist/rectanglePool.js +29 -0
- package/dist/rectanglePool.js.map +1 -0
- package/dist/typedarray.d.ts +4 -0
- package/dist/typedarray.d.ts.map +1 -0
- package/dist/typedarray.js +25 -0
- package/dist/typedarray.js.map +1 -0
- package/dist/vector2.d.ts +130 -0
- package/dist/vector2.d.ts.map +1 -0
- package/dist/vector2.js +250 -0
- package/dist/vector2.js.map +1 -0
- package/dist/vector2Pool.d.ts +6 -0
- package/dist/vector2Pool.d.ts.map +1 -0
- package/dist/vector2Pool.js +20 -0
- package/dist/vector2Pool.js.map +1 -0
- package/dist/vector3.d.ts +220 -0
- package/dist/vector3.d.ts.map +1 -0
- package/dist/vector3.js +380 -0
- package/dist/vector3.js.map +1 -0
- package/dist/vector3Pool.d.ts +6 -0
- package/dist/vector3Pool.d.ts.map +1 -0
- package/dist/vector3Pool.js +28 -0
- package/dist/vector3Pool.js.map +1 -0
- package/dist/vector4.d.ts +180 -0
- package/dist/vector4.d.ts.map +1 -0
- package/dist/vector4.js +333 -0
- package/dist/vector4.js.map +1 -0
- package/dist/vector4Pool.d.ts +6 -0
- package/dist/vector4Pool.d.ts.map +1 -0
- package/dist/vector4Pool.js +29 -0
- package/dist/vector4Pool.js.map +1 -0
- package/package.json +38 -0
- package/src/aabb.test.ts +341 -0
- package/src/boundingSphere.test.ts +247 -0
- package/src/capsule.test.ts +157 -0
- package/src/frustum.test.ts +160 -0
- package/src/matrix.test.ts +1111 -0
- package/src/matrix3.test.ts +752 -0
- package/src/matrix3Pool.test.ts +73 -0
- package/src/matrix4.test.ts +1627 -0
- package/src/matrix4Pool.test.ts +71 -0
- package/src/matrixPool.test.ts +69 -0
- package/src/obb.test.ts +183 -0
- package/src/plane.test.ts +225 -0
- package/src/quaternion.test.ts +531 -0
- package/src/quaternionPool.test.ts +64 -0
- package/src/ray3d.test.ts +297 -0
- package/src/rectangle.test.ts +982 -0
- package/src/rectanglePool.test.ts +71 -0
- package/src/typedarray.test.ts +118 -0
- package/src/vector2.test.ts +958 -0
- package/src/vector2Pool.test.ts +65 -0
- package/src/vector3.test.ts +749 -0
- package/src/vector3Pool.test.ts +68 -0
- package/src/vector4.test.ts +660 -0
- package/src/vector4Pool.test.ts +71 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Matrix3, Matrix3Like, Matrix4Like, MatrixLike, Vector3Like } from '@flighthq/types';
|
|
2
|
+
export declare function cloneMatrix3(source: Readonly<Matrix3Like>): Matrix3;
|
|
3
|
+
export declare function copyMatrix3(out: Matrix3Like, source: Readonly<Matrix3Like>): void;
|
|
4
|
+
export declare function copyMatrix3ColumnFromVector3(out: Matrix3Like, column: number, source: Readonly<Vector3Like>): void;
|
|
5
|
+
export declare function copyMatrix3ColumnToVector3(out: Vector3Like, column: number, source: Readonly<Matrix3Like>): void;
|
|
6
|
+
export declare function copyMatrix3RowFromVector3(out: Matrix3Like, row: number, source: Readonly<Vector3Like>): void;
|
|
7
|
+
export declare function copyMatrix3RowToVector3(out: Vector3Like, row: number, source: Readonly<Matrix3Like>): void;
|
|
8
|
+
/**
|
|
9
|
+
* A 3×3 homogeneous matrix.
|
|
10
|
+
*
|
|
11
|
+
* [ m00 m01 m02 ]
|
|
12
|
+
* [ m10 m11 m12 ]
|
|
13
|
+
* [ m20 m21 m22 ]
|
|
14
|
+
*
|
|
15
|
+
* Storage is row-major.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createMatrix3(m00?: number, m01?: number, m02?: number, m10?: number, m11?: number, m12?: number, m20?: number, m21?: number, m22?: number): Matrix3;
|
|
18
|
+
export declare function equalsMatrix3(a: Readonly<Matrix3Like> | null | undefined, b: Readonly<Matrix3Like> | null | undefined): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Returns the determinant of a 3×3 matrix.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getMatrix3Determinant(source: Readonly<Matrix3Like>): number;
|
|
23
|
+
export declare function getMatrix3Element(source: Readonly<Matrix3Like>, row: number, column: number): number;
|
|
24
|
+
/**
|
|
25
|
+
* Attempts to invert a matrix, so long as it is invertable
|
|
26
|
+
*/
|
|
27
|
+
export declare function inverseMatrix3(out: Matrix3Like, source: Readonly<Matrix3Like>): void;
|
|
28
|
+
export declare function isAffineMatrix3(source: Readonly<Matrix3Like>): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* out = a * b
|
|
31
|
+
*/
|
|
32
|
+
export declare function multiplyMatrix3(out: Matrix3Like, a: Readonly<Matrix3Like>, b: Readonly<Matrix3Like>): void;
|
|
33
|
+
export declare function rotateMatrix3(out: Matrix3Like, source: Readonly<Matrix3Like>, theta: number): void;
|
|
34
|
+
export declare function scaleMatrix3(out: Matrix3Like, source: Readonly<Matrix3Like>, sx: number, sy: number): void;
|
|
35
|
+
export declare function setMatrix3(out: Matrix3Like, m00: number, m01: number, m02: number, m10: number, m11: number, m12: number, m20: number, m21: number, m22: number): void;
|
|
36
|
+
export declare function setMatrix3Element(out: Matrix3Like, row: number, column: number, value: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Reads a Matrix3 from a Float32Array at a byte offset (row-major, 9 floats).
|
|
39
|
+
*/
|
|
40
|
+
export declare function setMatrix3FromFloat32Array(out: Matrix3Like, offset: number, source: Readonly<Float32Array>): void;
|
|
41
|
+
export declare function setMatrix3FromMatrix(out: Matrix3Like, source: Readonly<MatrixLike>): void;
|
|
42
|
+
export declare function setMatrix3FromMatrix4(out: Matrix3Like, source: Readonly<Matrix4Like>): void;
|
|
43
|
+
export declare function setMatrix3Identity(out: Matrix3Like): void;
|
|
44
|
+
/**
|
|
45
|
+
* Writes the normal matrix for a Matrix4 model transform: the inverse-transpose of its
|
|
46
|
+
* upper-left 3×3. Transforming normals by this (instead of the model matrix) keeps them
|
|
47
|
+
* perpendicular to surfaces under non-uniform scale and shear.
|
|
48
|
+
*
|
|
49
|
+
* Reads the source through a scratch matrix before writing, so it is safe regardless of how
|
|
50
|
+
* `out` relates to `source`.
|
|
51
|
+
*/
|
|
52
|
+
export declare function setMatrix3NormalFromMatrix4(out: Matrix3Like, source: Readonly<Matrix4Like>): void;
|
|
53
|
+
export declare function translateMatrix3(out: Matrix3Like, source: Readonly<Matrix3Like>, tx: number, ty: number): void;
|
|
54
|
+
/**
|
|
55
|
+
* Transposes a 3×3 matrix (swaps rows and columns). Reads each off-diagonal pair into a
|
|
56
|
+
* temporary before writing, so it is safe when `out` aliases `source`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function transposeMatrix3(out: Matrix3Like, source: Readonly<Matrix3Like>): void;
|
|
59
|
+
/**
|
|
60
|
+
* Writes a Matrix3 into a Float32Array at a byte offset (row-major, 9 floats).
|
|
61
|
+
*/
|
|
62
|
+
export declare function writeMatrix3ToFloat32Array(out: Float32Array, offset: number, source: Readonly<Matrix3Like>): void;
|
|
63
|
+
//# sourceMappingURL=matrix3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix3.d.ts","sourceRoot":"","sources":["../src/matrix3.ts"],"names":[],"mappings":"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"}
|
package/dist/matrix3.js
ADDED
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity';
|
|
2
|
+
import { acquireMatrix3, releaseMatrix3 } from './matrix3Pool';
|
|
3
|
+
export function cloneMatrix3(source) {
|
|
4
|
+
const m = createMatrix3();
|
|
5
|
+
copyMatrix3(m, source);
|
|
6
|
+
return m;
|
|
7
|
+
}
|
|
8
|
+
export function copyMatrix3(out, source) {
|
|
9
|
+
out.m.set(source.m);
|
|
10
|
+
}
|
|
11
|
+
export function copyMatrix3ColumnFromVector3(out, column, source) {
|
|
12
|
+
if (column > 2) {
|
|
13
|
+
throw new RangeError('Column ' + column + ' out of bounds (2)');
|
|
14
|
+
}
|
|
15
|
+
else if (column === 0) {
|
|
16
|
+
out.m[0] = source.x;
|
|
17
|
+
out.m[3] = source.y;
|
|
18
|
+
out.m[6] = source.z;
|
|
19
|
+
}
|
|
20
|
+
else if (column === 1) {
|
|
21
|
+
out.m[1] = source.x;
|
|
22
|
+
out.m[4] = source.y;
|
|
23
|
+
out.m[7] = source.z;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
out.m[2] = source.x;
|
|
27
|
+
out.m[5] = source.y;
|
|
28
|
+
out.m[8] = source.z;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function copyMatrix3ColumnToVector3(out, column, source) {
|
|
32
|
+
if (column > 2) {
|
|
33
|
+
throw new RangeError('Column ' + column + ' out of bounds (2)');
|
|
34
|
+
}
|
|
35
|
+
else if (column === 0) {
|
|
36
|
+
out.x = source.m[0];
|
|
37
|
+
out.y = source.m[3];
|
|
38
|
+
out.z = source.m[6];
|
|
39
|
+
}
|
|
40
|
+
else if (column === 1) {
|
|
41
|
+
out.x = source.m[1];
|
|
42
|
+
out.y = source.m[4];
|
|
43
|
+
out.z = source.m[7];
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
out.x = source.m[2];
|
|
47
|
+
out.y = source.m[5];
|
|
48
|
+
out.z = source.m[8];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export function copyMatrix3RowFromVector3(out, row, source) {
|
|
52
|
+
if (row > 2) {
|
|
53
|
+
throw new RangeError('Row ' + row + ' out of bounds (2)');
|
|
54
|
+
}
|
|
55
|
+
else if (row === 0) {
|
|
56
|
+
out.m[0] = source.x;
|
|
57
|
+
out.m[1] = source.y;
|
|
58
|
+
out.m[2] = source.z;
|
|
59
|
+
}
|
|
60
|
+
else if (row === 1) {
|
|
61
|
+
out.m[3] = source.x;
|
|
62
|
+
out.m[4] = source.y;
|
|
63
|
+
out.m[5] = source.z;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
out.m[6] = source.x;
|
|
67
|
+
out.m[7] = source.y;
|
|
68
|
+
out.m[8] = source.z;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function copyMatrix3RowToVector3(out, row, source) {
|
|
72
|
+
if (row > 2) {
|
|
73
|
+
throw new RangeError('Row ' + row + ' out of bounds (2)');
|
|
74
|
+
}
|
|
75
|
+
else if (row === 0) {
|
|
76
|
+
out.x = source.m[0];
|
|
77
|
+
out.y = source.m[1];
|
|
78
|
+
out.z = source.m[2];
|
|
79
|
+
}
|
|
80
|
+
else if (row === 1) {
|
|
81
|
+
out.x = source.m[3];
|
|
82
|
+
out.y = source.m[4];
|
|
83
|
+
out.z = source.m[5];
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
out.x = source.m[6];
|
|
87
|
+
out.y = source.m[7];
|
|
88
|
+
out.z = source.m[8];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A 3×3 homogeneous matrix.
|
|
93
|
+
*
|
|
94
|
+
* [ m00 m01 m02 ]
|
|
95
|
+
* [ m10 m11 m12 ]
|
|
96
|
+
* [ m20 m21 m22 ]
|
|
97
|
+
*
|
|
98
|
+
* Storage is row-major.
|
|
99
|
+
*/
|
|
100
|
+
export function createMatrix3(m00, m01, m02, m10, m11, m12, m20, m21, m22) {
|
|
101
|
+
const m = new Float32Array(__identity);
|
|
102
|
+
const out = createEntity({ m: m });
|
|
103
|
+
if (m00 !== undefined)
|
|
104
|
+
m[0] = m00;
|
|
105
|
+
if (m01 !== undefined)
|
|
106
|
+
m[1] = m01;
|
|
107
|
+
if (m02 !== undefined)
|
|
108
|
+
m[2] = m02;
|
|
109
|
+
if (m10 !== undefined)
|
|
110
|
+
m[3] = m10;
|
|
111
|
+
if (m11 !== undefined)
|
|
112
|
+
m[4] = m11;
|
|
113
|
+
if (m12 !== undefined)
|
|
114
|
+
m[5] = m12;
|
|
115
|
+
if (m20 !== undefined)
|
|
116
|
+
m[6] = m20;
|
|
117
|
+
if (m21 !== undefined)
|
|
118
|
+
m[7] = m21;
|
|
119
|
+
if (m22 !== undefined)
|
|
120
|
+
m[8] = m22;
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
export function equalsMatrix3(a, b) {
|
|
124
|
+
if (a === b)
|
|
125
|
+
return true;
|
|
126
|
+
if (!a || !b)
|
|
127
|
+
return false;
|
|
128
|
+
for (let i = 0; i < 9; i++) {
|
|
129
|
+
if (a.m[i] !== b.m[i])
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Returns the determinant of a 3×3 matrix.
|
|
136
|
+
*/
|
|
137
|
+
export function getMatrix3Determinant(source) {
|
|
138
|
+
const m = source.m;
|
|
139
|
+
return (m[0] * m[4] * m[8] +
|
|
140
|
+
m[1] * m[5] * m[6] +
|
|
141
|
+
m[2] * m[3] * m[7] -
|
|
142
|
+
m[2] * m[4] * m[6] -
|
|
143
|
+
m[1] * m[3] * m[8] -
|
|
144
|
+
m[0] * m[5] * m[7]);
|
|
145
|
+
}
|
|
146
|
+
export function getMatrix3Element(source, row, column) {
|
|
147
|
+
return source.m[row * 3 + column];
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Attempts to invert a matrix, so long as it is invertable
|
|
151
|
+
*/
|
|
152
|
+
export function inverseMatrix3(out, source) {
|
|
153
|
+
const _out = out.m;
|
|
154
|
+
const _in = source.m;
|
|
155
|
+
const m0 = _in[0];
|
|
156
|
+
const m1 = _in[1];
|
|
157
|
+
const m2 = _in[2];
|
|
158
|
+
const m3 = _in[3];
|
|
159
|
+
const m4 = _in[4];
|
|
160
|
+
const m5 = _in[5];
|
|
161
|
+
const m6 = _in[6];
|
|
162
|
+
const m7 = _in[7];
|
|
163
|
+
const m8 = _in[8];
|
|
164
|
+
if (isAffineMatrix3(source)) {
|
|
165
|
+
// Affine fast path
|
|
166
|
+
const det = m0 * m4 - m1 * m3;
|
|
167
|
+
if (det === 0) {
|
|
168
|
+
_out[0] = _out[1] = _out[3] = _out[4] = 0;
|
|
169
|
+
_out[2] = -m2;
|
|
170
|
+
_out[5] = -m5;
|
|
171
|
+
_out[6] = _out[7] = 0;
|
|
172
|
+
_out[8] = 1;
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const invDet = 1 / det;
|
|
176
|
+
const out0 = m4 * invDet;
|
|
177
|
+
const out1 = -m1 * invDet;
|
|
178
|
+
const out3 = -m3 * invDet;
|
|
179
|
+
const out4 = m0 * invDet;
|
|
180
|
+
_out[0] = out0;
|
|
181
|
+
_out[1] = out1;
|
|
182
|
+
_out[2] = -(out0 * m2 + out3 * m5);
|
|
183
|
+
_out[3] = out3;
|
|
184
|
+
_out[4] = out4;
|
|
185
|
+
_out[5] = -(out1 * m2 + out4 * m5);
|
|
186
|
+
_out[6] = 0;
|
|
187
|
+
_out[7] = 0;
|
|
188
|
+
_out[8] = 1;
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const det = m0 * m4 * m8 + m1 * m5 * m6 + m2 * m3 * m7 - m2 * m4 * m6 - m1 * m3 * m8 - m0 * m5 * m7;
|
|
192
|
+
if (det === 0) {
|
|
193
|
+
throw new Error('Matrix is not invertable');
|
|
194
|
+
}
|
|
195
|
+
const inv = 1 / det;
|
|
196
|
+
_out[0] = (m4 * m8 - m5 * m7) * inv;
|
|
197
|
+
_out[1] = (m2 * m7 - m1 * m8) * inv;
|
|
198
|
+
_out[2] = (m1 * m5 - m2 * m4) * inv;
|
|
199
|
+
_out[3] = (m5 * m6 - m3 * m8) * inv;
|
|
200
|
+
_out[4] = (m0 * m8 - m2 * m6) * inv;
|
|
201
|
+
_out[5] = (m2 * m3 - m0 * m5) * inv;
|
|
202
|
+
_out[6] = (m3 * m7 - m4 * m6) * inv;
|
|
203
|
+
_out[7] = (m1 * m6 - m0 * m7) * inv;
|
|
204
|
+
_out[8] = (m0 * m4 - m1 * m3) * inv;
|
|
205
|
+
}
|
|
206
|
+
export function isAffineMatrix3(source) {
|
|
207
|
+
return source.m[6] === 0 && source.m[7] === 0 && source.m[8] === 1;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* out = a * b
|
|
211
|
+
*/
|
|
212
|
+
export function multiplyMatrix3(out, a, b) {
|
|
213
|
+
const _a = a.m;
|
|
214
|
+
const _b = b.m;
|
|
215
|
+
const _out = out.m;
|
|
216
|
+
if (isAffineMatrix3(a) && isAffineMatrix3(b)) {
|
|
217
|
+
const a0 = _a[0];
|
|
218
|
+
const a1 = _a[1];
|
|
219
|
+
const a2 = _a[2];
|
|
220
|
+
const a3 = _a[3];
|
|
221
|
+
const a4 = _a[4];
|
|
222
|
+
const a5 = _a[5];
|
|
223
|
+
const b0 = _b[0];
|
|
224
|
+
const b1 = _b[1];
|
|
225
|
+
const b2 = _b[2];
|
|
226
|
+
const b3 = _b[3];
|
|
227
|
+
const b4 = _b[4];
|
|
228
|
+
const b5 = _b[5];
|
|
229
|
+
_out[0] = a0 * b0 + a1 * b3;
|
|
230
|
+
_out[1] = a0 * b1 + a1 * b4;
|
|
231
|
+
_out[2] = a0 * b2 + a1 * b5 + a2;
|
|
232
|
+
_out[3] = a3 * b0 + a4 * b3;
|
|
233
|
+
_out[4] = a3 * b1 + a4 * b4;
|
|
234
|
+
_out[5] = a3 * b2 + a4 * b5 + a5;
|
|
235
|
+
_out[6] = 0;
|
|
236
|
+
_out[7] = 0;
|
|
237
|
+
_out[8] = 1;
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
// First row of a * columns of b
|
|
241
|
+
const m00 = _a[0] * _b[0] + _a[1] * _b[3] + _a[2] * _b[6];
|
|
242
|
+
const m01 = _a[0] * _b[1] + _a[1] * _b[4] + _a[2] * _b[7];
|
|
243
|
+
const m02 = _a[0] * _b[2] + _a[1] * _b[5] + _a[2] * _b[8];
|
|
244
|
+
// Second row of a * columns of b
|
|
245
|
+
const m10 = _a[3] * _b[0] + _a[4] * _b[3] + _a[5] * _b[6];
|
|
246
|
+
const m11 = _a[3] * _b[1] + _a[4] * _b[4] + _a[5] * _b[7];
|
|
247
|
+
const m12 = _a[3] * _b[2] + _a[4] * _b[5] + _a[5] * _b[8];
|
|
248
|
+
// Third row of a * columns of b
|
|
249
|
+
const m20 = _a[6] * _b[0] + _a[7] * _b[3] + _a[8] * _b[6];
|
|
250
|
+
const m21 = _a[6] * _b[1] + _a[7] * _b[4] + _a[8] * _b[7];
|
|
251
|
+
const m22 = _a[6] * _b[2] + _a[7] * _b[5] + _a[8] * _b[8];
|
|
252
|
+
// Assign the result to the output matrix
|
|
253
|
+
_out[0] = m00;
|
|
254
|
+
_out[1] = m01;
|
|
255
|
+
_out[2] = m02;
|
|
256
|
+
_out[3] = m10;
|
|
257
|
+
_out[4] = m11;
|
|
258
|
+
_out[5] = m12;
|
|
259
|
+
_out[6] = m20;
|
|
260
|
+
_out[7] = m21;
|
|
261
|
+
_out[8] = m22;
|
|
262
|
+
}
|
|
263
|
+
export function rotateMatrix3(out, source, theta) {
|
|
264
|
+
const c = Math.cos(theta);
|
|
265
|
+
const s = Math.sin(theta);
|
|
266
|
+
const a = source.m;
|
|
267
|
+
const o = out.m;
|
|
268
|
+
const a0 = a[0];
|
|
269
|
+
const a1 = a[1];
|
|
270
|
+
const a2 = a[2];
|
|
271
|
+
const a3 = a[3];
|
|
272
|
+
const a4 = a[4];
|
|
273
|
+
const a5 = a[5];
|
|
274
|
+
const a6 = a[6];
|
|
275
|
+
const a7 = a[7];
|
|
276
|
+
const a8 = a[8];
|
|
277
|
+
o[0] = a0 * c + a1 * s;
|
|
278
|
+
o[1] = a0 * -s + a1 * c;
|
|
279
|
+
o[2] = a2;
|
|
280
|
+
o[3] = a3 * c + a4 * s;
|
|
281
|
+
o[4] = a3 * -s + a4 * c;
|
|
282
|
+
o[5] = a5;
|
|
283
|
+
o[6] = a6 * c + a7 * s;
|
|
284
|
+
o[7] = a6 * -s + a7 * c;
|
|
285
|
+
o[8] = a8;
|
|
286
|
+
}
|
|
287
|
+
export function scaleMatrix3(out, source, sx, sy) {
|
|
288
|
+
const a = source.m;
|
|
289
|
+
const o = out.m;
|
|
290
|
+
o[0] = a[0] * sx;
|
|
291
|
+
o[1] = a[1] * sy;
|
|
292
|
+
o[2] = a[2];
|
|
293
|
+
o[3] = a[3] * sx;
|
|
294
|
+
o[4] = a[4] * sy;
|
|
295
|
+
o[5] = a[5];
|
|
296
|
+
o[6] = a[6] * sx;
|
|
297
|
+
o[7] = a[7] * sy;
|
|
298
|
+
o[8] = a[8];
|
|
299
|
+
}
|
|
300
|
+
export function setMatrix3(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {
|
|
301
|
+
const _out = out.m;
|
|
302
|
+
_out[0] = m00;
|
|
303
|
+
_out[1] = m01;
|
|
304
|
+
_out[2] = m02;
|
|
305
|
+
_out[3] = m10;
|
|
306
|
+
_out[4] = m11;
|
|
307
|
+
_out[5] = m12;
|
|
308
|
+
_out[6] = m20;
|
|
309
|
+
_out[7] = m21;
|
|
310
|
+
_out[8] = m22;
|
|
311
|
+
}
|
|
312
|
+
export function setMatrix3Element(out, row, column, value) {
|
|
313
|
+
out.m[row * 3 + column] = value;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Reads a Matrix3 from a Float32Array at a byte offset (row-major, 9 floats).
|
|
317
|
+
*/
|
|
318
|
+
export function setMatrix3FromFloat32Array(out, offset, source) {
|
|
319
|
+
const m = out.m;
|
|
320
|
+
for (let i = 0; i < 9; i++) {
|
|
321
|
+
m[i] = source[offset + i];
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
export function setMatrix3FromMatrix(out, source) {
|
|
325
|
+
const _out = out.m;
|
|
326
|
+
_out[0] = source.a;
|
|
327
|
+
_out[1] = source.b;
|
|
328
|
+
_out[2] = source.tx;
|
|
329
|
+
_out[3] = source.c;
|
|
330
|
+
_out[4] = source.d;
|
|
331
|
+
_out[5] = source.ty;
|
|
332
|
+
_out[6] = 0;
|
|
333
|
+
_out[7] = 0;
|
|
334
|
+
_out[8] = 1;
|
|
335
|
+
}
|
|
336
|
+
export function setMatrix3FromMatrix4(out, source) {
|
|
337
|
+
const _out = out.m;
|
|
338
|
+
const _source = source.m;
|
|
339
|
+
_out[0] = _source[0];
|
|
340
|
+
_out[1] = _source[4];
|
|
341
|
+
_out[2] = _source[8];
|
|
342
|
+
_out[3] = _source[1];
|
|
343
|
+
_out[4] = _source[5];
|
|
344
|
+
_out[5] = _source[9];
|
|
345
|
+
_out[6] = _source[2];
|
|
346
|
+
_out[7] = _source[6];
|
|
347
|
+
_out[8] = _source[10];
|
|
348
|
+
}
|
|
349
|
+
export function setMatrix3Identity(out) {
|
|
350
|
+
out.m.set(__identity);
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Writes the normal matrix for a Matrix4 model transform: the inverse-transpose of its
|
|
354
|
+
* upper-left 3×3. Transforming normals by this (instead of the model matrix) keeps them
|
|
355
|
+
* perpendicular to surfaces under non-uniform scale and shear.
|
|
356
|
+
*
|
|
357
|
+
* Reads the source through a scratch matrix before writing, so it is safe regardless of how
|
|
358
|
+
* `out` relates to `source`.
|
|
359
|
+
*/
|
|
360
|
+
export function setMatrix3NormalFromMatrix4(out, source) {
|
|
361
|
+
const scratch = acquireMatrix3();
|
|
362
|
+
setMatrix3FromMatrix4(scratch, source);
|
|
363
|
+
inverseMatrix3(scratch, scratch);
|
|
364
|
+
transposeMatrix3(out, scratch);
|
|
365
|
+
releaseMatrix3(scratch);
|
|
366
|
+
}
|
|
367
|
+
export function translateMatrix3(out, source, tx, ty) {
|
|
368
|
+
const a = source.m;
|
|
369
|
+
const o = out.m;
|
|
370
|
+
o[0] = a[0];
|
|
371
|
+
o[1] = a[1];
|
|
372
|
+
o[2] = a[0] * tx + a[1] * ty + a[2];
|
|
373
|
+
o[3] = a[3];
|
|
374
|
+
o[4] = a[4];
|
|
375
|
+
o[5] = a[3] * tx + a[4] * ty + a[5];
|
|
376
|
+
o[6] = a[6];
|
|
377
|
+
o[7] = a[7];
|
|
378
|
+
o[8] = a[6] * tx + a[7] * ty + a[8];
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Transposes a 3×3 matrix (swaps rows and columns). Reads each off-diagonal pair into a
|
|
382
|
+
* temporary before writing, so it is safe when `out` aliases `source`.
|
|
383
|
+
*/
|
|
384
|
+
export function transposeMatrix3(out, source) {
|
|
385
|
+
const s = source.m;
|
|
386
|
+
const m1 = s[1], m2 = s[2], m3 = s[3], m5 = s[5], m6 = s[6], m7 = s[7];
|
|
387
|
+
const o = out.m;
|
|
388
|
+
o[0] = s[0];
|
|
389
|
+
o[1] = m3;
|
|
390
|
+
o[2] = m6;
|
|
391
|
+
o[3] = m1;
|
|
392
|
+
o[4] = s[4];
|
|
393
|
+
o[5] = m7;
|
|
394
|
+
o[6] = m2;
|
|
395
|
+
o[7] = m5;
|
|
396
|
+
o[8] = s[8];
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Writes a Matrix3 into a Float32Array at a byte offset (row-major, 9 floats).
|
|
400
|
+
*/
|
|
401
|
+
export function writeMatrix3ToFloat32Array(out, offset, source) {
|
|
402
|
+
const m = source.m;
|
|
403
|
+
for (let i = 0; i < 9; i++) {
|
|
404
|
+
out[offset + i] = m[i];
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
const __identity = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
|
|
408
|
+
//# sourceMappingURL=matrix3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix3.js","sourceRoot":"","sources":["../src/matrix3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Matrix3 } from '@flighthq/types';
|
|
2
|
+
export declare function acquireIdentityMatrix3(): Matrix3;
|
|
3
|
+
export declare function acquireMatrix3(): Matrix3;
|
|
4
|
+
export declare function clearMatrix3Pool(): void;
|
|
5
|
+
export declare function releaseMatrix3(m: Matrix3): void;
|
|
6
|
+
//# sourceMappingURL=matrix3Pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix3Pool.d.ts","sourceRoot":"","sources":["../src/matrix3Pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,wBAAgB,sBAAsB,IAAI,OAAO,CAIhD;AAED,wBAAgB,cAAc,IAAI,OAAO,CAUxC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAG/C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createMatrix3, setMatrix3Identity } from './matrix3';
|
|
2
|
+
export function acquireIdentityMatrix3() {
|
|
3
|
+
const m = acquireMatrix3();
|
|
4
|
+
setMatrix3Identity(m);
|
|
5
|
+
return m;
|
|
6
|
+
}
|
|
7
|
+
export function acquireMatrix3() {
|
|
8
|
+
let m;
|
|
9
|
+
if (pool.length > 0) {
|
|
10
|
+
m = pool.pop();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
m = createMatrix3();
|
|
14
|
+
}
|
|
15
|
+
return m;
|
|
16
|
+
}
|
|
17
|
+
export function clearMatrix3Pool() {
|
|
18
|
+
pool.length = 0;
|
|
19
|
+
}
|
|
20
|
+
export function releaseMatrix3(m) {
|
|
21
|
+
if (!m)
|
|
22
|
+
return;
|
|
23
|
+
pool.push(m);
|
|
24
|
+
}
|
|
25
|
+
const pool = [];
|
|
26
|
+
//# sourceMappingURL=matrix3Pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix3Pool.js","sourceRoot":"","sources":["../src/matrix3Pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;IAC3B,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAU,CAAC;IAEf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAa,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAU;IACvC,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AAED,MAAM,IAAI,GAAc,EAAE,CAAC"}
|