一尘不染

色彩逻辑算法

algorithm

我们正在构建一个体育应用程序,并希望在应用程序的各个部分中加入团队色彩。

现在,每个团队可以使用几种不同的颜色表示。

我想做的是进行检查,以验证这两种团队颜色是否在彼此的一定范围内,这样我就不会显示两种相似的颜色。

因此,如果小组1的主要小组颜色的值是rgb(255,0,0)(或#FF0000),而小组2的主要颜色是相似的,例如rgb(250,0,0),则我们将选择其他值其中一支球队的颜色。

如果可能,我可以采取哪种方法进行检查?

谢谢


阅读 228

收藏
2020-07-28

共1个答案

一尘不染

这是理论上的解释

和C中的算法:

typedef struct {
    unsigned char r, g, b;
} RGB;

double ColourDistance(RGB e1, RGB e2)
{
    long rmean = ( (long)e1.r + (long)e2.r ) / 2;
    long r = (long)e1.r - (long)e2.r;
    long g = (long)e1.g - (long)e2.g;
    long b = (long)e1.b - (long)e2.b;
    return sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8));
}
2020-07-28