When given arbitrary point on a unit sphere $a = (\theta, \phi)$ and an arbitrary axis $\vec{A}=(\Theta, \Phi)$, can we have an algebraic expression for $a_1=(\theta_1, \phi_1)$ which is a rotation of $a$ around $\vec{A}$ to the angle $\beta$?

Points and axes are not on the coordinate planes, values are not trivial: $\theta \neq 0$, $\phi \neq 0$, $\Theta \neq 0$, $\Phi \neq 0$, $\beta \neq 0$.

Can this be done without transformation through Cartesian? Otherwise the analytic form becomes too complicated. If there is a particular case for $\Phi \rightarrow 0$ ($\sin{\Phi} \approx \Phi$, but not for the other values) it is also fine.


  • $\begingroup$ I find the exponential notation (ie in terms of the Lie group elements for the system in question) to be the most enlightening. $\endgroup$ – R. Rankin Dec 10 '18 at 4:28

I think what you might be looking for is Rodrigues' Rotation Formula. Using spherical coordinates:

Your arbitrary point on the unit sphere is: $$ \mathbf{a} = (\sin\theta\cos\phi, \sin\theta\sin\phi, \cos\theta) $$

Your arbitrary axis is represented by the unit vector: $$ \hat{\mathbf{k}} = (\sin\Theta\cos\Phi, \sin\Theta\sin\Phi, \cos\Theta) $$

Then the result of rotating $\mathbf{a}$ around $\hat{\mathbf{k}}$ by the angle $\beta$, using the right-hand-rule, is given by

$$ \mathbf{b} = \cos\beta\,\mathbf{a} + \sin\beta\,(\hat{\mathbf{k}} \times \mathbf{a}) + (\hat{\mathbf{k}}\cdot\mathbf{a})(1-\cos\beta)\,\hat{\mathbf{k}} $$

Of course, now $\mathbf{b}$'s Cartesian coordinates need to be converted to spherical: $$ \tan\phi' = \frac{b_y}{b_x} \qquad\mbox{and}\qquad \tan\theta' = \frac{\sqrt{b_x^2 + b_y^2}}{b_z} $$ so that $$ \mathbf{b} = (\sin\theta'\cos\phi', \sin\theta'\sin\phi', \cos\theta') $$

The same article on Rodrigues' Formula also discusses a matrix representation of the rotation operation in question.

| cite | improve this answer | |
  • $\begingroup$ Thanks a lot, exactly what I needed. The matrix representation is much cleaner, IMO. $\endgroup$ – Anonymous Mar 11 '18 at 3:48

Rotations in spherical coordinates are affine transformations so there isn't a matrix to represent this on the standard basis $(\theta,\phi)$, you'll need to introduce another coefficient here: $(\theta,\phi,1)$, the rotation matrix in the $\theta$ direction is then, for example, rotating by $\alpha$ is;
$R(\alpha) = \left( \begin{array}{ccc} 1 & 0 & \alpha \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right) $

| cite | improve this answer | |
  • 2
    $\begingroup$ Ok, thanks, and what about the axis of rotation? shoudn't it go somehow into the matrix terms? $\endgroup$ – Andrew Nov 13 '14 at 11:55

In this post I explain how to deal when the rotation axis is one of the Cartesian axes.

For an abritrary rotation axis $\vec{A}=(\Theta,\Phi)$, using the same notations, the formula is $$ (\theta', \phi') = (Q^{-1} \circ R_{\vec{A}}(\beta) \circ Q)(\theta,\phi) $$ where the rotation operator $R_{\vec{A}}(\beta)$ is $$ R_{\vec{A}}(\beta) = R_z(\Phi)R_y(\Theta)R_z(\beta){R_y(\Theta)}^\dagger{R_z(\Phi)}^\dagger $$ ("${}^\dagger$" is the notation for the conjugate transpose).

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.