// // Created by dominik on 8/16/24. // #ifndef RWSIM_MOTIONTETRAHEDRAL_H #define RWSIM_MOTIONTETRAHEDRAL_H #include "base.h" #include #include #include class TetrahedralJump final : public Motion { public: TetrahedralJump(double, double, std::mt19937_64&); explicit TetrahedralJump(std::mt19937_64&); void initialize() override; double jump() override; private: const double m_beta{std::acos(-1/3.)}; std::array m_corners{}; int m_corner_idx{0}; std::uniform_int_distribution<> m_chooser{1, 3}; }; #endif //RWSIM_MOTIONTETRAHEDRAL_H