Mercurial > gemma
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]