# Finding rotated function on a sphere in Mathematica

I'm trying to rotate a scalar valued function $$f(\theta,\phi)$$ on a sphere. Following this post, I get $$\begin{pmatrix} f'(\theta',\phi')\sin\theta'\cos\phi'\\ f'(\theta',\phi')\sin\theta'\sin\phi'\\ f'(\theta',\phi')\cos\theta' \end{pmatrix} =R.\begin{pmatrix} f(\theta,\phi)\sin\theta\cos\phi\\ f(\theta,\phi)\sin\theta\sin\phi\\ f(\theta,\phi)\cos\theta \end{pmatrix}$$

where $$R$$ is the rotation matrix. Is there a way to solve for $$f'(\theta',\phi')$$ using Mathematica? I tried using Solve but it returned the error "This system cannot be solved with the methods available to Solve". Any help would be appreciated. TIA!

• fp[θ_, φ_] := f @@ Rest[ToSphericalCoordinates[R . FromSphericalCoordinates[{1, θ, φ}]]] could work if I understand your question correctly. Oct 15, 2021 at 15:35
• @Roman Hm, for some reason, this is giving me zero everywhere. I tried f[theta_, phi_]:=Exp[-theta^2]Cos[phi] and R={{0, 0, 1}, {0, 1, 0}, {-1, 0, 0}}. Oct 15, 2021 at 17:48

## 1 Answer

Let f be your function that you wish to rotate

 f[θ_,ϕ_]:=4/5+2Cos[θ]Cos[ϕ]


The rotations are best parametrized by the Euler angles

EulerRotSpherical[{θ_,ϕ_},{α_,β_,γ_}]:=Module[{},
{ArcCos[Cos[θ]Cos[β]+Sin[θ]Sin[β]Cos[ϕ-α]],
ArcTan[Cos[ϕ-α]Cos[β]-Cot[θ]Sin[β],Sin[ϕ-α]]-γ}
]

InverseEulerRotSpherical[{θ_,ϕ_},{α_,β_,γ_}]:=Module[{},
{ArcCos[Cos[θ]Cos[β]-Sin[θ]Sin[β]Cos[ϕ+γ]],
ArcTan[(Cos[ϕ+γ]Cos[β]+Cot[θ]Sin[β]),Sin[ϕ+γ]]+α}
]


Now we manipulate the plot

Manipulate[
SphericalPlot3D[f@@InverseEulerRotSpherical[{θ,ϕ},{α,β,γ}],
{θ,0,Pi},{ϕ,0,2Pi},
PlotRange->{{-3,3},{-3,3},{-3,3}},
Mesh->None,
PerformanceGoal->"Quality"],
{α,0,2π},{β,0,π},{γ,0,2π}]


Corresponding rotation formulas can be found in p. 23 (Eqs. 2, 3) of Varshalovich Quantum Theory of Angular Momentum (World Scientific Pub. 1988). The book is in free access from the publisher. For convenience I retype the formulas here:

Direct transform:

$$\cos\theta'=\sin(\beta) \sin(\theta) \cos(\phi -\alpha)+\cos(\beta) \cos(\theta),\\ \cot(\phi'+\alpha)=\frac{\cos(\beta ) \cos(\phi -\alpha)-\sin(\beta) \cot(\theta)}{\sin(\phi -\alpha)}.$$

Inverse transform: $$\cos\theta=\cos(\beta) \cos(\theta')-\sin(\beta) \sin(\theta' ) \cos(\gamma +\phi'),\\ \cot(\phi-\alpha)=\frac{\cos(\beta ) \cos(\gamma +\phi' )+\sin(\beta) \cot(\theta')}{\sin(\gamma +\phi')}.$$ In these equations

• $$0\le\theta<\pi,0\le\phi<2\pi$$ are the initial spherical coordinates (angles),
• $$0\le\theta'<\pi,0\le\phi'<2\pi$$ are the transformed (rotated) angles,
• $$0\le\alpha<2\pi, 0\le\beta<\pi, 0\le\gamma<2\pi$$ are the Euler angles ($$z$$-$$y$$-$$z$$).

Finally, in the case when a rotation matrix is given instead of the Euler angles, they can be found using the EulerAnglescommand.

• @123infinity does my post answer your question? Oct 18, 2021 at 9:22
• Thank you for the detailed answer. But this doesn't give me f', does it? I was hoping to get f'(theta',phi') and substitute the values of theta' and phi' to find the rotated function. Oct 18, 2021 at 13:56
• @123infinity $f'(\theta',\phi')=f(\theta,\phi)=f(\theta(\theta',\phi'), \phi(\theta',\phi'))$, as exactly written in my post. Oct 18, 2021 at 18:40
• Okay,that makes sense. Thanks! Oct 19, 2021 at 14:04