27 namespace SourceXtractor {
31 : m_decorated{decorated} {
33 m_transform[0] = std::get<0>(jacobian);
34 m_transform[1] = std::get<1>(jacobian);
35 m_transform[2] = std::get<2>(jacobian);
36 m_transform[3] = std::get<3>(jacobian);
38 double inv_det = 1. / (m_transform[0] * m_transform[3] - m_transform[2] * m_transform[1]);
40 m_inv_transform[0] = m_transform[3] * inv_det;
41 m_inv_transform[1] = -m_transform[1] * inv_det;
42 m_inv_transform[2] = -m_transform[2] * inv_det;
43 m_inv_transform[3] = m_transform[0] * inv_det;
62 auto min_x =
std::min({a.first, b.first, c.first, d.first});
63 auto min_y =
std::min({a.second, b.second, c.second, d.second});
77 auto min_x =
std::max({a.first, b.first, c.first, d.first});
78 auto min_y =
std::max({a.second, b.second, c.second, d.second});
84 auto diff_x = pixel_x - center_x;
85 auto diff_y = pixel_y - center_y;
88 SeFloat new_diff_y = diff_x * m_inv_transform[1] + diff_y * m_inv_transform[3];
90 return m_decorated->getArea(0, 0, new_diff_x, new_diff_y);
94 auto diff_x = pixel_x - center_x;
95 auto diff_y = pixel_y - center_y;
98 SeFloat new_diff_y = diff_x * m_inv_transform[1] + diff_y * m_inv_transform[3];
100 return m_decorated->getRadiusSquared(0, 0, new_diff_x, new_diff_y);
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y