# A Real-Time On-Orbit Signal Tracking Algorithm for GNSS Surface Observations
## 3 Method, Part 1: Specular Reflection Point Calculation  
The surface specular point for GNSS-R measurements from the ocean and low-lying land surfaces can be generally described as the point of specular reflection on the Earth surface between the transmitter and receiver. Additional information on GNSS-R specular point solvers can be found in [22; 24; 25]. All coordinates were in the WGS84 Earth center Earth fixed (ECEF) ellipsoid reference frame. Within this derivation, the surface point can be estimated using the following assumptions:  
1. The total path between the transmitter, surface specular point and the receiver will be the minimum of all possible paths across the Earth's surface. 2. The specular point must lie on the surface of the Earth. For reflections from the ocean the specular reflection point will lie close to the WGS84 ellipsoid. For reflections over land, local land height variations should be added to the local reference ellipsoid. Figure 1: Generic Global Navigation Satellite Systems (GNSS) reflection geometry, with path segments labeled. The specular reflection will satisfy Snell's Law, where the angle between the incoming wave and reflected waves with respect to the local surface ellipsoid normal are equal. 4. For a real-time application, the specular reflection points need to be calculated slightly early and propagated forward, so that the open loop tracker predictions are available in real-time to the instrument observation processing hardware. Errors due to propagation inaccuracies are described in detail in [22]. Initially we represent the reflected signal path as a function of the transmitter, receiver and specular point locations. Refer to Figure 1 for illustration of signal paths. In the notation that follows, over-bar arrows indicate vectors, vertical lines indicate a magnitude operation. \[P_{T252R}=P_{T2S}+P_{S2R}=\left|(\vec{T}-\vec{S})\right|+\left|(\vec{R}-\vec{ S})\right| \tag{1}\]  
where,  
\(\vec{T}=\) the ECEF vector to the GNSS transmitter. \(\vec{S}=\) the ECEF vector to the estimate of the specular point. \(\vec{R}=\) the ECEF vector to the GNSS-R receiver. \(P_{T2S}=\) the path magnitude from the GNSS transmitter to the specular point. \(P_{S2R}=\) the path magnitude from the specular point to the GNSS-R receiver. \(P_{T2S2R}=\) the total reflection path magnitude. Using basic three  
where \(K\) is a linear scale factor which can be used to optimize the speed of convergence, \(\vec{S}_{i+1}\) and \(\vec{S}_{i}\) are the updated and previous estimates of the specular point, respectively. How \(K\) is determined is discussed in more detail in Section 6.2. An additional requirement on the specular point solution is that \(\vec{S}_{i}\) must be constrained to the Earths surface. The estimated radius of the Earth surface can be calculated on the WGS84 ellipsoid plus a height correction above the reference ellipsoid, such that (from [26]). \[r_{i}=a_{WGS84}\sqrt{\frac{1-e_{WGS84}^{2}}{1-(e_{WGS84}^{2}+cos(\lambda))}}+h. \tag{8}\]  
where,  
\(\lambda=\) the current estimate of the specular point latitude. This can be calculated directly from the \(Z\) component of the current specular point estimate, calculated as \(\lambda=sin(\frac{\vec{S}_{s}}{|S|})\)  
\(a_{WGS84}=\) the WGS84 ellipsoid semi-major axis, 6,378,137 m.  
\(e_{WGS84}=\) the WGS84 ellipsoid eccentricity, 0.08181919084262. \(h=\) the height correction above the the WGS84 ellipsoid due to land surface topography (or ocean height variations). The new estimate of the specular point, \(\vec{S}_{i+1}\), is then corrected by scaling it by the estimated Earth radius, giving us the new corrected estimate of the specular point for the next iteration of the specular point solver,  
\[\vec{S}_{i}=r_{i}\frac{\vec{S}_{i+1}}{\left|\vec{S}_{i+1}\right|}. \tag{9}\]  
This corrected specular point estimate is then used as the input into the subsequent iteration of the solver.