Esempio n. 1
0
        public void TestBoundedItemInsertAndFind()
        {
            List <Rect> rectangles = new List <Rect>();
            LinkedAvlTree <BoundsComparer> tree = new LinkedAvlTree <BoundsComparer>();

            CreateRectangles(100, tree, rectangles);


            foreach (var r in rectangles)
            {
                Assert.IsNotNull(tree.Find(r));
            }
        }
Esempio n. 2
0
        public void InitalizeBoundSearchStructures(IList <Rect> bounds)
        {
            _horizontallySortedBounds = new LinkedAvlTree <BoundsComparer>();
            _verticallySortedBounds   = new LinkedAvlTree <BoundsComparer>();
            foreach (var r in bounds)
            {
                _horizontallySortedBounds.Add(new BoundsComparer(new RectangleWrapper(r),
                                                                 BoundsComparer.CompareType.CompareX));

                _verticallySortedBounds.Add(new BoundsComparer(new RectangleWrapper(r),
                                                               BoundsComparer.CompareType.CompareY));
            }
        }
Esempio n. 3
0
        public void InitalizeBoundSearchStructures(IEnumerable <IBoundsProvider> bounds)
        {
            _horizontallySortedBounds = new LinkedAvlTree <BoundsComparer>();
            _verticallySortedBounds   = new LinkedAvlTree <BoundsComparer>();
            if (bounds != null)
            {
                foreach (var b in bounds)
                {
                    _horizontallySortedBounds.Add(new BoundsComparer(b,
                                                                     BoundsComparer.CompareType.CompareX));

                    _verticallySortedBounds.Add(new BoundsComparer(b,
                                                                   BoundsComparer.CompareType.CompareY));
                }
            }
        }
Esempio n. 4
0
        protected override void OnRender(DrawingContext drawingContext)
        {
            if (_sketchDisplay.CurrentOperationHandler != null &&
                !(_sketchDisplay.CurrentOperationHandler is SelectUisOperation))
            {
                return;
            }

            foreach (var @i in _intersections)
            {
                i.Draw(drawingContext, false);
            }

            //List<ConnectorUI> toRefresh = new List<ConnectorUI>(
            //    _intersections.Select<Intersection, ConnectorUI>(
            //        (x) =>
            //        {
            //            x.Draw(drawingContext, false);
            //            var ret = x.Intersecting1;
            //            if (ret == _connector)
            //            {
            //                ret = x.Intersecting2;
            //            };
            //            return ret;
            //        }));


            _horizontalScan = new LinkedAvlTree <ScanLine>();
            _verticalScan   = new LinkedAvlTree <ScanLine>();

            //_isRendering = true; // only one IntersectionFinder needs to render
            foreach (var connector in _sketchDisplay.Children.OfType <ConnectorUI>())
            {
                AddLineSegments(connector);
            }

            _intersections = ComputeIntersections();

            foreach (var intersection in _intersections)
            {
                intersection.Draw(drawingContext, true);
            }
        }
Esempio n. 5
0
        void CreateRectangles(int count, LinkedAvlTree <BoundsComparer> tree,
                              List <Rect> rectangles)
        {
            var rand = new Random(-127);

            for (int i = 0; i < count; i++)
            {
                var x = rand.NextDouble() * 2048;
                var y = rand.NextDouble() * 1600;
                var w = 150;
                var h = 50;
                var p = new Point(x, y);
                var s = new Size(w, h);
                var r = new Rect(p, s);
                tree.Add(r);
                if (tree.Count == i + 1)
                {
                    rectangles.Add(r);
                }
            }
        }
Esempio n. 6
0
        public void TestBoundedItemOrder()
        {
            List <Rect> rectangles = new List <Rect>();
            LinkedAvlTree <BoundsComparer> tree = new LinkedAvlTree <BoundsComparer>();

            CreateRectangles(100, tree, rectangles);

            var left       = -1.0;
            var lowerBound = tree.LowerBound(rectangles.First());
            var previous   = lowerBound;

            while (lowerBound != null)
            {
                if (left > lowerBound.Data.Left)
                {
                    Assert.True(left <= lowerBound.Data.Left);
                }

                left       = lowerBound.Data.Left;
                previous   = lowerBound;
                lowerBound = lowerBound.Next;
            }
        }