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