C++ 发散颜色映射可视化的建议算法

C++ 发散颜色映射可视化的建议算法,c++,visualization,C++,Visualization,我试图编写一段代码,假设将数据映射到RGB值,我试图使用的可视化类型之一是发散颜色映射 我不确定什么是最好的方法来应用颜色。我目前使用的算法是: //F是正在检查的数据点 if(F <= .5){ RGB[0] = F*510; RGB[1] = F*510; RGB[2] = F*254 + 128; }else{ RGB[0] = 255 - (F-.5)*254; RGB[1] = 255 - (F-.5)*510; RGB[2] =

我试图编写一段代码,假设将数据映射到RGB值,我试图使用的可视化类型之一是发散颜色映射

我不确定什么是最好的方法来应用颜色。我目前使用的算法是: //F是正在检查的数据点

if(F <= .5){
    RGB[0] = F*510;
    RGB[1] = F*510;
    RGB[2] = F*254 + 128;
}else{
    RGB[0] = 255 - (F-.5)*254;
    RGB[1] = 255 - (F-.5)*510;
    RGB[2] = 255 - (F-.5)*510;  
}
有没有什么建议的算法可以代替这个,或者这个分段函数可以吗? 这是当前算法生成的图像。

我认为使用RGB可能比使用RGB更有用,并使用组件显示数据。这样,函数的所有值都将映射到一个漂亮的彩虹颜色,并均匀地饱和


在提供的链接中,您应该能够导出公式,即如何将色调值转换为RGB。

我认为使用RGB可能比使用RGB更有用,并使用组件显示数据。这样,函数的所有值都将映射到一个漂亮的彩虹颜色,并均匀地饱和


在提供的链接中,您应该能够导出公式,即如何将色调值转换为RGB。

我认为您应该使用一个条来测试您的功能,因为在线性数据中更容易看到过渡“速度”

下面是一篇非常好的文章,用于使用发散颜色贴图:

它描述了它背后的数学原理。我知道,为了这么简单的任务,通过实验室和MSH的颜色空间似乎有点过火,但如果你想要高质量的彩色地图,这是值得的


除此之外,我不知道有任何函数的“手动”实现(即不使用matlab或R中已经很复杂的函数)

我认为您应该使用一个条来测试您的函数,因为这样可以更容易地看到线性数据中的转换“速度”

下面是一篇非常好的文章,用于使用发散颜色贴图:

它描述了它背后的数学原理。我知道,为了这么简单的任务,通过实验室和MSH的颜色空间似乎有点过火,但如果你想要高质量的彩色地图,这是值得的

除此之外,我不知道该函数的任何“手动”实现(即不使用matlab或R中已经很复杂的函数)

      F=0: (0,0,128) 
      F=0.5: (255,255,255) 
      F=1: (128, 0, 0)