Recently I seem to have gotten the physics-engine portion of my 3D simulation/game engine [apparently] working correctly. The most convenient way to store and compute position and orientation are in 3-element vectors (though my code actually holds both in the x,y,z elements of a 4-element vector).
The orientation is kept in what seems to be commonly called "scaled-vector" form, where the axis is defined by the vector direction, and the rotation angle is the length of the vector (in radians).
After streamlining the code for a long time, the code is quite short and sweet (simple)... except where the code computes the new orientation (where torque forces and previous angular velocity applied to the previous orientation generate a new angular velocity and orientation). Whether this computation is done with matrices or quaternions, this section of code is relatively messy, extensive and slower to execute.
I'm not good at math (barely good enough to get the physics working after reading about ten million articles and books). But I have a very strong intuitive feeling there must be a way to rotate an orientation in scaled-vector form by a rotation also in scaled-vector form. This seems "obvious" to math-moron-me because a quaternion is equivalent to a scaled-vector, and because a quaternion is equivalent to a 4-element axis-angle vector which is itself equivalent to a scaled-vector.
Furthermore, I have found that all other computations in the physics engine with scaled-vectors are [somewhat to much] simpler and faster than any alternative, which makes me think there is something inherently good about these scaled-vectors. For one thing they don't get messed up when objects get rotating very fast (more than pi or 2pi per physics interval), while other approaches do.
Perhaps I've given more background than I should, but I do so to justify my desire to find the math to "rotate an orientation" AKA "rotate a rotation" with in scaled-vector form without converting them to quaternions or rotation matrices and back again, which is what I do now.
I've searched far and wide, but can't find the equations. I've found about ten million versions with quaternions and rotation matrices, but that's not what I'm looking for. Is my weakness in math hiding some obscure reason that this operation inherently can't be formulated with scaled-vectors?
Or can some math genius out there somewhere just whip these equations out, and receive my sincere admiration and appreciation?
PS: If someone provides these equations, I have a feeling many physics-engine and game-engine developers will find them as extremely helpful as me.