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
816c8ce0
Commit
816c8ce0
authored
Nov 30, 2019
by
Alexander Lapshin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
a40e96d3
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
78 additions
and
24 deletions
+78
-24
MagData.h
utils/MagData.h
+4
-4
orbBlock.cpp
utils/orbBlock.cpp
+8
-3
orbBlock.h
utils/orbBlock.h
+2
-1
orbBlocks.cpp
utils/orbBlocks.cpp
+14
-4
orbBlocks.h
utils/orbBlocks.h
+5
-3
orb_block_data.cpp
utils/orb_block_data.cpp
+34
-0
orb_block_data.h
utils/orb_block_data.h
+11
-9
No files found.
utils/MagData.h
View file @
816c8ce0
#ifndef MAGDATA_H
#define MAGDATA_H
#pragma once
#include "XMLFunctions.h"
#include "json_functions.h"
...
...
@@ -18,6 +17,9 @@ public:
bool
HasGeomData
()
const
{
return
m_hasGeomData
;
}
void
CalcMag
(
double
phase
,
double
range
);
void
CalcGeomMag
(
double
phase
,
double
range
);
double
get_std_mag
()
const
{
return
m_stdmag
;
}
double
get_std_phase
()
const
{
return
m_stdphase
;
}
double
get_std_range
()
const
{
return
m_stdrange
;
}
private
:
static
double
CalcA0g
(
double
stdmag
,
double
stdphase
,
double
stdrange
,
double
sunMag
);
static
double
CalcRealMag
(
double
A0g
,
double
sunMag
,
double
phase
,
double
range
);
...
...
@@ -33,5 +35,3 @@ private:
bool
m_hasData
;
bool
m_hasGeomData
;
};
#endif
utils/orbBlock.cpp
View file @
816c8ce0
...
...
@@ -48,9 +48,14 @@ OrbBlock::~OrbBlock()
delete
m_ip
;
}
void
OrbBlock
::
in
terpolate
(
const
TimeJD
&
beg
,
const
TimeJD
&
end
)
void
OrbBlock
::
in
it_by_orbit
(
)
{
m_ip
=
new
XInterpolator
(
m_orbit
,
beg
,
end
);
m_ip
=
new
XInterpolator
(
m_orbit
,
get_beg
(),
get_end
());
}
void
OrbBlock
::
init_by_data
()
{
m_ip
=
new
XInterpolator
(
m_data
.
get_vecs
());
}
void
OrbBlock
::
load
(
const
jsonval
&
parent
)
...
...
utils/orbBlock.h
View file @
816c8ce0
...
...
@@ -18,7 +18,8 @@ public:
const
SInitOrbit
&
get_orbit
()
const
{
return
m_orbit
;
}
double
get_min_distance
()
const
{
return
get_data
().
get_min_distance
();
}
std
::
string
get_next_orbitid
()
const
{
return
get_data
().
get_next_orbitid
();
}
void
interpolate
(
const
TimeJD
&
beg
,
const
TimeJD
&
end
);
void
init_by_orbit
();
void
init_by_data
();
const
XInterpolator
*
get_interpolator
()
const
{
return
m_ip
;
}
void
load
(
const
jsonval
&
parent
);
const
orb_block_data
&
get_data
()
const
{
return
m_data
;
}
...
...
utils/orbBlocks.cpp
View file @
816c8ce0
...
...
@@ -33,8 +33,9 @@ void OrbBlocksStore::init(
if
(
interpolate
)
{
for
(
auto
&
m_block
:
m_blocks
)
{
m_block
.
in
terpolate
(
m_block
.
get_beg
(),
m_block
.
get_end
()
);
m_block
.
in
it_by_orbit
(
);
}
m_initiated
=
true
;
}
}
...
...
@@ -49,6 +50,15 @@ void OrbBlocksStore::init(
init
(
orbits
,
&
beg
,
&
end
,
filter_orbits
,
min_dist_forced
,
interpolate
);
}
void
OrbBlocksStore
::
init
()
{
for
(
auto
&
m_block
:
m_blocks
)
{
m_block
.
init_by_data
();
}
m_initiated
=
true
;
}
SInitOrbits
OrbBlocksStore
::
filter
(
const
SInitOrbits
&
orbits
)
const
{
SInitOrbits
result
;
...
...
@@ -244,11 +254,11 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
result_dist
=
eval
.
calc
(
shift
);
}
Vect6
OrbBlocksStore
::
get_pos
(
const
TimeJD
&
date
)
const
Vect6
OrbBlocksStore
::
get_pos
(
const
TimeJD
&
date
,
const
bool
tks
)
const
{
for
(
const
auto
&
block
:
m_blocks
)
{
if
(
date
>=
block
.
get_beg
()
&&
date
<=
block
.
get_end
())
{
return
block
.
get_interpolator
()
->
get_pos
(
date
);
return
block
.
get_interpolator
()
->
get_pos
(
date
,
tks
);
}
}
...
...
@@ -269,7 +279,7 @@ const SInitOrbit& OrbBlocksStore::get_orbit(const TimeJD& date) const
std
::
vector
<
orb_block_data
>
OrbBlocksStore
::
get_orb_data
()
const
{
std
::
vector
<
orb_block_data
>
result
;
for
(
const
auto
&
el
:
m_blocks
)
{
for
(
const
auto
&
el
:
m_blocks
)
{
result
.
emplace_back
(
el
.
get_data
());
}
return
result
;
...
...
utils/orbBlocks.h
View file @
816c8ce0
...
...
@@ -8,14 +8,14 @@
typedef
std
::
vector
<
OrbBlock
>
OrbBlocks
;
class
OrbBlocksStore
{
class
OrbBlocksStore
{
public
:
OrbBlocksStore
();
void
init
(
const
SInitOrbits
&
orbits
,
const
TimeJD
*
beg
,
const
TimeJD
*
end
,
bool
filter_orbits
,
bool
min_dist_forced
,
bool
interpolate
);
void
init
(
const
SInitOrbits
&
orbits
,
const
TimeJD
&
beg
,
const
TimeJD
&
end
,
bool
filter_orbits
,
bool
min_dist_forced
,
bool
interpolate
);
void
init
();
SInitOrbits
calc_orbits
(
std
::
vector
<
TimeJD
>
dates
,
bool
variates
)
const
;
Vect6
get_pos
(
const
TimeJD
&
date
)
const
;
Vect6
get_pos
(
const
TimeJD
&
date
,
bool
tks
=
false
)
const
;
const
SInitOrbit
&
get_orbit
(
const
TimeJD
&
date
)
const
;
const
OrbBlocks
&
get_blocks
()
const
{
return
m_blocks
;
}
std
::
vector
<
orb_block_data
>
get_orb_data
()
const
;
...
...
@@ -23,6 +23,7 @@ public:
const
TimeJD
&
get_beg_before_filter
()
const
{
return
m_beg_before_filter
;
}
const
TimeJD
&
get_end_before_filter
()
const
{
return
m_end_before_filter
;
}
void
load
(
const
jsonval
&
parent
);
bool
is_initiated
()
const
{
return
m_initiated
;
}
private
:
void
init_min_dist
(
const
SInitOrbits
&
orbits
,
const
TimeJD
&
beg
,
const
TimeJD
&
end
,
bool
forced
);
void
calc_min_dist
(
const
SInitOrbit
&
orb1
,
const
SInitOrbit
&
orb2
,
const
TimeJD
&
beg
,
const
TimeJD
&
end
,
TimeJD
&
result_jd
,
double
&
result_dist
)
const
;
...
...
@@ -30,4 +31,5 @@ private:
OrbBlocks
m_blocks
;
TimeJD
m_beg_before_filter
;
TimeJD
m_end_before_filter
;
bool
m_initiated
{
false
};
};
utils/orb_block_data.cpp
View file @
816c8ce0
...
...
@@ -41,4 +41,38 @@ void orb_block_data::load(const jsonval& parent)
loadjson
(
parent
,
"beg"
,
m_beg
);
loadjson
(
parent
,
"end"
,
m_end
);
loadjson
(
parent
,
"mind_km"
,
m_mind
,
false
);
std
::
string
vecs
;
loadjson
(
parent
,
"vecs"
,
vecs
);
std
::
vector
<
std
::
string
>
parts
;
splitstrf
(
vecs
,
parts
,
","
);
for
(
size_t
i
=
0
;
i
<
parts
.
size
();
i
+=
8
)
{
int
days
;
Converter
::
ToNumber
(
parts
[
i
],
days
);
double
fraction
;
Converter
::
ToNumber
(
parts
[
i
+
1
],
fraction
);
double
x
;
Converter
::
ToNumber
(
parts
[
i
+
2
],
x
);
double
y
;
Converter
::
ToNumber
(
parts
[
i
+
3
],
y
);
double
z
;
Converter
::
ToNumber
(
parts
[
i
+
4
],
z
);
double
vx
;
Converter
::
ToNumber
(
parts
[
i
+
5
],
vx
);
double
vy
;
Converter
::
ToNumber
(
parts
[
i
+
6
],
vy
);
double
vz
;
Converter
::
ToNumber
(
parts
[
i
+
7
],
vz
);
m_vecs
.
emplace_back
(
Vect6
(
x
,
y
,
z
,
vx
,
vy
,
vz
),
TimeJD
(
days
,
fraction
),
0
,
""
);
}
}
utils/orb_block_data.h
View file @
816c8ce0
...
...
@@ -2,6 +2,7 @@
#include "TM.h"
#include "json_functions.h"
#include "ires.h"
class
orb_block_data
{
public
:
...
...
@@ -25,6 +26,7 @@ public:
const
std
::
string
&
get_orbitid
()
const
{
return
m_orbitid
;
}
const
std
::
string
&
get_next_orbitid
()
const
{
return
m_next_orbitid
;
}
double
get_min_distance
()
const
{
return
m_mind
;
}
const
std
::
vector
<
IRes
>&
get_vecs
()
const
{
return
m_vecs
;
}
private
:
std
::
string
m_orbitid
;
std
::
string
m_next_orbitid
;
...
...
@@ -32,5 +34,5 @@ private:
TimeJD
m_beg
;
TimeJD
m_end
;
double
m_mind
;
std
::
vector
<
IRes
>
m_vecs
;
};
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