Wikipedia:Reference desk/Archives/Mathematics/2009 October 15

= October 15 =

simple formula for fractions in computer code
i am writing a simple computer program that has a draggable slider in it. this slider at its minimum can have a value of 1 and at its maximum it can have a value of 1000. now, i have another object, let's say it is a light. when off, it is black and has a value of 1, it rises through shades of grey and at complete brightness (pure white) it has a value of 100.

i want this light to interact according to the slider between the numbers 400-500. so if the slider is valued at 1 to 400, the light would be black, between 401-499 would be shades of grey and from 500 to 1000 would be pure white.

what mathematical formula, without the use of code, would i use to solve this? i want my light to interpret the numbers 1-100 the same way my slider interprets its value of 400-500 in its range of 1-1000.

i hope i made this clear enough D:

thanks! Bonusbox (talk) 01:42, 15 October 2009 (UTC)


 * I'm not sure what you mean by "without the use of code". Do you mean, no "if" statements? Are you looking for a single mathematical expression that could be translated into a single line of mathematics-only code?
 * In general, what you want to do is take your slider's value (1-1000) and subtract 400 from it. Then, if the result is less than 0, make it zero. If the result is greater than 100, make it 100.
 * If you have MIN and MAX functions that return the smallest and largest passed values (respectively), then you could do something like this (make sure that your math operations are done in signed integers):


 * Note that slider value 401 translates to light value 1, which you initially said was black. That's a bit different from what you said later, "between 401-499 would be shades of grey".


 * Does that help? –RHolton ≡ – 04:29, 15 October 2009 (UTC)


 * excellent. i guess code was required. in actionscript it turned out to be: lightValue = Math.min(Math.max(sliderValue - 400, 1), 100);
 * all working now though. thanks! Bonusbox (talk) 21:51, 15 October 2009 (UTC)
 * Code is not strictly speaking required. You could use polynomial interpolation.  Assuming the slider only gives integer values you would get a degree 999 polynomial.  This might be prone to overflow though. Taemyr (talk) 09:40, 16 October 2009 (UTC)
 * I was wondering if there was a strictly math-based (no code) approach (no matter how impractical). Would polynomial interpolation result in a one to one mapping? –RHolton ≡ – 13:30, 16 October 2009 (UTC)


 * Well, let's see... You are only interested in integer values, right? Thus you have a function that is defined in 999 points (x; y) and no other points really matter. So, you can act as if you wanted to get some values between them - in such case polynomial interpolation would give you exact fit in those 999 points (that is, if we could somehow avoid the rounding errors). Of course, finding a polynomial with a degree of 998 (and then calculating its value) can safely be considered to be "impractical" in presence of such a simple alternative... --Martynas Patasius (talk) 16:50, 17 October 2009 (UTC)


 * You've made me curious as to why you want to do this, instead of using the full slider to adjust brightness. Do you intend to use slider positions below 400 and above 500 to also do something besides brightness adjustments ? StuRat (talk) 14:49, 18 October 2009 (UTC)