Mercurial > gemma
diff cmd/srsimplify/main.go @ 3770:71164b817d6e simplify-sounding-results
Calculate distance from planes.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 25 Jun 2019 21:04:16 +0200 |
parents | 6838526df94c |
children | b7530ed07561 |
line wrap: on
line diff
--- a/cmd/srsimplify/main.go Tue Jun 25 18:28:34 2019 +0200 +++ b/cmd/srsimplify/main.go Tue Jun 25 21:04:16 2019 +0200 @@ -127,15 +127,20 @@ top := points[maxIdx] tris := make([]octree.Triangle, len(corners)) + planes := make([]octree.Plane3D, len(corners)) for i, v1 := range corners { v2 := corners[(i+1)%len(corners)] tris[i] = octree.Triangle{v1, v2, top} + planes[i] = tris[i].Plane3D() } parts := make([][]octree.Vertex, len(tris)) var rest int + maxDists := make([]float64, len(planes)) + maxIdxs := make([]int, len(planes)) + nextPoint: for i, v := range points { if i == maxIdx { @@ -144,6 +149,10 @@ for j := range tris { if tris[j].Contains(v.X, v.Y) { + if dist := math.Abs(planes[j].Eval(v)); dist > maxDists[j] { + maxDists[j] = dist + maxIdxs[j] = len(parts[j]) + } parts[j] = append(parts[j], v) continue nextPoint } @@ -152,7 +161,7 @@ } for i, part := range parts { - log.Printf("%d: %d\n", i, len(part)) + log.Printf("%d: %d %.5f\n", i, len(part), maxDists[i]) } log.Printf("rest: %d\n", rest)