(define (wikipedia-test) (define t (kdtree 0 2 '(#(2 3) #(5 4) #(9 6) #(4 7) #(8 1) #(7 2)))) (reset-visits) (define n (nearest-neighbor #(9 2) t 2)) (displayln "Wikipedia Test") (displayln (~a "Nearest neighbour to (9,2) is: " n)) (displayln (~a "Distance: " (dist n #(9 2)))) (displayln (~a "Visits: " visits "\n"))) (define (test k n) (define (random!) (for/vector ([_ k]) (random))) (define points (for/list ([_ n]) (random!))) (define t (kdtree 0 k points)) (reset-visits) (define target (for/vector ([_ k]) 0.75)) (define nb (nearest-neighbor target t k)) (define nb-control (argmin (λ (p) (dist p target)) points)) (displayln (~a n " points in R^3 test")) (displayln (~a "Nearest neighbour to " target " is: \n\t\t" nb)) (displayln (~a "Control: \t" nb-control)) (displayln (~a "Distance: \t" (dist nb target))) (displayln (~a "Control: \t" (dist nb-control target))) (displayln (~a "Visits: \t" visits))) (wikipedia-test) (test 3 1000) (test 3 1000)