1 |
function d3d_transform_set_rotation_axis(arg0, arg1, arg2, arg3) |
2 |
{ |
3 |
var c = dcos(-arg3); |
4 |
var s = dsin(-arg3); |
5 |
var omc = 1 - c; |
6 |
var xx = arg0; |
7 |
var yy = arg1; |
8 |
var zz = arg2; |
9 |
var length2 = sqr(xx) + sqr(yy) + sqr(zz); |
10 |
var length = sqrt(length2); |
11 |
xx /= length; |
12 |
yy /= length; |
13 |
zz /= length; |
14 |
var m; |
15 |
m[0] = (omc * xx * xx) + c; |
16 |
m[1] = (omc * xx * yy) + (s * zz); |
17 |
m[2] = (omc * xx * zz) - (s * yy); |
18 |
m[3] = 0; |
19 |
m[4] = (omc * xx * yy) - (s * zz); |
20 |
m[5] = (omc * yy * yy) + c; |
21 |
m[6] = (omc * yy * zz) + (s * xx); |
22 |
m[7] = 0; |
23 |
m[8] = (omc * xx * zz) + (s * yy); |
24 |
m[9] = (omc * yy * zz) - (s * xx); |
25 |
m[10] = (omc * zz * zz) + c; |
26 |
m[11] = 0; |
27 |
m[12] = 0; |
28 |
m[13] = 0; |
29 |
m[14] = 0; |
30 |
m[15] = 1; |
31 |
matrix_set(2, m); |
32 |
} |