Files
cpp/src/motions/sixsitejump.h
Dominik Demuth 6579bb028b Smaller fixes
2026-03-08 13:43:51 +01:00

33 lines
756 B
C++

#ifndef SIXSITEJUMP_H
#define SIXSITEJUMP_H
#include "base.h"
#include <cmath>
#include <array>
namespace motions {
class SixSiteOctahedronC3 final : public BaseMotion {
public:
SixSiteOctahedronC3(double, double, double);
SixSiteOctahedronC3();
void initialize(std::mt19937_64& rng) override;
double jump(std::mt19937_64& rng) override;
[[nodiscard]] std::unique_ptr<BaseMotion> clone() const override;
[[nodiscard]] std::string toString() const override;
private:
double m_chi{std::acos(-1.0 / 3.0)}; // 54.74 deg
std::array<double, 6> m_corners{};
int m_corner_idx{0};
std::uniform_int_distribution<> m_chooser{1, 5};
};
}
#endif //SIXSITEJUMP_H