c++ - 将整数映射到彩虹光谱中的颜色

标签 c++ colors

我想为 2D 网格中的 k 个点簇着色。现在我使用的是一种幼稚的方法。

我使用RGB来设置颜色,G分量是固定的,R是逐渐递减的,B是逐渐递增的。因此,第一个簇的 R 设置为 255,最后一个簇设置为 0,B 反之亦然。

int r = 255, g = 80, b = 0;
// do stuff
int step = 255 / k;
// loop over data
int cluster = getCurrentCluster();
int currentR = r - (cluster * step);
int currentG = g;
int currentB = b + (cluster * step);

当前的解决方案是可行且有效的。可以通过颜色区分簇

colored voronoi cells that show result of cluster analysis with k-means clustering. K is set to 30, number of elements is 5M, image dimension is square with 1M pixels

但我不喜欢它,并且更喜欢彩虹色或至少更丰富的光谱。

我怎样才能实现这一目标?如何将区间 [0, k) 中的整数映射到满足我要求的颜色?

我想到的另一种方法是将整数映射到给定间隔内的波长,例如400 nm 到 800 nm(如果我没记错的话,应该大致是彩虹光谱)并将波长转换为 RGB。

最佳答案

如果您想将线性范围映射到类似彩虹的光谱,那么您最好从 HSV 等颜色空间开始,然后转换为 RGB。

Here您可以找到转换的详细信息

关于c++ - 将整数映射到彩虹光谱中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31427240/

相关文章:

c# - 更新 GeometryModel3D Material 的单点颜色而不是整个点系统

c++如何结合std::bind和可变元组?

c++ - Berkeley DB 无法使用不同的 Dbt 初始化设置值

R:如何在 ggplot 中手动设置分箱色标?

css - 对 <a> 链接使用不同的类

colors - 计算机如何以不同的方式处理 ascii/文本和图像/颜色?

python - Plotly:如何使用 plotly.graph_objects 和 plotly.express 在图形中定义颜色?

c++ - 令人困惑的私有(private)变量访问

c++ - 散列<std::string> 与散列<std::string_view>

c++ - 以下代码之间有什么区别,为什么一个有效而另一个无效?