# Can any 3d rotation be done with only two angles?

Up until now I didn't really have to deal with rotation matrices, but now, a question has come up:

Can I rotate a 3d vector in any way I'd like in 3d by only specifying two angles of rotation?

My intuition tells me it is possible: Any 3d vector can be defined using two angles and the vector's norm. Using two rotations about an axis, we can rotate the vector relative to the XY plane and then relative to the XZ/YZ plane to get another vector in any direction we want.

I found a few other intuitive explanations, but these aren't proofs. I have been told I'm wrong by a few people. Almost anywhere I look I see 3D rotations expressed in terms of 3 angles, but if I'm missing something, I can't for the life of me figure out what it is.

• Of course you can rotate even with just one rotation matrix !? – Hagen von Eitzen Nov 5 '15 at 21:37
• @HagenvonEitzen I think OP is asking if a generic rotation can be obtained from two rotations about primary axes. (I think.) – alex.jordan Nov 5 '15 at 22:02
• Do we get to use a rotation twice? For example, rotating 90 degrees around the X axis, 90 degrees around the Y axis, and 90 degrees the other way around the X axis to create a 90 degree rotation around the Z axis? – user2357112 supports Monica Nov 6 '15 at 1:24

You're considering a slightly different problem: In particular, you're thinking of a rotation as acting one a single vector. And yes, two parameters can specify a rotation taking that vector to any other vector on the unit sphere. Essentially, you can pick a heading along the XY plane and an inclination angle to the XY plane. More or less, you are controlling the yaw and pitch.

However, rotations in three dimensions are not uniquely specified by their action on one vector: They can roll around that vector, which leaves that vector unchanged, but changes other. This necessitates a third parameter.

• Do you mean that is order to rotate around some vector, preserving it while changing all other vectors, you need the 3rd parameter? – user1999728 Nov 5 '15 at 21:43
• @user1999728 Yes. Which is precisely what occurs when an aircraft rolls - consider that your usually method gives a unique rotation taking one vector to another. Yet, rolling around the axis of a given target vector tells us there should be a whole space of solutions taking one vector to a target. – Milo Brandt Nov 5 '15 at 21:52
• Here's a different way of looking at it: recall that any 3D rotation matrix has an axis-angle representation (one angle). But, this axis is not necessarily aligned to the coordinate axes! So, you need one rotation to take the axis to a coordinate plane (two angles), and another one to have it coincide with a coordinate axis (three angles). – J. M. isn't a mathematician Nov 6 '15 at 0:33

I hope I'm not reading too much into your question, but it looks like you are referring to Euler's rotation theorem, which basically states that:

Every rotation in three dimensions is defined by its axis — a direction that is left fixed by the rotation — and its angle — the amount of rotation about that axis.

Which means you can either describe the rotation with 3 angles (one for each axis) or 1 angle and a vector called Euler axis.

This question can be translated into "how many of freedom to define an orthonormal direct 3D frame ?" Which answer is 3 - 1 for the first vector (since normed), 3 - 2 for the second (since normed and orthogonal), 3-3 for the third (since normed and orthogonal to the 2 others). This makes a total 3 independant degrees of freedom.