void PrintHelper::contestmanager_print(const ContestManager &man, const Trace &trace_full, const Trace &trace_triangle, const Trace &trace_sprint) { Directory::Create(_T("output/results")); { std::ofstream fs("output/results/res-olc-trace.txt"); TracePointVector v; trace_full.GetPoints(v); for (auto it = v.begin(); it != v.end(); ++it) fs << it->GetLocation().longitude << " " << it->GetLocation().latitude << " " << it->GetAltitude() << " " << it->GetTime() << "\n"; } { std::ofstream fs("output/results/res-olc-trace_triangle.txt"); TracePointVector v; trace_triangle.GetPoints(v); for (auto it = v.begin(); it != v.end(); ++it) fs << it->GetLocation().longitude << " " << it->GetLocation().latitude << " " << it->GetAltitude() << " " << it->GetTime() << "\n"; } { std::ofstream fs("output/results/res-olc-trace_sprint.txt"); TracePointVector v; trace_sprint.GetPoints(v); for (auto it = v.begin(); it != v.end(); ++it) fs << it->GetLocation().longitude << " " << it->GetLocation().latitude << " " << it->GetAltitude() << " " << it->GetTime() << "\n"; } std::ofstream fs("output/results/res-olc-solution.txt"); if (man.stats.solution[0].empty()) { fs << "# no solution\n"; return; } if (positive(man.stats.result[0].time)) { for (auto it = man.stats.solution[0].begin(); it != man.stats.solution[0].end(); ++it) { fs << it->GetLocation().longitude << " " << it->GetLocation().latitude << " " << it->GetTime() << "\n"; } } }
static std::pair<double, double> GetMinMax(TrailSettings::Type type, const TracePointVector &trace) { double value_min, value_max; if (type == TrailSettings::Type::ALTITUDE) { value_max = 1000; value_min = 500; for (auto it = trace.begin(); it != trace.end(); ++it) { value_max = std::max(it->GetAltitude(), value_max); value_min = std::min(it->GetAltitude(), value_min); } } else { value_max = 0.75; value_min = -2.0; for (auto it = trace.begin(); it != trace.end(); ++it) { value_max = std::max(it->GetVario(), value_max); value_min = std::min(it->GetVario(), value_min); } value_max = std::min(7.5, value_max); value_min = std::max(-5.0, value_min); } return std::make_pair(value_min, value_max); }
static std::pair<fixed, fixed> GetMinMax(TrailSettings::Type type, const TracePointVector &trace) { fixed value_min, value_max; if (type == TrailSettings::Type::ALTITUDE) { value_max = fixed(1000); value_min = fixed(500); for (auto it = trace.begin(); it != trace.end(); ++it) { value_max = std::max(it->GetAltitude(), value_max); value_min = std::min(it->GetAltitude(), value_min); } } else { value_max = fixed(0.75); value_min = fixed(-2.0); for (auto it = trace.begin(); it != trace.end(); ++it) { value_max = std::max(it->GetVario(), value_max); value_min = std::min(it->GetVario(), value_min); } value_max = std::min(fixed(7.5), value_max); value_min = std::max(fixed(-5.0), value_min); } return std::make_pair(value_min, value_max); }
void PrintHelper::contestmanager_print(const ContestManager& man) { { std::ofstream fs("results/res-olc-trace.txt"); TracePointVector v; man.trace_full.get_trace_points(v); for (auto it = v.begin(); it != v.end(); ++it) fs << it->get_location().longitude << " " << it->get_location().latitude << " " << it->GetAltitude() << " " << it->GetTime() << "\n"; } { std::ofstream fs("results/res-olc-trace_sprint.txt"); TracePointVector v; man.trace_sprint.get_trace_points(v); for (auto it = v.begin(); it != v.end(); ++it) fs << it->get_location().longitude << " " << it->get_location().latitude << " " << it->GetAltitude() << " " << it->GetTime() << "\n"; } std::ofstream fs("results/res-olc-solution.txt"); if (man.stats.solution[0].empty()) { fs << "# no solution\n"; return; } if (positive(man.stats.result[0].time)) { for (const TracePoint* it = man.stats.solution[0].begin(); it != man.stats.solution[0].end(); ++it) { fs << it->get_location().longitude << " " << it->get_location().latitude << " " << it->GetAltitude() << " " << it->GetTime() << "\n"; } } }
void TrailRenderer::DrawTraceVector(Canvas &canvas, const Projection &projection, const TracePointVector &trace) { points.GrowDiscard(trace.size()); unsigned n = 0; for (auto i = trace.begin(), end = trace.end(); i != end; ++i) points[n++] = projection.GeoToScreen(i->get_location()); canvas.DrawPolyline(points.begin(), n); }
static void GetMinMax(fixed &value_min, fixed &value_max, TrailSettings::Type type, const TracePointVector &trace) { if (type == TrailSettings::Type::ALTITUDE) { value_max = fixed(1000); value_min = fixed(500); for (auto it = trace.begin(); it != trace.end(); ++it) { value_max = max(it->GetAltitude(), value_max); value_min = min(it->GetAltitude(), value_min); } } else { value_max = fixed(0.75); value_min = fixed(-2.0); for (auto it = trace.begin(); it != trace.end(); ++it) { value_max = max(it->GetVario(), value_max); value_min = min(it->GetVario(), value_min); } value_max = min(fixed(7.5), value_max); value_min = max(fixed(-5.0), value_min); } }