質問: 色(rgb)に少し詳しい方にお願いします。 ランダムに生成されたタイルを並べたいのですが、同系色の色では境界が解りづらくなります。 更に、タイルごとにテキストで文字を表示させたいのですが、 これも背景色に対して出来る限り目立つ色にしたいと思っています。 これをアルゴリズムで解決できませんでしょうか? 使用、言語に依存しな記述で解りやすく説明頂けると助かります。 例えば、 100回ループ 背景色=隣のタイルに使える色候補最小<色の最大範囲の乱数<隣のタイルに使える色候補最大値 隣のタイルに使える色候補最大値=(関数)背景色と差別が計れる最大値 隣のタイルに使える色候補最小値=(関数)背景色と差別が計れる最小値 文字色=背景色の正反対の色 (関数)背景色と差別が計れる最大値 そんなアルゴリズムがあるのか? (関数)背景色と差別が計れる最小値 そんなアルゴリズムがあるのか? 以上、 大雑把ですが、自分なりに流れを考えてみたのですが、 これが、よい方法なのかどうかすら検討がつきません。 そもそも、色相関の理論的なことが解ってないのと 色や数学に対しての知識がないため、 出来る限り、素人にもやさしい言葉で説明して頂ける方がいましたらほんとうに助かります♪ 図々しいお願いですが、締め切りが迫りこまっておりますどうぞお助けくださいmom
回答: その様な案件に取り組む場合、私なら色を「hsl色空間」で管理して、 タイルの色は「隣接する色から、色相が60度以上離れている」ことで対応します。 色相h = 隣接色の色相 + 乱数(60~300)度 彩度s = 隣接色の彩度 輝度l = 隣接色の輝度 文字色なら簡単に「背景色の色相に180度を加えた色」、つまり補色を使います。 色相h = 背景色の色相 + 180度 彩度s = 背景色の彩度 輝度l = 背景色の輝度 彩度や輝度での差別化は少々ややこしいアルゴリズムになりそうですので、まずは色相だけで試してみてはいかがでしょうか。 ただし rgb色空間しか使えない環境の場合は、rgbとhslの変換アルゴリズムを用意する必要があります。