-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathutil.go
55 lines (51 loc) · 941 Bytes
/
util.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package meshview
import (
"fmt"
"path/filepath"
"strings"
"github.com/fogleman/fauxgl"
)
func LoadMesh(path string) (*MeshData, error) {
ext := strings.ToLower(filepath.Ext(path))
switch ext {
case ".stl":
return LoadSTL(path)
case ".obj":
return LoadOBJ(path)
}
return nil, fmt.Errorf("unrecognized mesh extension: %s", ext)
}
func boxForData(data []float32) fauxgl.Box {
minx := data[0]
maxx := data[0]
miny := data[1]
maxy := data[1]
minz := data[2]
maxz := data[2]
for i := 0; i < len(data); i += 3 {
x := data[i+0]
y := data[i+1]
z := data[i+2]
if x < minx {
minx = x
}
if x > maxx {
maxx = x
}
if y < miny {
miny = y
}
if y > maxy {
maxy = y
}
if z < minz {
minz = z
}
if z > maxz {
maxz = z
}
}
min := fauxgl.Vector{float64(minx), float64(miny), float64(minz)}
max := fauxgl.Vector{float64(maxx), float64(maxy), float64(maxz)}
return fauxgl.Box{min, max}
}