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

79 lines
2.7 KiB
C++

#ifndef ENVIRONMENT_H
#define ENVIRONMENT_H
/**
* @brief Models atmospheric and gravitational conditions for the flight simulation.
*
* The Environment class provides atmospheric properties (air density, pressure, temperature)
* and gravity based on altitude. Future versions may support wind models.
*/
class Environment {
public:
/**
* @brief Constructs a new Environment.
* @param surfacePressure Surface pressure at launch site (Pascals).
* @param surfaceTemperature Surface temperature at launch site (Kelvin).
* @param launchAltitude Launch site altitude (meters above sea level).
*/
Environment(double surfacePressure,
double surfaceTemperature,
double launchAltitude);
/**
* @brief Default destructor.
*/
~Environment() = default;
/**
* @brief Returns the atmospheric density at a given altitude.
* @param altitude Altitude above sea level (meters).
* @return Air density in kg/m3.
*/
double getAirDensity(double altitude) const;
/**
* @brief Returns the gravitational acceleration at a given altitude.
* @param altitude Altitude above sea level (meters).
* @return Gravitational acceleration in m/s2.
*/
double getGravity(double altitude) const;
/**
* @brief Returns the surface pressure at launch site.
* @return Pressure in Pascals.
*/
double getSurfacePressure() const;
/**
* @brief Returns the surface temperature at launch site.
* @return Temperature in Kelvin.
*/
double getSurfaceTemperature() const;
/**
* @brief Returns the launch altitude above sea level.
* @return Altitude in meters.
*/
double getLaunchAltitude() const;
private:
double surfacePressure_; ///< Surface pressure at launch site [Pa].
double surfaceTemperature_; ///< Surface temperature at launch site [K].
double launchAltitude_; ///< Launch altitude above sea level [m].
/**
* @brief Internal method to compute standard atmosphere temperature at altitude.
* @param altitude Altitude above sea level (meters).
* @return Temperature at altitude (Kelvin).
*/
double getStandardTemperature(double altitude) const;
/**
* @brief Internal method to compute standard atmosphere pressure at altitude.
* @param altitude Altitude above sea level (meters).
* @return Pressure at altitude (Pascals).
*/
double getStandardPressure(double altitude) const;
};
#endif // ENVIRONMENT_H