//
// Created by jholder on 21.10.21.
//

#pragma once

#include <random>
#include "Rod2d.hpp"
class Simulation {
   public:
    explicit Simulation(double t_delta_T, size_t seed);
    double getNorm(double t_norm);
    void set_xBorder(double border);
    void set_yBorder(double border);

   private:
    bool m_enable_border = false;
    double m_xBorder;
    double m_yBorder;
    double m_delta_T;
    double m_std;
    std::mt19937_64 m_generator;
    std::normal_distribution<double> m_norm;

   public:
    [[nodiscard]] double getMDeltaT() const;
    [[nodiscard]] double getSTD() const;
    [[nodiscard]] pos_type boundaryPos(pos_type pos) const;
    [[nodiscard]] pos_type boundaryDistance(const pos_type& pos1, const pos_type& pos2) const;
};
