I'm trying to convert one range of numbers to another, maintaining ratio. Maths is not my strong point.
I have an image file where point values may range from -16000.00 to 16000.00 though the typical range may be much less. What I want to do is compress these values into the integer range 0-100, where 0 is the value of the smallest point, and 100 is the value of the largest. All points in between should keep a relative ratio even though some precision is being lost I'd like to do this in python but even a general algorithm should suffice. I'd prefer an algorithm where the min/max or either range can be adjusted (ie, the second range could be -50 to 800 instead of 0 to 100).
Best Answer
Or a little more readable:
Or if you want to protect for the case where the old range is 0 (OldMin = OldMax):
Note that in this case we're forced to pick one of the possible new range values arbitrarily. Depending on context, sensible choices could be:
NewMin
(see sample),NewMax
or(NewMin + NewMax) / 2