/// <summary>
        /// Declares that a tile is symetric, and therefore transforms to iteself.
        /// This is a shorthand for calling Add(tile,..., tile) for specific rotations.
        /// </summary>
        public void AddSymmetry(Tile tile, TileSymmetry ts)
        {
            // I've listed the subgroups in the order found here:
            // https://groupprops.subwiki.org/wiki/Subgroup_structure_of_dihedral_group:D8
            switch (ts)
            {
            case TileSymmetry.F:
                GetGroup(tile, out var _);
                break;

            case TileSymmetry.N:
                Add(tile, new Rotation(2 * 90, false), tile);
                break;

            case TileSymmetry.T:
                Add(tile, new Rotation(0 * 90, true), tile);
                break;

            case TileSymmetry.L:
                Add(tile, new Rotation(1 * 90, true), tile);
                break;

            case TileSymmetry.E:
                Add(tile, new Rotation(2 * 90, true), tile);
                break;

            case TileSymmetry.Q:
                Add(tile, new Rotation(3 * 90, true), tile);
                break;

            case TileSymmetry.I:
                Add(tile, new Rotation(0 * 90, true), tile);
                Add(tile, new Rotation(2 * 90, false), tile);
                break;

            case TileSymmetry.Slash:
                Add(tile, new Rotation(1 * 90, true), tile);
                Add(tile, new Rotation(2 * 90, false), tile);
                break;

            case TileSymmetry.Cyclic:
                Add(tile, new Rotation(1 * 90, false), tile);
                break;

            case TileSymmetry.X:
                Add(tile, new Rotation(0 * 90, true), tile);
                Add(tile, new Rotation(1 * 90, false), tile);
                break;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Declares that a tile is symetric, and therefore transforms to iteself.
        /// This is a shorthand for calling Add(tile,..., tile) with the list of transformations
        /// related to the symmetry.
        /// </summary>
        public void AddSymmetry(Tile tile, TileSymmetry ts)
        {
            // I've listed the subgroups in the order found here:
            // https://groupprops.subwiki.org/wiki/Subgroup_structure_of_dihedral_group:D8
            switch (ts)
            {
            case TileSymmetry.F:
                break;

            case TileSymmetry.N:
                Add(tile, 2, false, tile);
                break;

            case TileSymmetry.T:
                Add(tile, 0, true, tile);
                break;

            case TileSymmetry.L:
                Add(tile, 1, true, tile);
                break;

            case TileSymmetry.E:
                Add(tile, 2, true, tile);
                break;

            case TileSymmetry.Q:
                Add(tile, 3, true, tile);
                break;

            case TileSymmetry.I:
                Add(tile, 0, true, tile);
                Add(tile, 2, false, tile);
                break;

            case TileSymmetry.Slash:
                Add(tile, 1, true, tile);
                Add(tile, 2, false, tile);
                break;

            case TileSymmetry.Cyclic:
                Add(tile, 1, false, tile);
                break;

            case TileSymmetry.X:
                Add(tile, 0, true, tile);
                Add(tile, 1, false, tile);
                break;
            }
        }