diff pkg/mesh/polygon.go @ 5399:47c2ca05e8ec

Merged extented-report branch back into default.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 07 Jul 2021 11:44:40 +0200
parents 866eae1bd888
children 5f47eeea988d
line wrap: on
line diff
--- a/pkg/mesh/polygon.go	Sun Jul 04 11:37:37 2021 +0200
+++ b/pkg/mesh/polygon.go	Wed Jul 07 11:44:40 2021 +0200
@@ -44,7 +44,7 @@
 	IntersectionOverlaps
 )
 
-func (ls lineSegment) Rect(interface{}) ([]float64, []float64) {
+func (ls lineSegment) Rect() ([2]float64, [2]float64) {
 
 	var min, max [2]float64
 
@@ -64,14 +64,14 @@
 		max[1] = ls[1]
 	}
 
-	return min[:], max[:]
+	return min, max
 }
 
 func (p *Polygon) Indexify() {
 	indices := make([]*rtree.RTree, len(p.rings))
 
 	for i := range indices {
-		index := rtree.New(nil)
+		index := new(rtree.RTree)
 		indices[i] = index
 
 		rng := p.rings[i]
@@ -83,7 +83,8 @@
 			} else {
 				ls = []float64{rng[i], rng[i+1], rng[0], rng[1]}
 			}
-			index.Insert(ls)
+			min, max := ls.Rect()
+			index.Insert(min, max, ls)
 		}
 	}
 
@@ -217,9 +218,11 @@
 		return IntersectionOutSide
 	}
 
+	min, max := box.Rect()
+
 	for _, index := range p.indices {
 		var intersects bool
-		index.Search(box, func(item rtree.Item) bool {
+		index.Search(min, max, func(_, _ [2]float64, item interface{}) bool {
 			if item.(lineSegment).intersects(box) {
 				intersects = true
 				return false
@@ -252,9 +255,10 @@
 
 func (p *Polygon) IntersectionWithTriangle(t *Triangle) IntersectionType {
 	box := t.BBox()
+	min, max := box.Rect()
 	for _, index := range p.indices {
 		var intersects bool
-		index.Search(box, func(item rtree.Item) bool {
+		index.Search(min, max, func(_, _ [2]float64, item interface{}) bool {
 			ls := item.(lineSegment)
 			other := make(lineSegment, 4)
 			for i := range t {