diff options
Diffstat (limited to 'src/plot/generic.c')
-rw-r--r-- | src/plot/generic.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/plot/generic.c b/src/plot/generic.c index 3bd06a5..3d84104 100644 --- a/src/plot/generic.c +++ b/src/plot/generic.c @@ -173,22 +173,18 @@ static bool find_span(const int *p, int n, int x, int y, int *x0, int *x1) } else { /* find crossing (intersection of this line and * current y level) */ - int numerator = (y - p_y0) * (p_x1 - p_x0); - int denominator = (p_y1 - p_y0); + int num = (y - p_y0) * (p_x1 - p_x0); + int den = (p_y1 - p_y0); /* To round to nearest (rather than down) * half the denominator is either added to * or subtracted from the numerator, * depending on whether the numerator and - * denominator have the same sign */ - if ((numerator < 0) == (denominator < 0)) - x_new = p_x0 + (numerator + - (denominator / 2)) / - denominator; - else - x_new = p_x0 + (numerator - - (denominator / 2)) / - denominator; + * denominator have the same sign. */ + num = ((num < 0) == (den < 0)) ? + num + (den / 2) : + num - (den / 2); + x_new = p_x0 + num / den; } /* ignore crossings before current x */ |