79 lines
2.7 KiB
C++
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
|