28 namespace ModelFitting {
32 : m_component(std::
move(component)) {
39 double inv_det = 1. / (m_transform[0] * m_transform[3] - m_transform[2] * m_transform[1]);
50 for (
int i = 0; i < 4; i++) {
63 double new_y = x * m_inv_transform[1] + y * m_inv_transform[3];
64 return m_component->getValue(new_x, new_y) / area_correction;
69 double y_scale =
std::sqrt(m_transform[2] * m_transform[2] + m_transform[3] * m_transform[3]);
70 double new_scale = scale /
std::min(x_scale, y_scale);
71 double new_r_max = r_max /
std::min(x_scale, y_scale);
72 m_component->updateRasterizationInfo(new_scale, new_r_max);
77 for (
auto& sample : result) {
80 std::get<0>(sample) = new_x;
81 std::get<1>(sample) = new_y;
88 double new_y = x * m_inv_transform[1] + y * m_inv_transform[3];
89 return m_component->insideSharpRegion(new_x, new_y);
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y