Example #1
0
        public void CheckSplit()
        {
            var _NumberOfSplits = 0L;

            var _Bintree = new Bintree <Double>(0, 10, MaxNumberOfEmbeddedElements: 4);

            _Bintree.OnTreeSplit += (Bintree, Pixel) =>
            {
                Interlocked.Increment(ref _NumberOfSplits);
            };

            _Bintree.Add(1);
            Assert.AreEqual(1UL, _Bintree.EmbeddedCount);
            Assert.AreEqual(1UL, _Bintree.Count);

            _Bintree.Add(2);
            Assert.AreEqual(2, _Bintree.EmbeddedCount);
            Assert.AreEqual(2, _Bintree.Count);

            _Bintree.Add(8);
            Assert.AreEqual(3, _Bintree.EmbeddedCount);
            Assert.AreEqual(3, _Bintree.Count);

            _Bintree.Add(9);
            Assert.AreEqual(4, _Bintree.EmbeddedCount);
            Assert.AreEqual(4, _Bintree.Count);

            // Add the fifth pixel -> Should cause a split!
            _Bintree.Add(5);
            Assert.AreEqual(1L, _NumberOfSplits);

            Assert.AreEqual(0, _Bintree.EmbeddedCount);
            //    Assert.AreEqual(5, _Bintree.Count);
        }
Example #2
0
        public void CheckRecursiveSplits()
        {
            var _NumberOfSplits = 0L;

            var _Bintree = new Bintree <Double>(0, 100, MaxNumberOfEmbeddedElements: 4);

            _Bintree.OnTreeSplit += (Bintree, Pixel) =>
            {
                Interlocked.Increment(ref _NumberOfSplits);
            };

            _Bintree.Add(1);
            _Bintree.Add(2);
            _Bintree.Add(3);
            _Bintree.Add(4);
            _Bintree.Add(5);
            _Bintree.Add(6);
            _Bintree.Add(50);
            _Bintree.Add(51);
            _Bintree.Add(52);
            _Bintree.Add(53);
            _Bintree.Add(54);
            _Bintree.Add(55);
            _Bintree.Add(56);
            _Bintree.Add(57);
            _Bintree.Add(58);
            _Bintree.Add(59);
            _Bintree.Add(60);

            Assert.AreEqual(9L, _NumberOfSplits);
        }
Example #3
0
        public void CheckRecursiveSplits()
        {
            var _NumberOfSplits = 0L;

            var _Bintree = new Bintree<Double>(0, 100, MaxNumberOfEmbeddedElements: 4);
            _Bintree.OnTreeSplit += (Bintree, Pixel) =>
            {
                Interlocked.Increment(ref _NumberOfSplits);
            };

            _Bintree.Add(1);
            _Bintree.Add(2);
            _Bintree.Add(3);
            _Bintree.Add(4);
            _Bintree.Add(5);
            _Bintree.Add(6);
            _Bintree.Add(50);
            _Bintree.Add(51);
            _Bintree.Add(52);
            _Bintree.Add(53);
            _Bintree.Add(54);
            _Bintree.Add(55);
            _Bintree.Add(56);
            _Bintree.Add(57);
            _Bintree.Add(58);
            _Bintree.Add(59);
            _Bintree.Add(60);

            Assert.AreEqual(9L, _NumberOfSplits);
        }
Example #4
0
        public void CheckBounds()
        {
            var _Bintree = new Bintree <Double>(1, 3);

            Assert.AreEqual(1, _Bintree.Left);
            Assert.AreEqual(3, _Bintree.Right);
            Assert.AreEqual(2, _Bintree.Length);

            Assert.AreEqual(0, _Bintree.EmbeddedCount);
            Assert.AreEqual(0, _Bintree.Count);
        }
Example #5
0
        public void CheckBounds()
        {
            var _Bintree = new Bintree<Double>(1, 3);

            Assert.AreEqual(1, _Bintree.Left);
            Assert.AreEqual(3, _Bintree.Right);
            Assert.AreEqual(2, _Bintree.Length);

            Assert.AreEqual(0, _Bintree.EmbeddedCount);
            Assert.AreEqual(0, _Bintree.Count);
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        private void BuildIndex()
        {
            tree = new Bintree();

            ICoordinate[] pts    = CoordinateArrays.RemoveRepeatedPoints(ring.Coordinates);
            IList         mcList = MonotoneChainBuilder.GetChains(pts);

            for (int i = 0; i < mcList.Count; i++)
            {
                MonotoneChain mc    = (MonotoneChain)mcList[i];
                IEnvelope     mcEnv = mc.Envelope;
                interval.Min = mcEnv.MinY;
                interval.Max = mcEnv.MaxY;
                tree.Insert(interval, mc);
            }
        }
Example #7
0
        /// <summary>
        ///
        /// </summary>
        private void BuildIndex()
        {
            _tree = new Bintree();

            IList <Coordinate> pts = CoordinateArrays.RemoveRepeatedPoints(_ring.Coordinates);
            IList mcList           = MonotoneChainBuilder.GetChains(pts);

            for (int i = 0; i < mcList.Count; i++)
            {
                MonotoneChain mc    = (MonotoneChain)mcList[i];
                Envelope      mcEnv = mc.Envelope;
                _interval.Min = mcEnv.Minimum.Y;
                _interval.Max = mcEnv.Maximum.Y;
                _tree.Insert(_interval, mc);
            }
        }
        /// <summary>
        ///
        /// </summary>
        private void BuildIndex()
        {
            _tree = new Bintree <MonotoneChain>();

            Coordinate[]          pts    = CoordinateArrays.RemoveRepeatedPoints(_ring.Coordinates);
            IList <MonotoneChain> mcList = MonotoneChainBuilder.GetChains(pts);

            foreach (MonotoneChain mc in mcList)
            {
                var mcEnv = mc.Envelope;
                _interval.Min = mcEnv.MinY;
                _interval.Max = mcEnv.MaxY;

                /*
                 * _interval = _interval.ExpandedByInterval(
                 *  Interval.Create(mcEnv.MinY, mcEnv.MaxY));
                 */
                _tree.Insert(_interval, mc);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        private void BuildIndex()
        {
            _tree = new Bintree<MonotoneChain>();

            Coordinate[] pts = CoordinateArrays.RemoveRepeatedPoints(_ring.Coordinates);
            IList<MonotoneChain> mcList = MonotoneChainBuilder.GetChains(pts);

            foreach (MonotoneChain mc in mcList)
            {
                var mcEnv = mc.Envelope;
                _interval.Min = mcEnv.MinY;
                _interval.Max = mcEnv.MaxY;
                /*
                _interval = _interval.ExpandedByInterval(
                    Interval.Create(mcEnv.MinY, mcEnv.MaxY));
                 */
                _tree.Insert(_interval, mc);
            }
        }
        public void CheckSplit()
        {

            var _NumberOfSplits = 0L;

            var _Bintree = new Bintree<Double>(0, 10, MaxNumberOfEmbeddedElements: 4);
            _Bintree.OnTreeSplit += (Bintree, Pixel) =>
            {
                Interlocked.Increment(ref _NumberOfSplits);
            };

            _Bintree.Add(1);
            Assert.AreEqual(1UL, _Bintree.EmbeddedCount);
            Assert.AreEqual(1UL, _Bintree.Count);

            _Bintree.Add(2);
            Assert.AreEqual(2, _Bintree.EmbeddedCount);
            Assert.AreEqual(2, _Bintree.Count);

            _Bintree.Add(8);
            Assert.AreEqual(3, _Bintree.EmbeddedCount);
            Assert.AreEqual(3, _Bintree.Count);

            _Bintree.Add(9);
            Assert.AreEqual(4, _Bintree.EmbeddedCount);
            Assert.AreEqual(4, _Bintree.Count);

            // Add the fifth pixel -> Should cause a split!
            _Bintree.Add(5);
            Assert.AreEqual(1L, _NumberOfSplits);

            Assert.AreEqual(0, _Bintree.EmbeddedCount);
        //    Assert.AreEqual(5, _Bintree.Count);

        }
 public void VerifyOutOfBoundsException()
 {
     var _Bintree = new Bintree<Double>(1, 3);
     _Bintree.Add(10);
 }
Example #12
0
        public void VerifyOutOfBoundsException()
        {
            var _Bintree = new Bintree <Double>(1, 3);

            _Bintree.Add(10);
        }