diff cmd/octree2contour/loader.go @ 682:b17e3ce53285 octree

octree: simplified cube indexing.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 19 Sep 2018 20:55:02 +0200
parents a8d32a11b113
children a31dc9486bd8
line wrap: on
line diff
--- a/cmd/octree2contour/loader.go	Wed Sep 19 18:39:03 2018 +0200
+++ b/cmd/octree2contour/loader.go	Wed Sep 19 20:55:02 2018 +0200
@@ -158,19 +158,18 @@
 		}
 
 		if pos > 0 { // node
-			if mid := (max-min)*0.5 + min; h <= mid {
-				stack = append(stack,
-					frame{ot.index[pos+0], min, mid},
-					frame{ot.index[pos+1], min, mid},
-					frame{ot.index[pos+3], min, mid},
-					frame{ot.index[pos+5], min, mid})
+			var zbit int32
+			if mid := (max-min)*0.5 + min; h >= mid {
+				zbit = 4
+				min = mid
 			} else {
-				stack = append(stack,
-					frame{ot.index[pos+4], mid, max},
-					frame{ot.index[pos+5], mid, max},
-					frame{ot.index[pos+6], mid, max},
-					frame{ot.index[pos+7], mid, max})
+				max = mid
 			}
+			stack = append(stack,
+				frame{ot.index[pos+0+zbit], min, max},
+				frame{ot.index[pos+1+zbit], min, max},
+				frame{ot.index[pos+2+zbit], min, max},
+				frame{ot.index[pos+3+zbit], min, max})
 		} else { // leaf
 			pos = -pos - 1
 			n := ot.index[pos]