事情是这样,当我看到悦跑圈分享链接时,地图中路线根据速度改变画线的颜色时,顿时眼前一亮。
其实想一下这个算法还是比较清晰的,只需根据不同的速度来调整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
这个公式似曾相识,可惜我数学已经还给了老师。