Colormap library for C++ which converts a given value into red, green and blue values
I'm look开发者_开发问答ing for a colormap library which converts a given value into red, green and blue values. Similar to the colormap feature of matlab [1]. Preferrably in C++.
[1] http://www.mathworks.com/help/techdoc/ref/colormap.html
In think this is way too simple for a library personally i've implemented it my self their is the example in C (you can look up wikipedia for the math explanation):
/**
* 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;
}
}
精彩评论