Пример #1
0
        public static Tuple <TPoint[], TNode>[] LinearRadialSearch <TPoint, TNode>(TPoint[][] points, TNode[] nodes, TPoint[] target, Func <TPoint[], TPoint[], double> metric, double radius)
        {
            var pointsInRadius = new BoundedPriorityList <int, double>(points.Length, true);

            for (int i = 0; i < points.Length; i++)
            {
                var currentDist = metric(target, points[i]);
                if (radius >= currentDist)
                {
                    pointsInRadius.Add(i, currentDist);
                }
            }

            return(pointsInRadius.Select(idx => new Tuple <TPoint[], TNode>(points[idx], nodes[idx])).ToArray());
        }
Пример #2
0
        public static T[][] LinearRadialSearch <T>(T[][] data, T[] point, Func <T[], T[], double> metric, double radius)
        {
            var pointsInRadius = new BoundedPriorityList <T[], double>(data.Length, true);

            for (int i = 0; i < data.Length; i++)
            {
                var currentDist = metric(point, data[i]);
                if (radius >= currentDist)
                {
                    pointsInRadius.Add(data[i], currentDist);
                }
            }

            return(pointsInRadius.ToArray());
        }
        public void InsertTest()
        {
            var bp = new BoundedPriorityList <int, double>(3, true)
            {
                { 34, 98744.90383 },
                { 23, 67.39030 },
                { 2, 2 },
                { 89, 3 }
            };


            Assert.That(bp[0], Is.EqualTo(2));
            Assert.That(bp[1], Is.EqualTo(89));
            Assert.That(bp[2], Is.EqualTo(23));
        }
        public static Tuple <TDimension[], TNode>[] ToResultSet <TPriority, TDimension, TNode>(
            this BoundedPriorityList <int, TPriority> list,
            KDTree <TDimension, TNode> tree)
            where TDimension : IComparable <TDimension>
            where TPriority : IComparable <TPriority>
        {
            var array = new Tuple <TDimension[], TNode> [list.Count];

            for (var i = 0; i < list.Count; i++)
            {
                array[i] = new Tuple <TDimension[], TNode>(
                    tree.InternalPointArray[list[i]],
                    tree.InternalNodeArray[list[i]]);
            }

            return(array);
        }