MCPcopy Create free account
hub / github.com/AlloyTeam/PhyTouch / Matrix3D

Class Matrix3D

transformjs/react/transform.react.js:11–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9
10/* thanks for dnt's Matrix3D */
11class Matrix3D {
12 constructor(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {
13 this.elements = window.Float32Array ? new Float32Array(16) : [];
14 var te = this.elements;
15 te[0] = (n11 !== undefined) ? n11 : 1; te[4] = n12 || 0; te[8] = n13 || 0; te[12] = n14 || 0;
16 te[1] = n21 || 0; te[5] = (n22 !== undefined) ? n22 : 1; te[9] = n23 || 0; te[13] = n24 || 0;
17 te[2] = n31 || 0; te[6] = n32 || 0; te[10] = (n33 !== undefined) ? n33 : 1; te[14] = n34 || 0;
18 te[3] = n41 || 0; te[7] = n42 || 0; te[11] = n43 || 0; te[15] = (n44 !== undefined) ? n44 : 1;
19 }
20
21 static get DEG_TO_RAD() {
22 return Math.PI / 180;
23 }
24
25 set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {
26 var te = this.elements;
27 te[0] = n11; te[4] = n12; te[8] = n13; te[12] = n14;
28 te[1] = n21; te[5] = n22; te[9] = n23; te[13] = n24;
29 te[2] = n31; te[6] = n32; te[10] = n33; te[14] = n34;
30 te[3] = n41; te[7] = n42; te[11] = n43; te[15] = n44;
31 return this;
32 }
33
34 identity() {
35 this.set(
36 1, 0, 0, 0,
37 0, 1, 0, 0,
38 0, 0, 1, 0,
39 0, 0, 0, 1
40 );
41 return this;
42 }
43
44 multiplyMatrices(a, be) {
45
46 var ae = a.elements;
47 var te = this.elements;
48 var a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];
49 var a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];
50 var a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];
51 var a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];
52
53 var b11 = be[0], b12 = be[1], b13 = be[2], b14 = be[3];
54 var b21 = be[4], b22 = be[5], b23 = be[6], b24 = be[7];
55 var b31 = be[8], b32 = be[9], b33 = be[10], b34 = be[11];
56 var b41 = be[12], b42 = be[13], b43 = be[14], b44 = be[15];
57
58 te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;
59 te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;
60 te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;
61 te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;
62
63 te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;
64 te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;
65 te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;
66 te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;
67
68 te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected