#ifndef PLOTTER_H #define PLOTTER_H #include #include /** * @brief Abstract interface for plotting flight data. */ class Plotter { public: virtual ~Plotter() = default; /** * @brief Plot a 2D line graph. * * @param xData Vector of x-axis values (e.g., time) * @param yData Vector of y-axis values (e.g., altitude) * @param title Plot title * @param xLabel Label for x-axis * @param yLabel Label for y-axis */ virtual void plot2D(const std::vector& xData, const std::vector& yData, const std::string& title, const std::string& xLabel, const std::string& yLabel) = 0; /** * @brief Add a vertical marker at a specific x-axis value. * * @param xValue The x position (e.g., time in seconds) * @param label Text label to display near the marker */ virtual void addMarker(double xValue, const std::string& label) = 0; /** * @brief Plot altitude, velocity, and acceleration together on a single canvas. * * @param time Time points * @param altitude Altitude (Z position) * @param velocity Vertical velocity * @param acceleration Vertical acceleration */ virtual void plotPosVelAcc(const std::vector& time, const std::vector& altitude, const std::vector& velocity, const std::vector& acceleration) = 0; }; #endif // PLOTTER_H