也許我喝了太多咖啡,可能我工作太久了,無論我對這種方法的作用感到不知所措,或者更確切地說,它爲什麼以及如何做,都沒有人可以點亮在我身上?什麼是下一個顏色?這種神祕的色彩方法是做什麼的?它返回什麼?
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