2
我正在尋找將給定值轉換爲紅色,綠色和藍色值的顏色地圖庫。類似於matlab的色彩映射功能[1]。最好在C++中。用於C++的顏色地圖庫,可將給定值轉換爲紅色,綠色和藍色值
[1] http://www.mathworks.com/help/techdoc/ref/colormap.html
我正在尋找將給定值轉換爲紅色,綠色和藍色值的顏色地圖庫。類似於matlab的色彩映射功能[1]。最好在C++中。用於C++的顏色地圖庫,可將給定值轉換爲紅色,綠色和藍色值
[1] http://www.mathworks.com/help/techdoc/ref/colormap.html
在想這個的方式,對於庫太簡單了個人而言,我已經實現了它我的自我他們在C的例子(你可以看一下維基百科的解釋數學):
/**
* Computes the color gradiant
* color: the output vector
* x: the gradiant (beetween 0 and 360)
* min and max: variation of the RGB channels (Move3D 0 -> 1)
*/
void GroundColorMix(double* color, double x, double min, double max)
{
/*
* Red = 0
* Green = 1
* Blue = 2
*/
double posSlope = (max-min)/60;
double negSlope = (min-max)/60;
if(x < 60)
{
color[0] = max;
color[1] = posSlope*x+min;
color[2] = min;
return;
}
else if (x < 120)
{
color[0] = negSlope*x+2*max+min;
color[1] = max;
color[2] = min;
return;
}
else if (x < 180 )
{
color[0] = min;
color[1] = max;
color[2] = posSlope*x-2*max+min;
return;
}
else if (x < 240 )
{
color[0] = min;
color[1] = negSlope*x+4*max+min;
color[2] = max;
return;
}
else if (x < 300 )
{
color[0] = posSlope*x-4*max+min;
color[1] = min;
color[2] = max;
return;
}
else
{
color[0] = max;
color[1] = min;
color[2] = negSlope*x+6*max;
return;
}
}
是的,但你可能想不同的方案以供選擇,如MATLAB。 – Nils
被問及這深夜,想着它尋找一個顏色選擇的時候說得很簡單:) – Nils