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
8ca60907
Commit
8ca60907
authored
Nov 01, 2018
by
Alexander Lapshin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bom fix and interpolator
parent
cfdb31bd
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
27 additions
and
23 deletions
+27
-23
interpolate.cpp
utils/interpolate.cpp
+13
-7
interpolate.h
utils/interpolate.h
+1
-1
orbBlocks.cpp
utils/orbBlocks.cpp
+9
-10
orbBlocks.h
utils/orbBlocks.h
+3
-3
trj_inter.cpp
utils/trj_inter.cpp
+1
-2
No files found.
utils/interpolate.cpp
View file @
8ca60907
...
...
@@ -319,11 +319,15 @@ void XInterpolator::create(const SInitOrbit& orbit, const TimeJD& beg, const Tim
finalize
(
*
m_ephi
);
}
bool
XInterpolator
::
get_pos
(
const
TimeJD
&
date
,
Vect6
&
res
)
const
Vect6
XInterpolator
::
get_pos
(
const
TimeJD
&
date
)
const
{
assert
(
m_ephi
!=
0
);
assert
(
date
>=
m_beg
);
assert
(
date
<=
m_end
);
if
(
!
m_ephi
){
throw
Exp
()
<<
"interpolation not initialised
\n
"
;
}
if
(
!
(
date
>=
m_beg
&&
date
<=
m_end
)){
throw
Exp
()
<<
"interpolation date out of range
\n
"
;
}
double
outvec
[
6
],
backvec
[
6
],
aberout
[
3
],
aberback
[
3
];
double
relcorrout
,
relcorrback
;
...
...
@@ -333,7 +337,11 @@ bool XInterpolator::get_pos(const TimeJD& date, Vect6& res) const
double
sec
=
date
.
GetFraction
()
*
86400
;
cinterp_pvac
(
*
m_ephi
,
jdi
,
sec
,
outvec
,
backvec
,
aberout
,
aberback
,
&
relcorrout
,
&
relcorrback
,
fvel
,
&
ircode
);
res
=
Vect6
(
if
(
ircode
!=
0
){
throw
Exp
()
<<
"interpolation fail
\n
"
;
}
return
Vect6
(
outvec
[
0
],
outvec
[
1
],
outvec
[
2
],
...
...
@@ -341,6 +349,4 @@ bool XInterpolator::get_pos(const TimeJD& date, Vect6& res) const
outvec
[
4
],
outvec
[
5
]
);
return
true
;
}
utils/interpolate.h
View file @
8ca60907
...
...
@@ -13,7 +13,7 @@ public:
XInterpolator
(
const
SInitOrbit
&
orbit
,
const
TimeJD
&
beg
,
const
TimeJD
&
end
);
~
XInterpolator
();
void
create
(
const
SInitOrbit
&
orbit
,
const
TimeJD
&
beg
,
const
TimeJD
&
end
);
bool
get_pos
(
const
TimeJD
&
date
,
Vect6
&
res
)
const
;
Vect6
get_pos
(
const
TimeJD
&
date
)
const
;
int
get_size
()
const
{
return
m_positions
.
size
();
}
TimeJD
get_beg
()
const
{
return
m_beg
;
}
TimeJD
get_end
()
const
{
return
m_end
;
}
...
...
utils/orbBlocks.cpp
View file @
8ca60907
#
include
"orbBlocks.h"
#include "orbBlocks.h"
#include "TimeFunctions.h"
#include "Propagator.h"
#include "xalgorithm.h"
...
...
@@ -169,18 +169,17 @@ void OrbBlocksStore::init_min_dist(const SInitOrbits& orbits, const TimeJD& beg,
class
MinDistEvaluator
{
public
:
MinDistEvaluator
(
const
XInterpolator
&
ip1
,
const
XInterpolator
&
ip2
,
const
TimeJD
&
base
)
:
m_ip1
(
ip1
),
m_ip2
(
ip2
),
m_base
(
base
)
MinDistEvaluator
(
const
XInterpolator
&
ip1
,
const
XInterpolator
&
ip2
,
const
TimeJD
&
base
)
:
m_ip1
(
ip1
),
m_ip2
(
ip2
),
m_base
(
base
)
{
}
double
calc
(
double
time
)
const
{
TimeJD
date
=
ShiftDate
(
m_base
,
time
*
86400
);
Vect6
p1
;
m_ip1
.
get_pos
(
date
,
p1
);
Vect6
p2
;
m_ip2
.
get_pos
(
date
,
p2
);
Vect6
p1
=
m_ip1
.
get_pos
(
date
);
Vect6
p2
=
m_ip2
.
get_pos
(
date
);
return
sqrt
(
sqr
(
p1
.
x
-
p2
.
x
)
+
...
...
@@ -232,11 +231,11 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
result_dist
=
eval
.
calc
(
shift
);
}
bool
OrbBlocksStore
::
get_pos
(
const
TimeJD
&
date
,
Vect6
&
result
)
const
Vect6
OrbBlocksStore
::
get_pos
(
const
TimeJD
&
date
)
const
{
for
(
std
::
vector
<
XInterpolator
*>::
const_iterator
it
=
m_interpolators
.
begin
();
it
!=
m_interpolators
.
end
();
++
it
)
{
if
(
date
>=
(
*
it
)
->
get_beg
()
&&
date
<=
(
*
it
)
->
get_end
())
{
return
(
*
it
)
->
get_pos
(
date
,
result
);
return
(
*
it
)
->
get_pos
(
date
);
}
}
...
...
utils/orbBlocks.h
View file @
8ca60907
#
pragma
once
#pragma once
#include "TM.h"
#include <vector>
...
...
@@ -14,7 +14,7 @@ public:
OrbBlocksStore
()
{};
~
OrbBlocksStore
();
void
init
(
const
SInitOrbits
&
orbits
,
const
TimeJD
&
beg
,
const
TimeJD
&
end
);
bool
get_pos
(
const
TimeJD
&
date
,
Vect6
&
result
)
const
;
Vect6
get_pos
(
const
TimeJD
&
date
)
const
;
const
SInitOrbit
&
get_orbit
(
const
TimeJD
&
date
)
const
;
const
OrbBlocks
&
get_blocks
()
const
{
return
m_blocks
;
}
private
:
...
...
utils/trj_inter.cpp
View file @
8ca60907
...
...
@@ -8,8 +8,7 @@ TrjInter::TrjInter(const OrbBlocksStore& orbit_processor)
bool
TrjInter
::
Predict
(
const
TimeJD
&
t
,
const
IFrame
&
fr
,
Vect6
&
f
)
{
Vect6
p
;
m_orbit_processor
.
get_pos
(
t
,
p
);
Vect6
p
=
m_orbit_processor
.
get_pos
(
t
);
p
.
x
/=
1E6
;
p
.
y
/=
1E6
;
p
.
z
/=
1E6
;
...
...
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