カラーコンター - peace098beat/windows_applicaciton GitHub Wiki
float[] ColorScaleBCGYR(double in_value)
{
// 0.0~1.0 の範囲の値をサーモグラフィみたいな色にする
// 0.0 1.0
// 青 水 緑 黄 赤
// 最小値以下 = 青
// 最大値以上 = 赤
float[] ret;
int a = 255; // alpha値
int r, g, b; // RGB値
double value = in_value;
double tmp_val = Math.Cos(4 * Math.PI * value);
int col_val = (int)((-tmp_val / 2 + 0.5) * 255);
if (value >= (4.0 / 4.0)) { r = 255; g = 0; b = 0; } // 赤
else if (value >= (3.0 / 4.0)) { r = 255; g = col_val; b = 0; } // 黄~赤
else if (value >= (2.0 / 4.0)) { r = col_val; g = 255; b = 0; } // 緑~黄
else if (value >= (1.0 / 4.0)) { r = 0; g = 255; b = col_val; } // 水~緑
else if (value >= (0.0 / 4.0)) { r = 0; g = col_val; b = 255; } // 青~水
else { r = 0; g = 0; b = 255; } // 青
ret = new float[3] {(float)r/255.0f, (float)g /255.0f, (float)b /255.0f };
return ret;
}