Skip to content

Instantly share code, notes, and snippets.

@xtaci
Last active October 10, 2015 09:40
Show Gist options
  • Save xtaci/1ed72a6635744d6b9cf6 to your computer and use it in GitHub Desktop.
Save xtaci/1ed72a6635744d6b9cf6 to your computer and use it in GitHub Desktop.
rtree type as dimension
package main
import (
"fmt"
"github.com/dhconnelly/rtreego"
)
const (
KTV = iota
HOTEL
)
type Thing struct {
where *rtreego.Rect
name string
}
func (t *Thing) Bounds() *rtreego.Rect {
return t.where
}
func main() {
rt := rtreego.NewTree(3, 25, 50)
p1 := rtreego.Point{1, 1, KTV}
p2 := rtreego.Point{10, 10, HOTEL}
r1, _ := rtreego.NewRect(p1, []float64{0.1, 0.1, 0.1})
r2, _ := rtreego.NewRect(p2, []float64{0.1, 0.1, 0.1})
rt.Insert(&Thing{r1, "天上人间"})
rt.Insert(&Thing{r2, "汉庭"})
bb, _ := rtreego.NewRect(rtreego.Point{0, 0, HOTEL}, []float64{20, 20, 0.2})
results := rt.SearchIntersect(bb)
for k := range results {
fmt.Println("HOTEL:", results[k])
}
bb, _ = rtreego.NewRect(rtreego.Point{0, 0, KTV}, []float64{20, 20, 0.2})
results = rt.SearchIntersect(bb)
for k := range results {
fmt.Println("KTV:", results[k])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment