最近工作中遇到用go重写kdtree的需求,上github上查了下,发现go的算法库是真心烂。star最高的kyroy/kdtree库,没有queryBallPoint方法,没办法,自己加一个
拉取源码
go get github.com/kyroy/kdtree
queryBallPoint 函数
queryBallPoint 函数的目标是查找从目标点到一定距离内的所有点。常见的用法是在圆形(在 2D 中)内搜索半径范围内的点。
talk less show me the code 下面上代码,修改 kdtree.go
// QueryBallPoint returns all points within distance r from a given point x in the KDTree.
func (t *KDTree) QueryBallPoint(x Point, r float64) []Point {
var results []Point
if t.root == nil {
return results
}
t.root.queryBallPoint(x