public IterateBoards DefineIteratedBoards() { var boards = new IterateBoards(); var currentBoard = new MatrixBoard(ImageMatrix); for (int i = 0; i < IterateBoards.numberOfIterations; i++) { boards.Boards.Add(currentBoard); currentBoard = currentBoard.IterateBoard(); } return boards; }
public MatrixBoard IterateBoard() { const int consolidationConstant = 3; MatrixBoard iteratedBoard = new MatrixBoard(width, height); int averageSurroundingDiscrepPxls; int rangeOfSurroundingPxls, rangeOfSurroundingDiscrepPxls; int[] surroundingPxls = new int[4]; int[] surroundingDiscrepancyPxls = new int[4]; for (int i = 1; i < width - 1; i++) { for (int j = 1; j < height - 1; j++) { surroundingPxls[0] = Matrix[i - 1][j]; surroundingPxls[1] = Matrix[i][j - 1]; surroundingPxls[2] = Matrix[i + 1][j]; surroundingPxls[3] = Matrix[i][j + 1]; for (int k = 0; k < 4; k++) surroundingDiscrepancyPxls[k] = Math.Abs(Matrix[i][j] - surroundingPxls[k]); averageSurroundingDiscrepPxls = (surroundingDiscrepancyPxls[0] + surroundingDiscrepancyPxls[1] + surroundingDiscrepancyPxls[2] + surroundingDiscrepancyPxls[3]) / 4; rangeOfSurroundingDiscrepPxls = Math.Max(Math.Max(surroundingDiscrepancyPxls[0], surroundingDiscrepancyPxls[1]), Math.Max(surroundingDiscrepancyPxls[2], surroundingDiscrepancyPxls[3])) - Math.Min(Math.Min(surroundingDiscrepancyPxls[0], surroundingDiscrepancyPxls[1]), Math.Min(surroundingDiscrepancyPxls[2], surroundingDiscrepancyPxls[3])); rangeOfSurroundingPxls = Math.Max(Math.Max(surroundingPxls[0], surroundingPxls[1]), Math.Max(surroundingPxls[2], surroundingPxls[3])) - Math.Min(Math.Min(surroundingPxls[0], surroundingPxls[1]), Math.Min(surroundingPxls[2], surroundingPxls[3])); iteratedBoard.Matrix[i][j] = ((averageSurroundingDiscrepPxls * rangeOfSurroundingPxls) / ((rangeOfSurroundingDiscrepPxls / 4) + 1)) / consolidationConstant; } } iteratedBoard.MatrixImg = iteratedBoard.Matrix.ConvertDoubleArrayToBitmap(Color.White); return iteratedBoard; }