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); }
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); }
private void ValidateTriangleCoordinates(TriangleCoordinates coordinates) { ValidateCoordinate(coordinates.V1X); ValidateCoordinate(coordinates.V1Y); ValidateCoordinate(coordinates.V2X); ValidateCoordinate(coordinates.V2Y); ValidateCoordinate(coordinates.V3X); ValidateCoordinate(coordinates.V3Y); }