int transformation[(2*19 - 1) * (2*19 - 1)][8]; const int transformation2[8][2][2] = { {{1, 0}, {0, 1}}, {{0, 1}, {-1, 0}}, {{-1, 0}, {0, -1}}, {{0, -1}, {1, 0}}, {{0, -1}, {-1, 0}}, {{-1, 0}, {0, 1}}, {{0, 1}, {1, 0}}, {{1, 0}, {0, -1}} }; void transformation_init (void) { int k; int dx; int dy; for (k = 0; k < 8; k++) { for (dy = -19 + 1; dy <= 19 - 1; dy++) { for (dx = -19 + 1; dx <= 19 - 1; dx++) { int tx; int ty; do { *&tx = transformation2[k][0][0] * (dx) + transformation2[k][0][1] * (dy); *&ty = transformation2[k][1][0] * (dx) + transformation2[k][1][1] * (dy); } while (0); transformation[((dy + 19 - 1) * (2 * 19 - 1) + (dx + 19 - 1))][k] = ((tx) * (19 + 1) + (ty)); } } } }