qtrocket2/include/FlightState.h
2025-04-20 12:29:36 -06:00

102 lines
3.0 KiB
C++

#ifndef FLIGHTSTATE_H
#define FLIGHTSTATE_H
#include <array>
/**
* @brief Represents the physical state of the rocket at a given simulation time.
*
* The FlightState contains position, velocity, acceleration, orientation,
* and angular velocity information, future-proofed for 6-DoF dynamics.
*/
class FlightState {
public:
/**
* @brief Default constructor. Initializes to zero state.
*/
FlightState();
/**
* @brief Gets the current position vector.
* @return Position (x, y, z) in meters.
*/
const std::array<double, 3>& getPosition() const;
/**
* @brief Sets the current position vector.
* @param pos Position (x, y, z) in meters.
*/
void setPosition(const std::array<double, 3>& pos);
/**
* @brief Gets the current velocity vector.
* @return Velocity (vx, vy, vz) in meters per second.
*/
const std::array<double, 3>& getVelocity() const;
/**
* @brief Sets the current velocity vector.
* @param vel Velocity (vx, vy, vz) in meters per second.
*/
void setVelocity(const std::array<double, 3>& vel);
/**
* @brief Gets the current acceleration vector.
* @return Acceleration (ax, ay, az) in meters per second squared.
*/
const std::array<double, 3>& getAcceleration() const;
/**
* @brief Sets the current acceleration vector.
* @param acc Acceleration (ax, ay, az) in meters per second squared.
*/
void setAcceleration(const std::array<double, 3>& acc);
/**
* @brief Gets the current orientation quaternion.
* @return Orientation quaternion (w, x, y, z).
*/
const std::array<double, 4>& getOrientation() const;
/**
* @brief Sets the current orientation quaternion.
* @param quat Orientation quaternion (w, x, y, z).
*/
void setOrientation(const std::array<double, 4>& quat);
/**
* @brief Gets the current angular velocity vector.
* @return Angular velocity (roll rate, pitch rate, yaw rate) in radians per second.
*/
const std::array<double, 3>& getAngularVelocity() const;
/**
* @brief Sets the current angular velocity vector.
* @param angVel Angular velocity (roll rate, pitch rate, yaw rate) in radians per second.
*/
void setAngularVelocity(const std::array<double, 3>& angVel);
/**
* @brief Gets the elapsed simulation time.
* @return Elapsed time in seconds.
*/
double getTime() const;
/**
* @brief Sets the elapsed simulation time.
* @param time Time in seconds.
*/
void setTime(double time);
private:
std::array<double, 3> position_; ///< (x, y, z) position in meters.
std::array<double, 3> velocity_; ///< (vx, vy, vz) velocity in m/s.
std::array<double, 3> acceleration_; ///< (ax, ay, az) acceleration in m/s2.
std::array<double, 4> orientation_; ///< Orientation quaternion (w, x, y, z).
std::array<double, 3> angularVelocity_; ///< Angular rates (roll, pitch, yaw) in rad/s.
double time_; ///< Elapsed simulation time [s].
};
#endif // FLIGHTSTATE_H