auto crop = params.transform.crop;\r
auto pers = params.transform.perspective;\r
\r
- auto ul = rotate((-anchor[0] + pers.ul[0]) * f_s[0], (-anchor[1] + pers.ul[1]) * f_s[1] / aspect);\r
- auto ur = rotate((-anchor[0] + pers.ur[0]) * f_s[0], (-anchor[1] + pers.ur[1]) * f_s[1] / aspect);\r
- auto lr = rotate((-anchor[0] + pers.lr[0]) * f_s[0], (-anchor[1] + pers.lr[1]) * f_s[1] / aspect);\r
- auto ll = rotate((-anchor[0] + pers.ll[0]) * f_s[0], (-anchor[1] + pers.ll[1]) * f_s[1] / aspect);\r
+ auto ul = rotate((-anchor[0] + pers.ul[0] + crop.ul[0] ) * f_s[0], (-anchor[1] + pers.ul[1] + crop.ul[1] ) * f_s[1] / aspect);\r
+ auto ur = rotate((-anchor[0] + pers.ur[0] + crop.lr[0] - 1.0) * f_s[0], (-anchor[1] + pers.ur[1] + crop.ul[1] ) * f_s[1] / aspect);\r
+ auto lr = rotate((-anchor[0] + pers.lr[0] + crop.lr[0] - 1.0) * f_s[0], (-anchor[1] + pers.lr[1] + crop.lr[1] - 1.0) * f_s[1] / aspect);\r
+ auto ll = rotate((-anchor[0] + pers.ll[0] + crop.ul[0] ) * f_s[0], (-anchor[1] + pers.ll[1] + crop.lr[1] - 1.0) * f_s[1] / aspect);\r
\r
auto upper_left_x = f_p[0] + ul[0];\r
auto upper_left_y = f_p[1] + ul[1];\r
double diagonal_intersection_y;\r
\r
if (get_line_intersection(\r
- pers.ul[0], pers.ul[1],\r
- pers.lr[0], pers.lr[1],\r
- pers.ur[0], pers.ur[1],\r
- pers.ll[0], pers.ll[1],\r
+ pers.ul[0] + crop.ul[0] , pers.ul[1] + crop.ul[1] ,\r
+ pers.lr[0] + crop.lr[0] - 1.0, pers.lr[1] + crop.lr[1] - 1.0,\r
+ pers.ur[0] + crop.lr[0] - 1.0, pers.ur[1] + crop.ul[1] ,\r
+ pers.ll[0] + crop.ul[0] , pers.ll[1] + crop.lr[1] - 1.0,\r
diagonal_intersection_x,\r
diagonal_intersection_y))\r
{\r
// http://www.reedbeta.com/blog/2012/05/26/quadrilateral-interpolation-part-1/\r
- auto d0 = hypotenuse(pers.ll[0], pers.ll[1], diagonal_intersection_x, diagonal_intersection_y);\r
- auto d1 = hypotenuse(pers.lr[0], pers.lr[1], diagonal_intersection_x, diagonal_intersection_y);\r
- auto d2 = hypotenuse(pers.ur[0], pers.ur[1], diagonal_intersection_x, diagonal_intersection_y);\r
- auto d3 = hypotenuse(pers.ul[0], pers.ul[1], diagonal_intersection_x, diagonal_intersection_y);\r
+ auto d0 = hypotenuse(pers.ll[0] + crop.ul[0] , pers.ll[1] + crop.lr[1] - 1.0, diagonal_intersection_x, diagonal_intersection_y);\r
+ auto d1 = hypotenuse(pers.lr[0] + crop.lr[0] - 1.0, pers.lr[1] + crop.lr[1] - 1.0, diagonal_intersection_x, diagonal_intersection_y);\r
+ auto d2 = hypotenuse(pers.ur[0] + crop.lr[0] - 1.0, pers.ur[1] + crop.ul[1] , diagonal_intersection_x, diagonal_intersection_y);\r
+ auto d3 = hypotenuse(pers.ul[0] + crop.ul[0] , pers.ul[1] + crop.ul[1] , diagonal_intersection_x, diagonal_intersection_y);\r
\r
ulq = calc_q(d3, d1);\r
urq = calc_q(d2, d0);\r