CppGenerate/include/altitude_calculator.hpp

90 lines
2.3 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef HSM_ALTITUDE_CALCULATOR_HPP
#define HSM_ALTITUDE_CALCULATOR_HPP
#include <cstdint>
/**
* @brief 高度计算器类
*
* 负责根据气压值计算海拔高度,支持:
* 1. 气压到高度的转换
* 2. 海平面气压校准
* 3. 相对高度计算
* 4. 单位转换
*/
class AltitudeCalculator {
public:
/**
* @brief 构造函数
* @param sea_level_pressure 海平面气压值hPa
*/
explicit AltitudeCalculator(float sea_level_pressure = 1013.25f);
/**
* @brief 根据气压计算海拔高度
* @param pressure 当前气压值hPa
* @return 计算出的海拔高度(米)
*/
float calculateAltitude(float pressure) const;
/**
* @brief 计算相对高度
* @param current_altitude 当前海拔高度
* @param base_altitude 基准高度
* @return 相对高度(米)
*/
static float calculateRelativeHeight(float current_altitude, float base_altitude);
/**
* @brief 设置新的海平面气压值
* @param pressure 海平面气压值hPa
*/
void setSeaLevelPressure(float pressure);
/**
* @brief 获取当前海平面气压值
* @return 海平面气压值hPa
*/
float getSeaLevelPressure() const { return sea_level_pressure_; }
/**
* @brief 米转英尺
* @param meters 米值
* @return 英尺值
*/
static float metersToFeet(float meters);
/**
* @brief 英尺转米
* @param feet 英尺值
* @return 米值
*/
static float feetToMeters(float feet);
/**
* @brief 检查气压值是否在有效范围内
* @param pressure 气压值
* @return 是否有效
*/
static bool isValidPressure(float pressure);
/**
* @brief 检查高度值是否在合理范围内
* @param altitude 高度值(米)
* @return 是否合理
*/
static bool isValidAltitude(float altitude);
private:
float sea_level_pressure_; // 海平面气压值hPa
/**
* @brief 气压高度公式计算
* @param pressure 气压值
* @param sea_level_pressure 海平面气压值
* @return 海拔高度
*/
static float barometricFormula(float pressure, float sea_level_pressure);
};
#endif // HSM_ALTITUDE_CALCULATOR_HPP