#pragma once

// unitless trapezoidal
struct Trapezoidal {
  float max_vel;
  float max_acc;
  float dist;
};

struct Setpoint {
  float acceleration; // unitless
  float velocity; // unitless
  float position; // unitless
  bool complete; // the setpoint will no longer change
};

// returns the position and velocity at the given time on a trapezoidal motion plan
// this could be baked if too computationally expensive
// not fully fuzzed
struct Setpoint trapezoidal_planner(struct Trapezoidal* trapezoidal, float time);

// returns the time a given plan will take
float trapezoidal_time(struct Trapezoidal* trapezoidal);
