-
Notifications
You must be signed in to change notification settings - Fork 0
/
main_position.cpp
59 lines (44 loc) · 1.96 KB
/
main_position.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Standartbibliotheken
#include <iostream>
#include <fstream>
// eigener Code
#include "Orbitpropagation/orbitpropagation.h" // für SGP4-Berechnungen
#include "calendar/GregorianCalendar.h" // Calendar-Container
const GregorianCalendar START {2020, 5, 29, 14, 25, 0};
const GregorianCalendar ENDE {2020, 5, 29, 14, 32, 0};
// Schreibt ein ECICoordinate-Objekt in den Filestream
inline void writeECI(std::ofstream &writer, const ECICoordinate &eci, const GregorianCalendar &greg) noexcept // -> Wenn es einen Header gibt, gehört diese inline funktion genau da rein! MACHEN!
{
//writer << computeJDFromGregCal(greg) << "," << eci.x << "," << eci.y << "," << eci.z << '\n';
writer << eci.x/100 << "," << eci.y/100 << "," << eci.z/100 << '\n';
// KEIN FLUSHEN! Ist zu teuer! Nur am Ende einmal!
}
int main(void)
{
// Alle TLES aus Datei abfragen:
const std::map<int, Tle> _tles = readTlesFromFile("SONATE.txt");
const Tle sonate = _tles.at(44400); // quasi das einzige TLE abfragen
// SGP4 Propagator laden und SONATE Tle übergeben:
SGP4Propagator prop;
prop.setTle(sonate);
GregorianCalendar ctime {START}; // Zuweisung der Startzeit zum "Iterationsobjekt"
ECICoordinate pos {0, 0, 0}; // Position
ECICoordinate vel {0, 0, 0}; // Geschwindigkeit
// CSV Datei vorbereiten:
std::ofstream myfile;
myfile.open("Ausgabe31.txt");
uint64_t counter {0}; // zählt Datensätze
while ((ctime <= ENDE))
{
prop.calculatePositionAndVelocity((computeJDFromGregCal(ctime) - Calendar::computeJD(sonate.getYear(), sonate.getDayFraction())) * 86400, pos, vel);
myfile.precision(15);
writeECI(myfile, pos, ctime);
ctime += 30; // Inkrementiert Pos um 30 Sekunden (Operator Overloading!)
counter++; // Counter inkrementieren (Datzsätze)
}
std::cout << "Datensätze: " << counter << '\n';
// Am Ende einmal flushen:
myfile << std::flush;
// Fertig
myfile.close();
}