1 | export function rotateRzRyRx(po, angles){
|
2 |
|
3 | var rc = angles.rotateCenter;
|
4 |
|
5 | po.x -= rc[0];
|
6 | po.y -= rc[1];
|
7 | po.z -= rc[2];
|
8 |
|
9 | var rz = rotateZ(po, angles.z);
|
10 | var ry = rotateY(rz, angles.y);
|
11 | var rx = rotateX(ry, angles.x);
|
12 |
|
13 | rx.x += rc[0];
|
14 | rx.y += rc[1];
|
15 | rx.z += rc[2];
|
16 |
|
17 | return rx;
|
18 | }
|
19 |
|
20 | function rotateX(p, a){
|
21 | var sa = Math.sin(a), ca = Math.cos(a);
|
22 | return {
|
23 | x: p.x,
|
24 | y: p.y * ca - p.z * sa,
|
25 | z: p.y * sa + p.z * ca
|
26 | };
|
27 | }
|
28 |
|
29 | function rotateY(p, a){
|
30 | var sa = Math.sin(a), ca = Math.cos(a);
|
31 | return {
|
32 | x: p.z * sa + p.x * ca,
|
33 | y: p.y,
|
34 | z: p.z * ca - p.x * sa
|
35 | };
|
36 | }
|
37 |
|
38 | function rotateZ(p, a){
|
39 | var sa = Math.sin(a), ca = Math.cos(a);
|
40 | return {
|
41 | x: p.x * ca - p.y * sa,
|
42 | y: p.x * sa + p.y * ca,
|
43 | z: p.z
|
44 | };
|
45 | }
|