mirror of
https://github.com/penpot/penpot.git
synced 2025-07-26 00:37:17 +02:00
30 lines
935 B
Clojure
30 lines
935 B
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns app.util.kdtree
|
|
"A cljs layer on top of js impl of kdtree located in `kdtree_impl.js`."
|
|
(:require [app.util.kdtree-impl :as impl]))
|
|
|
|
(defn create
|
|
"Create an empty or initialized kd-tree instance."
|
|
([] (impl/create))
|
|
([points] (impl/create (clj->js points))))
|
|
|
|
(defn setup!
|
|
"Generate new kd-tree instance with provided generation parameter
|
|
or just return a previously created from internal LRU cache."
|
|
[t w h ws hs]
|
|
(impl/setup t w h ws hs))
|
|
|
|
(defn nearest
|
|
"Search nearest points to the provided point
|
|
and return the `n` maximum results."
|
|
([t p]
|
|
(nearest t p 10))
|
|
([t p n]
|
|
{:pre [(vector? p)]}
|
|
(let [p (into-array p)]
|
|
(map clj->js (impl/nearest t p n)))))
|