Merge pull request #301 from kwagyeman/master

Fixed bugs with logpolar/linpolar.
This commit is contained in:
Ibrahim Abd Elkader 2018-01-09 14:14:57 +02:00 committed by GitHub
commit 601d1593cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 13 deletions

View File

@ -31,10 +31,10 @@ void imlib_logpolar_int(image_t *dst, image_t *src, rectangle_t *roi, bool linea
sourceX = fast_roundf((alt_fast_exp(rho, linear) * cos_table[theta]) + w_2);
sourceY = fast_roundf((alt_fast_exp(rho, linear) * sin_table[theta]) + h_2);
} else {
int x_2 = x - w_2;
int y_2 = y - h_2;
float x_2 = x - w_2;
float y_2 = y - h_2;
float rho = alt_fast_log(fast_sqrtf((x_2 * x_2) + (y_2 * y_2)), linear);
float theta = 630 - (x_2 ? (fast_atan2f(y_2, x_2) * (180 / M_PI)) : ((y_2 < 0) ? 270 : 90));
int theta = 630 - (x_2 ? fast_roundf(fast_atan2f(y_2, x_2) * (180 / M_PI)) : ((y_2 < 0) ? 270 : 90));
if (theta >= 360) theta -= 360;
sourceX = fast_roundf(theta * theta_scale_inv);
sourceY = fast_roundf(rho * rho_scale_inv);
@ -62,10 +62,10 @@ void imlib_logpolar_int(image_t *dst, image_t *src, rectangle_t *roi, bool linea
sourceX = fast_roundf((alt_fast_exp(rho, linear) * cos_table[theta]) + w_2);
sourceY = fast_roundf((alt_fast_exp(rho, linear) * sin_table[theta]) + h_2);
} else {
int x_2 = x - w_2;
int y_2 = y - h_2;
float x_2 = x - w_2;
float y_2 = y - h_2;
float rho = alt_fast_log(fast_sqrtf((x_2 * x_2) + (y_2 * y_2)), linear);
float theta = 630 - (x_2 ? (fast_atan2f(y_2, x_2) * (180 / M_PI)) : ((y_2 < 0) ? 270 : 90));
int theta = 630 - (x_2 ? fast_roundf(fast_atan2f(y_2, x_2) * (180 / M_PI)) : ((y_2 < 0) ? 270 : 90));
if (theta >= 360) theta -= 360;
sourceX = fast_roundf(theta * theta_scale_inv);
sourceY = fast_roundf(rho * rho_scale_inv);
@ -93,13 +93,13 @@ void imlib_logpolar_int(image_t *dst, image_t *src, rectangle_t *roi, bool linea
sourceX = fast_roundf((alt_fast_exp(rho, linear) * cos_table[theta]) + w_2);
sourceY = fast_roundf((alt_fast_exp(rho, linear) * sin_table[theta]) + h_2);
} else {
int x_2 = x - w_2;
int y_2 = y - h_2;
float x_2 = x - w_2;
float y_2 = y - h_2;
float rho = alt_fast_log(fast_sqrtf((x_2 * x_2) + (y_2 * y_2)), linear);
float theta = 630 - (x_2 ? (fast_atan2f(y_2, x_2) * (180 / M_PI)) : ((y_2 < 0) ? 270 : 90));
int theta = 630 - (x_2 ? fast_roundf(fast_atan2f(y_2, x_2) * (180 / M_PI)) : ((y_2 < 0) ? 270 : 90));
if (theta >= 360) theta -= 360;
sourceX = fast_roundf(theta * theta_scale_inv);
sourceY = fast_roundf(rho * rho_scale_inv);
sourceX = IM_MIN(IM_MAX(fast_roundf(theta * theta_scale_inv), 0), (roi->w-1));
sourceY = IM_MIN(IM_MAX(fast_roundf(rho * rho_scale_inv), 0), (roi->h-1));
}
if ((0 <= sourceX) && (sourceX < roi->w) && (0 <= sourceY) && (sourceY < roi->h)) {

View File

@ -1287,7 +1287,8 @@ static mp_obj_t py_image_linpolar(uint n_args, const mp_obj_t *args, mp_map_t *k
{
image_t *arg_img = py_image_cobj(args[0]);
PY_ASSERT_TRUE_MSG(IM_IS_RGB565(arg_img), "Image format is not supported.");
bool reverse = py_helper_lookup_int(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_reverse), false);
bool reverse = py_helper_lookup_int(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_reverse),
(n_args > 1) ? mp_obj_get_int(args[1]) : false);
fb_alloc_mark();
imlib_logpolar(arg_img, true, reverse);
@ -1299,7 +1300,8 @@ static mp_obj_t py_image_logpolar(uint n_args, const mp_obj_t *args, mp_map_t *k
{
image_t *arg_img = py_image_cobj(args[0]);
PY_ASSERT_TRUE_MSG(IM_IS_RGB565(arg_img), "Image format is not supported.");
bool reverse = py_helper_lookup_int(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_reverse), false);
bool reverse = py_helper_lookup_int(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_reverse),
(n_args > 1) ? mp_obj_get_int(args[1]) : false);
fb_alloc_mark();
imlib_logpolar(arg_img, false, reverse);