9#include <kernel/geometry/intern/congruency_sampler.hpp>
38 class CongruencyMapping;
40 class CongruencyMapping
55 static int map(
int orient,
int idx);
63 template<
typename IdxTuple_>
64 static void flip(IdxTuple_& idx);
74 class CongruencyMapping<Shape::Simplex<1>, 0>
77 static int map(
int orient,
int idx)
79 static const int indices[2][2] =
85 return indices[orient][idx];
88 template<
typename IdxTuple_>
89 static void flip(IdxTuple_& idx)
92 std::swap(idx[0], idx[1]);
102 class CongruencyMapping<Shape::Simplex<2>, 0>
105 static int map(
int orient,
int idx)
107 static const int indices[7][3] =
118 return indices[orient][idx];
121 template<
typename IdxTuple_>
122 static void flip(IdxTuple_& idx)
127 std::swap(idx[1], idx[2]);
137 class CongruencyMapping<Shape::Simplex<2>, 1>
140 static int map(
int orient,
int idx)
142 static const int indices[7][3] =
153 return indices[orient][idx];
156 template<
typename IdxTuple_>
157 static void flip(IdxTuple_& idx)
168 std::swap(idx[0], idx[2]);
178 class CongruencyMapping<Shape::Hypercube<1>, 0>
181 static int map(
int orient,
int idx)
183 static const int indices[2][2] =
189 return indices[orient][idx];
192 template<
typename IdxTuple_>
193 static void flip(IdxTuple_& idx)
196 std::swap(idx[0], idx[1]);
206 class CongruencyMapping<Shape::Hypercube<2>, 0>
209 static int map(
int orient,
int idx)
211 static const int indices[8][4] =
223 return indices[orient][idx];
226 template<
typename IdxTuple_>
227 static void flip(IdxTuple_& idx)
232 std::swap(idx[0], idx[2]);
233 std::swap(idx[1], idx[3]);
243 class CongruencyMapping<Shape::Hypercube<2>, 1>
246 static int map(
int orient,
int idx)
248 static const int indices[8][4] =
260 return indices[orient][idx];
263 template<
typename IdxTuple_>
264 static void flip(IdxTuple_& idx)
275 std::swap(idx[0], idx[1]);