Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
common
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Alexander Lapshin
common
Commits
4e61792e
Commit
4e61792e
authored
Aug 21, 2019
by
Alexander Lapshin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
+ desc node
parent
f8679894
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
1 deletion
+50
-1
AscNodeOrbit.cpp
utils/AscNodeOrbit.cpp
+46
-1
AscNodeOrbit.h
utils/AscNodeOrbit.h
+4
-0
No files found.
utils/AscNodeOrbit.cpp
View file @
4e61792e
...
...
@@ -47,8 +47,41 @@ void AscNodeOrbit::calc_asc_node(Propagator& prop, const TimeJD& date, const boo
}
}
void
AscNodeOrbit
::
calc_desc_node
(
Propagator
&
prop
,
const
TimeJD
&
date
,
const
bool
vzmode
,
const
bool
gcs_node
,
PhasePoint6D
&
result
)
const
{
// std::string date_s = DateToStr(date);
// std::cout << date_s << "\n";
if
(
vzmode
)
{
//if(!GetAscNodeYZ(*prop.GetPredictor()->GetPredictor(), prop.GetPredictor()->GetTime(), result, GetZ, GetVZ)){
// return false;
//};
SInitOrbit
ascNodeOrbit
;
if
(
!
jump_arg_of_lat
(
date
,
prop
,
180
*
deg2rad
,
gcs_node
,
ascNodeOrbit
))
{
throw
Exp
()
<<
"internal error in descending node method 1"
;
}
result
=
ascNodeOrbit
.
GetPhasePointJ2000
();
//std::string res_s = DateToStr(result.T);
if
(
date
<
result
.
T
)
{
throw
Exp
()
<<
"internal error in ascending node method 2"
;
}
}
else
{
if
(
!
GetAscNodeYZ
(
*
prop
.
GetPredictor
()
->
GetPredictor
(),
prop
.
GetPredictor
()
->
GetTime
(),
result
,
GetY
,
GetVY
))
{
throw
Exp
()
<<
"internal error in descending node method 2"
;
}
}
}
void
AscNodeOrbit
::
calculate
(
Propagator
&
prop
,
const
TimeJD
&
date
,
const
bool
vzmode
,
const
bool
gcs_node
,
bool
calc_params
)
{
m_is_desc
=
false
;
PhasePoint6D
j2000AscNodePoint
;
calc_asc_node
(
prop
,
date
,
vzmode
,
gcs_node
,
j2000AscNodePoint
);
calc_draconic_period
(
prop
,
j2000AscNodePoint
.
T
,
vzmode
,
gcs_node
,
m_drperiod
,
m_drperiodDt
);
...
...
@@ -59,6 +92,19 @@ void AscNodeOrbit::calculate(Propagator& prop, const TimeJD& date, const bool vz
}
}
void
AscNodeOrbit
::
calculate_desc
(
Propagator
&
prop
,
const
TimeJD
&
date
,
const
bool
vzmode
,
const
bool
gcs_node
,
bool
calc_params
)
{
m_is_desc
=
true
;
PhasePoint6D
j2000DescNodePoint
;
calc_desc_node
(
prop
,
date
,
vzmode
,
gcs_node
,
j2000DescNodePoint
);
m_date
=
j2000DescNodePoint
.
T
;
if
(
calc_params
)
{
calculate_params
(
j2000DescNodePoint
);
}
}
void
AscNodeOrbit
::
calculate_params
(
const
PhasePoint6D
&
j2000AscNodePoint
)
{
PhasePoint6D
GCSAscNodePoint
=
j2000AscNodePoint
;
...
...
@@ -167,7 +213,6 @@ void AscNodeOrbit::calc_draconic_period(Propagator& prop, const TimeJD& asc_node
PhasePoint6D
thirdAscNode
;
calc_asc_node
(
prop
,
ShiftDate
(
secondAscNode
.
T
,
-
.5
*
period
*
1000
),
vzmode
,
gcs_node
,
thirdAscNode
);
//std::cout << DateToStr(thirdAscNode.T) << "\n";
double
dracp1
=
(
firstAscDate
-
secondAscNode
.
T
).
GetDouble
()
*
86400
/
1000
;
double
dracp2
=
(
secondAscNode
.
T
-
thirdAscNode
.
T
).
GetDouble
()
*
86400
/
1000
;
...
...
utils/AscNodeOrbit.h
View file @
4e61792e
...
...
@@ -11,6 +11,7 @@ public:
AscNodeOrbit
();
explicit
AscNodeOrbit
(
const
PhasePoint6D
&
p
);
void
calculate
(
Propagator
&
prop
,
const
TimeJD
&
date
,
const
bool
vzmode
,
const
bool
gcs_node
,
bool
calc_params
=
true
);
void
calculate_desc
(
Propagator
&
prop
,
const
TimeJD
&
date
,
const
bool
vzmode
,
const
bool
gcs_node
,
bool
calc_params
=
true
);
void
calculate_params
(
const
PhasePoint6D
&
j2000AscNodePoint
);
double
get_latitude
()
const
{
return
m_latitude
;
}
double
get_longitude
()
const
{
return
m_longitude
;
}
...
...
@@ -26,8 +27,10 @@ public:
void
set_age
(
double
age_days
);
int
get_rev
()
const
{
return
m_rev
;
}
double
get_age
()
const
{
return
m_age
;
}
bool
is_desc
()
const
{
return
m_is_desc
;
}
private
:
void
calc_asc_node
(
Propagator
&
prop
,
const
TimeJD
&
date
,
const
bool
vzmode
,
const
bool
gcs_node
,
PhasePoint6D
&
result
)
const
;
void
calc_desc_node
(
Propagator
&
prop
,
const
TimeJD
&
date
,
const
bool
vzmode
,
const
bool
gcs_node
,
PhasePoint6D
&
result
)
const
;
void
calc_draconic_period
(
Propagator
&
prop
,
const
TimeJD
&
asc_node_date
,
const
bool
vzmode
,
const
bool
gcs_node
,
double
&
dracp
,
double
&
vdracp
)
const
;
double
get_kep_time
(
double
TA
,
double
e
,
double
w
)
const
;
static
KepData
get_kep_data
(
const
Vect6
&
pos
);
...
...
@@ -46,4 +49,5 @@ private:
Vect6
m_j2000
;
Vect6
m_gcs
;
TimeJD
m_date
;
bool
m_is_desc
;
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment