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)); } }
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)); } }
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)); } } }
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); } }
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); } } }
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; } }