dix: fix axis scaling.

For two axes [a, b] and [x, y] (inclusive), the formula to scale point P(ab)
to (x,y) is:
    (P - a)/(b - a) * (y - x) + x

And the whole end result rounded of course to get the integer we need.
This commit is contained in:
Peter Hutterer 2008-10-02 08:55:14 +09:30
parent 93ef72fa26
commit 9c8a2be2c7

View File

@ -175,8 +175,12 @@ rescaleValuatorAxis(int coord, AxisInfoPtr from, AxisInfoPtr to,
if(fmin == tmin && fmax == tmax)
return coord;
return (int)(((float)(coord - fmin)) * (tmax - tmin + 1) /
(fmax - fmin + 1)) + tmin;
if(fmax == fmin) /* avoid division by 0 */
return 0;
return roundf(((float)(coord - fmin)) * (tmax - tmin) /
(fmax - fmin)) + tmin;
}
/**