protected override void OnPaint(PaintEventArgs e) { var graphics = e.Graphics; var spiral = new Spiral(center); var prev = spiral.GetNextSpiralPoint(); for (var i = 0; i < 1000; i++) { var item = spiral.GetNextSpiralPoint(); graphics.DrawLine(Pens.Orange, prev, item); prev = item; } }
private Rectangle FindNextRectanglePosition(Size rectangleSize) { var nextSpiralPoint = spiral.GetNextSpiralPoint(); var nextRectangle = new Rectangle(GetRectangleCenterLocation(rectangleSize, nextSpiralPoint), rectangleSize); while (!IsInValidPosition(nextRectangle)) { nextSpiralPoint = spiral.GetNextSpiralPoint(); nextRectangle = new Rectangle(GetRectangleCenterLocation(rectangleSize, nextSpiralPoint), rectangleSize); if (!cloudBorders.Contains(nextSpiralPoint)) { throw new ArgumentException("Can't place rectangle because cloud is too small"); } } return(nextRectangle); }