Right now I'm using MATLAB and can easily get the ECEF coordinates of the satellite and the point on the Earth. Since ECEF is cartesian, why can't I just rearrange:

$$ r_{es}\cdot r_{ps} = \|r_{es}\| \|r_{ps}\| \cos(\phi) $$ to get: $$ \phi = \arccos\left(\frac{r_{es} \cdot r_{ps}}{\|r_{es}\|\|r_{ps}\|}\right) $$ and then just say when phi is less than the cone half-angle of the sensor on the satellite, the point is in view? When I tested this method, I found that depending on the latitude of the point (with circular satellite orbit at altitude = 1000, cone half-angle = 60), phi is between 38 and 45 as a maximum when the point is first seen at the edge of the cone.

To account for this method not accounting for the Earth's obstructing vision of the point, I also incorporate the same method to get the elevation angle from the point to the satellite, where

$$ el = 180^{\circ}-\omega = \arccos\left(\frac{r_{ep} \cdot r_{ps}}{\|r_{ep}\| \|r_{ps}\|}\right) $$ and in the code I implement it by

if phi < 60 && el < 90
    vision = True

However, with some testing, I need to set el < 95-105 (depending on the lat of the point) to get accurate results (verified with STK).

It makes so much sense to me that this method with the dot product angles should work in the way I explained, but I have no idea why it doesn't work out that way.

Vector reference

  • 1
    $\begingroup$ the earth is not a perfect sphere. Apart from being a pear-shaped and oblate, it has valleys and mountains? $\endgroup$
    – user20636
    Commented Aug 4, 2020 at 16:37
  • $\begingroup$ I realize in my diagram it is a sphere (mainly bc I used Paint to make this). My model uses oblate Earth, but does not take into account mountains or valleys, neither does my check scenario with STK, which is also oblate Earth $\endgroup$
    – Nick Brown
    Commented Aug 4, 2020 at 19:32

1 Answer 1


You actually can do this as long as you properly set the Earth-centered angle to prevent satellites from 'seeing' the point through the Earth. My errors in accuracy came from not setting the orbit exactly as STK set it. This is a valid method to use that also has fast run time.

  • 2
    $\begingroup$ To make it even faster, compare the argument of the arccos in the original post to the cosine of the half-cone angle. This eliminates an expensive inverse trig call, which adds up if you're doing it alot. $\endgroup$ Commented Aug 11, 2020 at 21:12

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.