Updated THDT constant. Calculate real tsince
parent
ba84b41b60
commit
ae8383d316
17
Julian.cpp
17
Julian.cpp
|
@ -212,7 +212,8 @@ time_t Julian::ToTime() const {
|
|||
* Greenwich Mean Sidereal Time
|
||||
*/
|
||||
double Julian::ToGMST() const {
|
||||
double value;
|
||||
|
||||
double theta;
|
||||
double tut1;
|
||||
|
||||
// tut1 = Julian centuries from 2000 Jan. 1 12h UT1 (since J2000 which is 2451545.0)
|
||||
|
@ -220,16 +221,18 @@ double Julian::ToGMST() const {
|
|||
tut1 = (date_ - 2451545.0) / 36525.0;
|
||||
|
||||
// Rotation angle in arcseconds
|
||||
value = 67310.54841 + (876600.0 * 3600.0 + 8640184.812866) * tut1 + 0.093104 * pow(tut1, 2.0) - 0.0000062 * pow(tut1, 3.0);
|
||||
theta = 67310.54841 + (876600.0 * 3600.0 + 8640184.812866) * tut1 + 0.093104 * pow(tut1, 2.0) - 0.0000062 * pow(tut1, 3.0);
|
||||
|
||||
// 360.0 / 86400.0 = 1.0 / 240.0
|
||||
value = fmod(Globals::Deg2Rad(value / 240.0), Globals::TWOPI());
|
||||
theta = fmod(Globals::Deg2Rad(theta / 240.0), Globals::TWOPI());
|
||||
|
||||
// check quadrants
|
||||
if (value < 0.0)
|
||||
value += Globals::TWOPI();
|
||||
/*
|
||||
* check quadrants
|
||||
*/
|
||||
if (theta < 0.0)
|
||||
theta += Globals::TWOPI();
|
||||
|
||||
return value;
|
||||
return theta;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
16
SGDP4.cpp
16
SGDP4.cpp
|
@ -247,10 +247,14 @@ void SGDP4::Initialize(const double& theta2, const double& betao2, const double&
|
|||
|
||||
void SGDP4::FindPosition(Eci& eci, double tsince) {
|
||||
|
||||
Julian tsince_epoch = Epoch();
|
||||
tsince_epoch.AddMin(tsince);
|
||||
double actual_tsince = tsince_epoch.SpanMin(Epoch());
|
||||
|
||||
if (i_use_deep_space_)
|
||||
FindPositionSDP4(eci, tsince);
|
||||
FindPositionSDP4(eci, actual_tsince);
|
||||
else
|
||||
FindPositionSGP4(eci, tsince);
|
||||
FindPositionSGP4(eci, actual_tsince);
|
||||
}
|
||||
|
||||
void SGDP4::FindPositionSDP4(Eci& eci, double tsince) {
|
||||
|
@ -622,7 +626,7 @@ void SGDP4::DeepSpaceInitialize(const double& eosq, const double& sinio, const d
|
|||
static const double ROOT44 = 7.3636953E-9;
|
||||
static const double ROOT52 = 1.1428639E-7;
|
||||
static const double ROOT54 = 2.1765803E-9;
|
||||
static const double THDT = 4.3752691E-3;
|
||||
static const double THDT = 4.37526908801129966e-3;
|
||||
|
||||
const double aqnv = 1.0 / RecoveredSemiMajorAxis();
|
||||
const double xpidot = omgdot + xnodot;
|
||||
|
@ -812,7 +816,7 @@ void SGDP4::DeepSpaceInitialize(const double& eosq, const double& sinio, const d
|
|||
d_fasx4_ = 2.8843198;
|
||||
d_fasx6_ = 0.37448087;
|
||||
|
||||
d_xlamo_ = fmod(MeanAnomoly() + AscendingNode() + ArgumentPerigee() - d_gsto_, Globals::TWOPI());
|
||||
d_xlamo_ = MeanAnomoly() + AscendingNode() + ArgumentPerigee() - d_gsto_;
|
||||
bfact = xmdot + xpidot - THDT;
|
||||
bfact += d_ssl_ + d_ssg_ + d_ssh_;
|
||||
|
||||
|
@ -909,7 +913,7 @@ void SGDP4::DeepSpaceInitialize(const double& eosq, const double& sinio, const d
|
|||
d_d5421_ = temp * f542 * g521;
|
||||
d_d5433_ = temp * f543 * g533;
|
||||
|
||||
d_xlamo_ = fmod(MeanAnomoly() + AscendingNode() + AscendingNode() - d_gsto_ - d_gsto_, Globals::TWOPI());
|
||||
d_xlamo_ = MeanAnomoly() + AscendingNode() + AscendingNode() - d_gsto_ - d_gsto_;
|
||||
bfact = xmdot + xnodot + xnodot - THDT - THDT;
|
||||
bfact = bfact + d_ssl_ + d_ssh_ + d_ssh_;
|
||||
}
|
||||
|
@ -1012,7 +1016,7 @@ void SGDP4::DeepSpacePeriodics(const double& t, double& em,
|
|||
const double sinis = sin(xinc);
|
||||
const double cosis = cos(xinc);
|
||||
|
||||
if (xinc >= 0.2) {
|
||||
if (Inclination() >= 0.2) {
|
||||
/*
|
||||
* apply periodics directly
|
||||
*/
|
||||
|
|
6
main.cpp
6
main.cpp
|
@ -144,7 +144,7 @@ void RunTle(Tle tle, double start, double end, double inc) {
|
|||
|
||||
void RunTest() {
|
||||
|
||||
#if 0
|
||||
//#if 0
|
||||
|
||||
/*
|
||||
# ------------------ Verification test cases ----------------------
|
||||
|
@ -177,7 +177,7 @@ void RunTest() {
|
|||
"1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985",
|
||||
"2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774"), 0.0, 2880.0, 120.0);
|
||||
|
||||
#endif
|
||||
//#endif
|
||||
/*
|
||||
# MOLNIYA 2-14 # 12h resonant ecc in 0.65 to 0.7 range
|
||||
1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813
|
||||
|
@ -187,7 +187,7 @@ void RunTest() {
|
|||
"1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813",
|
||||
"2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656"), 0.0, 2880.0, 120.0);
|
||||
|
||||
return;
|
||||
//return;
|
||||
/*
|
||||
# MOLNIYA 1-36 ## fig 12h resonant ecc in 0.7 to 0.715 range
|
||||
1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814
|
||||
|
|
Loading…
Reference in New Issue