我需要通过opengl渲染几个立方体,每个立方体的颜色取决于立方体中心的磁场,但是我不知道如何将浮点数转换为{{1} }或QVector3D
。
我可以将float数组的范围转换为0到1,我需要知道如何将磁场数组转换为RGB来定义颜色数组。
答案 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个维度,单个浮点数只有一个。实际上,在这两种方式之间进行映射的方法有无数种。