comparison cmd/isoareas/main.go @ 4547:6247f5a42226 iso-areas

Increased resolution.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 27 Sep 2019 18:20:13 +0200
parents a3f1d92b8597
children befb94e3a953
comparison
equal deleted inserted replaced
4546:a3f1d92b8597 4547:6247f5a42226
132 return nil 132 return nil
133 } 133 }
134 134
135 func connectArcs(tri *octree.Triangulation, cuts []indexedArc, arcs *[]octree.LineStringZ) { 135 func connectArcs(tri *octree.Triangulation, cuts []indexedArc, arcs *[]octree.LineStringZ) {
136 136
137 unique := map[int32]struct{}{}
138 for i := range cuts {
139 unique[cuts[i].arc] = struct{}{}
140 }
141 before := len(unique)
142
137 origLen := int32(len(*arcs)) 143 origLen := int32(len(*arcs))
138 144
139 for i := range cuts { 145 for i := range cuts {
140 if cuts[i].arc >= origLen { 146 if cuts[i].arc >= origLen {
141 // already has a connected arc assigned. 147 // already has a connected arc assigned.
187 cuts[i].arc = nidx 193 cuts[i].arc = nidx
188 for _, j := range modified { 194 for _, j := range modified {
189 cuts[j].arc = nidx 195 cuts[j].arc = nidx
190 } 196 }
191 } 197 }
192 198 }
193 } 199
200 unique = map[int32]struct{}{}
201 for i := range cuts {
202 unique[cuts[i].arc] = struct{}{}
203 }
204 log.Printf("unique arcs: before: %d after %d\n",
205 before, len(unique))
194 } 206 }
195 207
196 func intersectTriangles(tri *octree.Triangulation, heights []float64) [][]octree.LineStringZ { 208 func intersectTriangles(tri *octree.Triangulation, heights []float64) [][]octree.LineStringZ {
197 209
198 cuts := make([][]indexedArc, len(heights)) 210 cuts := make([][]indexedArc, len(heights))
440 452
441 ratio := (max.X - min.X) / (max.Y - min.Y) 453 ratio := (max.X - min.X) / (max.Y - min.Y)
442 454
443 log.Printf("ratio: %.2f\n", ratio) 455 log.Printf("ratio: %.2f\n", ratio)
444 456
445 const width = 1000 457 const width = 50000
446 height := int(math.Ceil(width * ratio)) 458 height := int(math.Ceil(width * ratio))
447 459
448 px := linear(min.X, 0, max.X, width) 460 px := linear(min.X, 0, max.X, width)
449 py := linear(min.Y, float64(height), max.Y, 0) 461 py := linear(min.Y, float64(height), max.Y, 0)
450 462