0

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

程序现在改变每种颜色亮度的方式是提供一个数字0-1所以0完全打开1是完全关闭0.50是 50% 亮度等。

提供 for on 似乎有点倒退0,但这只是代码的编写方式。我的问题是如何将值转换为-0我已经通过将 3位数字除以给出了正确的数字,如果它是打开和关闭的,但由于它倒退,我将如何获得相反的结果这个的?2550992.5810

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

4

2 回答 2

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);

于 2013-02-24T17:52:57.853 回答
1

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

result = (1 - x) * 255;
于 2013-02-24T17:57:27.973 回答