// Vec3Diff returns the rotation quaternion between two vectors. func Vec3Diff(a, b *vec3.T) T { cr := vec3.Cross(a, b) sr := math.Sqrt(2 * (1 + vec3.Dot(a, b))) oosr := 1 / sr q := T{cr[0] * oosr, cr[1] * oosr, cr[2] * oosr, sr * 0.5} return q.Normalized() }
// Dot returns the dot product of two (dived by w) vectors. func Dot(a, b *T) float64 { a3 := a.Vec3DividedByW() b3 := b.Vec3DividedByW() return vec3.Dot(&a3, &b3) }