public void Return_Rectangles()
        {
            IRectangleLayouter layouter = CreateTrackedLayouter(10, 8, 0.1);

            Rectangle rectA = layouter.Place(new Vector(10, 10));
            Rectangle rectB = layouter.Place(new Vector(10, 10));

            rectA.ShouldBeEquivalentTo(new Rectangle(Vector.Empty, new Vector(10, 10)));
            rectB.Center.Should().NotBe(Vector.Empty);
        }
            public Rectangle Place(Vector rectangleSize)
            {
                Rectangle rect = _baseLayouter.Place(rectangleSize);

                Rectangles.Add(rect);
                return(rect);
            }
Example #3
0
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            _cloudLayouter = new PositionedLayouter(new CircularCloudLayouter(200, 32, 0.1), new Vector(860, 540));
            _rectangles.Clear();

            for (int i = 0; i < 97; i++)
            {
                Rectangle rect = _cloudLayouter.Place(new Vector(40, 40));
                _rectangles.Add(rect);
            }

            Invalidate();
        }
        public void GenerateRectangles_WhichPlacedInCircle()
        {
            IRectangleLayouter layouter      = CreateTrackedLayouter(10, 32, 0.1);
            Vector             rectangleSize = new Vector(40, 40);

            List <Rectangle> rectangles = Enumerable.Repeat(rectangleSize, 97).Select(size => layouter.Place(size)).ToList();

            foreach (double distanceToCenter in rectangles.Select(rect => rect.Center.Length))
            {
                distanceToCenter.Should().BeLessThan(220);
            }
        }
        public void GenerateRectangles_WhichPlacedWithMaxDensity()
        {
            IRectangleLayouter layouter      = CreateTrackedLayouter(10, 32, 0.1);
            Vector             rectangleSize = new Vector(40, 40);

            List <Rectangle> rectangles = Enumerable.Repeat(rectangleSize, 97).Select(size => layouter.Place(size)).ToList();

            Rectangle bounds = rectangles.Aggregate(new Rectangle(), (current, rect) => current.Encapsulate(rect));

            double circleArea = System.Math.PI * 220 * 220;
            double shapeArea  = bounds.Area;

            System.Math.Abs(circleArea / shapeArea).Should().BeGreaterThan(0.75);
        }
 public Rectangle Place(Vector rectangleSize)
 {
     return(_rectangleLayouter.Place(rectangleSize).Move(_center));
 }