我正在寻找一个颜色图库,它将给定值转换为红色、绿色和蓝色值。类似于matlab的colormap功能[1]。最好使用 C++。
最佳答案
我个人认为这对于库来说太简单了,我自己实现了它,他们是 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;
}
}
关于c++ - 用于 C++ 的颜色图库,可将给定值转换为红色、绿色和蓝色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7139825/