Mercurial > gemma
comparison cmd/octree2contour/vertex.go @ 674:120a82bd9953 octree
octree: Added loading frame for contour generation.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 19 Sep 2018 13:26:30 +0200 |
parents | |
children | be90ab542aa7 |
comparison
equal
deleted
inserted
replaced
673:9a0246ab3021 | 674:120a82bd9953 |
---|---|
1 package main | |
2 | |
3 type vertex struct { | |
4 x float64 | |
5 y float64 | |
6 z float64 | |
7 } | |
8 | |
9 func (v *vertex) minimize(w vertex) { | |
10 if w.x < v.x { | |
11 v.x = w.x | |
12 } | |
13 if w.y < v.y { | |
14 v.y = w.y | |
15 } | |
16 if w.z < v.z { | |
17 v.z = w.z | |
18 } | |
19 } | |
20 | |
21 func (v *vertex) maximize(w vertex) { | |
22 if w.x > v.x { | |
23 v.x = w.x | |
24 } | |
25 if w.y > v.y { | |
26 v.y = w.y | |
27 } | |
28 if w.z > v.z { | |
29 v.z = w.z | |
30 } | |
31 } | |
32 | |
33 func (v vertex) sub(w vertex) vertex { | |
34 return vertex{ | |
35 v.x - w.x, | |
36 v.y - w.y, | |
37 v.z - w.z, | |
38 } | |
39 } | |
40 | |
41 func interpolate(v1, v2 vertex) func(vertex) vertex { | |
42 v2 = v2.sub(v1) | |
43 return func(s vertex) vertex { | |
44 return vertex{ | |
45 v2.x*s.x + v1.x, | |
46 v2.y*s.y + v1.y, | |
47 v2.z*s.z + v1.z, | |
48 } | |
49 } | |
50 } | |
51 | |
52 func (a vertex) less(b vertex) bool { | |
53 return a.x < b.x || a.y < b.y || a.z < b.z | |
54 } |