# Extended Geometry and Probability Model for GNSS+ Constellation Performance Evaluation
## 2 Methods
### HEO and QZO Satellite Observing Probability  
As mentioned above, LEO, MEO, GEO, and IGSO satellites are all in approximately circle orbits with small eccentricity, and the magnitude of satellites' position vector and flight velocity vector are almost constant, which is the prerequisites for the earlier GAPM [15,16]. However, some special kinds of orbits have larger eccentricity, such as the QZO satellites of the Quasi-Zenith Satellite System (QZSS) [29]. The eccentricity of QZO satellites of about 0.075 is much larger than that of GPS satellites, which is normally less than 0.01. To investigate the performance of satellite orbits with large eccentricity, the traditional GAPM mentioned above should be generalized. For this purpose, the key issue is to calculate their space coordinates and corresponding velocity in the ECEF system. Therefore, some points need to be considered: (1) the magnitude of satellite position vector will change all the time; (2) the time that satellite fly from one point to another adjacent point is different because the satellite velocity and the magnitude of position vector are changing all the time; (3) the magnitude of satellite velocity in the ECEF system is changing also. For point (1), the magnitude of satellite position vector \(R\) can be calculated by the following equation [19]:  
\[R=\frac{a\left(1-e^{2}\right)}{1+e\cos f}, \tag{10}\]  
where \(e\) is the orbit eccentricity; \(a\) is semi-major axis. From Equation (10), we know that the \(R\) is the function of the true anomaly \(f\). For point (2), according to [PERSON]'s second law, the radius vector sweeps over equal areas in equal time intervals [19], i.e., the area rate \(\dot{\mathrm{A}}\), is a constant:  
\[\dot{\mathrm{A}}=\frac{\sqrt{aGM(1-e^{2})}}{2}. \tag{11}\]  
Therefore, the elapsed time for the satellite from one point to adjacent point can be calculated by the equation, \(\mathrm{A}/\dot{\mathrm{A}}\), where \(\mathrm{A}\) is the area that radius vector swept during the period. If the true anomaly changes by a very small amount and the area that the radius swept could be regarded as a circular sector, then the area of this tiny circular sector, \(dA\), can be calculated by the following equation:  
\[dA=\frac{1}{2}R^{2}df=\frac{1}{2}\Bigg{(}\frac{a\left(1-e^{2}\right)}{1+e \cos f}\Bigg{)}^{2}df, \tag{12}\]  
where \(df\) is the tiny change of true anomaly. The whole area could then be derived by the area integral within the interval \([f,f+0.25^{\circ}]\):  
\[A=\frac{1}{2}\int_{f}^{f+0.25^{\circ}}\Bigg{(}\frac{a\left(1-e^{2}\right)}{1+ e\cos f}\Bigg{)}^{2}df. \tag{13}\]  
However, the analytical expression of this integration is quite complex, and the result of numerical integration can be used. The interval \([f,f+0.25^{\circ}]\) is divided into 10,000 pieces, and the above equation can be reformulated as:  
Figure 1: Distribution of observing probability for three third-generation BeiDou navigation satellite system (BDS-3) inclined geosynchronous orbit (IGSO) satellites. \[A\approx\frac{1}{2}\sum_{i=1}^{10000}\left(\frac{a\big{(}1-e^{2}\big{)}}{1+e\cos(f +0.000025i)}\right)^{2}(0.000025i). \tag{14}\]  
Thus, the elapsed time, \(\Delta t\), can be written as:  
\[\Delta t\approx\frac{\mathrm{A}}{\dot{\mathrm{A}}}. \tag{15}\]  
When \(\Delta t\) is determined, satellite velocity in the ECEF system could be derived. Satellite coordinates in the orbital plane coordinate system can be written as:  
\[\left\{ \begin{array}{l}\eta_{f}=R\cos f\\ \xi_{f}=R\sin f\end{array} \right.,f=0,0.25,\ldots,360,\ldots, \tag{16}\]  
where \(\eta\) is the axis points to the ascending node and \(\xi\) is the axis points to the direction on the argument of the latitude of \(90^{\circ}\). Satellite coordinates can be transformed from the orbital plane coordinate system into the ECEF system:  
\[\left\{ \begin{array}{l}X_{i}\\ Y_{i}\\ Z_{i}\end{array} \right\}=R_{3}(-\Omega_{i})R_{1}(-i_{orb})\left( \begin{array}[] {l}\eta_{i}\\ \xi_{i}\\ 0\end{array}