K-d tree: Difference between revisions
Content added Content deleted
(→{{header|Common Lisp}}: make code organization more idiomatic, remove redefinition spamming) |
m (→{{header|Common Lisp}}: unite let) |
||
Line 601: | Line 601: | ||
&aux (dims (length target))) |
&aux (dims (length target))) |
||
"process one set of data & optionally display tree" |
"process one set of data & optionally display tree" |
||
(let ((*hits* 0 |
(let* ((*hits* 0) |
||
(kdt (make-kdtree 0 data dims)) |
|||
(nn (nn-kdtree kdt (list) target))) |
|||
(when render |
|||
(visit-kdtree kdt |
|||
:node-function |
|||
(lambda (n) |
|||
(format t |
|||
"~A node: axis:~A point: ~A target:~A semi-distance-sqd:~A euclidean-distance-sqd:~A~%" |
|||
(if (not (next-node n target)) |
|||
"TERMINAL" |
|||
"BRANCH") |
|||
(first n) |
|||
(second n) |
|||
target |
|||
(distance n target :semi t) |
|||
(distance n target))))) |
|||
(format t "~%NN to ~A is ~A, distance ~A [tree has ~A nodes, ~A were visited.]~%" |
|||
target |
|||
(second nn) |
|||
(sqrt (distance nn target)) |
|||
(count-nodes kdt) |
|||
*hits*))) |
|||
(defun main () |
(defun main () |