[Math] Can any 3d rotation be done with only two angles

linear algebrarotations

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.

Best Answer

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.