コード例 #1
0
        public TriangleCoordinates GetCoordinates(GridPosition position)
        {
            ValidateGridPosition(position);
            TriangleCoordinates result = new TriangleCoordinates();


            // In even columns, V1 is on the right.
            if (position.Column % 2 == 0)
            {
                result.V1X = (position.Column / 2) * 10;
                result.V1Y = (position.RowNumber - 1) * 10;

                result.V2X = result.V1X - 10;
                result.V2Y = result.V1Y;

                result.V3X = result.V1X;
                result.V3Y = result.V1Y + 10;
            }
            else  // In odd columns, V1 is on the left
            {
                result.V1X = (position.Column == 1) ? 0 : ((position.Column - 1) / 2) * 10;
                result.V1Y = 10 * position.RowNumber;

                result.V2X = result.V1X;
                result.V2Y = result.V1Y - 10;

                result.V3X = result.V1X + 10;
                result.V3Y = result.V1Y;
            }


            return(result);
        }
コード例 #2
0
        public GridPosition GetGridPosition(TriangleCoordinates coordinates)
        {
            ValidateTriangleCoordinates(coordinates);
            GridPosition position = new GridPosition();

            // -- Figure out if it's an odd or even column
            bool isOdd = false;

            if (coordinates.V1X == coordinates.V2X &&
                coordinates.V1Y > coordinates.V2Y)
            {
                isOdd = true;
            }

            // -- Calculate Row
            int row = 0;

            if (isOdd)
            {
                row             = coordinates.V1Y / 10;
                position.Column = ((coordinates.V1X / 10) * 2) + 1;
            }
            else
            {
                row             = (coordinates.V1Y + 10) / 10;
                position.Column = ((coordinates.V1X / 10) * 2);
            }

            position.Row = ((char)(row + 64)).ToString();

            return(position);
        }
コード例 #3
0
        private void ValidateTriangleCoordinates(TriangleCoordinates coordinates)
        {
            ValidateCoordinate(coordinates.V1X);
            ValidateCoordinate(coordinates.V1Y);

            ValidateCoordinate(coordinates.V2X);
            ValidateCoordinate(coordinates.V2Y);

            ValidateCoordinate(coordinates.V3X);
            ValidateCoordinate(coordinates.V3Y);
        }