17 #include "agg_trans_warp_magnifier.h" 23 void trans_warp_magnifier::transform(
double* x,
double* y)
const 25 double dx = *x - m_xc;
26 double dy = *y - m_yc;
27 double r = std::sqrt(dx * dx + dy * dy);
30 *x = m_xc + dx * m_magn;
31 *y = m_yc + dy * m_magn;
35 double m = (r + m_radius * (m_magn - 1.0)) / r;
41 void trans_warp_magnifier::inverse_transform(
double* x,
double* y)
const 45 double dx = *x - m_xc;
46 double dy = *y - m_yc;
47 double r = std::sqrt(dx * dx + dy * dy);
49 if(r < m_radius * m_magn)
51 *x = m_xc + dx / m_magn;
52 *y = m_yc + dy / m_magn;
56 double rnew = r - m_radius * (m_magn - 1.0);
57 *x = m_xc + rnew * dx / r;
58 *y = m_yc + rnew * dy / r;