hypercube-0.2.2006-dorkfest
[polytopiary:hypercube.git] / dynamics.c
1 /* movement */
2
3 /*
4     hypercube -- render a 4D hypercube
5     Copyright (C) 2006 Claude Heiland-Allen
6
7     This program is free software; you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
9     the Free Software Foundation; either version 2 of the License, or
10     (at your option) any later version.
11
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20 */
21
22 #include "cube4d.h"
23 #include "dynamics.h"
24 #include "fixed.h"
25 #include "geometry.h"
26
27 static matrix44 m_rot;
28
29 void d_init(void) {
30     m44_id(&m_rot);
31 }
32
33 void d_transform(c4dv *from, int n, c4dv *to) {
34     int i;
35 /*    vector4 v_mov = { 0, 0, 512, 0 };*/
36 /*    if (n) {*/
37 /*        m44_rot1(&m_rot, 1, 3, n); */
38         m44_rot6(&m_rot,
39             n,
40             n + f_sin(n),
41             n + f_cos(n<<1),
42             (n + f_cos(n<<2)) << 1,
43             (n - f_sin(n<<1)) << 1,
44             n >> 1
45         );
46 /*    }*/
47     for (i = 0; i < 16; i++) {
48         v4m44_mul(&((*from)[i]), &m_rot, &((*to)[i]));
49 /*        v4_add(&((*to)[i]), &v_mov, &((*to)[i]));*/
50     }
51 }
52
53 /* EOF */