OMG. I don't even know what I was writing. I think I was trying to redefine stuff to be easier to understand and logic failed.

I'm not very strong with the math part of quaternions, but I am very strong with other stuff, and I stand by everything I said after

.

However, minus the stupid component wise shit I tried to do, the construction I provided IS very valid, though I see now it's not what I said it was.

qw = a dot b

qx, qy, qz = a cross b

Anyway, to make this a good post, here's a useful way to construct quaternion.

qw = a dot b

qx, qy, qz = a cross b

That generates a quaternion twice rotated from a to b, so if we slerp a vector half way from a to b, we can use this to construct a quaternion which is rotated from a to b once.

Instead of slerping, we can just do c = (a+b)/||a+b||, which is just:

`c = (a+b).unit`

And then do:

qw = a dot c

qx, qy, qz = a cross c