颜色代码值转换为2位数字

时间:2013-02-24 17:47:46

标签: c math

我正在开发一个项目,将LED的颜色更改为用户输入的RGB值的颜色。

程序现在用来改变每种颜色的亮度的方法是提供一个0 - 1数字,以便0完全在1完全开启关0.50亮度为50%等。

似乎有点向后提供0,但这只是编写代码的方式。我的问题是如何将值0 - 255转换为0 - 99我已经通过将3位数除以2.58来完成数学运算这给了我正确的数字,如果它是10关闭,但是因为它倒退我怎么能得到与此相反的?

这是剩下的吗?例如,240 / 2.58 = 93剩余部分为7,那么我将使用的数字是多少?不幸的是,数学从来都不是我的强项。我知道这个问题与某种语言无关,但是我会用C来标记它,因为这就是它将被写入的内容。如果有人可以提供一个使用{获取数字的余数的示例{1}}那太棒了。我知道模运算符,但我认为这不会对我的情况有效,但我可能错了。

2 个答案:

答案 0 :(得分: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获取相应的数字 - 实际上是在任何数字范围和任何其他数字范围之间:

所以:    mapNumbers(10/*assuming this is x*/, 0, 255, 0, 99);

答案 1 :(得分:1)

好吧,要从0 - 1范围转换为0 - 255范围,只需要乘以255乘以。要反向执行,只需从1中减去第一个值。

result = (1 - x) * 255;