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
c2284a41
Commit
c2284a41
authored
Sep 21, 2019
by
Alexander Lapshin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
15d98c3b
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
21 deletions
+20
-21
orbBlocks.cpp
utils/orbBlocks.cpp
+16
-17
orbBlocks.h
utils/orbBlocks.h
+4
-4
No files found.
utils/orbBlocks.cpp
View file @
c2284a41
...
...
@@ -4,16 +4,15 @@
#include "orb_date.h"
OrbBlocksStore
::
OrbBlocksStore
()
{
}
=
default
;
void
OrbBlocksStore
::
init
(
const
SInitOrbits
&
orbits
,
const
TimeJD
*
beg
,
const
TimeJD
*
end
,
bool
filter_orbits
,
bool
min_dist_forced
,
bool
interpolate
)
const
bool
filter_orbits
,
const
bool
min_dist_forced
,
const
bool
interpolate
)
{
SInitOrbits
sordet_orbits
=
orbits
;
...
...
@@ -21,8 +20,8 @@ void OrbBlocksStore::init(
return
a
.
GetDate
()
<
b
.
GetDate
();
});
//
m_beg_before_filter = beg ? *beg : sordet_orbits.front().GetDate();
//
m_end_before_filter = end ? *end : sordet_orbits.back().GetDate();
m_beg_before_filter
=
beg
?
*
beg
:
sordet_orbits
.
front
().
GetDate
();
m_end_before_filter
=
end
?
*
end
:
sordet_orbits
.
back
().
GetDate
();
if
(
filter_orbits
)
{
sordet_orbits
=
filter
(
sordet_orbits
);
...
...
@@ -44,9 +43,9 @@ void OrbBlocksStore::init(
const
SInitOrbits
&
orbits
,
const
TimeJD
&
beg
,
const
TimeJD
&
end
,
bool
filter_orbits
,
bool
min_dist_forced
,
bool
interpolate
)
const
bool
filter_orbits
,
const
bool
min_dist_forced
,
const
bool
interpolate
)
{
init
(
orbits
,
&
beg
,
&
end
,
filter_orbits
,
min_dist_forced
,
interpolate
);
}
...
...
@@ -214,9 +213,9 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
XInterpolator
ip2
(
orb2
,
beg
,
end
);
MinDistEvaluator
eval
(
ip1
,
ip2
,
beg
);
double
step
=
(
int
)(
std
::
min
(
orb1
.
GetKeplerData
().
GetPeriod
(),
orb2
.
GetKeplerData
().
GetPeriod
())
*
1000
/
20
);
const
double
step
=
(
int
)(
std
::
min
(
orb1
.
GetKeplerData
().
GetPeriod
(),
orb2
.
GetKeplerData
().
GetPeriod
())
*
1000
/
20
);
double
time
=
0
;
double
time_end
=
DaysInterval
(
beg
,
end
);
const
double
time_end
=
DaysInterval
(
beg
,
end
);
double
min
=
-
1
;
double
time_min
=
0
;
...
...
@@ -227,7 +226,7 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
exit
=
true
;
}
double
dist
=
eval
.
calc
(
time
);
const
double
dist
=
eval
.
calc
(
time
);
if
(
min
==
-
1
||
min
>
dist
)
{
min
=
dist
;
...
...
@@ -237,10 +236,10 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
time
+=
step
/
86400.0
;
}
double
tol
=
60
/
86400.0
;
double
left
=
std
::
max
(
0.0
,
time_min
-
step
/
86400.0
/
2.0
);
double
right
=
std
::
min
(
time_end
,
time_min
+
step
/
86400.0
/
2.0
);
double
shift
=
golden_section_search
(
eval
,
left
,
right
,
tol
);
const
double
tol
=
60
/
86400.0
;
const
double
left
=
std
::
max
(
0.0
,
time_min
-
step
/
86400.0
/
2.0
);
const
double
right
=
std
::
min
(
time_end
,
time_min
+
step
/
86400.0
/
2.0
);
const
double
shift
=
golden_section_search
(
eval
,
left
,
right
,
tol
);
result_jd
=
ShiftDate
(
beg
,
shift
*
86400
);
result_dist
=
eval
.
calc
(
shift
);
...
...
utils/orbBlocks.h
View file @
c2284a41
...
...
@@ -19,14 +19,14 @@ public:
const
SInitOrbit
&
get_orbit
(
const
TimeJD
&
date
)
const
;
const
OrbBlocks
&
get_blocks
()
const
{
return
m_blocks
;
}
OrbBlocks
&
get_blocks
()
{
return
m_blocks
;
}
//
const TimeJD& get_beg_before_filter() const { return m_beg_before_filter; }
//
const TimeJD& get_end_before_filter() const { return m_end_before_filter; }
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
);
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
;
SInitOrbits
filter
(
const
SInitOrbits
&
orbits
)
const
;
OrbBlocks
m_blocks
;
//
TimeJD m_beg_before_filter;
//
TimeJD m_end_before_filter;
TimeJD
m_beg_before_filter
;
TimeJD
m_end_before_filter
;
};
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