use USER_CFLAGS _not_ CFLAGS directly. also set the correct flags for arm/x86_64...
[AROS-Contrib.git] / fish / 362_rubik / rotate.c
blobb44f267f5c1dc5a91ab8debc8b48bc12c2411f6b
1 /* rotate.c for rubik.c M.J.R. Boxing Day 1989 */
3 #include "header.c"
5 extern struct points point;
6 extern struct one_square square[56];
7 extern int twistlist[21];
8 int biglist [126] =
10 0, 1, 2, 3, 4, 5, 6, 7, 8,18,19,20,27,28,29,36,39,42,45,48,51,
11 9,10,11,12,13,14,15,16,17,24,25,26,33,34,35,38,41,44,47,50,53,
12 0, 1, 2, 9,10,11,18,19,20,21,22,23,24,25,26,36,37,38,45,46,47,
13 6, 7, 8,15,16,17,27,28,29,30,31,32,33,34,35,42,43,44,51,52,53,
14 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,37,38,39,40,41,42,43,44,
15 2, 5, 8,11,14,17,20,23,26,29,32,35,45,46,47,48,49,50,51,52,53
18 extern short mysin(int);
19 extern short mycos(int);
20 extern short hypoten(short, short);
21 extern short angle(short, short, short);
22 extern unsigned short size;
23 extern void rotate (short *a, short *b, short ang);
25 void fb (short layer, short ang) /* twist front or back layer */
27 /* layer = 0 for front, 1 for back */
29 int i,j,k,*p,*q;
31 /* define extra 2 squares */
32 if (layer)
34 i = 55;
35 j = 54;
37 else
39 i = 54;
40 j = 55;
43 (square[i]).corner[0] = &(point.xyz [0] [0] [k = layer + layer + 1]);
44 (square[i]).corner[1] = &(point.xyz [5] [0] [k]);
45 (square[i]).corner[2] = &(point.xyz [5] [5] [k]);
46 (square[i]).corner[3] = &(point.xyz [0] [5] [k]);
47 (square[j]).corner[0] = &(point.xyz [0] [0] [++k]);
48 (square[j]).corner[1] = &(point.xyz [0] [5] [k]);
49 (square[j]).corner[2] = &(point.xyz [5] [5] [k]);
50 (square[j]).corner[3] = &(point.xyz [5] [0] [k]);
52 for (k=4*layer; k < (4*layer+2); k++)
53 for (i=0; i<6; i++)
54 for (j=0; j<6; j++)
55 if (i==0 || i==5 || j==0 || j==5 || k==0 || k==5)
56 rotate
58 &((point.xyz [i] [j] [k]).x),
59 &((point.xyz [i] [j] [k]).y),
60 ang
63 p = &(twistlist[0]);
64 q = &(biglist[layer * 21]);
66 for (i=0; i<21; i++)
67 *p++ = *q++;
70 void bt (short layer, short ang) /* twist bottom or top layer */
72 /* layer = 0 for bottom, 1 for top */
74 int i,j,k,*p,*q;
76 /* define extra 2 squares */
77 if (layer)
79 i = 55;
80 j = 54;
82 else
84 i = 54;
85 j = 55;
88 (square[i]).corner[0] = &(point.xyz [0] [k = layer + layer + 1] [0]);
89 (square[i]).corner[1] = &(point.xyz [0] [k] [5]);
90 (square[i]).corner[2] = &(point.xyz [5] [k] [5]);
91 (square[i]).corner[3] = &(point.xyz [5] [k] [0]);
92 (square[j]).corner[0] = &(point.xyz [0] [++k] [0]);
93 (square[j]).corner[1] = &(point.xyz [5] [k] [0]);
94 (square[j]).corner[2] = &(point.xyz [5] [k] [5]);
95 (square[j]).corner[3] = &(point.xyz [0] [k] [5]);
97 for (k=4*layer; k < (4*layer+2); k++)
98 for (i=0; i<6; i++)
99 for (j=0; j<6; j++)
100 if (i==0 || i==5 || j==0 || j==5 || k==0 || k==5)
101 rotate
103 &((point.xyz [i] [k] [j]).x),
104 &((point.xyz [i] [k] [j]).z),
108 p = &(twistlist[0]);
109 q = &(biglist[42 + layer * 21]);
111 for (i=0; i<21; i++)
112 *p++ = *q++;
115 void lr (short layer, short ang) /* twist left or right layer */
117 /* layer = 0 for left, 1 for right */
119 int i,j,k,*p,*q;
121 /* define extra 2 squares */
122 if (layer)
124 i = 55;
125 j = 54;
127 else
129 i = 54;
130 j = 55;
133 (square[i]).corner[0] = &(point.xyz [k = layer + layer + 1] [0] [0]);
134 (square[i]).corner[1] = &(point.xyz [k] [5] [0]);
135 (square[i]).corner[2] = &(point.xyz [k] [5] [5]);
136 (square[i]).corner[3] = &(point.xyz [k] [0] [5]);
137 (square[j]).corner[0] = &(point.xyz [++k] [0] [0]);
138 (square[j]).corner[1] = &(point.xyz [k] [0] [5]);
139 (square[j]).corner[2] = &(point.xyz [k] [5] [5]);
140 (square[j]).corner[3] = &(point.xyz [k] [5] [0]);
142 for (k=4*layer; k < (4*layer+2); k++)
143 for (i=0; i<6; i++)
144 for (j=0; j<6; j++)
145 if (i==0 || i==5 || j==0 || j==5 || k==0 || k==5)
146 rotate
148 &((point.xyz [k] [j] [i]).z),
149 &((point.xyz [k] [j] [i]).y),
154 p = &(twistlist[0]);
155 q = &(biglist[84 + layer * 21]);
157 for (i=0; i<21; i++)
158 *p++ = *q++;
161 void roll (short ang) /* roll whole cube through (ang) */
163 int i,j,k;
165 for (i=0; i<6; i++)
166 for (j=0; j<6; j++)
167 for (k=0; k<6; k++)
168 if (i==0 || i==5 || j==0 || j==5 || k==0 || k==5)
169 rotate
171 &((point.xyz [i] [j] [k]).x),
172 &((point.xyz [i] [j] [k]).y),
177 void yaw (short ang) /* yaw whole cube through (ang) */
179 int i,j,k;
181 for (i=0; i<6; i++)
182 for (j=0; j<6; j++)
183 for (k=0; k<6; k++)
184 if (i==0 || i==5 || j==0 || j==5 || k==0 || k==5)
185 rotate
187 &((point.xyz [i] [j] [k]).x),
188 &((point.xyz [i] [j] [k]).z),
193 void pitch (short ang) /* pitch whole cube through (ang) */
195 int i,j,k;
197 for (i=0; i<6; i++)
198 for (j=0; j<6; j++)
199 for (k=0; k<6; k++)
200 if (i==0 || i==5 || j==0 || j==5 || k==0 || k==5)
201 rotate
203 &((point.xyz [i] [j] [k]).y),
204 &((point.xyz [i] [j] [k]).z),