@kiberon-labs/behave-graph-scene 1.0.0 → 1.0.1
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/.turbo/turbo-build.log +7 -0
- package/LICENSE +6 -0
- package/README.md +13 -0
- package/dist/Abstractions/Drivers/DummyScene.d.ts +20 -0
- package/dist/Abstractions/Drivers/DummyScene.d.ts.map +1 -0
- package/dist/Abstractions/Drivers/DummyScene.js +58 -0
- package/dist/Abstractions/Drivers/DummyScene.js.map +1 -0
- package/dist/Abstractions/IScene.d.ts +16 -0
- package/dist/Abstractions/IScene.d.ts.map +1 -0
- package/dist/GLTFJson.d.ts +33 -0
- package/dist/GLTFJson.d.ts.map +1 -0
- package/dist/Nodes/Actions/EaseSceneProperty.d.ts +23 -0
- package/dist/Nodes/Actions/EaseSceneProperty.d.ts.map +1 -0
- package/dist/Nodes/Actions/EaseSceneProperty.js +73 -0
- package/dist/Nodes/Actions/EaseSceneProperty.js.map +1 -0
- package/dist/Nodes/Actions/SetSceneProperty.d.ts +5 -0
- package/dist/Nodes/Actions/SetSceneProperty.d.ts.map +1 -0
- package/dist/Nodes/Actions/SetSceneProperty.js +28 -0
- package/dist/Nodes/Actions/SetSceneProperty.js.map +1 -0
- package/dist/Nodes/Events/OnSceneNodeClick.d.ts +5 -0
- package/dist/Nodes/Events/OnSceneNodeClick.d.ts.map +1 -0
- package/dist/Nodes/Events/OnSceneNodeClick.js +39 -0
- package/dist/Nodes/Events/OnSceneNodeClick.js.map +1 -0
- package/dist/Nodes/Logic/ColorNodes.d.ts +19 -0
- package/dist/Nodes/Logic/ColorNodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/ColorNodes.js +137 -0
- package/dist/Nodes/Logic/ColorNodes.js.map +1 -0
- package/dist/Nodes/Logic/EulerNodes.d.ts +18 -0
- package/dist/Nodes/Logic/EulerNodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/EulerNodes.js +132 -0
- package/dist/Nodes/Logic/EulerNodes.js.map +1 -0
- package/dist/Nodes/Logic/Mat3Nodes.d.ts +28 -0
- package/dist/Nodes/Logic/Mat3Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Mat3Nodes.js +213 -0
- package/dist/Nodes/Logic/Mat3Nodes.js.map +1 -0
- package/dist/Nodes/Logic/Mat4Nodes.d.ts +34 -0
- package/dist/Nodes/Logic/Mat4Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Mat4Nodes.js +267 -0
- package/dist/Nodes/Logic/Mat4Nodes.js.map +1 -0
- package/dist/Nodes/Logic/QuatNodes.d.ts +24 -0
- package/dist/Nodes/Logic/QuatNodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/QuatNodes.js +173 -0
- package/dist/Nodes/Logic/QuatNodes.js.map +1 -0
- package/dist/Nodes/Logic/Vec2Nodes.d.ts +18 -0
- package/dist/Nodes/Logic/Vec2Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Vec2Nodes.js +115 -0
- package/dist/Nodes/Logic/Vec2Nodes.js.map +1 -0
- package/dist/Nodes/Logic/Vec3Nodes.d.ts +19 -0
- package/dist/Nodes/Logic/Vec3Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Vec3Nodes.js +137 -0
- package/dist/Nodes/Logic/Vec3Nodes.js.map +1 -0
- package/dist/Nodes/Logic/Vec4Nodes.d.ts +18 -0
- package/dist/Nodes/Logic/Vec4Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Vec4Nodes.js +132 -0
- package/dist/Nodes/Logic/Vec4Nodes.js.map +1 -0
- package/dist/Nodes/Logic/VecElements.d.ts +9 -0
- package/dist/Nodes/Logic/VecElements.d.ts.map +1 -0
- package/dist/Nodes/Logic/VecElements.js +22 -0
- package/dist/Nodes/Logic/VecElements.js.map +1 -0
- package/dist/Nodes/Queries/GetSceneProperty.d.ts +5 -0
- package/dist/Nodes/Queries/GetSceneProperty.d.ts.map +1 -0
- package/dist/Nodes/Queries/GetSceneProperty.js +23 -0
- package/dist/Nodes/Queries/GetSceneProperty.js.map +1 -0
- package/dist/Values/ColorValue.d.ts +7 -0
- package/dist/Values/ColorValue.d.ts.map +1 -0
- package/dist/Values/ColorValue.js +20 -0
- package/dist/Values/ColorValue.js.map +1 -0
- package/dist/Values/EulerValue.d.ts +7 -0
- package/dist/Values/EulerValue.d.ts.map +1 -0
- package/dist/Values/EulerValue.js +20 -0
- package/dist/Values/EulerValue.js.map +1 -0
- package/dist/Values/Internal/Mat3.d.ts +43 -0
- package/dist/Values/Internal/Mat3.d.ts.map +1 -0
- package/dist/Values/Internal/Mat3.js +278 -0
- package/dist/Values/Internal/Mat3.js.map +1 -0
- package/dist/Values/Internal/Mat4.d.ts +53 -0
- package/dist/Values/Internal/Mat4.d.ts.map +1 -0
- package/dist/Values/Internal/Mat4.js +445 -0
- package/dist/Values/Internal/Mat4.js.map +1 -0
- package/dist/Values/Internal/Vec2.d.ts +25 -0
- package/dist/Values/Internal/Vec2.d.ts.map +1 -0
- package/dist/Values/Internal/Vec2.js +64 -0
- package/dist/Values/Internal/Vec2.js.map +1 -0
- package/dist/Values/Internal/Vec3.d.ts +38 -0
- package/dist/Values/Internal/Vec3.d.ts.map +1 -0
- package/dist/Values/Internal/Vec3.js +159 -0
- package/dist/Values/Internal/Vec3.js.map +1 -0
- package/dist/Values/Internal/Vec4.d.ts +49 -0
- package/dist/Values/Internal/Vec4.d.ts.map +1 -0
- package/dist/Values/Internal/Vec4.js +191 -0
- package/dist/Values/Internal/Vec4.js.map +1 -0
- package/dist/Values/Mat3Value.d.ts +7 -0
- package/dist/Values/Mat3Value.d.ts.map +1 -0
- package/dist/Values/Mat3Value.js +16 -0
- package/dist/Values/Mat3Value.js.map +1 -0
- package/dist/Values/Mat4Value.d.ts +7 -0
- package/dist/Values/Mat4Value.d.ts.map +1 -0
- package/dist/Values/Mat4Value.js +16 -0
- package/dist/Values/Mat4Value.js.map +1 -0
- package/dist/Values/QuatValue.d.ts +7 -0
- package/dist/Values/QuatValue.d.ts.map +1 -0
- package/dist/Values/QuatValue.js +21 -0
- package/dist/Values/QuatValue.js.map +1 -0
- package/dist/Values/Vec2Value.d.ts +7 -0
- package/dist/Values/Vec2Value.d.ts.map +1 -0
- package/dist/Values/Vec2Value.js +16 -0
- package/dist/Values/Vec2Value.js.map +1 -0
- package/dist/Values/Vec3Value.d.ts +7 -0
- package/dist/Values/Vec3Value.d.ts.map +1 -0
- package/dist/Values/Vec3Value.js +20 -0
- package/dist/Values/Vec3Value.js.map +1 -0
- package/dist/Values/Vec4Value.d.ts +7 -0
- package/dist/Values/Vec4Value.d.ts.map +1 -0
- package/dist/Values/Vec4Value.js +21 -0
- package/dist/Values/Vec4Value.js.map +1 -0
- package/dist/_virtual/rolldown_runtime.js +13 -0
- package/dist/buildScene.d.ts +74 -0
- package/dist/buildScene.d.ts.map +1 -0
- package/dist/buildScene.js +283 -0
- package/dist/buildScene.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +31 -0
- package/dist/registerSceneProfile.d.ts +10 -0
- package/dist/registerSceneProfile.d.ts.map +1 -0
- package/dist/registerSceneProfile.js +78 -0
- package/dist/registerSceneProfile.js.map +1 -0
- package/package.json +19 -9
- package/src/Nodes/Logic/QuatNodes.ts +11 -11
- package/tests/graphs/logic/Color.json +53 -53
- package/tests/graphs/logic/Euler.json +53 -53
- package/tests/graphs/logic/Quaternion.json +56 -56
- package/tests/graphs/logic/Vector2.json +50 -50
- package/tests/graphs/logic/Vector3.json +53 -53
- package/tests/graphs/logic/Vector4.json +56 -56
- package/tests/tsconfig.json +10 -10
- package/tsconfig.json +54 -54
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import "./Vec2.js";
|
|
2
|
+
import "./Vec4.js";
|
|
3
|
+
import { eulerToMat3, quatToMat3 } from "./Mat3.js";
|
|
4
|
+
import { Vec3, vec3Cross, vec3Length, vec3MultiplyByScalar, vec3Normalize, vec3Subtract } from "./Vec3.js";
|
|
5
|
+
import { EPSILON, equalsTolerance, parseSafeFloats, toSafeString } from "@kiberon-labs/behave-graph";
|
|
6
|
+
|
|
7
|
+
//#region src/Values/Internal/Mat4.ts
|
|
8
|
+
const NUM_ROWS = 4;
|
|
9
|
+
const NUM_COLUMNS = 4;
|
|
10
|
+
const NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;
|
|
11
|
+
var Mat4 = class Mat4 {
|
|
12
|
+
elements;
|
|
13
|
+
constructor(elements = [
|
|
14
|
+
1,
|
|
15
|
+
0,
|
|
16
|
+
0,
|
|
17
|
+
0,
|
|
18
|
+
0,
|
|
19
|
+
1,
|
|
20
|
+
0,
|
|
21
|
+
0,
|
|
22
|
+
0,
|
|
23
|
+
0,
|
|
24
|
+
1,
|
|
25
|
+
0,
|
|
26
|
+
0,
|
|
27
|
+
0,
|
|
28
|
+
0,
|
|
29
|
+
1
|
|
30
|
+
]) {
|
|
31
|
+
if (elements.length !== NUM_ELEMENTS) throw new Error(`elements must have length ${NUM_ELEMENTS}, got ${elements.length}`);
|
|
32
|
+
this.elements = elements;
|
|
33
|
+
}
|
|
34
|
+
clone(result = new Mat4()) {
|
|
35
|
+
return result.set(this.elements);
|
|
36
|
+
}
|
|
37
|
+
set(elements) {
|
|
38
|
+
if (elements.length !== NUM_ELEMENTS) throw new Error(`elements must have length ${NUM_ELEMENTS}, got ${elements.length}`);
|
|
39
|
+
this.elements = [...elements];
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
function mat4SetColumn4(m, columnIndex, column, result = new Mat4()) {
|
|
44
|
+
const re = result.set(m.elements).elements;
|
|
45
|
+
const base = Number(columnIndex) * NUM_ROWS;
|
|
46
|
+
re[base + 0] = column.x;
|
|
47
|
+
re[base + 1] = column.y;
|
|
48
|
+
re[base + 2] = column.z;
|
|
49
|
+
re[base + 3] = column.w;
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
function mat4SetRow4(m, rowIndex, row, result = new Mat4()) {
|
|
53
|
+
const re = result.set(m.elements).elements;
|
|
54
|
+
const base = Number(rowIndex);
|
|
55
|
+
re[base + NUM_COLUMNS * 0] = row.x;
|
|
56
|
+
re[base + NUM_COLUMNS * 1] = row.y;
|
|
57
|
+
re[base + NUM_COLUMNS * 2] = row.z;
|
|
58
|
+
re[base + NUM_COLUMNS * 3] = row.w;
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
function column4ToMat4(a, b, c, d, result = new Mat4()) {
|
|
62
|
+
const re = result.elements;
|
|
63
|
+
const columns = [
|
|
64
|
+
a,
|
|
65
|
+
b,
|
|
66
|
+
c,
|
|
67
|
+
d
|
|
68
|
+
];
|
|
69
|
+
for (let c$1 = 0; c$1 < columns.length; c$1++) {
|
|
70
|
+
const base = c$1 * NUM_ROWS;
|
|
71
|
+
const column = columns[c$1];
|
|
72
|
+
re[base + 0] = column.x;
|
|
73
|
+
re[base + 1] = column.y;
|
|
74
|
+
re[base + 2] = column.z;
|
|
75
|
+
re[base + 3] = column.w;
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
function mat4Equals(a, b, tolerance = EPSILON) {
|
|
80
|
+
for (let i = 0; i < NUM_ELEMENTS; i++) if (!equalsTolerance(a.elements[i], b.elements[i], tolerance)) return false;
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
function mat4Add(a, b, result = new Mat4()) {
|
|
84
|
+
result.elements = a.elements.map((a$1, i) => a$1 + b.elements[i]);
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
function mat4Subtract(a, b, result = new Mat4()) {
|
|
88
|
+
result.elements = a.elements.map((a$1, i) => a$1 - b.elements[i]);
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
function mat4MultiplyByScalar(a, b, result = new Mat4()) {
|
|
92
|
+
result.elements = a.elements.map((a$1) => a$1 * b);
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
function mat4Negate(a, result = new Mat4()) {
|
|
96
|
+
result.elements = a.elements.map((a$1) => -a$1);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
function mat4Multiply(a, b, result = new Mat4()) {
|
|
100
|
+
const ae = a.elements;
|
|
101
|
+
const be = b.elements;
|
|
102
|
+
const te = result.elements;
|
|
103
|
+
const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];
|
|
104
|
+
const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];
|
|
105
|
+
const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];
|
|
106
|
+
const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];
|
|
107
|
+
const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];
|
|
108
|
+
const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];
|
|
109
|
+
const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];
|
|
110
|
+
const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];
|
|
111
|
+
te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;
|
|
112
|
+
te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;
|
|
113
|
+
te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;
|
|
114
|
+
te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;
|
|
115
|
+
te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;
|
|
116
|
+
te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;
|
|
117
|
+
te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;
|
|
118
|
+
te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;
|
|
119
|
+
te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;
|
|
120
|
+
te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;
|
|
121
|
+
te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;
|
|
122
|
+
te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;
|
|
123
|
+
te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;
|
|
124
|
+
te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;
|
|
125
|
+
te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;
|
|
126
|
+
te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
function mat4Determinant(m) {
|
|
130
|
+
const me = m.elements, n11 = me[0], n21 = me[1], n31 = me[2], n41 = me[3], n12 = me[4], n22 = me[5], n32 = me[6], n42 = me[7], n13 = me[8], n23 = me[9], n33 = me[10], n43 = me[11], n14 = me[12], n24 = me[13], n34 = me[14], n44 = me[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;
|
|
131
|
+
return n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;
|
|
132
|
+
}
|
|
133
|
+
function mat4Adjoint(m, result = new Mat4()) {
|
|
134
|
+
const a = m.elements;
|
|
135
|
+
const out = result.elements;
|
|
136
|
+
const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
|
|
137
|
+
const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
|
|
138
|
+
const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
|
|
139
|
+
const a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
|
|
140
|
+
const b00 = a00 * a11 - a01 * a10;
|
|
141
|
+
const b01 = a00 * a12 - a02 * a10;
|
|
142
|
+
const b02 = a00 * a13 - a03 * a10;
|
|
143
|
+
const b03 = a01 * a12 - a02 * a11;
|
|
144
|
+
const b04 = a01 * a13 - a03 * a11;
|
|
145
|
+
const b05 = a02 * a13 - a03 * a12;
|
|
146
|
+
const b06 = a20 * a31 - a21 * a30;
|
|
147
|
+
const b07 = a20 * a32 - a22 * a30;
|
|
148
|
+
const b08 = a20 * a33 - a23 * a30;
|
|
149
|
+
const b09 = a21 * a32 - a22 * a31;
|
|
150
|
+
const b10 = a21 * a33 - a23 * a31;
|
|
151
|
+
const b11 = a22 * a33 - a23 * a32;
|
|
152
|
+
out[0] = a11 * b11 - a12 * b10 + a13 * b09;
|
|
153
|
+
out[1] = a02 * b10 - a01 * b11 - a03 * b09;
|
|
154
|
+
out[2] = a31 * b05 - a32 * b04 + a33 * b03;
|
|
155
|
+
out[3] = a22 * b04 - a21 * b05 - a23 * b03;
|
|
156
|
+
out[4] = a12 * b08 - a10 * b11 - a13 * b07;
|
|
157
|
+
out[5] = a00 * b11 - a02 * b08 + a03 * b07;
|
|
158
|
+
out[6] = a32 * b02 - a30 * b05 - a33 * b01;
|
|
159
|
+
out[7] = a20 * b05 - a22 * b02 + a23 * b01;
|
|
160
|
+
out[8] = a10 * b10 - a11 * b08 + a13 * b06;
|
|
161
|
+
out[9] = a01 * b08 - a00 * b10 - a03 * b06;
|
|
162
|
+
out[10] = a30 * b04 - a31 * b02 + a33 * b00;
|
|
163
|
+
out[11] = a21 * b02 - a20 * b04 - a23 * b00;
|
|
164
|
+
out[12] = a11 * b07 - a10 * b09 - a12 * b06;
|
|
165
|
+
out[13] = a00 * b09 - a01 * b07 + a02 * b06;
|
|
166
|
+
out[14] = a31 * b01 - a30 * b03 - a32 * b00;
|
|
167
|
+
out[15] = a20 * b03 - a21 * b01 + a22 * b00;
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
function mat4Transpose(m, result = new Mat4()) {
|
|
171
|
+
const re = m.clone(result).elements;
|
|
172
|
+
let tmp;
|
|
173
|
+
tmp = re[1];
|
|
174
|
+
re[1] = re[4];
|
|
175
|
+
re[4] = tmp;
|
|
176
|
+
tmp = re[2];
|
|
177
|
+
re[2] = re[8];
|
|
178
|
+
re[8] = tmp;
|
|
179
|
+
tmp = re[6];
|
|
180
|
+
re[6] = re[9];
|
|
181
|
+
re[9] = tmp;
|
|
182
|
+
tmp = re[3];
|
|
183
|
+
re[3] = re[12];
|
|
184
|
+
re[12] = tmp;
|
|
185
|
+
tmp = re[7];
|
|
186
|
+
re[7] = re[13];
|
|
187
|
+
re[13] = tmp;
|
|
188
|
+
tmp = re[11];
|
|
189
|
+
re[11] = re[14];
|
|
190
|
+
re[14] = tmp;
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
function mat4Inverse(m, result = new Mat4()) {
|
|
194
|
+
const me = m.elements, n11 = me[0], n21 = me[1], n31 = me[2], n41 = me[3], n12 = me[4], n22 = me[5], n32 = me[6], n42 = me[7], n13 = me[8], n23 = me[9], n33 = me[10], n43 = me[11], n14 = me[12], n24 = me[13], n34 = me[14], n44 = me[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;
|
|
195
|
+
const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;
|
|
196
|
+
if (det === 0) throw new Error("can not invert degenerate matrix");
|
|
197
|
+
const detInv = 1 / det;
|
|
198
|
+
const re = result.elements;
|
|
199
|
+
re[0] = t11 * detInv;
|
|
200
|
+
re[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;
|
|
201
|
+
re[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;
|
|
202
|
+
re[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;
|
|
203
|
+
re[4] = t12 * detInv;
|
|
204
|
+
re[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;
|
|
205
|
+
re[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;
|
|
206
|
+
re[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;
|
|
207
|
+
re[8] = t13 * detInv;
|
|
208
|
+
re[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;
|
|
209
|
+
re[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;
|
|
210
|
+
re[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;
|
|
211
|
+
re[12] = t14 * detInv;
|
|
212
|
+
re[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;
|
|
213
|
+
re[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;
|
|
214
|
+
re[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
function mat4Mix(a, b, t, result = new Mat4()) {
|
|
218
|
+
const s = 1 - t;
|
|
219
|
+
for (let i = 0; i < NUM_ELEMENTS; i++) result.elements[i] = a.elements[i] * s + b.elements[i] * t;
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
function mat4FromArray(array, offset = 0, result = new Mat4()) {
|
|
223
|
+
for (let i = 0; i < NUM_ELEMENTS; i++) result.elements[i] = array[offset + i];
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
function mat4ToArray(a, array, offset = 0) {
|
|
227
|
+
for (let i = 0; i < NUM_ELEMENTS; i++) array[offset + i] = a.elements[i];
|
|
228
|
+
}
|
|
229
|
+
function mat4ToString(a) {
|
|
230
|
+
return toSafeString(a.elements);
|
|
231
|
+
}
|
|
232
|
+
function mat4Parse(text, result = new Mat4()) {
|
|
233
|
+
return mat4FromArray(parseSafeFloats(text), 0, result);
|
|
234
|
+
}
|
|
235
|
+
function mat3ToMat4(a, result = new Mat4()) {
|
|
236
|
+
const ae = a.elements;
|
|
237
|
+
return result.set([
|
|
238
|
+
ae[0],
|
|
239
|
+
ae[1],
|
|
240
|
+
ae[2],
|
|
241
|
+
0,
|
|
242
|
+
ae[3],
|
|
243
|
+
ae[4],
|
|
244
|
+
ae[5],
|
|
245
|
+
0,
|
|
246
|
+
ae[6],
|
|
247
|
+
ae[7],
|
|
248
|
+
ae[8],
|
|
249
|
+
0,
|
|
250
|
+
0,
|
|
251
|
+
0,
|
|
252
|
+
0,
|
|
253
|
+
1
|
|
254
|
+
]);
|
|
255
|
+
}
|
|
256
|
+
function eulerToMat4(e, result = new Mat4()) {
|
|
257
|
+
return mat3ToMat4(eulerToMat3(e), result);
|
|
258
|
+
}
|
|
259
|
+
function quatToMat4(q, result = new Mat4()) {
|
|
260
|
+
return mat3ToMat4(quatToMat3(q), result);
|
|
261
|
+
}
|
|
262
|
+
function scale3ToMat4(s, result = new Mat4()) {
|
|
263
|
+
return result.set([
|
|
264
|
+
s.x,
|
|
265
|
+
0,
|
|
266
|
+
0,
|
|
267
|
+
0,
|
|
268
|
+
0,
|
|
269
|
+
s.y,
|
|
270
|
+
0,
|
|
271
|
+
0,
|
|
272
|
+
0,
|
|
273
|
+
0,
|
|
274
|
+
s.z,
|
|
275
|
+
0,
|
|
276
|
+
0,
|
|
277
|
+
0,
|
|
278
|
+
0,
|
|
279
|
+
1
|
|
280
|
+
]);
|
|
281
|
+
}
|
|
282
|
+
function mat4ToScale3(m, result = new Vec3()) {
|
|
283
|
+
const mat = m.elements;
|
|
284
|
+
const m11 = mat[0];
|
|
285
|
+
const m12 = mat[1];
|
|
286
|
+
const m13 = mat[2];
|
|
287
|
+
const m21 = mat[4];
|
|
288
|
+
const m22 = mat[5];
|
|
289
|
+
const m23 = mat[6];
|
|
290
|
+
const m31 = mat[8];
|
|
291
|
+
const m32 = mat[9];
|
|
292
|
+
const m33 = mat[10];
|
|
293
|
+
return result.set(Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13), Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23), Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33));
|
|
294
|
+
}
|
|
295
|
+
function translation3ToMat4(t, result = new Mat4()) {
|
|
296
|
+
return result.set([
|
|
297
|
+
1,
|
|
298
|
+
0,
|
|
299
|
+
0,
|
|
300
|
+
t.x,
|
|
301
|
+
0,
|
|
302
|
+
1,
|
|
303
|
+
0,
|
|
304
|
+
t.y,
|
|
305
|
+
0,
|
|
306
|
+
0,
|
|
307
|
+
1,
|
|
308
|
+
t.z,
|
|
309
|
+
0,
|
|
310
|
+
0,
|
|
311
|
+
0,
|
|
312
|
+
1
|
|
313
|
+
]);
|
|
314
|
+
}
|
|
315
|
+
function mat4ToTranslation3(m, result = new Vec3()) {
|
|
316
|
+
const me = m.elements;
|
|
317
|
+
return result.set(me[3], me[7], me[11]);
|
|
318
|
+
}
|
|
319
|
+
function mat4Translate(m, t, result = new Mat4()) {
|
|
320
|
+
return mat4Multiply(m, translation3ToMat4(t), result);
|
|
321
|
+
}
|
|
322
|
+
function mat4Scale(m, s, result = new Mat4()) {
|
|
323
|
+
return mat4Multiply(m, scale3ToMat4(s), result);
|
|
324
|
+
}
|
|
325
|
+
function mat4RotateByQuat(m, q, result = new Mat4()) {
|
|
326
|
+
return mat4Multiply(m, quatToMat4(q), result);
|
|
327
|
+
}
|
|
328
|
+
function mat4RotateByEuler(m, e, result = new Mat4()) {
|
|
329
|
+
return mat4Multiply(m, eulerToMat4(e), result);
|
|
330
|
+
}
|
|
331
|
+
function mat4TransformPoint3(m, v, result = new Vec3()) {
|
|
332
|
+
const x = v.x, y = v.y, z = v.z;
|
|
333
|
+
const e = m.elements;
|
|
334
|
+
const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);
|
|
335
|
+
result.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;
|
|
336
|
+
result.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;
|
|
337
|
+
result.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;
|
|
338
|
+
return result;
|
|
339
|
+
}
|
|
340
|
+
function mat4TransformNormal3(v, m, result = new Vec3()) {
|
|
341
|
+
const x = v.x, y = v.y, z = v.z;
|
|
342
|
+
const e = m.elements;
|
|
343
|
+
result.x = e[0] * x + e[4] * y + e[8] * z;
|
|
344
|
+
result.y = e[1] * x + e[5] * y + e[9] * z;
|
|
345
|
+
result.z = e[2] * x + e[6] * y + e[10] * z;
|
|
346
|
+
return vec3Normalize(result, result);
|
|
347
|
+
}
|
|
348
|
+
function mat4Perspective(left, right, top, bottom, near, far, result = new Mat4()) {
|
|
349
|
+
const x = 2 * near / (right - left);
|
|
350
|
+
const y = 2 * near / (top - bottom);
|
|
351
|
+
const a = (right + left) / (right - left);
|
|
352
|
+
const b = (top + bottom) / (top - bottom);
|
|
353
|
+
const c = -(far + near) / (far - near);
|
|
354
|
+
const d = -2 * far * near / (far - near);
|
|
355
|
+
return result.set([
|
|
356
|
+
x,
|
|
357
|
+
0,
|
|
358
|
+
a,
|
|
359
|
+
0,
|
|
360
|
+
0,
|
|
361
|
+
y,
|
|
362
|
+
b,
|
|
363
|
+
0,
|
|
364
|
+
0,
|
|
365
|
+
0,
|
|
366
|
+
c,
|
|
367
|
+
d,
|
|
368
|
+
0,
|
|
369
|
+
0,
|
|
370
|
+
-1,
|
|
371
|
+
0
|
|
372
|
+
]);
|
|
373
|
+
}
|
|
374
|
+
function mat4PerspectiveFov(verticalFov, near, far, zoom, aspectRatio, result = new Mat4()) {
|
|
375
|
+
const height = 2 * near * Math.tan(verticalFov * Math.PI / 180) / zoom;
|
|
376
|
+
const width = height * aspectRatio;
|
|
377
|
+
const right = width * .5;
|
|
378
|
+
const left = right - width;
|
|
379
|
+
const top = height * .5;
|
|
380
|
+
return mat4Perspective(left, right, top, top - height, near, far, result);
|
|
381
|
+
}
|
|
382
|
+
function mat4Orthogonal(left, right, top, bottom, near, far, result = new Mat4()) {
|
|
383
|
+
const w = 1 / (right - left);
|
|
384
|
+
const h = 1 / (top - bottom);
|
|
385
|
+
const p = 1 / (far - near);
|
|
386
|
+
const x = (right + left) * w;
|
|
387
|
+
const y = (top + bottom) * h;
|
|
388
|
+
const z = (far + near) * p;
|
|
389
|
+
return result.set([
|
|
390
|
+
2 * w,
|
|
391
|
+
0,
|
|
392
|
+
0,
|
|
393
|
+
-x,
|
|
394
|
+
0,
|
|
395
|
+
2 * h,
|
|
396
|
+
0,
|
|
397
|
+
-y,
|
|
398
|
+
0,
|
|
399
|
+
0,
|
|
400
|
+
-2 * p,
|
|
401
|
+
-z,
|
|
402
|
+
0,
|
|
403
|
+
0,
|
|
404
|
+
0,
|
|
405
|
+
1
|
|
406
|
+
]);
|
|
407
|
+
}
|
|
408
|
+
function mat4OrthogonalSimple(height, center, near, far, zoom, aspectRatio = 1, result = new Mat4()) {
|
|
409
|
+
height /= zoom;
|
|
410
|
+
const width = height * aspectRatio;
|
|
411
|
+
const left = -width * .5 + center.x;
|
|
412
|
+
const right = left + width;
|
|
413
|
+
const top = -height * .5 + center.y;
|
|
414
|
+
return mat4Orthogonal(left, right, top, top + height, near, far, result);
|
|
415
|
+
}
|
|
416
|
+
function mat4LookAt(eye, target, up, result = new Mat4()) {
|
|
417
|
+
const te = result.elements;
|
|
418
|
+
const look = vec3Subtract(eye, target);
|
|
419
|
+
const lookLength = vec3Length(look);
|
|
420
|
+
if (lookLength === 0) look.z = 1;
|
|
421
|
+
else vec3MultiplyByScalar(look, 1 / lookLength, look);
|
|
422
|
+
const right = vec3Cross(up, look);
|
|
423
|
+
const rightLength = vec3Length(right);
|
|
424
|
+
if (rightLength === 0) {
|
|
425
|
+
if (Math.abs(up.z) === 1) up.x += 1e-4;
|
|
426
|
+
else up.z += 1e-4;
|
|
427
|
+
vec3Normalize(up, up);
|
|
428
|
+
vec3Cross(right, up, right);
|
|
429
|
+
} else vec3MultiplyByScalar(right, 1 / rightLength, right);
|
|
430
|
+
const up2 = vec3Cross(look, right);
|
|
431
|
+
te[0] = right.x;
|
|
432
|
+
te[4] = up2.x;
|
|
433
|
+
te[8] = look.x;
|
|
434
|
+
te[1] = right.y;
|
|
435
|
+
te[5] = up2.y;
|
|
436
|
+
te[9] = look.y;
|
|
437
|
+
te[2] = right.z;
|
|
438
|
+
te[6] = up2.z;
|
|
439
|
+
te[10] = look.z;
|
|
440
|
+
return result;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
//#endregion
|
|
444
|
+
export { Mat4, column4ToMat4, eulerToMat4, mat3ToMat4, mat4Add, mat4Adjoint, mat4Determinant, mat4Equals, mat4FromArray, mat4Inverse, mat4LookAt, mat4Mix, mat4Multiply, mat4MultiplyByScalar, mat4Negate, mat4Orthogonal, mat4OrthogonalSimple, mat4Parse, mat4Perspective, mat4PerspectiveFov, mat4RotateByEuler, mat4RotateByQuat, mat4Scale, mat4SetColumn4, mat4SetRow4, mat4Subtract, mat4ToArray, mat4ToScale3, mat4ToString, mat4ToTranslation3, mat4TransformNormal3, mat4TransformPoint3, mat4Translate, mat4Transpose, quatToMat4, scale3ToMat4, translation3ToMat4 };
|
|
445
|
+
//# sourceMappingURL=Mat4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mat4.js","names":["c","a"],"sources":["../../../src/Values/Internal/Mat4.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport { eulerToMat3, Mat3, quatToMat3 } from './Mat3.js';\nimport { Vec2 } from './Vec2.js';\nimport {\n Vec3,\n vec3Cross,\n vec3Length,\n vec3MultiplyByScalar,\n vec3Normalize,\n vec3Subtract\n} from './Vec3.js';\nimport { Vec4 } from './Vec4.js';\n\n// uses OpenGL matrix layout where each column is specified subsequently in order from left to right.\n// ( x, y, z, 1 ) x [ 0 4 8 12] = ( x', y', z', 1 )\n// [ 1 5 9 13]\n// [ 2 6 10 14]\n// [ 3 7 11 15]\n// where elements 3, 7, 11 would be translation in 3D, as they would multiplied\n// by the last virtual element of the 3D vector.\n\nconst NUM_ROWS = 4;\nconst NUM_COLUMNS = 4;\nconst NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;\n\ntype Mat4Elements = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport type Mat4JSON = Mat4Elements;\n\nexport class Mat4 {\n public elements: Mat4Elements;\n constructor(\n elements: Mat4Elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n ) {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = elements;\n }\n\n clone(result = new Mat4()): Mat4 {\n return result.set(this.elements);\n }\n set(elements: Mat4Elements): this {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = [...elements];\n return this;\n }\n}\n\nexport function mat4SetColumn4(\n m: Mat4,\n columnIndex: bigint,\n column: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.set(m.elements).elements;\n const base = Number(columnIndex) * NUM_ROWS;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n re[base + 3] = column.w;\n return result;\n}\n\nexport function mat4SetRow4(\n m: Mat4,\n rowIndex: bigint,\n row: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.set(m.elements).elements;\n const base = Number(rowIndex);\n re[base + NUM_COLUMNS * 0] = row.x;\n re[base + NUM_COLUMNS * 1] = row.y;\n re[base + NUM_COLUMNS * 2] = row.z;\n re[base + NUM_COLUMNS * 3] = row.w;\n return result;\n}\n\nexport function column4ToMat4(\n a: Vec4,\n b: Vec4,\n c: Vec4,\n d: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.elements;\n const columns = [a, b, c, d];\n for (let c = 0; c < columns.length; c++) {\n const base = c * NUM_ROWS;\n const column = columns[c]!;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n re[base + 3] = column.w;\n }\n return result;\n}\n\nexport function mat4Equals(\n a: Mat4,\n b: Mat4,\n tolerance: number = EPSILON\n): boolean {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n if (!equalsTolerance(a.elements[i]!, b.elements[i]!, tolerance))\n return false;\n }\n return true;\n}\n\nexport function mat4Add(a: Mat4, b: Mat4, result: Mat4 = new Mat4()): Mat4 {\n result.elements = a.elements.map(\n (a, i) => a + b.elements[i]!\n ) as Mat4Elements;\n return result;\n}\nexport function mat4Subtract(\n a: Mat4,\n b: Mat4,\n result: Mat4 = new Mat4()\n): Mat4 {\n result.elements = a.elements.map(\n (a, i) => a - b.elements[i]!\n ) as Mat4Elements;\n return result;\n}\n\nexport function mat4MultiplyByScalar(\n a: Mat4,\n b: number,\n result: Mat4 = new Mat4()\n): Mat4 {\n result.elements = a.elements.map((a) => a * b) as Mat4Elements;\n return result;\n}\n\nexport function mat4Negate(a: Mat4, result: Mat4 = new Mat4()): Mat4 {\n result.elements = a.elements.map((a) => -a) as Mat4Elements;\n return result;\n}\n\nexport function mat4Multiply(a: Mat4, b: Mat4, result = new Mat4()): Mat4 {\n const ae = a.elements;\n const be = b.elements;\n const te = result.elements;\n\n const a11 = ae[0],\n a12 = ae[4],\n a13 = ae[8],\n a14 = ae[12];\n const a21 = ae[1],\n a22 = ae[5],\n a23 = ae[9],\n a24 = ae[13];\n const a31 = ae[2],\n a32 = ae[6],\n a33 = ae[10],\n a34 = ae[14];\n const a41 = ae[3],\n a42 = ae[7],\n a43 = ae[11],\n a44 = ae[15];\n\n const b11 = be[0],\n b12 = be[4],\n b13 = be[8],\n b14 = be[12];\n const b21 = be[1],\n b22 = be[5],\n b23 = be[9],\n b24 = be[13];\n const b31 = be[2],\n b32 = be[6],\n b33 = be[10],\n b34 = be[14];\n const b41 = be[3],\n b42 = be[7],\n b43 = be[11],\n b44 = be[15];\n\n // TODO: Replace with set(...)\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n return result;\n}\n\nexport function mat4Determinant(m: Mat4): number {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const me = m.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n41 = me[3],\n n12 = me[4],\n n22 = me[5],\n n32 = me[6],\n n42 = me[7],\n n13 = me[8],\n n23 = me[9],\n n33 = me[10],\n n43 = me[11],\n n14 = me[12],\n n24 = me[13],\n n34 = me[14],\n n44 = me[15],\n t11 =\n n23 * n34 * n42 -\n n24 * n33 * n42 +\n n24 * n32 * n43 -\n n22 * n34 * n43 -\n n23 * n32 * n44 +\n n22 * n33 * n44,\n t12 =\n n14 * n33 * n42 -\n n13 * n34 * n42 -\n n14 * n32 * n43 +\n n12 * n34 * n43 +\n n13 * n32 * n44 -\n n12 * n33 * n44,\n t13 =\n n13 * n24 * n42 -\n n14 * n23 * n42 +\n n14 * n22 * n43 -\n n12 * n24 * n43 -\n n13 * n22 * n44 +\n n12 * n23 * n44,\n t14 =\n n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34;\n\n return n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n}\nexport function mat4Adjoint(m: Mat4, result = new Mat4()): Mat4 {\n // from gl-matrix\n const a = m.elements;\n const out = result.elements;\n const a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n const a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n const a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n const a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n out[0] = a11 * b11 - a12 * b10 + a13 * b09;\n out[1] = a02 * b10 - a01 * b11 - a03 * b09;\n out[2] = a31 * b05 - a32 * b04 + a33 * b03;\n out[3] = a22 * b04 - a21 * b05 - a23 * b03;\n out[4] = a12 * b08 - a10 * b11 - a13 * b07;\n out[5] = a00 * b11 - a02 * b08 + a03 * b07;\n out[6] = a32 * b02 - a30 * b05 - a33 * b01;\n out[7] = a20 * b05 - a22 * b02 + a23 * b01;\n out[8] = a10 * b10 - a11 * b08 + a13 * b06;\n out[9] = a01 * b08 - a00 * b10 - a03 * b06;\n out[10] = a30 * b04 - a31 * b02 + a33 * b00;\n out[11] = a21 * b02 - a20 * b04 - a23 * b00;\n out[12] = a11 * b07 - a10 * b09 - a12 * b06;\n out[13] = a00 * b09 - a01 * b07 + a02 * b06;\n out[14] = a31 * b01 - a30 * b03 - a32 * b00;\n out[15] = a20 * b03 - a21 * b01 + a22 * b00;\n return result;\n}\n\nexport function mat4Transpose(m: Mat4, result = new Mat4()): Mat4 {\n const re = m.clone(result).elements;\n let tmp;\n\n // TODO: replace this with just reading from me and setting re, no need for a temporary\n tmp = re[1];\n re[1] = re[4];\n re[4] = tmp;\n tmp = re[2];\n re[2] = re[8];\n re[8] = tmp;\n tmp = re[6];\n re[6] = re[9];\n re[9] = tmp;\n\n tmp = re[3];\n re[3] = re[12];\n re[12] = tmp;\n tmp = re[7];\n re[7] = re[13];\n re[13] = tmp;\n tmp = re[11];\n re[11] = re[14];\n re[14] = tmp;\n\n return result;\n}\n\nexport function mat4Inverse(m: Mat4, result = new Mat4()): Mat4 {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const me = m.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n41 = me[3],\n n12 = me[4],\n n22 = me[5],\n n32 = me[6],\n n42 = me[7],\n n13 = me[8],\n n23 = me[9],\n n33 = me[10],\n n43 = me[11],\n n14 = me[12],\n n24 = me[13],\n n34 = me[14],\n n44 = me[15],\n t11 =\n n23 * n34 * n42 -\n n24 * n33 * n42 +\n n24 * n32 * n43 -\n n22 * n34 * n43 -\n n23 * n32 * n44 +\n n22 * n33 * n44,\n t12 =\n n14 * n33 * n42 -\n n13 * n34 * n42 -\n n14 * n32 * n43 +\n n12 * n34 * n43 +\n n13 * n32 * n44 -\n n12 * n33 * n44,\n t13 =\n n13 * n24 * n42 -\n n14 * n23 * n42 +\n n14 * n22 * n43 -\n n12 * n24 * n43 -\n n13 * n22 * n44 +\n n12 * n23 * n44,\n t14 =\n n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34;\n\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n if (det === 0) {\n throw new Error('can not invert degenerate matrix');\n }\n\n const detInv = 1 / det;\n\n // TODO: replace with a set\n const re = result.elements;\n re[0] = t11 * detInv;\n re[1] =\n (n24 * n33 * n41 -\n n23 * n34 * n41 -\n n24 * n31 * n43 +\n n21 * n34 * n43 +\n n23 * n31 * n44 -\n n21 * n33 * n44) *\n detInv;\n re[2] =\n (n22 * n34 * n41 -\n n24 * n32 * n41 +\n n24 * n31 * n42 -\n n21 * n34 * n42 -\n n22 * n31 * n44 +\n n21 * n32 * n44) *\n detInv;\n re[3] =\n (n23 * n32 * n41 -\n n22 * n33 * n41 -\n n23 * n31 * n42 +\n n21 * n33 * n42 +\n n22 * n31 * n43 -\n n21 * n32 * n43) *\n detInv;\n\n re[4] = t12 * detInv;\n re[5] =\n (n13 * n34 * n41 -\n n14 * n33 * n41 +\n n14 * n31 * n43 -\n n11 * n34 * n43 -\n n13 * n31 * n44 +\n n11 * n33 * n44) *\n detInv;\n re[6] =\n (n14 * n32 * n41 -\n n12 * n34 * n41 -\n n14 * n31 * n42 +\n n11 * n34 * n42 +\n n12 * n31 * n44 -\n n11 * n32 * n44) *\n detInv;\n re[7] =\n (n12 * n33 * n41 -\n n13 * n32 * n41 +\n n13 * n31 * n42 -\n n11 * n33 * n42 -\n n12 * n31 * n43 +\n n11 * n32 * n43) *\n detInv;\n\n re[8] = t13 * detInv;\n re[9] =\n (n14 * n23 * n41 -\n n13 * n24 * n41 -\n n14 * n21 * n43 +\n n11 * n24 * n43 +\n n13 * n21 * n44 -\n n11 * n23 * n44) *\n detInv;\n re[10] =\n (n12 * n24 * n41 -\n n14 * n22 * n41 +\n n14 * n21 * n42 -\n n11 * n24 * n42 -\n n12 * n21 * n44 +\n n11 * n22 * n44) *\n detInv;\n re[11] =\n (n13 * n22 * n41 -\n n12 * n23 * n41 -\n n13 * n21 * n42 +\n n11 * n23 * n42 +\n n12 * n21 * n43 -\n n11 * n22 * n43) *\n detInv;\n\n re[12] = t14 * detInv;\n re[13] =\n (n13 * n24 * n31 -\n n14 * n23 * n31 +\n n14 * n21 * n33 -\n n11 * n24 * n33 -\n n13 * n21 * n34 +\n n11 * n23 * n34) *\n detInv;\n re[14] =\n (n14 * n22 * n31 -\n n12 * n24 * n31 -\n n14 * n21 * n32 +\n n11 * n24 * n32 +\n n12 * n21 * n34 -\n n11 * n22 * n34) *\n detInv;\n re[15] =\n (n12 * n23 * n31 -\n n13 * n22 * n31 +\n n13 * n21 * n32 -\n n11 * n23 * n32 -\n n12 * n21 * n33 +\n n11 * n22 * n33) *\n detInv;\n\n return result;\n}\n\nexport function mat4Mix(\n a: Mat4,\n b: Mat4,\n t: number,\n result = new Mat4()\n): Mat4 {\n const s = 1 - t;\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! * s + b.elements[i]! * t;\n }\n return result;\n}\n\nexport function mat4FromArray(\n array: Float32Array | number[],\n offset = 0,\n result: Mat4 = new Mat4()\n): Mat4 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = array[offset + i]!;\n }\n return result;\n}\n\nexport function mat4ToArray(\n a: Mat4,\n array: Float32Array | number[],\n offset = 0\n): void {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n array[offset + i] = a.elements[i]!;\n }\n}\n\nexport function mat4ToString(a: Mat4): string {\n return toSafeString(a.elements);\n}\n\nexport function mat4Parse(text: string, result = new Mat4()): Mat4 {\n return mat4FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function mat3ToMat4(a: Mat3, result = new Mat4()): Mat4 {\n const ae = a.elements;\n return result.set([\n ae[0],\n ae[1],\n ae[2],\n 0,\n ae[3],\n ae[4],\n ae[5],\n 0,\n ae[6],\n ae[7],\n ae[8],\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n}\n\nexport function eulerToMat4(e: Vec3, result = new Mat4()): Mat4 {\n return mat3ToMat4(eulerToMat3(e), result);\n}\n\nexport function quatToMat4(q: Vec4, result = new Mat4()): Mat4 {\n return mat3ToMat4(quatToMat3(q), result);\n}\n\nexport function scale3ToMat4(s: Vec3, result = new Mat4()): Mat4 {\n return result.set([s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1]);\n}\n// from gl-matrix\nexport function mat4ToScale3(m: Mat4, result = new Vec3()): Vec3 {\n const mat = m.elements;\n const m11 = mat[0];\n const m12 = mat[1];\n const m13 = mat[2];\n const m21 = mat[4];\n const m22 = mat[5];\n const m23 = mat[6];\n const m31 = mat[8];\n const m32 = mat[9];\n const m33 = mat[10];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13),\n Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23),\n Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33)\n );\n}\n\nexport function translation3ToMat4(t: Vec3, result = new Mat4()): Mat4 {\n return result.set([1, 0, 0, t.x, 0, 1, 0, t.y, 0, 0, 1, t.z, 0, 0, 0, 1]);\n}\nexport function mat4ToTranslation3(m: Mat4, result = new Vec3()): Vec3 {\n const me = m.elements;\n return result.set(me[3], me[7], me[11]);\n}\nexport function mat4Translate(m: Mat4, t: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, translation3ToMat4(t), result);\n}\nexport function mat4Scale(m: Mat4, s: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, scale3ToMat4(s), result);\n}\nexport function mat4RotateByQuat(m: Mat4, q: Vec4, result = new Mat4()): Mat4 {\n return mat4Multiply(m, quatToMat4(q), result);\n}\nexport function mat4RotateByEuler(m: Mat4, e: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, eulerToMat4(e), result);\n}\n\nexport function mat4TransformPoint3(\n m: Mat4,\n v: Vec4,\n result = new Vec3()\n): Vec3 {\n const x = v.x,\n y = v.y,\n z = v.z;\n const e = m.elements;\n\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n\n result.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n result.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n result.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n\n return result;\n}\n\nexport function mat4TransformNormal3(\n v: Vec3,\n m: Mat4,\n result = new Vec3()\n): Vec3 {\n const x = v.x,\n y = v.y,\n z = v.z;\n const e = m.elements;\n\n result.x = e[0] * x + e[4] * y + e[8] * z;\n result.y = e[1] * x + e[5] * y + e[9] * z;\n result.z = e[2] * x + e[6] * y + e[10] * z;\n\n return vec3Normalize(result, result);\n}\n\nexport function mat4Perspective(\n left: number,\n right: number,\n top: number,\n bottom: number,\n near: number,\n far: number,\n result = new Mat4()\n): Mat4 {\n const x = (2 * near) / (right - left);\n const y = (2 * near) / (top - bottom);\n\n const a = (right + left) / (right - left);\n const b = (top + bottom) / (top - bottom);\n const c = -(far + near) / (far - near);\n const d = (-2 * far * near) / (far - near);\n\n return result.set([x, 0, a, 0, 0, y, b, 0, 0, 0, c, d, 0, 0, -1, 0]);\n}\n\nexport function mat4PerspectiveFov(\n verticalFov: number,\n near: number,\n far: number,\n zoom: number,\n aspectRatio: number,\n result = new Mat4()\n): Mat4 {\n const height = (2 * near * Math.tan((verticalFov * Math.PI) / 180)) / zoom;\n const width = height * aspectRatio;\n\n // NOTE: OpenGL screen coordinates are -bottomt to +top, -left to +right.\n\n const right = width * 0.5;\n const left = right - width;\n\n const top = height * 0.5;\n const bottom = top - height;\n\n return mat4Perspective(left, right, top, bottom, near, far, result);\n}\n\n// TODO: Replace with a Box3?\nexport function mat4Orthogonal(\n left: number,\n right: number,\n top: number,\n bottom: number,\n near: number,\n far: number,\n result = new Mat4()\n): Mat4 {\n const w = 1 / (right - left);\n const h = 1 / (top - bottom);\n const p = 1 / (far - near);\n\n const x = (right + left) * w;\n const y = (top + bottom) * h;\n const z = (far + near) * p;\n\n return result.set([\n 2 * w,\n 0,\n 0,\n -x,\n 0,\n 2 * h,\n 0,\n -y,\n 0,\n 0,\n -2 * p,\n -z,\n 0,\n 0,\n 0,\n 1\n ]);\n}\n\nexport function mat4OrthogonalSimple(\n height: number,\n center: Vec2,\n near: number,\n far: number,\n zoom: number,\n aspectRatio = 1,\n result = new Mat4()\n): Mat4 {\n height /= zoom;\n const width = height * aspectRatio;\n\n const left = -width * 0.5 + center.x;\n const right = left + width;\n\n const top = -height * 0.5 + center.y;\n const bottom = top + height;\n\n return mat4Orthogonal(left, right, top, bottom, near, far, result);\n}\n\nexport function mat4LookAt(\n eye: Vec3,\n target: Vec3,\n up: Vec3,\n result = new Mat4()\n): Mat4 {\n const te = result.elements;\n\n const look = vec3Subtract(eye, target);\n\n const lookLength = vec3Length(look);\n if (lookLength === 0) {\n look.z = 1;\n } else {\n vec3MultiplyByScalar(look, 1 / lookLength, look);\n }\n\n const right = vec3Cross(up, look);\n\n const rightLength = vec3Length(right);\n if (rightLength === 0) {\n // up and z are parallel\n\n if (Math.abs(up.z) === 1) {\n up.x += 0.0001;\n } else {\n up.z += 0.0001;\n }\n\n vec3Normalize(up, up);\n vec3Cross(right, up, right);\n } else {\n vec3MultiplyByScalar(right, 1 / rightLength, right);\n }\n\n const up2 = vec3Cross(look, right);\n\n te[0] = right.x;\n te[4] = up2.x;\n te[8] = look.x;\n te[1] = right.y;\n te[5] = up2.y;\n te[9] = look.y;\n te[2] = right.z;\n te[6] = up2.z;\n te[10] = look.z;\n\n return result;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/Values/Internal/Vec2.d.ts
|
|
2
|
+
type Vec2JSON = number[];
|
|
3
|
+
declare class Vec2 {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
constructor(x?: number, y?: number);
|
|
7
|
+
clone(result?: Vec2): Vec2;
|
|
8
|
+
set(x: number, y: number): this;
|
|
9
|
+
}
|
|
10
|
+
declare function vec2Equals(a: Vec2, b: Vec2, tolerance?: number): boolean;
|
|
11
|
+
declare function vec2Add(a: Vec2, b: Vec2, result?: Vec2): Vec2;
|
|
12
|
+
declare function vec2Subtract(a: Vec2, b: Vec2, result?: Vec2): Vec2;
|
|
13
|
+
declare function vec2MultiplyByScalar(a: Vec2, b: number, result?: Vec2): Vec2;
|
|
14
|
+
declare function vec2Negate(a: Vec2, result?: Vec2): Vec2;
|
|
15
|
+
declare function vec2Length(a: Vec2): number;
|
|
16
|
+
declare function vec2Normalize(a: Vec2, result?: Vec2): Vec2;
|
|
17
|
+
declare function vec2Dot(a: Vec2, b: Vec2): number;
|
|
18
|
+
declare function vec2Mix(a: Vec2, b: Vec2, t: number, result?: Vec2): Vec2;
|
|
19
|
+
declare function vec2FromArray(array: Float32Array | number[], offset?: number, result?: Vec2): Vec2;
|
|
20
|
+
declare function vec2ToArray(a: Vec2, array: Float32Array | number[], offset?: number): void;
|
|
21
|
+
declare function vec2ToString(a: Vec2): string;
|
|
22
|
+
declare function vec2Parse(text: string, result?: Vec2): Vec2;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Vec2, Vec2JSON, vec2Add, vec2Dot, vec2Equals, vec2FromArray, vec2Length, vec2Mix, vec2MultiplyByScalar, vec2Negate, vec2Normalize, vec2Parse, vec2Subtract, vec2ToArray, vec2ToString };
|
|
25
|
+
//# sourceMappingURL=Vec2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec2.d.ts","names":[],"sources":["../../../src/Values/Internal/Vec2.ts"],"sourcesContent":[],"mappings":";KAOY,QAAA;AAAA,cAEC,IAAA,CAFO;EAEP,CAAA,EAAA,MAAI;EAkBD,CAAA,EAAA,MAAA;EASA,WAAO,CAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA,MAAA;EAAI,KAAA,CAAA,MAAA,CAAA,EAnBb,IAmBa,CAAA,EAnBG,IAmBH;EAAS,GAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAAkC,iBATtD,UAAA,CASsD,CAAA,EARjE,IAQiE,EAAA,CAAA,EAPjE,IAOiE,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAAI,iBAA1D,OAAA,CAA0D,CAAA,EAA/C,IAA+C,EAAA,CAAA,EAAtC,IAAsC,EAAA,MAAA,CAAA,EAAxB,IAAwB,CAAA,EAAJ,IAAI;AAG1D,iBAAA,YAAA,CAAY,CAAA,EACvB,IADuB,EAAA,CAAA,EAEvB,IAFuB,EAAA,MAAA,CAAA,EAGlB,IAHkB,CAAA,EAIzB,IAJyB;AACvB,iBAMW,oBAAA,CANX,CAAA,EAOA,IAPA,EAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EASK,IATL,CAAA,EAUF,IAVE;AACA,iBAYW,UAAA,CAZX,CAAA,EAYyB,IAZzB,EAAA,MAAA,CAAA,EAYuC,IAZvC,CAAA,EAY2D,IAZ3D;AACK,iBAcM,UAAA,CAdN,CAAA,EAcoB,IAdpB,CAAA,EAAA,MAAA;AACP,iBAgBa,aAAA,CAhBb,CAAA,EAgB8B,IAhB9B,EAAA,MAAA,CAAA,EAgB4C,IAhB5C,CAAA,EAgBgE,IAhBhE;AAAI,iBAoBS,OAAA,CApBT,CAAA,EAoBoB,IApBpB,EAAA,CAAA,EAoB6B,IApB7B,CAAA,EAAA,MAAA;AAGS,iBAoBA,OAAA,CApBoB,CAAA,EAqB/B,IArB+B,EAAA,CAAA,EAsB/B,IAtB+B,EAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAwB5B,IAxB4B,CAAA,EAyBjC,IAzBiC;AAC/B,iBA4BW,aAAA,CA5BX,KAAA,EA6BI,YA7BJ,GAAA,MAAA,EAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EA+BK,IA/BL,CAAA,EAgCF,IAhCE;AAEK,iBAiCM,WAAA,CAjCN,CAAA,EAkCL,IAlCK,EAAA,KAAA,EAmCD,YAnCC,GAAA,MAAA,EAAA,EAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;AACP,iBAyCa,YAAA,CAzCb,CAAA,EAyC6B,IAzC7B,CAAA,EAAA,MAAA;AAAI,iBA4CS,SAAA,CA5CT,IAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EA4CuC,IA5CvC,CAAA,EA4CuD,IA5CvD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { EPSILON, equalsTolerance, parseSafeFloats, toSafeString } from "@kiberon-labs/behave-graph";
|
|
2
|
+
|
|
3
|
+
//#region src/Values/Internal/Vec2.ts
|
|
4
|
+
var Vec2 = class Vec2 {
|
|
5
|
+
x;
|
|
6
|
+
y;
|
|
7
|
+
constructor(x = 0, y = 0) {
|
|
8
|
+
this.x = x;
|
|
9
|
+
this.y = y;
|
|
10
|
+
}
|
|
11
|
+
clone(result = new Vec2()) {
|
|
12
|
+
return result.set(this.x, this.y);
|
|
13
|
+
}
|
|
14
|
+
set(x, y) {
|
|
15
|
+
this.x = x;
|
|
16
|
+
this.y = y;
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
function vec2Equals(a, b, tolerance = EPSILON) {
|
|
21
|
+
return equalsTolerance(a.x, b.x, tolerance) && equalsTolerance(a.y, b.y, tolerance);
|
|
22
|
+
}
|
|
23
|
+
function vec2Add(a, b, result = new Vec2()) {
|
|
24
|
+
return result.set(a.x + b.x, a.y + b.y);
|
|
25
|
+
}
|
|
26
|
+
function vec2Subtract(a, b, result = new Vec2()) {
|
|
27
|
+
return result.set(a.x - b.x, a.y - b.y);
|
|
28
|
+
}
|
|
29
|
+
function vec2MultiplyByScalar(a, b, result = new Vec2()) {
|
|
30
|
+
return result.set(a.x * b, a.y * b);
|
|
31
|
+
}
|
|
32
|
+
function vec2Negate(a, result = new Vec2()) {
|
|
33
|
+
return result.set(-a.x, -a.y);
|
|
34
|
+
}
|
|
35
|
+
function vec2Length(a) {
|
|
36
|
+
return Math.sqrt(vec2Dot(a, a));
|
|
37
|
+
}
|
|
38
|
+
function vec2Normalize(a, result = new Vec2()) {
|
|
39
|
+
return vec2MultiplyByScalar(a, 1 / vec2Length(a), result);
|
|
40
|
+
}
|
|
41
|
+
function vec2Dot(a, b) {
|
|
42
|
+
return a.x * b.x + a.y * b.y;
|
|
43
|
+
}
|
|
44
|
+
function vec2Mix(a, b, t, result = new Vec2()) {
|
|
45
|
+
const s = 1 - t;
|
|
46
|
+
return result.set(a.x * s + b.x * t, a.y * s + b.y * t);
|
|
47
|
+
}
|
|
48
|
+
function vec2FromArray(array, offset = 0, result = new Vec2()) {
|
|
49
|
+
return result.set(array[offset + 0], array[offset + 1]);
|
|
50
|
+
}
|
|
51
|
+
function vec2ToArray(a, array, offset = 0) {
|
|
52
|
+
array[offset + 0] = a.x;
|
|
53
|
+
array[offset + 1] = a.y;
|
|
54
|
+
}
|
|
55
|
+
function vec2ToString(a) {
|
|
56
|
+
return toSafeString([a.x, a.y]);
|
|
57
|
+
}
|
|
58
|
+
function vec2Parse(text, result = new Vec2()) {
|
|
59
|
+
return vec2FromArray(parseSafeFloats(text), 0, result);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
//#endregion
|
|
63
|
+
export { Vec2, vec2Add, vec2Dot, vec2Equals, vec2FromArray, vec2Length, vec2Mix, vec2MultiplyByScalar, vec2Negate, vec2Normalize, vec2Parse, vec2Subtract, vec2ToArray, vec2ToString };
|
|
64
|
+
//# sourceMappingURL=Vec2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec2.js","names":[],"sources":["../../../src/Values/Internal/Vec2.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nexport type Vec2JSON = number[];\n\nexport class Vec2 {\n public x: number;\n public y: number;\n constructor(x: number = 0, y: number = 0) {\n this.x = x;\n this.y = y;\n }\n\n clone(result = new Vec2()): Vec2 {\n return result.set(this.x, this.y);\n }\n set(x: number, y: number): this {\n this.x = x;\n this.y = y;\n return this;\n }\n}\n\nexport function vec2Equals(\n a: Vec2,\n b: Vec2,\n tolerance: number = EPSILON\n): boolean {\n return (\n equalsTolerance(a.x, b.x, tolerance) && equalsTolerance(a.y, b.y, tolerance)\n );\n}\nexport function vec2Add(a: Vec2, b: Vec2, result: Vec2 = new Vec2()): Vec2 {\n return result.set(a.x + b.x, a.y + b.y);\n}\nexport function vec2Subtract(\n a: Vec2,\n b: Vec2,\n result: Vec2 = new Vec2()\n): Vec2 {\n return result.set(a.x - b.x, a.y - b.y);\n}\nexport function vec2MultiplyByScalar(\n a: Vec2,\n b: number,\n result: Vec2 = new Vec2()\n): Vec2 {\n return result.set(a.x * b, a.y * b);\n}\nexport function vec2Negate(a: Vec2, result: Vec2 = new Vec2()): Vec2 {\n return result.set(-a.x, -a.y);\n}\nexport function vec2Length(a: Vec2): number {\n return Math.sqrt(vec2Dot(a, a));\n}\nexport function vec2Normalize(a: Vec2, result: Vec2 = new Vec2()): Vec2 {\n const invLength = 1 / vec2Length(a);\n return vec2MultiplyByScalar(a, invLength, result);\n}\nexport function vec2Dot(a: Vec2, b: Vec2): number {\n return a.x * b.x + a.y * b.y;\n}\nexport function vec2Mix(\n a: Vec2,\n b: Vec2,\n t: number,\n result = new Vec2()\n): Vec2 {\n const s = 1 - t;\n return result.set(a.x * s + b.x * t, a.y * s + b.y * t);\n}\nexport function vec2FromArray(\n array: Float32Array | number[],\n offset = 0,\n result: Vec2 = new Vec2()\n): Vec2 {\n return result.set(array[offset + 0]!, array[offset + 1]!);\n}\nexport function vec2ToArray(\n a: Vec2,\n array: Float32Array | number[],\n offset = 0\n): void {\n array[offset + 0] = a.x;\n array[offset + 1] = a.y;\n}\n\nexport function vec2ToString(a: Vec2): string {\n return toSafeString([a.x, a.y]);\n}\nexport function vec2Parse(text: string, result = new Vec2()): Vec2 {\n return vec2FromArray(parseSafeFloats(text), 0, result);\n}\n"],"mappings":";;;AASA,IAAa,OAAb,MAAa,KAAK;CAChB,AAAO;CACP,AAAO;CACP,YAAY,IAAY,GAAG,IAAY,GAAG;AACxC,OAAK,IAAI;AACT,OAAK,IAAI;;CAGX,MAAM,SAAS,IAAI,MAAM,EAAQ;AAC/B,SAAO,OAAO,IAAI,KAAK,GAAG,KAAK,EAAE;;CAEnC,IAAI,GAAW,GAAiB;AAC9B,OAAK,IAAI;AACT,OAAK,IAAI;AACT,SAAO;;;AAIX,SAAgB,WACd,GACA,GACA,YAAoB,SACX;AACT,QACE,gBAAgB,EAAE,GAAG,EAAE,GAAG,UAAU,IAAI,gBAAgB,EAAE,GAAG,EAAE,GAAG,UAAU;;AAGhF,SAAgB,QAAQ,GAAS,GAAS,SAAe,IAAI,MAAM,EAAQ;AACzE,QAAO,OAAO,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;;AAEzC,SAAgB,aACd,GACA,GACA,SAAe,IAAI,MAAM,EACnB;AACN,QAAO,OAAO,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;;AAEzC,SAAgB,qBACd,GACA,GACA,SAAe,IAAI,MAAM,EACnB;AACN,QAAO,OAAO,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE;;AAErC,SAAgB,WAAW,GAAS,SAAe,IAAI,MAAM,EAAQ;AACnE,QAAO,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE;;AAE/B,SAAgB,WAAW,GAAiB;AAC1C,QAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,CAAC;;AAEjC,SAAgB,cAAc,GAAS,SAAe,IAAI,MAAM,EAAQ;AAEtE,QAAO,qBAAqB,GADV,IAAI,WAAW,EAAE,EACO,OAAO;;AAEnD,SAAgB,QAAQ,GAAS,GAAiB;AAChD,QAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;AAE7B,SAAgB,QACd,GACA,GACA,GACA,SAAS,IAAI,MAAM,EACb;CACN,MAAM,IAAI,IAAI;AACd,QAAO,OAAO,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE;;AAEzD,SAAgB,cACd,OACA,SAAS,GACT,SAAe,IAAI,MAAM,EACnB;AACN,QAAO,OAAO,IAAI,MAAM,SAAS,IAAK,MAAM,SAAS,GAAI;;AAE3D,SAAgB,YACd,GACA,OACA,SAAS,GACH;AACN,OAAM,SAAS,KAAK,EAAE;AACtB,OAAM,SAAS,KAAK,EAAE;;AAGxB,SAAgB,aAAa,GAAiB;AAC5C,QAAO,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;;AAEjC,SAAgB,UAAU,MAAc,SAAS,IAAI,MAAM,EAAQ;AACjE,QAAO,cAAc,gBAAgB,KAAK,EAAE,GAAG,OAAO"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Vec4 } from "./Vec4.js";
|
|
2
|
+
import { Mat4 } from "./Mat4.js";
|
|
3
|
+
import { Mat3 } from "./Mat3.js";
|
|
4
|
+
|
|
5
|
+
//#region src/Values/Internal/Vec3.d.ts
|
|
6
|
+
type Vec3JSON = number[];
|
|
7
|
+
declare class Vec3 {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
z: number;
|
|
11
|
+
constructor(x?: number, y?: number, z?: number);
|
|
12
|
+
clone(result?: Vec3): Vec3;
|
|
13
|
+
set(x: number, y: number, z: number): this;
|
|
14
|
+
}
|
|
15
|
+
declare function vec3Equals(a: Vec3, b: Vec3, tolerance?: number): boolean;
|
|
16
|
+
declare function vec3Add(a: Vec3, b: Vec3, result?: Vec3): Vec3;
|
|
17
|
+
declare function vec3Subtract(a: Vec3, b: Vec3, result?: Vec3): Vec3;
|
|
18
|
+
declare function vec3MultiplyByScalar(a: Vec3, b: number, result?: Vec3): Vec3;
|
|
19
|
+
declare function vec3Negate(a: Vec3, result?: Vec3): Vec3;
|
|
20
|
+
declare function vec3Length(a: Vec3): number;
|
|
21
|
+
declare function vec3Normalize(a: Vec3, result?: Vec3): Vec3;
|
|
22
|
+
declare function vec3Dot(a: Vec3, b: Vec3): number;
|
|
23
|
+
declare function vec3Cross(a: Vec3, b: Vec3, result?: Vec3): Vec3;
|
|
24
|
+
declare function vec3Mix(a: Vec3, b: Vec3, t: number, result?: Vec3): Vec3;
|
|
25
|
+
declare function vec3FromArray(array: Float32Array | number[], offset?: number, result?: Vec3): Vec3;
|
|
26
|
+
declare function vec3ToArray(a: Vec3, array: Float32Array | number[], offset?: number): void;
|
|
27
|
+
declare function vec3ToString(a: Vec3): string;
|
|
28
|
+
declare function vec3Parse(text: string, result?: Vec3): Vec3;
|
|
29
|
+
declare function hslToRGB(hsl: Vec3, result?: Vec3): Vec3;
|
|
30
|
+
declare function rgbToHSL(rgb: Vec3, result?: Vec3): Vec3;
|
|
31
|
+
declare function hexToRGB(hex: number, result?: Vec3): Vec3;
|
|
32
|
+
declare function rgbToHex(rgb: Vec3): number;
|
|
33
|
+
declare function mat3ToEuler(m: Mat3, result?: Vec3): Vec3;
|
|
34
|
+
declare function mat4ToEuler(m: Mat4, result?: Vec3): Vec3;
|
|
35
|
+
declare function quatToEuler(q: Vec4, result?: Vec3): Vec3;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { Vec3, Vec3JSON, hexToRGB, hslToRGB, mat3ToEuler, mat4ToEuler, quatToEuler, rgbToHSL, rgbToHex, vec3Add, vec3Cross, vec3Dot, vec3Equals, vec3FromArray, vec3Length, vec3Mix, vec3MultiplyByScalar, vec3Negate, vec3Normalize, vec3Parse, vec3Subtract, vec3ToArray, vec3ToString };
|
|
38
|
+
//# sourceMappingURL=Vec3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec3.d.ts","names":[],"sources":["../../../src/Values/Internal/Vec3.ts"],"sourcesContent":[],"mappings":"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"}
|