#ifndef HSM_ALTITUDE_CALCULATOR_HPP #define HSM_ALTITUDE_CALCULATOR_HPP #include /** * @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