我正在寻找将给定值转换为红色,绿色和蓝色值的颜色图库。与matlab [1]的颜色图功能相似。最好是在C++中。
[1] http://www.mathworks.com/help/techdoc/ref/colormap.html
最佳答案
认为对于个人图书馆来说这太简单了,我自己实现了它自己,这是C语言中的示例(您可以查看Wikipedia进行数学解释):
/**
* 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;
}
}