// 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() }
// Cross returns the cross product of two vectors. func Cross(a, b *T) T { a3 := a.Vec3DividedByW() b3 := b.Vec3DividedByW() c3 := vec3.Cross(&a3, &b3) return T{c3[0], c3[1], c3[2], 1} }