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

5.5k Views Asked by At

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.

3

There are 3 best solutions below

4
On 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.

1
On

This question can be translated into "how many degrees 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 independent degrees of freedom.

2
On

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.