#pragma once #include #include #include using json = nlohmann::json; struct SineModel : IModel { float A, omega, phi, offset; SineModel(const json& params, float defaultVal) : A(params.value("A", 1.0f)), omega(params.value("omega", 1.0f)), phi(params.value("phi", 0.0f)), offset(defaultVal) {} float evaluate(size_t t) override { return A * sinf(omega * t + phi) + offset; } };