Mercurial > gemma
diff cmd/tin2octree/tin.go @ 729:b0bd242ff821
Removed vertex duplicate.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sat, 22 Sep 2018 22:14:31 +0200 |
parents | a3d722e1f593 |
children |
line wrap: on
line diff
--- a/cmd/tin2octree/tin.go Sat Sep 22 21:58:15 2018 +0200 +++ b/cmd/tin2octree/tin.go Sat Sep 22 22:14:31 2018 +0200 @@ -8,6 +8,8 @@ "io" "log" "math" + + "gemma.intevation.de/gemma/pkg/octree" ) var ( @@ -26,11 +28,11 @@ type tin struct { epsg uint32 - vertices []vertex + vertices []octree.Vertex triangles [][]int32 - min vertex - max vertex + min octree.Vertex + max octree.Vertex } func (t *tin) FromWKB(data []byte) error { @@ -68,11 +70,11 @@ return err } - vertices := make([]vertex, 0, 100000) + vertices := make([]octree.Vertex, 0, 100000) - var v vertex + var v octree.Vertex - v2i := make(map[vertex]int32, 100000) + v2i := make(map[octree.Vertex]int32, 100000) var indexPool []int32 @@ -87,8 +89,8 @@ var triangles [][]int32 - min := vertex{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64} - max := vertex{-math.MaxFloat64, -math.MaxFloat64, -math.MaxFloat64} + min := octree.Vertex{math.MaxFloat64, math.MaxFloat64, math.MaxFloat64} + max := octree.Vertex{-math.MaxFloat64, -math.MaxFloat64, -math.MaxFloat64} for i := uint32(0); i < num; i++ { @@ -141,16 +143,16 @@ } // Do this conversion later to spare reflect calls // and allocs in binary.Read. - v.x = math.Float64frombits(x) - v.y = math.Float64frombits(y) - v.z = math.Float64frombits(z) + v.X = math.Float64frombits(x) + v.Y = math.Float64frombits(y) + v.Z = math.Float64frombits(z) idx, found := v2i[v] if !found { idx = int32(len(vertices)) v2i[v] = idx vertices = append(vertices, v) - min.minimize(v) - max.maximize(v) + min.Minimize(v) + max.Maximize(v) } triangle[p] = idx } @@ -159,7 +161,7 @@ } log.Printf("bbox: [[%f, %f], [%f, %f]]\n", - min.x, min.y, max.x, max.y) + min.X, min.Y, max.X, max.Y) *t = tin{ epsg: wgs84, @@ -181,26 +183,16 @@ return t.FromWKB(data) } -func (v *vertex) write(w io.Writer) error { - for _, addr := range []*float64{&v.x, &v.y, &v.z} { - if err := binary.Write( - w, binary.LittleEndian, math.Float64bits(*addr)); err != nil { - return err - } - } - return nil -} - func (t *tin) Serialize(w io.Writer) error { if err := binary.Write(w, binary.LittleEndian, t.epsg); err != nil { return err } - if err := t.min.write(w); err != nil { + if err := t.min.Write(w); err != nil { return err } - if err := t.max.write(w); err != nil { + if err := t.max.Write(w); err != nil { return err } @@ -210,7 +202,7 @@ } for _, v := range t.vertices { - if err := v.write(w); err != nil { + if err := v.Write(w); err != nil { return err } }