我正在开发一个项目,将LED的颜色更改为用户输入的RGB值的颜色。
程序现在用来改变每种颜色的亮度的方法是提供一个0
- 1
数字,以便0
完全在1
完全开启关0.50
亮度为50%等。
似乎有点向后提供0
,但这只是编写代码的方式。我的问题是如何将值0
- 255
转换为0
- 99
我已经通过将3位数除以2.58
来完成数学运算这给了我正确的数字,如果它是1
和0
关闭,但是因为它倒退我怎么能得到与此相反的?
这是剩下的吗?例如,240
/ 2.58
= 93
剩余部分为7
,那么我将使用的数字是多少?不幸的是,数学从来都不是我的强项。我知道这个问题与某种语言无关,但是我会用C
来标记它,因为这就是它将被写入的内容。如果有人可以提供一个使用{获取数字的余数的示例{1}}那太棒了。我知道模运算符,但我认为这不会对我的情况有效,但我可能错了。
答案 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;