見た目に美しいカラーパレットをランダムに生成するアルゴリズム
Algorithm Randomly Generate An Aesthetically Pleasing Color Palette
解決:
ランダムな色のRGB値を一定の色のRGB値と平均することができます。
(Javaの例)
public Color generateRandomColor(Color mix){ランダムランダム=新しいランダム(); int red = random.nextInt(256); int green = random.nextInt(256); int blue = random.nextInt(256); //色を混ぜるif(mix!= null){red =(red + mix.getRed())/ 2;緑=(緑+ mix.getGreen())/ 2;青=(青+ mix.getBlue())/ 2; } Color color = new Color(red、green、blue);戻り色; }
ランダムな色を白(255、255、255)と混合すると、元の色の色相を維持しながら明度を上げることで、ニュートラルなパステルを作成します。これらのランダムに生成されたパステルは、通常、特に多数でうまく調和します。
上記の方法を使用して生成されたパステルカラーは次のとおりです。
ランダムな色を一定のパステルと混合することもできます。これにより、中間色の色付きのセットが作成されます。たとえば、水色を使用すると、次のような色が作成されます。
さらに、補色や陰影のレベルを考慮したヒューリスティックをジェネレーターに追加することもできますが、それはすべて、ランダムな色で実現したい印象によって異なります。
いくつかの追加リソース:
- http://en.wikipedia.org/wiki/Color_theory
- http://en.wikipedia.org/wiki/Complementary_color
私はカラーホイールを使用し、ランダムな位置を指定すると、黄金角(137,5度)を追加できます
http://en.wikipedia.org/wiki/Golden_angle
重ならない毎回異なる色を取得するために。
カラーホイールの明るさを調整すると、さまざまな明るい色と暗い色の組み合わせを取得することもできます。
黄金比を使用した問題と解決策を非常によく説明しているこのブログ投稿を見つけました。
http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
アップデート: 私はちょうどこの他のアプローチを見つけました:
これはRYB(赤、黄、青)メソッドと呼ばれ、このホワイトペーパーで説明されています。
http://threekings.tk/mirror/ryb_TR.pdf
「ペイントにインスパイアされたカラー合成」として。
アルゴリズムは色を生成し、新しい色はそれぞれ、以前に選択された色とのユークリディアン距離を最大化するように選択されます。
ここでは、javascriptで適切な実装を見つけることができます。
http://afriggeri.github.com/RYB/
更新2:
Sciences Po Medialbは、データサイエンティスト向けのカラーパレットを生成する「IwantHue」というツールをリリースしました。さまざまな色空間を使用し、k-meansクラスタリングまたは力ベクトル(反発グラフ)を使用してパレットを生成します。これらの方法の結果は非常に優れており、Webページに理論と実装が示されています。
http://tools.medialab.sciences-po.fr/iwanthue/index.php
javascriptの場合:
function petalColors(){var r =(Math.round(Math.random()* 127)+ 127).toString(16); var g =(Math.round(Math.random()* 127)+ 127).toString(16); var b =(Math.round(Math.random()* 127)+ 127).toString(16); '#' + r + g + bを返します。 }ここでアイデアを見ました:http://blog.functionalfun.net/2008/07/random-passel-colour-generator.html