#ifndef RWSIM_MOTIONTETRAHEDRAL_H #define RWSIM_MOTIONTETRAHEDRAL_H #include "base.h" #include #include #include namespace motions { class FourSiteTetrahedron final : public BaseMotion { public: FourSiteTetrahedron(double, double, std::mt19937_64&); explicit FourSiteTetrahedron(std::mt19937_64&); void initialize() override; double jump() override; [[nodiscard]] std::string toString() const 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