-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsorters.go
49 lines (40 loc) · 1010 Bytes
/
sorters.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package SimpleRTree
type xSorter struct {
n *rNode
points FlatPoints
start, end, bucketSize int
}
func (s xSorter) Less(i, j int) bool {
x1, _ := s.points.GetPointAt(i + s.start)
x2, _ := s.points.GetPointAt(j + s.start)
return x1 < x2
}
func (s xSorter) Swap(i, j int) {
s.points.Swap(i+s.start, j+s.start)
}
func (s xSorter) Len() int {
return s.end - s.start
}
func (s xSorter) Sort(buffer []int) {
bucketsX(s, s.bucketSize, buffer)
}
type ySorter struct {
n *rNode
points FlatPoints
start, end, bucketSize int
}
func (s ySorter) Less(i, j int) bool {
_, y1 := s.points.GetPointAt(i + s.start)
_, y2 := s.points.GetPointAt(j + s.start)
return y1 < y2
}
func (s ySorter) Swap(i, j int) {
s.points.Swap(i+s.start, j+s.start)
}
func (s ySorter) Len() int {
return s.end - s.start
}
func (s ySorter) Sort(buffer []int) {
// we already do the shifting on the sort functions
bucketsY(s, s.bucketSize, buffer)
}