27 namespace ModelFitting {
32 m_rotation_angle{rotation_angle},
33 m_cos{
std::cos(m_rotation_angle->getValue())},
34 m_sin{
std::sin(m_rotation_angle->getValue())} {
35 m_observer_id = rotation_angle->addObserver([
this](
double v){
42 : m_component {
std::move(other.m_component)},
43 m_rotation_angle{
std::move(other.m_rotation_angle)},
44 m_cos{other.m_cos}, m_sin{other.m_sin},
45 m_observer_id (other.m_observer_id) {
54 double new_y = x * m_sin + y *
m_cos;
64 for (
auto& sample : result) {
65 double new_x = std::get<0>(sample) * m_cos + std::get<1>(sample) * m_sin;
66 double new_y = std::get<1>(sample) * m_cos - std::get<0>(sample) * m_sin;
67 std::get<0>(sample) = new_x;
68 std::get<1>(sample) = new_y;
75 double new_y = x * m_sin + y *
m_cos;
76 return m_component->insideSharpRegion(new_x, new_y);
std::unique_ptr< ModelComponent > m_component
double getValue(double x, double y) override
bool insideSharpRegion(double x, double y) override
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
std::vector< ModelSample > getSharpSampling() override
std::size_t m_observer_id
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
RotatedModelComponent(std::unique_ptr< ModelComponent > component, std::shared_ptr< BasicParameter > rotation_angle)
virtual ~RotatedModelComponent()
std::shared_ptr< BasicParameter > m_rotation_angle
void updateRasterizationInfo(double scale, double r_max) override