也许我喝了太多咖啡,可能我工作太久了,无论我对这种方法的作用感到不知所措,或者更确切地说,它为什么以及如何做,都没有人可以点亮在我身上?什么是下一个颜色?这种神秘的色彩方法是做什么的?它返回什么?
public Color nextColor() {
int max = 0, min = 1000000000, cr = 0, cg = 0, cb = 0;
for (int r = 0; r < 256; r += 4) {
for (int g = 0; g < 256; g += 4) {
for (int b = 0; b < 256; b += 4) {
if (r + g + b < 256 || r + g + b > 512) {
continue;
}
min = 1000000000;
for (Color c : colorTable) {
int dred = r - c.getRed();
int dgreen = g - c.getGreen();
int dblue = b - c.getBlue();
int dif = dred * dred + dgreen * dgreen + dblue * dblue;
if (min > dif) {
min = dif;
}
}
if (max < min) {
max = min;
cr = r;
cg = g;
cb = b;
}
}
}
}
return new Color(cr, cg, cb, 0x90);
}
UPDATE
感谢您的答复大家。在程序中查看方法的上下文很明显,他们的意图确实是返回距离现有颜色集“最远”的新颜色。
感谢Sparr对这个问题提出followup,我肯定会在你的建议的基础上重写上述内容。
我不是很了解RGB色阶。了解上述方法的意图是检索“赠品?”颜色到现有颜色组合,在我们如何看待颜色的意义上,1中提供的解决方案实际上是否可以互补?是否有一种更简单的方法来选择与该组合相匹配的颜色,还是RGB组件的数值分析实际上会产生合适的颜色?
哇!喜欢,颜色! – 2009-02-26 04:50:00
你可能要发送这一个到TheDailyWTF.com – Uri 2009-02-26 04:53:18