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.

  • 5
    $\begingroup$ Of course you can rotate even with just one rotation matrix !? $\endgroup$ Commented Nov 5, 2015 at 21:37
  • 6
    $\begingroup$ @HagenvonEitzen I think OP is asking if a generic rotation can be obtained from two rotations about primary axes. (I think.) $\endgroup$
    – 2'5 9'2
    Commented Nov 5, 2015 at 22:02
  • $\begingroup$ 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? $\endgroup$ Commented Nov 6, 2015 at 1:24
  • $\begingroup$ The space of possible rotations is a three-dimensional manifold. $\endgroup$
    – Brian Tung
    Commented Dec 11, 2023 at 7:41

3 Answers 3


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.

  • $\begingroup$ Do you mean that is order to rotate around some vector, preserving it while changing all other vectors, you need the 3rd parameter? $\endgroup$ Commented Nov 5, 2015 at 21:43
  • 1
    $\begingroup$ @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. $\endgroup$ Commented Nov 5, 2015 at 21:52
  • 3
    $\begingroup$ 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). $\endgroup$ Commented Nov 6, 2015 at 0:33
  • $\begingroup$ Possibly confusing typo? "acting one a single vector" $\to$ "acting on a single vector" $\endgroup$
    – Brian Tung
    Commented Dec 11, 2023 at 7:42

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.

  • $\begingroup$ This is not correct. If you are free to chose the axis, then you only need one rotation. If you are not free to choose the axes, then you need at most two rotations. Not three. You only need three if you care about "roll", and since a "vector" does not have any wings attached to it, the roll doesn't matter. $\endgroup$ Commented Feb 7 at 16:18
  • $\begingroup$ For example, a vector from the middle of the Earth to the North pole can be moved to any point on the Earth with only two rotations (latitude/longitude). $\endgroup$ Commented Feb 7 at 16:27

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.

  • $\begingroup$ "how many of freedom" -> "how many degrees of freedom" ? $\endgroup$ Commented Aug 1, 2023 at 17:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .