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