我想为 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);
当前的解决方案是可行且有效的。可以通过颜色区分簇
但我不喜欢它,并且更喜欢彩虹色或至少更丰富的光谱。
我怎样才能实现这一目标?如何将区间 [0, k) 中的整数映射到满足我要求的颜色?
我想到的另一种方法是将整数映射到给定间隔内的波长,例如400 nm 到 800 nm(如果我没记错的话,应该大致是彩虹光谱)并将波长转换为 RGB。
最佳答案
如果您想将线性范围映射到类似彩虹的光谱,那么您最好从 HSV 等颜色空间开始,然后转换为 RGB。
Here您可以找到转换的详细信息
关于c++ - 将整数映射到彩虹光谱中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31427240/