這裏我們有一個涉及顏色的有趣的真實世界算法要求。穩定的隨機顏色算法
N
漂亮的顏色:爲了繪製美圖(即:餅圖),我們需要選擇一個隨機組N
顏色是「足夠不同的」好看在一起。這可以通過固定亮度和飽和度並逐步通過色調以360/N
的步驟完成。- 穩定的顏色分配:給出扇區標記爲('A','B','C')和扇區標記爲('B','C','D')的扇區Pie_1,這將是很好的如果扇區B和C的顏色在Pie_1和Pie_2上都相同。如果隨着時間的推移刪除或添加到圖表中,這將有助於防止混淆。標籤是唯一穩定的東西。
- 允許硬編碼顏色:該算法應該允許硬編碼的標籤 - >顏色關係作爲輸入,但會計算其餘標籤的顏色(根據規則1和2)。
我覺得這個算法,即使它看起來很臨時,在多種情況下都會很有用。
任何想法?
更新: 埃裏克是正確的,不可能保證每個標籤的顏色穩定性,因爲新標籤出現和消失。但如果它「足夠穩定」,即顏色變化最小化,我很高興。
我想的是一樣的東西:
- 每個標籤使用哈希得到一個隨機色彩值(標籤)%360
- 爲了保證生成的色調有足夠的不同,我們把色相以固定數量的步驟循環(即:
2*N
),並嘗試將之前的色調值「四捨五入」爲新的差異化值。 - 在不同標籤達到相同圓角色調值的情況下,我們會以某種方式破壞領帶並將點移動到其他位置。
但是這留下了硬編碼顏色的問題。
如果我們定義顏色(標籤):= hsb(散列(標籤)%360,S,B)將起作用,但如何保證色相不同enougt。 另一方面,如果你使用色輪,什麼標籤是散列的,啓動色輪,標籤只是追隨者? 感謝您的回答 – Olmo 2010-06-02 06:44:19
@Olmo:看我的編輯。 – 2010-06-02 15:51:05
很多埃裏克。我已經將問題更改爲社區wiki,因此我可以用更多的空間來回答 – Olmo 2010-06-02 19:03:20