#pragma once #include #include using json = nlohmann::json; struct LinearModel : IModel { float k, b; size_t period_ticks; LinearModel(const json& params, float defaultVal) : k(params.value("k", 0.0f)), b(defaultVal) , period_ticks(params.value("period_ms", 0) / 20) {} float evaluate(size_t t) override { if (period_ticks > 0) t %= period_ticks; return k * t + b; } };