I have the following problem:

There is a sphere (Earth) and a cone (the FOV of a satellite orbiting Earth). So the tip of the cone is at the satellite's center orbiting Earth, and the wide part of the cone is intersecting with Earth's surface. The center axis of the cone is always pointing towards Earth's center, so the intersection between the cone and the sphere is a circle on the sphere's surface.

So far so good.

Now, what I am looking for is a way to calculate a condition which defines which points on the sphere's surface are inside this intersecting circle.

I.e. a closed condition which allows me to define if a point on Earth's surface is inside the FOV of the satellite.

The "circle of intersection" can easily be defined by it's center and it's radius. But I am struggeling with the next step to formulate a condition out of this for points on the sphere's surface that are inside this contured fraction of the sphere. So I am dreaming of the possibility to say: "for this cone and this sphere, all points on the sphere's surface with coordinates (which kind of coordinates ever) that are within the range a to b... are visible."

I hope it's at least a bit clear what I am looking for :)

I would highly appreciate any input and ideas on this.

Thanks and Cheers, af_ab

  • $\begingroup$ What you are looking at is called a spherical cap. To specify the conditions for all points that belong to this cap, you need the equation of the sphere and the equation of the plane that cuts this cap. All points will be on the same side of that plane and belong to the sphere. $\endgroup$
    – Vasili
    Mar 1, 2022 at 14:26
  • $\begingroup$ See I. Ruff, "The intersection of a cone and a sphere", J. Appl. Met. 10 (1971) pp 607-609 jstor.org/stable/26175337 $\endgroup$ Apr 1, 2022 at 13:27

1 Answer 1


Define Cartesian coordinates for points on the Earth surface via $$ \left(\begin{array}{c} e_x\\ e_y\\ e_z \end{array} \right) = R\left(\begin{array}{c} \sin\lambda \cos\phi\\ \cos\lambda \cos\phi\\ \sin\phi \end{array} \right) $$ for longitudes $\lambda$, latitudes $\phi$ and Earth radius $R$. [Things become massively more complicated if one uses elliptical coordinates like the WGS84.] Let the satellite be at position $$ \left(\begin{array}{c} s_x\\ s_y\\ s_z\\ \end{array} \right) = s\left(\begin{array}{c} \sin\lambda_s \cos\phi_s\\ \cos\lambda _s\cos\phi_s\\ \sin\phi_s \end{array} \right),\quad s> R $$ and have a FOV with cone half-angle $\alpha$.

A vector from the satelite to the point on Earth is $$ \left(\begin{array}{c} e_x-s_x\\ e_y-s_y\\ e_z-s_z\\ \end{array} \right). $$ A vector from the satelite to the Earth center is $$ \left(\begin{array}{c} -s_x\\ -s_y\\ -s_z\\ \end{array} \right). $$ The criterion is simply that the angle between these two vectors (call it $\beta$) is less than the cone half-angle, $\beta\le \alpha$. Take the dot product to specify $\beta$: $$ s_x(s_x-e_x) +s_y(s_y-e_y) +s_z(s_z-e_z) = s\sqrt{(e_x-s_x)^2+(e_y-s_y)^2+(e_z-s_z)^2}\cos\beta ; $$ $$ s^2 -s_xe_x -s_ye_y -s_ze_z = s\sqrt{R^2+s^2-2(e_xs_x+e_ys_y+e_zs_z)}\cos\beta . $$ For any given position $\phi,\lambda$ one can compute and insert $$ s_xe_x +s_ye_y +s_ze_z =sR[\cos\phi\cos\phi_s\cos(\lambda-\lambda_s)+\sin\phi\sin\phi_s] , $$ calculate $\beta$ and check whether it is smaller than $\alpha$.

[Warning: this simple method also yields the surface points on the opposite, hidden parts of the Earth which are also inside the cone. These must be eliminated by a criterion like that the dot product of the vectors $(e_x,e_y,e_z)$ and $(e_x-s_x,e_y-s_y,e_z-s_z)$ is negative.]


You must log in to answer this question.

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