# Composition of two axis-angle rotations

Please note that I am not referring to Euler angles of the form (α,β,γ). I am referring to the axis-angle representation, in which a unit vector indicates the direction axis of a rotation and a scalar the magnitude of the rotation.

Let $(\hat{n_1},\theta_1)$ refer to the first rotation and $(\hat{n_2},\theta_2)$ refer to the second rotation. What is the value of the first rotation followed by the second rotation, in axis-angle representation?

I understand that the composition of two rotations represented by quaternions $q_1$ and $q_2$ is equal to their product $q_2q_1$. Is there a way to find the composition of axis-angle rotations (without having to convert them to quaternions, multiply them, and convert them back to axis-angle) in a similar manner? Is there a simplified formula for this operation?

-

I do not believe there is without passing through some alternate representation (quaternion, matrix, ...). This is one of the known disadvantages of axis-angle compared to the others, while an advantage is the triviality of inversion (simply negate the angle or the axis).

-

The quaternion procedure is probably the simplest, easiest to implement, and most computationally economical way to go.

In practice you would likely be doing all of this in a computer anyhow, and computing the product of two quaternions (in the big scheme of things) is not much harder than two real numbers, or two complex numbers. I think the multiplication is more computatationally efficient than multiplying two $3\times 3$ matrices, at least.

Actually, if you sit down and work the quaternion solution, you can probably work out a formula completely in terms of the coordinates of the $n_i$ and the angles $\theta_i$. It would be monstrous, but it would be totally in terms of your data (and maybe inverse trigonometric functions.)

-

Look at the following link: Axis–angle representation

-
Sorry I didn't check the link in the post, but I did in Wikipedia. If you read the details there is a formula on how to rotate a vector give the axis-angle, you compose it twice and get the desired formula. – Heberto del Rio May 6 '13 at 11:04
Well I should delete my comment, but it just seemed odd it was the same link. Also I think he wants to start with one axis-angle rotation, rotate in space to get result, rotate that result by the second angle-axis rotation, and finally put the overall map back into the form of an angle-axis rotation, so a kind of "inverse" at the end, going from the result of the two maps back into angle-axis form. I'd guess the final result wouldn't be simple only in terms of the two angle-axis rotations composed. – coffeemath May 6 '13 at 17:14
That is correct. What would be the explicit axis-angle representation of two axis-angle rotations combined, without having to apply the first rotation to a vector and then the second, using Rodrigues' rotation formula? – Carlos May 6 '13 at 18:19

I did some original research using Mathematica, and this was the simplest form I could find.

Given two axis angles A and B, with a=||A|| and b=||B||

The resulting vector has the length

c=acos(cos(a)cos(b)-A.B/(a b)sin(a)sin(b))

and is in the direction

E=A b cos(b)sin(a)+a B cos(a)sin(b)+A x B sin(a)sin(b)

So

C=c*E/||E||

Not very monstrous, but it took several hours of simplifying and prodding.

-
Use MathJax please. It's hard to read. – SchrodingersCat Nov 14 '15 at 12:08