Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include<cstdlib>
  4. #include<string>
  5. #include <sstream>
  6. #include <cmath>
  7. #include<math.h>
  8. #include <conio.h>
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13.     string pole;
  14.     double godz;
  15.     double a0; //[sek]
  16.     double a1;//[sek/sek]
  17.     double a2; //[sek/sek^2]
  18.     double IODE;//Nr danych
  19.     double Crs;//[m]
  20.     double deltan;//[rad/sek]
  21.     double M0;//[rad]
  22.     double Cuc;//[rad]
  23.     double e;//ekscentrycznosc
  24.     double Cus;
  25.     double A1_2;
  26.     double toe;//[sek] w czasie GPS
  27.     double Cic;//[rad]
  28.     double Domega0;//[rad]
  29.     double Cis;//[rad]
  30.     double i0;//[rad]
  31.     double Crc;//[m]
  32.     double omega;//[rad]
  33.     double Domegadot;//[rad/sek]
  34.     double Idot;//[rad/sek]
  35.     double Kodl2;
  36.     double tygGPS;//[mod 1024]
  37.     double flagal2;//(P)
  38.  
  39.  
  40.     double omegae=7.2921151467E-05;//STA£E PODANE NA 8 STRONIE!!!
  41.     double GM=3.986005E+14;//STA£E PODANE NA 8 STRONIE!!!
  42.    fstream plik;
  43.  
  44.    plik.open("mojasatelitka.txt",ios::in);
  45.  
  46.    if(plik.good()==false) cout<<"Nie mozna otworzyc pliku!";
  47.  
  48.    string tablica[32];
  49.  
  50.    int i=0;
  51.  
  52.    while (getline(plik, pole,' '))
  53.  {
  54.      tablica[i]=pole;
  55.      i++;
  56.  }
  57.    for (int j=0;j<32;j++)
  58.  {
  59.  
  60.     cout << j <<": "<< tablica[j]<<endl;
  61.  
  62.  }
  63.  
  64.    for (int j=0;j<32;j++)
  65.  {
  66.     istringstream os(tablica[j]);
  67.  
  68.     switch(j)
  69.   {
  70.    case 0:
  71.     os >> godz;
  72.     break;
  73.    case 1:
  74.     os >> a0;
  75.     break;
  76.     case 2:
  77.     os >> a1;
  78.     break;
  79.    case 3:
  80.     os >> a2;
  81.     break;
  82.     case 4:
  83.     os >> IODE;
  84.     break;
  85.    case 5:
  86.     os >> Crs;
  87.     break;
  88.     case 6:
  89.     os >> deltan;
  90.     break;
  91.    case 7:
  92.     os >> M0;
  93.     break;
  94.     case 8:
  95.     os >> Cuc;
  96.     break;
  97.    case 9:
  98.     os >> e;
  99.     break;
  100.     case 10:
  101.     os >> Cus;
  102.     break;
  103.    case 11:
  104.     os >> A1_2;
  105.     break;
  106.     case 12:
  107.     os >> toe;
  108.     break;
  109.    case 13:
  110.     os >> Cic;
  111.     break;
  112.     case 14:
  113.     os >> Domega0;
  114.     break;
  115.    case 15:
  116.     os >> Cis;
  117.     break;
  118.     case 16:
  119.     os >> i0;
  120.     break;
  121.    case 17:
  122.     os >> Crc;
  123.     break;
  124.     case 18:
  125.     os >> omega;
  126.     break;
  127.    case 19:
  128.     os >> Domegadot;
  129.     break;
  130.     case 20:
  131.     os >> Idot;
  132.     break;
  133.    case 21:
  134.     os >> Kodl2;
  135.     break;
  136.     case 22:
  137.     os >> tygGPS;
  138.     break;
  139.    case 23:
  140.     os >> flagal2;
  141.     break;
  142.   }
  143.  
  144.  }
  145.  
  146.    //WYZNACZANIE POZYCJI SATELITY
  147.  
  148.    double deltatsv; // przy liczeniu poprawki zegara
  149.    double tsv;//przy liczeniu czasu pozycji SV
  150.    double t; //czas pozycji SV
  151.    double toc;//czas naglowka efemerydy
  152.    double tk;//czas od epoki referencyjnej
  153.    tsv=518400+11*60*60;
  154.    toc=518400+10*60*60;
  155.    deltatsv=a0+a1*(tsv-toc)+a2*(tsv-toc)*(tsv-toc);
  156.    t=tsv-deltatsv;
  157.    tk=t-toe;
  158.  
  159.  
  160.    //WZORY WYZNACZANIA POZYCJI SATELITY
  161.  
  162.    double A=A1_2*A1_2;
  163.    double n0=sqrt(GM/(A*A*A));
  164.    double n=n0+deltan;//ruch sredni
  165.    double Mk=M0+n*tk;
  166.  
  167.  
  168.    //ITERUJEMY ze strony 14. Równanie Keplera wyznaczajace anomalie mimosrodowa!
  169.  
  170.    double E=Mk;
  171.  
  172.    double Ek[5];//tablica // np.cout<<Ek[4]
  173.  
  174.     for (int k=0;k<=4;k++)
  175.  
  176.   {
  177.     E=Mk+M_E*sin(E);
  178.     Ek[k]=E;//tworze tablice
  179.  
  180.     cout<<k<< " Iteracja "<<E<<endl;
  181.  
  182.   }
  183.   //WYZNACZENIE ANOMALII PRAWDZIWEJ STRONA 17
  184.    double cosvk=(cos(E)-e)/(1-e*cos(E));
  185.  
  186.   //OSTATNIA STRONA OBLICZENIA (19 STRONA)
  187.  
  188.    double vk=acos((cos(E)-e)/(1-e*cos(E)));
  189.    double Fk=vk+omega;
  190.  
  191.    double duk=Cuc*cos(2*Fk)+Cus*sin(2*Fk);
  192.    double drk=Crc*cos(2*Fk)+Crs*sin(2*Fk);
  193.    double dik=Cic*cos(2*Fk)+Cis*sin(2*Fk);
  194.  
  195.  
  196.     cout<<vk<<endl;
  197.     cout << toe << endl;
  198.     return 0;
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement