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
d764526c
Commit
d764526c
authored
Dec 05, 2019
by
Alexander Lapshin
Browse files
Options
Browse Files
Download
Plain Diff
.
Merge branch 'master' of
https://gitlab.ancprotek.ru/alapshin/common
parents
061ddd28
0969b9b3
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
613 additions
and
559 deletions
+613
-559
MagData.h
utils/MagData.h
+4
-4
TextFunctions.h
utils/TextFunctions.h
+366
-366
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
orb_date.cpp
utils/orb_date.cpp
+169
-169
No files found.
utils/MagData.h
View file @
d764526c
#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/TextFunctions.h
View file @
d764526c
utils/orbBlock.cpp
View file @
d764526c
...
...
@@ -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 @
d764526c
...
...
@@ -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 @
d764526c
...
...
@@ -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 @
d764526c
...
...
@@ -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 @
d764526c
...
...
@@ -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 @
d764526c
...
...
@@ -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
;
};
utils/orb_date.cpp
View file @
d764526c
...
...
@@ -17,9 +17,9 @@ std::vector<TimeJD> generate_dates(const TimeJD& sdate, const TimeJD& edate, dou
// return result;
//}
const
int
n
=
(
int
)(
DaysInterval
(
sdate
,
edate
)
*
86400
/
step_sec
);
const
auto
n
=
(
int
)(
DaysInterval
(
sdate
,
edate
)
*
86400
/
step_sec
);
for
(
int
i
=
0
;
i
<
n
;
++
i
)
{
result
.
emplace_back
(
ShiftDate
X
(
sdate
,
step_sec
*
(
i
+
1
)));
result
.
emplace_back
(
ShiftDate
(
sdate
,
step_sec
*
(
i
+
1
)));
}
if
(
result
.
back
()
!=
edate
)
{
...
...
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