2013-02-24 92 views
0

我正在研究将LED的颜色更改为用户输入的RGB值颜色的项目。颜色代码值转换为2位数字

程序工作现在就改变每种颜色亮度的方式是通过提供一个数字0 - 1所以0完全在1完全关闭0.50为50%亮度等

似乎有种向后提供0,但这只是代码的写法。我的问题是如何将我转换价值0 - 2550 - 99我已经通过将3位数由2.58做数学这给了我正确的号码,如果是1上和0为过,但由于其向后如何获得与此相反的结果?

这是剩下的吗?因此,例如240/2.58 = 93其余的是7所以是我会使用的数字?不幸的是,数学从来不是我的强项。我知道这个问题并不涉及某种语言,但我打算用C来标记它,因为这就是它要写入的内容。如果有人能够提供一个使用C来获得数字的其余部分的例子,那将是很棒的。我知道模运算符,但我不认为这对我的情况起作用,但我可能是错的。

+0

'1 - color/2.58',难道不是吗? – 2013-02-24 17:49:11

回答

2
double mapNumbers(double x, long xMin, long xMax, long yMin, long yMax) 
{ 
    return ((double)(x - xMin) * (yMax - yMin))/((double)(xMax - xMin)) + yMin; 
} 

使用上述功能: - :

所以

可以映射x这是0-255之间,并从0-99得到相应数量INFACT任何范围的数字和任何其他数字范围之间: mapNumbers(10/*assuming this is x*/, 0, 255, 0, 99);

1

好了,从0转换 - 1范围为0 - 255范围内,仅仅通过255多个要负做到这一点,只是减去杉st value from 1.

result = (1 - x) * 255;