More detailed
Direction vectors and rotations are something
fundementally different.
The best we can do is calculate a rotation
that 'rotates' a predefined 'defaultDirection'
in such a way that it is the same as our
intended 'direction'.
// Rotation from 'def' to 'direction'
rotA = new SFRotation(defDirection,direction);
// Adjust 'up' vector, defUp = yAxis
up = rotA.multVec(yAxis);
// Fix orientation with respect to 'up'
rotB = new SFRotation(direction.cross(up),
direction.cross(yAxis));
// Combine both
orientation = rotA.multiply(rotB);