在 C 或 C++ 中,或者只是在一般数学上,是否有更好的方法来映射数字比率,同时保留或舍入数据?
Take the following example
double cdp = 17000.0;
float integ = 30000.0 / 255;
int val = cdp / integ;
color = color + RGB(val, val, val);
这里我想将数字范围 [0, 30000] 映射到值 [0, 255]
最佳答案
如果我理解正确的话,您可以使用简单的线性插值来完成。它会像这样工作:
x = (inValue - minInRange) / (maxInRange - minInRange);
result = minOutRange + (maxOutRange - minOutRange) * x
在您的示例中,inValue 是 30,000 中的数字。 minInRange = 0,maxInRange = 30,000,minOutRange = 0,maxOutRange = 255。
关于C++ 'map' 数字范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684327/