Mercurial > gemma
comparison cmd/octree2contour/loader.go @ 726:5af9ab39e715
Renamed a few types to uppercase names to prepare the move to the octree package.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sat, 22 Sep 2018 21:34:12 +0200 |
parents | 9db4ae29ded9 |
children |
comparison
equal
deleted
inserted
replaced
725:e0437ec46798 | 726:5af9ab39e715 |
---|---|
1 package main | 1 package main |
2 | 2 |
3 import ( | 3 import ( |
4 "bufio" | 4 "bufio" |
5 "encoding/binary" | 5 "encoding/binary" |
6 "io" | |
7 "log" | 6 "log" |
8 "math" | |
9 "os" | 7 "os" |
10 | 8 |
11 "github.com/golang/snappy" | 9 "github.com/golang/snappy" |
12 ) | 10 ) |
13 | 11 |
14 func (v *vertex) read(r io.Reader) error { | 12 func loadOctreeReader(r *bufio.Reader) (*Octree, error) { |
15 var buf [8]byte | 13 tree := new(Octree) |
16 b := buf[:] | |
17 if _, err := io.ReadFull(r, b); err != nil { | |
18 return nil | |
19 } | |
20 v.x = math.Float64frombits(binary.LittleEndian.Uint64(b)) | |
21 if _, err := io.ReadFull(r, b); err != nil { | |
22 return nil | |
23 } | |
24 v.y = math.Float64frombits(binary.LittleEndian.Uint64(b)) | |
25 if _, err := io.ReadFull(r, b); err != nil { | |
26 return nil | |
27 } | |
28 v.z = math.Float64frombits(binary.LittleEndian.Uint64(b)) | |
29 return nil | |
30 } | |
31 | 14 |
32 func loadOctreeReader(r *bufio.Reader) (*octree, error) { | 15 if err := binary.Read(r, binary.LittleEndian, &tree.EPSG); err != nil { |
33 tree := new(octree) | |
34 | |
35 if err := binary.Read(r, binary.LittleEndian, &tree.epsg); err != nil { | |
36 return nil, err | 16 return nil, err |
37 } | 17 } |
38 | 18 |
39 log.Printf("EPSG: %d\n", tree.epsg) | 19 log.Printf("EPSG: %d\n", tree.EPSG) |
40 | 20 |
41 if err := tree.min.read(r); err != nil { | 21 if err := tree.Min.read(r); err != nil { |
42 return nil, err | 22 return nil, err |
43 } | 23 } |
44 | 24 |
45 if err := tree.max.read(r); err != nil { | 25 if err := tree.Max.read(r); err != nil { |
46 return nil, err | 26 return nil, err |
47 } | 27 } |
48 | 28 |
49 log.Printf("BBOX: [[%f, %f, %f], [%f, %f, %f]]\n", | 29 log.Printf("BBOX: [[%f, %f, %f], [%f, %f, %f]]\n", |
50 tree.min.x, tree.min.y, tree.min.z, | 30 tree.Min.x, tree.Min.y, tree.Min.z, |
51 tree.max.x, tree.max.y, tree.max.z) | 31 tree.Max.x, tree.Max.y, tree.Max.z) |
52 | 32 |
53 var numVertices uint32 | 33 var numVertices uint32 |
54 if err := binary.Read(r, binary.LittleEndian, &numVertices); err != nil { | 34 if err := binary.Read(r, binary.LittleEndian, &numVertices); err != nil { |
55 return nil, err | 35 return nil, err |
56 } | 36 } |
57 | 37 |
58 log.Printf("vertices: %d\n", numVertices) | 38 log.Printf("vertices: %d\n", numVertices) |
59 | 39 |
60 vertices := make([]vertex, numVertices) | 40 vertices := make([]Vertex, numVertices) |
61 tree.vertices = vertices | 41 tree.vertices = vertices |
62 | 42 |
63 for i := range vertices { | 43 for i := range vertices { |
64 if err := vertices[i].read(r); err != nil { | 44 if err := vertices[i].read(r); err != nil { |
65 return nil, err | 45 return nil, err |
116 } | 96 } |
117 | 97 |
118 return tree, nil | 98 return tree, nil |
119 } | 99 } |
120 | 100 |
121 func loadOctree(fname string) (*octree, error) { | 101 func LoadOctree(fname string) (*Octree, error) { |
122 | 102 |
123 f, err := os.Open(fname) | 103 f, err := os.Open(fname) |
124 if err != nil { | 104 if err != nil { |
125 return nil, err | 105 return nil, err |
126 } | 106 } |