按数据比例改变颜色的算法

事情是这样,当我看到悦跑圈分享链接时,地图中路线根据速度改变画线的颜色时,顿时眼前一亮。
Image

其实想一下这个算法还是比较清晰的,只需根据不同的速度来调整RGB的值即可。

function Color(Speed) {
    var result = "rgb(0,0,0)", difference;
    if (Speed < AMinSpeed) { result = "rgb(255,0,0)"; }
    if (AMinSpeed<=Speed && Speed <=AverSpeed) {
        difference = parseInt(255 - (AverSpeed - Speed) / (AverSpeed - AMinSpeed) * 255);
        result = "rgb(255," + difference + ",0)";
    };
    if (Speed > AMaxSpeed) { result = "rgb(0,255,0)"; };
    if (AverSpeed<=Speed && Speed <=AMaxSpeed) {
        difference = parseInt(255 - (Speed - AverSpeed) / (AMaxSpeed - AverSpeed) * 255);
        result = "rgb(" + difference + ",255,0)";
    };
    return result;
};

大概总结公式就是:

avg = 平均值
max = 最大值
min = 最小值
c = 常数
x = 当前变量
if x > avg:
  res = c-(x-avg)/(max-avg)*c
if x < avg:
  res = c-(avg-x)/(avg-min)*c

这个公式似曾相识,可惜我数学已经还给了老师。