using System;
public static void Main()
{
Pos_t sat_pos( double deltan,double sqrtA, double M0,double e,double omega,double OMEGA,double deltaomega,double Cuc,double Crc, double Cic, double Cus,double Crs,double Cis,double i0,double IDOT,double delta_t, double deltat, double X_R,double Y_R, double Z_R,)
{
double n0 = sqrt(GM) / pow(sqrtA, 3);
double n = n0 + deltan;
double M = M0 + n * tk;
double E = M, E0;
do
{
E0 = E;
E = M + e * sin(E);
} while (fabs(E - E0) > 1.0e-5);
double cosf = (cos(E) - e) / (1 - e * cos(E));
double sinf = sqrt(1 - pow(e, 2)) * sin(E) / (1 - e * cos(E));
double fk = atan2(sinf, cosf);
double u = fk + omega;
double r = A*(1-e*cos(E));
double Epsilon_u = Cuc * cos(2 * u) + Cus * sin(2 * u);
double Epsilon_r = Crc * cos(2 * u) + Crs * sin(2 * u);
double Epsilon_i = Cic * cos(2 * u) + Cis * sin(2 * u);
double uk = u + Epsilon_u;
double rk = pow(sqrtA, 2) * (1 - e * cos(E)) + Epsilon_r;
double ik = i0 + Epsilon_i + IDOT * tk;
double xk = rk * cos(uk);
double yk = rk * sin(uk);
double L = OMEGA + (deltaomega - Earth_e) * tk - Earth_e * TOE;
double X = xk * cos(L) - yk * cos(ik) * sin(L);
double Y = xk * sin(L) + yk * cos(ik) * cos(L);
double Z = yk * sin(ik);
pos_t.X = cos(Earth_e * delta_t) * X + sin(Earth_e * delta_t) * Y;
pos_t.Y = -sin(Earth_e * delta_t) * X + cos(Earth_e * delta_t) * Y;
pos_t.Z = Z;
}
}