view 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 source

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
}