我的最低速度Color
和最高速度Color
我有另一个名为currentSpeed
的变量,它给出了当前的速度。我想使用当前速度在两个极端之间生成Color
。任何提示?
答案 0 :(得分:2)
最简单的解决方案可能是对每个RGB进行线性插值(因为这可能是您的颜色所在的格式)。然而,它可能会导致一些奇怪的结果。如果lowest
为亮蓝色(0x0000FF)且highest
为亮黄色(0xFFFF00),则中间将为深灰色(0x808080)。
更好的解决方案可能是:
有关如何与HSL进行转换,请参阅this answer。
要进行线性插值,您需要以下内容:
double low_speed = 20.0, high_speed = 40.0; // The end points.
int low_sat = 50, high_sat = 200; // The value at the end points.
double current_speed = 35;
const auto scale_factor = (high_sat-low_sat)/(high_speed-low_speed);
int result_sat = low_sat + scale_factor * (current_speed - low_speed);
两个问题:
double
,则需要注意整数舍入。