/* SpeedToFly class by Samuel Tabor, 2021.

Calculates the optimal speed to fly given drag polar, expected climb rate in next thermal and
horizontal and vertical air movement between thermals.
*/
#pragma once

#include "Variometer.h"

class SpeedToFly {

    float _CL_estimate = -1.0f;

    const Variometer::PolarParams &_polarParams;

public:
    SpeedToFly(const Variometer::PolarParams &polarParams) :_polarParams(polarParams) {}

    void update(float Wx, float Wz, float Wexp, float CLmin, float CLmax);

    float speed_to_fly(void) {return _CL_estimate>0 ? sqrtf(_polarParams.K/_CL_estimate) : -1.0f;};
};