func (vec Vec3) almostEqual(o Vec3, tol float32) bool {
	return almostEqual32(vec[0], o[0], tol) && almostEqual32(vec[1], o[1], tol) && almostEqual32(vec[2], o[2], tol)
}
almostEqual returns true if vec and o are equal allowing for numerical error tol.
package stl
import (
	"math"
)
type Vec3 [3]float32
var vec3Zero = Vec3{0, 0, 0}
func (vec Vec3) len() float64 {
	return math.Sqrt(float64(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]))
}
func (vec Vec3) unitVec() Vec3 {
	l := vec.len()
	if l == 0 {
		return vec
	}
	return Vec3{float32(float64(vec[0]) / l), float32(float64(vec[1]) / l), float32(float64(vec[2]) / l)}
}
func (vec Vec3) multScalar(scalar float64) Vec3 {
	return Vec3{float32(float64(vec[0]) * scalar), float32(float64(vec[1]) * scalar), float32(float64(vec[2]) * scalar)}
}