private int DrawLine(Spiral spiral, int nextValue, Point start, Point end) { if (start.X < end.X) { for (int i = start.X; i <= end.X; i++) { spiral.SetValueRelative(i, start.Y, nextValue++); } } else if (start.X > end.X) { for (int i = start.X; i >= end.X; i--) { spiral.SetValueRelative(i, start.Y, nextValue++); } } if (start.Y < end.Y) { for (int i = start.Y; i <= end.Y; i++) { spiral.SetValueRelative(start.X, i, nextValue++); } } else if (start.Y > end.Y) { for (int i = start.Y; i >= end.Y; i--) { spiral.SetValueRelative(start.X, i, nextValue++); } } return nextValue; }
private void DrawRight(Spiral spiral, int nextValue, int y, int startX, int endX) { for (int x = startX; x <= endX; x++) { spiral.SetValueRelative(x, y, nextValue++); } }
private int DrawUp(Spiral spiral, int nextValue, int x, int startY, int endY) { for (int y = startY; y >= endY; y--) { spiral.SetValueRelative(x, y, nextValue++); } return nextValue; }
private int DrawLeft(Spiral spiral, int nextValue, int y, int startX, int endX) { for (int x = startX; x >= endX; x--) { spiral.SetValueRelative(x, y, nextValue++); } return nextValue; }
private void DrawTopOn(Spiral spiral) { for (int i = 0; i < _sideLength; i++) { spiral.SetValueRelative(_topStartX + i, -_index, _topStartValue + i); } }
private void DrawRightOn(Spiral spiral) { for (int i = 0; i < _sideLength; i++) { spiral.SetValueRelative(_index, _rightStartY + i, _rightStartValue + i); } }
private void DrawLeftOn(Spiral spiral) { for (int i = 0; i < _sideLength; i++) { spiral.SetValueRelative(-_index, _leftStartY - i, _leftStartValue + i); } }
private void DrawBottomOn(Spiral spiral) { for (int i = 0; i < _sideLength; i++) { spiral.SetValueRelative(_bottomStartX - i, _index, _bottomStartValue + i); } }
private Spiral PopulateSpiral(Spiral spiral) { var offset = spiral.Origin.X; for (int x = -offset; x <= offset; x++) { for (int y = -offset; y <= offset; y++) { int valueAtCoordinates = GetValueAt(x, y); spiral.SetValueRelative(x, y, valueAtCoordinates); } } return spiral; }