gpt4 book ai didi

language-agnostic - 如何生成对比色?

转载 作者:行者123 更新时间:2023-12-04 13:43:51 25 4
gpt4 key购买 nike

我的应用程序包含一个折线图,该折线图可以一次显示20个或更多数据集,但通常显示少于5个。我希望每个数据集都具有唯一的颜色。

目前,我正在这样做:

setHsl(i * 255.0 / session->getNumDataSets(), 255, 128);

它可以工作,但缺点是两个连续的数据集将具有非常相似的颜色。我希望它使生成的每种颜色与以前生成的所有颜色尽可能地形成对比。

有什么更好的生成颜色的方法?

这是我的第二次尝试:
double pos = 0;
if (wheel.size() == 0)
{
wheel.append(0.0);
wheel.append(1.0);
}
else
{
double gap = 0;
double hi = 0;
double lo = 0;

for (int i = 0; i < wheel.size() - 1; i++)
{
double g = wheel[i + 1] - wheel[i];
if (g > gap)
{
gap = g;
lo = wheel[i];
hi = wheel[i + 1];
}
}

pos = (hi - lo) / 2.0 + lo;

wheel.append(pos);
qSort(wheel);
}

QColor c;
c.setHsl(pos * 255.0, 255, 128);
return c.toRgb();

我的想法是第一个颜色在色轮上的位置0。然后,对于接下来的每种颜色,我都会绕着色轮,寻找颜色之间的最大间隙,找到后,我会在该间隙中插入新的颜色。看起来效果更好,但仍然不是完美的,因为一旦间隙变小,连续的颜色就会再次变得相似。

最佳答案

您可以执行以下操作:

int n = session->getNumDataSets();
setHsl( (((i%3) * n/3)+(i/3)) * 255.0 / n, 255, 128);

我必须仔细检查数学,但基本上它会旋转频谱的三分之二。

关于language-agnostic - 如何生成对比色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com