Пример #1
0
void
OLCTriangle::CopySolution(ContestTraceVector &result) const
{
  assert(num_stages <= MAX_STAGES);

  ContestDijkstra::CopySolution(result);
  assert(result.size() == 4);
  std::swap(result[0], result[3]);
  std::swap(result[1], result[2]);
}
Пример #2
0
void
TrailRenderer::Draw(Canvas &canvas, const WindowProjection &projection,
                    const ContestTraceVector &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);
}
Пример #3
0
void
TrailRenderer::DrawTraceVector(Canvas &canvas, const Projection &projection,
                               const ContestTraceVector &trace)
{
  const unsigned n = trace.size();
  RasterPoint *p = Prepare(n);

  for (const auto &i : trace)
    *p++ = projection.GeoToScreen(i.GetLocation());

  DrawPreparedPolyline(canvas, n);
}
Пример #4
0
void
TrailRenderer::DrawTriangle(Canvas &canvas, const Projection &projection,
                            const ContestTraceVector &trace)
{
  assert(trace.size() == 5);

  const unsigned start = 1, n = 3;

  RasterPoint *p = Prepare(n);

  for (unsigned i = start; i < start + n; ++i)
    *p++ = projection.GeoToScreen(trace[i].GetLocation());

  DrawPreparedPolygon(canvas, n);
}
Пример #5
0
void
OLCTriangle::CopySolution(ContestTraceVector &result) const
{
  result = solution;
  assert(result.size() == 5);
}