2012-02-13 2 views
3

人間の目では区別できないほど似ていない色の束をどのように生成するのですか?TCLで視覚的に区別できる色を生成するランダムカラージェネレータ

私は、次を使用してランダムなカラーコードを生成することができるよ:条件はコードが生成色が繰り返されないことを保証するために、「場合」

set r [expr { int(256 * rand()) }] 
    set g [expr { int(256 * rand()) }] 
    set b [expr { int(256 * rand()) }] 

    set newColor [format "#%02x%02x%02x" $r $g $b] 

その後、私は使用します。その後、私はこだわっています。

助けてください。 ありがとうございます。

+0

あなたが興味のこれを見つける必要があります! http://blog.xkcd.com/2010/05/03/color-survey-results/ – TrojanName

答えて

2

視覚的に特徴的な色を生成する場合、最も安価な方法は、HSV色空間からランダムな値を選択してRGBに変換することです。そこthe Tcler's Wikiで変換を行うためのいくつかの素晴らしいのコードだと、あなたは、むしろこのような独自のコードであることを統合したい:

proc getRandomColor {} { 
    set h [expr { int(256 * rand()) }] 
    set s [expr { int(256 * rand()) }] 
    set v [expr { int(256 * rand()) }] 

    lassign [hsvToRgb $h $s $v] r g b 

    return [format "#%02x%02x%02x" $r $g $b] 
} 

set newColor [getRandomColor]; # I find it's best to make such bits into procs 

、これはは独特な色を生成するを保証するものではありませんが、それは傾向があります問題を軽減する。鮮やかな色にこだわる必要がある場合は、SチャンネルとVチャンネルのバリエーションを減らして(ランダムな範囲を狭くする)、色にアクセスできないようにしてください。;色分けされた情報もさまざまな方法で伝達されていることを確認してください。

+0

Donalに感謝します。 HSVからランダムな値を選ぶことは素晴らしい考えです。しかし、私はそれが私の問題かどうか分からない、私はリンクにいくつかのバグがあると思う。 h = 8、s = 221、v = 109のとき、hsv2rgbは私に{27904 -6138880 -6138880}を返します。このリンクはより良いものと思うhttp://www2.tcl.tk/19711 – Mich

+0

@Mich:はい、それはうまくいくようです。より良いリンクを使用するために私の答えを編集します。 –

2

私はやや異なるアプローチを採用します。 1つは、それぞれの人が色分けを異ならせていること、そして女性は男性よりも多くの色を区別できるように思われることです。これに関する面白い読書については、XKCDカラー調査を参照してください。 http://blog.xkcd.com/2010/05/03/color-survey-results/したがって、RGB空間で文字通り何百万もの可能な色があるにもかかわらず、それらを数十のグループ(青、赤、緑など)に区別できるだけに縮小されています。

私は色のリストから始めたいと思います。 https://en.wikipedia.org/wiki/X11_color_names これらを使用してすべてのRGBのリストを作成します。

set colours [list "F0F8FF" "FAEBD7" "00FFFF"] 

それからちょうどランダムにリストから色を選択:

set num_of_colours [llength $colours] 
set my_colour_index [expr { int($num_of_colours * rand()) }] 
set my_colour [lindex $colours $my_colour_index] 
+0

ブライアンに感謝します。素晴らしいアイデアです。しかし、私は必要な色の量を制御することはできません。その結果、私が作成するカラーリストの色の量を超えてしまうことがあります。 – Mich

+0

あなたは歓迎ですが、人間の目では区別できない色を生成するという元の問題に戻りました。あなたが避けようとしていたものだと思いましたか? – TrojanName

+0

もちろん、私の答えで提供したリンクよりもはるかに長いリストがあります。 http://cloford.com/resources/colours/500col.htm – TrojanName

関連する問題