aboutsummaryrefslogtreecommitdiff
path: root/src/cube_transform.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cube_transform.h')
-rw-r--r--src/cube_transform.h176
1 files changed, 0 insertions, 176 deletions
diff --git a/src/cube_transform.h b/src/cube_transform.h
deleted file mode 100644
index 358b051..0000000
--- a/src/cube_transform.h
+++ /dev/null
@@ -1,176 +0,0 @@
1/* TODO: remove these macros, if the below works */
2
3#define _trans_edges_rotation(T, c) \
4 compose_edges(compose_edges(_trans_cube_ ## T, c), \
5 _trans_cube_ ## T ## _inverse)
6#define _trans_edges_mirrored(T, c) _trans_edges_rotation(T, c)
7
8#define _trans_corners_rotation(T, c) \
9 compose_corners(compose_corners(_trans_cube_ ## T, c), \
10 _trans_cube_ ## T ## _inverse)
11#define _trans_corners_mirrored(T, c) \
12 invertco(compose_corners( \
13 compose_corners(_trans_cube_ ## T, c), _trans_cube_ ## T ## _inverse))
14
15#define _trans_rotation(T, c) \
16 compose(compose(_trans_cube_ ## T, c), \
17 _trans_cube_ ## T ## _inverse)
18#define _trans_mirrored(T, c) \
19 invertco(compose(compose(_trans_cube_ ## T, c), \
20 _trans_cube_ ## T ## _inverse))
21
22static cube_t cube_trans_table[48] = {
23 [_trans_UFr] = _trans_cube_UFr,
24 [_trans_UFm] = _trans_cube_UFm,
25 [_trans_ULr] = _trans_cube_URr,
26 [_trans_ULm] = _trans_cube_ULm,
27 [_trans_UBr] = _trans_cube_UBr,
28 [_trans_UBm] = _trans_cube_UBm,
29 [_trans_URr] = _trans_cube_ULr,
30 [_trans_URm] = _trans_cube_URm,
31 [_trans_DFr] = _trans_cube_DFr,
32 [_trans_DFm] = _trans_cube_DFm,
33 [_trans_DLr] = _trans_cube_DLr,
34 [_trans_DLm] = _trans_cube_DRm,
35 [_trans_DBr] = _trans_cube_DBr,
36 [_trans_DBm] = _trans_cube_DBm,
37 [_trans_DRr] = _trans_cube_DRr,
38 [_trans_DRm] = _trans_cube_DLm,
39 [_trans_RUr] = _trans_cube_FRr,
40 [_trans_RUm] = _trans_cube_FLm,
41 [_trans_RFr] = _trans_cube_LFr,
42 [_trans_RFm] = _trans_cube_RFm,
43 [_trans_RDr] = _trans_cube_BLr,
44 [_trans_RDm] = _trans_cube_BRm,
45 [_trans_RBr] = _trans_cube_RBr,
46 [_trans_RBm] = _trans_cube_LBm,
47 [_trans_LUr] = _trans_cube_FLr,
48 [_trans_LUm] = _trans_cube_FRm,
49 [_trans_LFr] = _trans_cube_RFr,
50 [_trans_LFm] = _trans_cube_LFm,
51 [_trans_LDr] = _trans_cube_BRr,
52 [_trans_LDm] = _trans_cube_BLm,
53 [_trans_LBr] = _trans_cube_LBr,
54 [_trans_LBm] = _trans_cube_RBm,
55 [_trans_FUr] = _trans_cube_FUr,
56 [_trans_FUm] = _trans_cube_FUm,
57 [_trans_FRr] = _trans_cube_RUr,
58 [_trans_FRm] = _trans_cube_LUm,
59 [_trans_FDr] = _trans_cube_BUr,
60 [_trans_FDm] = _trans_cube_BUm,
61 [_trans_FLr] = _trans_cube_LUr,
62 [_trans_FLm] = _trans_cube_RUm,
63 [_trans_BUr] = _trans_cube_FDr,
64 [_trans_BUm] = _trans_cube_FDm,
65 [_trans_BRr] = _trans_cube_LDr,
66 [_trans_BRm] = _trans_cube_RDm,
67 [_trans_BDr] = _trans_cube_BDr,
68 [_trans_BDm] = _trans_cube_BDm,
69 [_trans_BLr] = _trans_cube_RDr,
70 [_trans_BLm] = _trans_cube_LDm,
71};
72
73static cube_t cube_trans_table_inverse[48] = {
74 [_trans_UFr] = _trans_cube_UFr_inverse,
75 [_trans_UFm] = _trans_cube_UFm_inverse,
76 [_trans_ULr] = _trans_cube_URr_inverse,
77 [_trans_ULm] = _trans_cube_ULm_inverse,
78 [_trans_UBr] = _trans_cube_UBr_inverse,
79 [_trans_UBm] = _trans_cube_UBm_inverse,
80 [_trans_URr] = _trans_cube_ULr_inverse,
81 [_trans_URm] = _trans_cube_URm_inverse,
82 [_trans_DFr] = _trans_cube_DFr_inverse,
83 [_trans_DFm] = _trans_cube_DFm_inverse,
84 [_trans_DLr] = _trans_cube_DLr_inverse,
85 [_trans_DLm] = _trans_cube_DRm_inverse,
86 [_trans_DBr] = _trans_cube_DBr_inverse,
87 [_trans_DBm] = _trans_cube_DBm_inverse,
88 [_trans_DRr] = _trans_cube_DRr_inverse,
89 [_trans_DRm] = _trans_cube_DLm_inverse,
90 [_trans_RUr] = _trans_cube_FRr_inverse,
91 [_trans_RUm] = _trans_cube_FLm_inverse,
92 [_trans_RFr] = _trans_cube_LFr_inverse,
93 [_trans_RFm] = _trans_cube_RFm_inverse,
94 [_trans_RDr] = _trans_cube_BLr_inverse,
95 [_trans_RDm] = _trans_cube_BRm_inverse,
96 [_trans_RBr] = _trans_cube_RBr_inverse,
97 [_trans_RBm] = _trans_cube_LBm_inverse,
98 [_trans_LUr] = _trans_cube_FLr_inverse,
99 [_trans_LUm] = _trans_cube_FRm_inverse,
100 [_trans_LFr] = _trans_cube_RFr_inverse,
101 [_trans_LFm] = _trans_cube_LFm_inverse,
102 [_trans_LDr] = _trans_cube_BRr_inverse,
103 [_trans_LDm] = _trans_cube_BLm_inverse,
104 [_trans_LBr] = _trans_cube_LBr_inverse,
105 [_trans_LBm] = _trans_cube_RBm_inverse,
106 [_trans_FUr] = _trans_cube_FUr_inverse,
107 [_trans_FUm] = _trans_cube_FUm_inverse,
108 [_trans_FRr] = _trans_cube_RUr_inverse,
109 [_trans_FRm] = _trans_cube_LUm_inverse,
110 [_trans_FDr] = _trans_cube_BUr_inverse,
111 [_trans_FDm] = _trans_cube_BUm_inverse,
112 [_trans_FLr] = _trans_cube_LUr_inverse,
113 [_trans_FLm] = _trans_cube_RUm_inverse,
114 [_trans_BUr] = _trans_cube_FDr_inverse,
115 [_trans_BUm] = _trans_cube_FDm_inverse,
116 [_trans_BRr] = _trans_cube_LDr_inverse,
117 [_trans_BRm] = _trans_cube_RDm_inverse,
118 [_trans_BDr] = _trans_cube_BDr_inverse,
119 [_trans_BDm] = _trans_cube_BDm_inverse,
120 [_trans_BLr] = _trans_cube_RDr_inverse,
121 [_trans_BLm] = _trans_cube_LDm_inverse,
122};
123
124_static cube_t
125transform_edges(cube_t c, uint8_t t)
126{
127 cube_t ret, trans_cube, trans_inv;
128
129 DBG_ASSERT(t < 48, zero,
130 "transform: invalid transformation %" PRIu8
131 ", must be between 0 and 47\n", t);
132
133 trans_cube = cube_trans_table[t];
134 trans_inv = cube_trans_table_inverse[t];
135
136 ret = compose_edges(trans_cube, c);
137 ret = compose_edges(ret, trans_inv);
138
139 return ret;
140}
141
142_static cube_t
143transform_corners(cube_t c, uint8_t t)
144{
145 cube_t ret, trans_cube, trans_inv;
146
147 DBG_ASSERT(t < 48, zero,
148 "transform: invalid transformation %" PRIu8
149 ", must be between 0 and 47\n", t);
150
151 trans_cube = cube_trans_table[t];
152 trans_inv = cube_trans_table_inverse[t];
153
154 ret = compose_corners(trans_cube, c);
155 ret = compose_corners(ret, trans_inv);
156
157 return t < 24 ? ret : invertco(ret);
158}
159
160_static cube_t
161transform(cube_t c, uint8_t t)
162{
163 cube_t ret, trans_cube, trans_inv;
164
165 DBG_ASSERT(t < 48, zero,
166 "transform: invalid transformation %" PRIu8
167 ", must be between 0 and 47\n", t);
168
169 trans_cube = cube_trans_table[t];
170 trans_inv = cube_trans_table_inverse[t];
171
172 ret = compose(trans_cube, c);
173 ret = compose(ret, trans_inv);
174
175 return t < 24 ? ret : invertco(ret);
176}

Generated with cgit - Back to sebastiano.tronto.net