set motion parameters together via map
This commit is contained in:
@ -60,6 +60,12 @@ Motion* Motion::createFromInput(const std::string& input, std::mt19937_64& rng)
|
||||
throw std::invalid_argument("Invalid input " + input);
|
||||
}
|
||||
|
||||
void Motion::setParameters(const std::unordered_map<std::string, double> ¶meters) {
|
||||
m_delta = parameters.at("delta");
|
||||
m_eta = parameters.at("eta");
|
||||
}
|
||||
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const Motion& m) {
|
||||
os << m.getName();
|
||||
return os;
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
#include "coordinates.h"
|
||||
#include <random>
|
||||
#include <unordered_map>
|
||||
|
||||
class Motion {
|
||||
public:
|
||||
@ -22,6 +23,8 @@ public:
|
||||
virtual void initialize() = 0;
|
||||
virtual double jump() = 0;
|
||||
|
||||
virtual void setParameters(const std::unordered_map<std::string, double>&);
|
||||
|
||||
[[nodiscard]] double getDelta() const { return m_delta; }
|
||||
void setDelta(const double delta) { m_delta = delta; }
|
||||
[[nodiscard]] double getEta() const { return m_eta; }
|
||||
|
@ -23,3 +23,11 @@ double BimodalAngle::jump() {
|
||||
|
||||
return omega_q(m_prev_pos);
|
||||
}
|
||||
|
||||
void BimodalAngle::setParameters(const std::unordered_map<std::string, double> ¶meter) {
|
||||
Motion::setParameters(parameter);
|
||||
|
||||
m_angle1 = parameter.at("angle1") * M_PI / 180.;
|
||||
m_angle2 = parameter.at("angle2") * M_PI / 180.;
|
||||
m_prob = parameter.at("probability1");
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ public:
|
||||
|
||||
void initialize() override;
|
||||
double jump() override;
|
||||
void setParameters(const std::unordered_map<std::string, double> &) override;
|
||||
|
||||
protected:
|
||||
double m_angle1{0};
|
||||
|
@ -3,6 +3,10 @@
|
||||
//
|
||||
|
||||
#include "isosmallangle.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <ostream>
|
||||
|
||||
#include "coordinates.h"
|
||||
|
||||
|
||||
@ -20,3 +24,8 @@ double SmallAngle::jump() {
|
||||
|
||||
return omega_q(m_prev_pos);
|
||||
}
|
||||
|
||||
void SmallAngle::setParameters(const std::unordered_map<std::string, double> ¶meters) {
|
||||
m_chi = parameters.at("angle") * M_PI / 180.0;
|
||||
Motion::setParameters(parameters);
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ public:
|
||||
|
||||
void initialize() override;
|
||||
double jump() override;
|
||||
void setParameters(const std::unordered_map<std::string, double> &) override;
|
||||
|
||||
private:
|
||||
double m_chi{0};
|
||||
|
Reference in New Issue
Block a user