彩虹配色的RGB函数
代码
彩虹配色广泛应用于计算流体力学和计算传热学,用于表征温度、速度等场的信息。
比如,给定一个物理量x
(取值从0到1),我们需要知道它对应的颜色通道是多少,r
表示红色,g
表示绿色,b
表示蓝色,它们均为整数,取值从0-255
C语言代码如下
void RGBfunction(double x, int *r, int *g, int *b)
{
x = 1.0 - x;
// x由小到大的依次为:赤、橙、黄、绿、青、蓝,注意没有紫色
//定义红色通道
if (x < 5.0 / 12.0)
{
*r = 255;
}
else if (x >= 5.0 / 12.0 && x < 7.0 / 12.0)
{
*r = (int)(-1530 * (x - 7.0 / 12.0));
}
else
{
*r = 0;
}
//定义绿色通道
if (x < 1.0 / 12.0)
{
*g = 0;
}
else if (x >= 1.0 / 12.0 && x < 3.0 / 12.0)
{
*g = (int)(990 * (x - 1.0 / 12.0));
}
else if (x >= 3.0 / 12.0 && x < 5.0 / 12.0)
{
*g = (int)(540 * (x - 5.0 / 12.0) + 255);
}
else if (x >= 5.0 / 12.0 && x < 7.0 / 12.0)
{
*g = 255;
}
else if (x >= 7.0 / 12.0 && x < 9.0 / 12.0)
{
*g = (int)(-768 * (x - 7.0 / 12.0) + 255);
}
else if (x >= 9.0 / 12.0 && x < 11.0 / 12.0)
{
*g = (int)(-762 * (x - 11.0 / 12.0));
}
else
{
*g = 0;
}
//定义蓝色通道
if (x < 7.0 / 12.0)
{
*b = 0;
}
else if (x >= 7.0 / 12.0 && x < 9.0 / 12.0)
{
*b = (int)(1530 * (x - 7.0 / 12.0));
}
else
{
*b = 255;
}
}
效果
对于某个二维热传导问题,可以绘制出如下彩虹配色的图像