Mercurial > gemma
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmd/octree2contour/vertex.go Wed Sep 19 13:26:30 2018 +0200 @@ -0,0 +1,54 @@ +package main + +type vertex struct { + x float64 + y float64 + z float64 +} + +func (v *vertex) minimize(w vertex) { + if w.x < v.x { + v.x = w.x + } + if w.y < v.y { + v.y = w.y + } + if w.z < v.z { + v.z = w.z + } +} + +func (v *vertex) maximize(w vertex) { + if w.x > v.x { + v.x = w.x + } + if w.y > v.y { + v.y = w.y + } + if w.z > v.z { + v.z = w.z + } +} + +func (v vertex) sub(w vertex) vertex { + return vertex{ + v.x - w.x, + v.y - w.y, + v.z - w.z, + } +} + +func interpolate(v1, v2 vertex) func(vertex) vertex { + v2 = v2.sub(v1) + return func(s vertex) vertex { + return vertex{ + v2.x*s.x + v1.x, + v2.y*s.y + v1.y, + v2.z*s.z + v1.z, + } + } +} + +func (a vertex) less(b vertex) bool { + return a.x < b.x || a.y < b.y || a.z < b.z +}