-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMat33.js
105 lines (89 loc) · 1.88 KB
/
Mat33.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
* Row major memory layout
*
* 0 1 2
* 3 4 5
* 6 7 8
*
* equivalent to the column major OpenGL spec
*
* 0 3 6
* 1 4 7
* 2 5 8
*
* m00 m10 m20
* m01 m11 m21
* m02 m12 m22
*/
export function create() {
return [
1,0,0,
0,1,0,
0,0,1
];
}
export function equals(a,b) {
return a[ 0] == b[ 0] &&
a[ 1] == b[ 1] &&
a[ 2] == b[ 2] &&
a[ 3] == b[ 3] &&
a[ 4] == b[ 4] &&
a[ 5] == b[ 5] &&
a[ 6] == b[ 6] &&
a[ 7] == b[ 7] &&
a[ 8] == b[ 8] &&
a[ 9] == b[ 9];
}
export function set9(a,b00,b01,b02,
b10,b11,b12,
b20,b21,b22){
a[0] = b00; a[1] = b01; a[2] = b02;
a[3] = b10; a[4] = b11; a[5] = b12;
a[6] = b20; a[7] = b21; a[8] = b22;
return a;
}
export function set(a,b){
a[0] = b[0]; a[1] = b[1]; a[2] = b[2];
a[3] = b[3]; a[4] = b[4]; a[5] = b[5];
a[6] = b[6]; a[7] = b[7]; a[8] = b[8];
return a;
}
export function identity(a){
a[0] = a[4] = a[8] = 1;
a[1] = a[2] = a[3] = a[5] = a[6] = a[7] = 0;
return a;
}
export function fromMat4(a,b){
a[ 0] = b[ 0]; a[ 1] = b[ 1]; a[ 2] = b[ 2];
a[ 3] = b[ 4]; a[ 4] = b[ 5]; a[ 5] = b[ 6];
a[ 6] = b[ 8]; a[ 7] = b[ 9]; a[ 8] = b[10];
return a;
}
export function fromQuat(a,b){
var x = b[0];
var y = b[1];
var z = b[2];
var w = b[3];
var x2 = x + x;
var y2 = y + y;
var z2 = z + z;
var xx = x * x2;
var xy = x * y2;
var xz = x * z2;
var yy = y * y2;
var yz = y * z2;
var zz = z * z2;
var wx = w * x2;
var wy = w * y2;
var wz = w * z2;
a[0] = 1 - ( yy + zz );
a[3] = xy - wz;
a[6] = xz + wy;
a[1] = xy + wz;
a[4] = 1 - ( xx + zz );
a[7] = yz - wx;
a[2] = xz - wy;
a[5] = yz + wx;
a[8] = 1 - ( xx + yy );
return a;
}