private System.Drawing.Color InterpolateColor(System.Drawing.Color minCol, System.Drawing.Color maxCol, double attr)
{
double frac = Fraction(attr);
if (frac==1)
return maxCol;
else if (frac==0)
return minCol;
else
{
double r = (maxCol.R - minCol.R) * frac + minCol.R;
double g = (maxCol.G - minCol.G) * frac + minCol.G;
double b = (maxCol.B - minCol.B) * frac + minCol.B;
double a = (maxCol.A - minCol.A) * frac + minCol.A;
if (r > 255) r = 255;
if (g > 255) g = 255;
if (b > 255) b = 255;
if (a > 255) a = 255;
return System.Drawing.Color.FromArgb((int)a, (int)r, (int)g, (int)b);
}
}