I am trying to calculate the solid angle subtended by arbitrary-shaped loops on a sphere's surface.

First, I parametrize circular loops by:

$$\theta(t,k_{x0},r) = k_{x_0} + r \cos(t);$$ $$\phi(t,k_{y0},r) = k_{y_0} + r \sin(t);$$

where $0\leq t\leq2\pi$, and $k_{x_0}$, $k_{y_0}$ define the loop's center. So, we can say that this step draws out a circular loop on the $\theta/\phi$ plane.

Then I project these onto the sphere's surface using spherical coordinates, as follows:

$$x(\theta,\phi)=r \cos{\theta}\sin{\phi}, y(\theta,\phi)=r \sin{\theta}\sin{\phi}, z(\theta,\phi)=r \cos{\phi}$$

How do I go about calculating the surface area within these $(x,y,z)$ loops on the surface? This will allow me to calculate the solid angle I need.

The solid angle is given by: $$\Omega= \iint_S \frac{\hat{r}\cdot\hat{n}}{r^2} \, \mathrm{d}\Sigma = \iint_{\mathcal{R}}\sin \theta \, \mathrm{d} \theta \, \mathrm{d} \phi=\frac{\textrm{spherical surface area}}{r^2}$$

I tried using various types of RegionMeasures to calculate this area (such as defining the area within the loop on the sphere as a Region, and by varying the radius from 0 to r, calculating the length of each loop in between and summing it all up), but I feel like I am missing a simple answer to my problem. Maybe what I am missing is a way to somehow map my arbitrary loops into a appropriate integration bounds for $\Omega$, but I tried to avoid this by resorting to Mathematica.

So far, I found the following posts most useful:

Integrate to calculate enclosed area


Thanks in advance for your time!

Note: I am parametrizing these loops in a peculiar way because I am trying to investigate a physics problem where the functions $x(\theta,\phi),y(\theta,\phi),z(\theta,\phi)$ will be different, and make my loops twist and turn. The ultimate goal is to find the solid angle in these cases, but I wanted to start with the sphere.

Note: I posted a similar question before, but it was misinterpreted by answerers because I did a poor job phrasing it at first, and I am afraid that it lost attention and I still am clueless as to how to proceed (I did not want to delete it because others already put time into it).

  • 1
    $\begingroup$ One function, I don't know if you've seen it, that could perhaps compute the solid angle with your parametrization is Area together with spherical coordinates, which can be specified as the third argument. $\endgroup$
    – C. E.
    Feb 27, 2019 at 21:14
  • $\begingroup$ @C.E. thank you, I'll test that soon! I remember the page saying that the Area[] function has an argument for the metric. Just out of curiosity do you know whether the metric can be custom, i.e. for an arbitrary shape that is not a sphere? Regardless, if this is the solution, please consider posting it as an answer so that I can accept it as correct. $\endgroup$ Feb 27, 2019 at 22:10
  • $\begingroup$ @C.E., my attempt didn't work out because ultimately, my loop is controlled by one variable t (as it is a line integral). Area[] requires at least 2, and I thought about using Stokes' theorem to convert my loop integral into an area integral, but the way forward is not too clear. $\endgroup$ Feb 28, 2019 at 0:52
  • 1
    $\begingroup$ If I'm not mistaken, you could make use of the Dirac monopole vector potential,$$\vec{A} = \frac{1-\cos \theta}{r \sin \theta} \hat{\phi}.$$This potential has the property that $\vec{\nabla} \times \vec{A} = \hat{r}/r^2$, and so you could apply Stokes' theorem to turn the area integral for $\Omega$ into a path integral. $\endgroup$ Sep 9, 2020 at 19:32

1 Answer 1


Your integral is rather simple for your parametrization. Let us introduce some notations:

  • a - is the $\theta$-coordinate of the center; the integral does not depend on the $\phi$-coordinate of the center.
  • s in the angular radius of the circular loop.

If loop is on the flat surface you simply write

Integrate[r, {r, 0, s}, {t, 0, 2 π}]
(* π s^2 *)

Notice this integral is computed in a polar coordinate system, which is good for integrating over disks. Notice that the Jacobian $r$ needs to be introduced.

For the area of a circular loop on the unit sphere we need to add one more Jacobian $\sin\theta$ due to spherical integration.

Assuming[π > a > 0 && π/2 > s > 0, 
 Integrate[r Sin[a + r Cos[t]], {r, 0, s}, {t, 0, 2 π}]]

 (* 2 π s BesselJ[1, s] Sin[a] *)

We can also visualize the loops on the sphere.

θ=a+s Cos[t];
ϕ=b+s Sin[t];
g[1]=ParametricPlot3D[Table[{Sin[θ] Cos[ϕ],Sin[θ] Sin[ϕ],Cos[θ]},{s,0.1,0.5,0.1}],{t,0,2 π},PlotStyle->Red];
eqr=ParametricPlot3D[{ Cos[ϕ], Sin[ϕ],0},{ϕ,0,2 π},PlotStyle->Black];
mer[1]=ParametricPlot3D[{ Sin[θ] Cos[b],Sin[θ] Sin[b],Cos[θ]},{θ,0,2 π},PlotStyle->Directive[Black]];
ct[1]={Sin[a] Cos[b],Sin[a] Sin[b],Cos[a]};
ct[2]={Sin[a] Cos[b],Sin[a] Sin[b],Cos[a]};
g[2]=ParametricPlot3D[Table[{Sin[θ] Cos[ϕ],Sin[θ] Sin[ϕ],Cos[θ]},{s,0.1,0.5,0.1}],{t,0,2 π},PlotStyle->Blue];
mer[2]=ParametricPlot3D[{ Sin[θ] Cos[b],Sin[θ] Sin[b],Cos[θ]},{θ,0,2 π},PlotStyle->Black];

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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