#include "component.hpp"
#include <stdexcept>
namespace asw {
std::vector<Point> generate_path(double width, double height, double spacing, double headland) {
  if (width <= 0 || height <= 0 || spacing <= 0 || headland < 0 || headland * 2 >= width || headland * 2 >= height) throw std::invalid_argument("invalid field geometry");
  std::vector<Point> points; bool forward = true;
  for (double y = headland; y <= height - headland + 1e-9; y += spacing) {
    points.push_back({forward ? headland : width - headland, y});
    points.push_back({forward ? width - headland : headland, y});
    forward = !forward;
  }
  return points;
}
}
