Commit c2284a41 authored by Alexander Lapshin's avatar Alexander Lapshin

.

parent 15d98c3b
...@@ -4,16 +4,15 @@ ...@@ -4,16 +4,15 @@
#include "orb_date.h" #include "orb_date.h"
OrbBlocksStore::OrbBlocksStore() OrbBlocksStore::OrbBlocksStore()
{ = default;
}
void OrbBlocksStore::init( void OrbBlocksStore::init(
const SInitOrbits& orbits, const SInitOrbits& orbits,
const TimeJD* beg, const TimeJD* beg,
const TimeJD* end, const TimeJD* end,
bool filter_orbits, const bool filter_orbits,
bool min_dist_forced, const bool min_dist_forced,
bool interpolate) const bool interpolate)
{ {
SInitOrbits sordet_orbits = orbits; SInitOrbits sordet_orbits = orbits;
...@@ -21,8 +20,8 @@ void OrbBlocksStore::init( ...@@ -21,8 +20,8 @@ void OrbBlocksStore::init(
return a.GetDate() < b.GetDate(); return a.GetDate() < b.GetDate();
}); });
// m_beg_before_filter = beg ? *beg : sordet_orbits.front().GetDate(); m_beg_before_filter = beg ? *beg : sordet_orbits.front().GetDate();
// m_end_before_filter = end ? *end : sordet_orbits.back().GetDate(); m_end_before_filter = end ? *end : sordet_orbits.back().GetDate();
if (filter_orbits) { if (filter_orbits) {
sordet_orbits = filter(sordet_orbits); sordet_orbits = filter(sordet_orbits);
...@@ -44,9 +43,9 @@ void OrbBlocksStore::init( ...@@ -44,9 +43,9 @@ void OrbBlocksStore::init(
const SInitOrbits& orbits, const SInitOrbits& orbits,
const TimeJD& beg, const TimeJD& beg,
const TimeJD& end, const TimeJD& end,
bool filter_orbits, const bool filter_orbits,
bool min_dist_forced, const bool min_dist_forced,
bool interpolate) const bool interpolate)
{ {
init(orbits, &beg, &end, filter_orbits, min_dist_forced, 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 ...@@ -214,9 +213,9 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
XInterpolator ip2(orb2, beg, end); XInterpolator ip2(orb2, beg, end);
MinDistEvaluator eval(ip1, ip2, beg); 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 = 0;
double time_end = DaysInterval(beg, end); const double time_end = DaysInterval(beg, end);
double min = -1; double min = -1;
double time_min = 0; double time_min = 0;
...@@ -227,7 +226,7 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb ...@@ -227,7 +226,7 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
exit = true; exit = true;
} }
double dist = eval.calc(time); const double dist = eval.calc(time);
if (min == -1 || min > dist) { if (min == -1 || min > dist) {
min = dist; min = dist;
...@@ -237,10 +236,10 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb ...@@ -237,10 +236,10 @@ void OrbBlocksStore::calc_min_dist(const SInitOrbit& orb1, const SInitOrbit& orb
time += step / 86400.0; time += step / 86400.0;
} }
double tol = 60 / 86400.0; const double tol = 60 / 86400.0;
double left = std::max(0.0, time_min - step / 86400.0 / 2.0); const 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); const double right = std::min(time_end, time_min + step / 86400.0 / 2.0);
double shift = golden_section_search(eval, left, right, tol); const double shift = golden_section_search(eval, left, right, tol);
result_jd = ShiftDate(beg, shift * 86400); result_jd = ShiftDate(beg, shift * 86400);
result_dist = eval.calc(shift); result_dist = eval.calc(shift);
......
...@@ -19,14 +19,14 @@ public: ...@@ -19,14 +19,14 @@ public:
const SInitOrbit& get_orbit(const TimeJD& date) const; const SInitOrbit& get_orbit(const TimeJD& date) const;
const OrbBlocks& get_blocks() const { return m_blocks; } const OrbBlocks& get_blocks() const { return m_blocks; }
OrbBlocks& get_blocks() { return m_blocks; } OrbBlocks& get_blocks() { return m_blocks; }
//const TimeJD& get_beg_before_filter() const { return m_beg_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; } const TimeJD& get_end_before_filter() const { return m_end_before_filter; }
void load(const jsonval& parent); void load(const jsonval& parent);
private: private:
void init_min_dist(const SInitOrbits& orbits, const TimeJD& beg, const TimeJD& end, bool forced); 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; 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; SInitOrbits filter(const SInitOrbits& orbits) const;
OrbBlocks m_blocks; OrbBlocks m_blocks;
//TimeJD m_beg_before_filter; TimeJD m_beg_before_filter;
//TimeJD m_end_before_filter; TimeJD m_end_before_filter;
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment