Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include<cstdlib>
- #include<string>
- #include <sstream>
- #include <cmath>
- #include<math.h>
- #include <conio.h>
- using namespace std;
- int main()
- {
- string pole;
- double godz;
- double a0; //[sek]
- double a1;//[sek/sek]
- double a2; //[sek/sek^2]
- double IODE;//Nr danych
- double Crs;//[m]
- double deltan;//[rad/sek]
- double M0;//[rad]
- double Cuc;//[rad]
- double e;//ekscentrycznosc
- double Cus;
- double A1_2;
- double toe;//[sek] w czasie GPS
- double Cic;//[rad]
- double Domega0;//[rad]
- double Cis;//[rad]
- double i0;//[rad]
- double Crc;//[m]
- double omega;//[rad]
- double Domegadot;//[rad/sek]
- double Idot;//[rad/sek]
- double Kodl2;
- double tygGPS;//[mod 1024]
- double flagal2;//(P)
- double omegae=7.2921151467E-05;//STA£E PODANE NA 8 STRONIE!!!
- double GM=3.986005E+14;//STA£E PODANE NA 8 STRONIE!!!
- fstream plik;
- plik.open("mojasatelitka.txt",ios::in);
- if(plik.good()==false) cout<<"Nie mozna otworzyc pliku!";
- string tablica[32];
- int i=0;
- while (getline(plik, pole,' '))
- {
- tablica[i]=pole;
- i++;
- }
- for (int j=0;j<32;j++)
- {
- cout << j <<": "<< tablica[j]<<endl;
- }
- for (int j=0;j<32;j++)
- {
- istringstream os(tablica[j]);
- switch(j)
- {
- case 0:
- os >> godz;
- break;
- case 1:
- os >> a0;
- break;
- case 2:
- os >> a1;
- break;
- case 3:
- os >> a2;
- break;
- case 4:
- os >> IODE;
- break;
- case 5:
- os >> Crs;
- break;
- case 6:
- os >> deltan;
- break;
- case 7:
- os >> M0;
- break;
- case 8:
- os >> Cuc;
- break;
- case 9:
- os >> e;
- break;
- case 10:
- os >> Cus;
- break;
- case 11:
- os >> A1_2;
- break;
- case 12:
- os >> toe;
- break;
- case 13:
- os >> Cic;
- break;
- case 14:
- os >> Domega0;
- break;
- case 15:
- os >> Cis;
- break;
- case 16:
- os >> i0;
- break;
- case 17:
- os >> Crc;
- break;
- case 18:
- os >> omega;
- break;
- case 19:
- os >> Domegadot;
- break;
- case 20:
- os >> Idot;
- break;
- case 21:
- os >> Kodl2;
- break;
- case 22:
- os >> tygGPS;
- break;
- case 23:
- os >> flagal2;
- break;
- }
- }
- //WYZNACZANIE POZYCJI SATELITY
- double deltatsv; // przy liczeniu poprawki zegara
- double tsv;//przy liczeniu czasu pozycji SV
- double t; //czas pozycji SV
- double toc;//czas naglowka efemerydy
- double tk;//czas od epoki referencyjnej
- tsv=518400+11*60*60;
- toc=518400+10*60*60;
- deltatsv=a0+a1*(tsv-toc)+a2*(tsv-toc)*(tsv-toc);
- t=tsv-deltatsv;
- tk=t-toe;
- //WZORY WYZNACZANIA POZYCJI SATELITY
- double A=A1_2*A1_2;
- double n0=sqrt(GM/(A*A*A));
- double n=n0+deltan;//ruch sredni
- double Mk=M0+n*tk;
- //ITERUJEMY ze strony 14. Równanie Keplera wyznaczajace anomalie mimosrodowa!
- double E=Mk;
- double Ek[5];//tablica // np.cout<<Ek[4]
- for (int k=0;k<=4;k++)
- {
- E=Mk+M_E*sin(E);
- Ek[k]=E;//tworze tablice
- cout<<k<< " Iteracja "<<E<<endl;
- }
- //WYZNACZENIE ANOMALII PRAWDZIWEJ STRONA 17
- double cosvk=(cos(E)-e)/(1-e*cos(E));
- //OSTATNIA STRONA OBLICZENIA (19 STRONA)
- double vk=acos((cos(E)-e)/(1-e*cos(E)));
- double Fk=vk+omega;
- double duk=Cuc*cos(2*Fk)+Cus*sin(2*Fk);
- double drk=Crc*cos(2*Fk)+Crs*sin(2*Fk);
- double dik=Cic*cos(2*Fk)+Cis*sin(2*Fk);
- cout<<vk<<endl;
- cout << toe << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement