将浮点数转换为RGB向量

时间:2019-03-15 08:58:31

标签: opengl qt5 colormap

我需要通过opengl渲染几个立方体,每个立方体的颜色取决于立方体中心的磁场,但是我不知道如何将浮点数转换为{{1} }或QVector3D

我可以将float数组的范围转换为0到1,我需要知道如何将磁场数组转换为RGB来定义颜色数组。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,那么您想用RGB颜色表示[0.0,1.0]范围内的浮点值。
我建议将值转换为HSV颜色范围。

对于整个范围,转换为:

float value = ...; // value in range [0.0, 1.0]

float H = value;
float R = fabs(H * 6.0f - 3.0f) - 1.0f;
float G = 2.0f - fabs(H * 6.0f - 2.0f);
float B = 2.0f - fabs(H * 6.0f - 4.0f);  

glm::vec3 color( 
    std::max(0.0, std::min(1.0, R))
    std::max(0.0, std::min(1.0, G))
    std::max(0.0, std::min(1.0, B)));

例如,如果您不想使用整个范围,则要使用从红色到蓝色的范围,则必须缩放value

float H = value * 2.0f/3.0f;

答案 1 :(得分:0)

您需要某种形式的查找表(LUT)。 RGB向量具有3个维度,单个浮点数只有一个。实际上,在这两种方式之间进行映射的方法有无数种。