ランダムに生成されたタイルを並べたいのですが、同系色の色では境界が解りづらくなります。
更に、タイルごとにテキストで文字を表示させたいのですが、
これも背景色に対して出来る限り目立つ色にしたいと思っています。
これをアルゴリズムで解決できませんでしょうか?
使用、言語に依存しな記述で解りやすく説明頂けると助かります。
例えば、
100回ループ
背景色=隣のタイルに使える色候補最小<色の最大範囲の乱数<隣のタイルに使える色候補最大値
隣のタイルに使える色候補最大値=(関数)背景色と差別が計れる最大値
隣のタイルに使える色候補最小値=(関数)背景色と差別が計れる最小値
文字色=背景色の正反対の色
(関数)背景色と差別が計れる最大値
そんなアルゴリズムがあるのか?
(関数)背景色と差別が計れる最小値
そんなアルゴリズムがあるのか?
以上、
大雑把ですが、自分なりに流れを考えてみたのですが、
これが、よい方法なのかどうかすら検討がつきません。
そもそも、色相関の理論的なことが解ってないのと
色や数学に対しての知識がないため、
出来る限り、素人にもやさしい言葉で説明して頂ける方がいましたらほんとうに助かります♪
図々しいお願いですが、締め切りが迫りこまっておりますどうぞお助けくださいmOm
No.2
- 回答日時:
テキスト色については、テレビなどで使われている中抜き装飾(Microsoft Wordのフォント設定の文字飾りの中抜き)のような感じにするといいと思います。
テキストのサイズが小さい場合には、背景色に応じて白色または黒色にします。白色のときには影を付けるといい感じになります。
質問の主旨と異なりますが、タイル(背景色)に応じて色を変えるというのは実用的ではありません。
色というのは、一種の記号で情報伝達を担っているのでランダムに変えるのは実用性が無いです。たとえば、ブラウザでは青の文字はリンクを意味する、道路交通標識の色による意味の違いなどです。
それよりも重要度が高いのですが一般に理解されていない問題として、人間の視覚処理能力というのは個人差があって色を区別する能力に秀でている人もいれば、病気などが原因で色を区別する能力が劣る人もいます。健常者は区別できても、視覚障碍(がい)者、高齢者は区別できない結果になることも考えられます。
公共サービス機関のサイトでは問題になるため、このような色をチェックするツールがあります。(富士通がWEBアクセシビリティのチェックツールとして提供しています)
まあ、ゲームなどだったら気にする必要はないことですが。
実用性を考えると、背景色と文字色のペアを事前に検証して最低2セット用意しておき、それらをタイル状に並べる方法が有効と思います。タイル状に配置するので背景色は最小で2色あれば十分です。市松模様になります。
アルゴリズムというよりもデザインによる解決ですが。
アルゴリズムで解決するとなると、少なくともRGB表現ではなくHSV表現を使って、色の距離を求める方法が有効と思います。RGB表現はあくまでも機械の都合なので人間的要素との親和性がありません。
変換式は Wikipedia にそれっぽいのがあります。
http://ja.wikipedia.org/wiki/HSV色空間
No.1ベストアンサー
- 回答日時:
その様な案件に取り組む場合、私なら色を「HSL色空間」で管理して、
タイルの色は「隣接する色から、色相が60度以上離れている」ことで対応します。
色相H = 隣接色の色相 + 乱数(60~300)度
彩度S = 隣接色の彩度
輝度L = 隣接色の輝度
文字色なら簡単に「背景色の色相に180度を加えた色」、つまり補色を使います。
色相H = 背景色の色相 + 180度
彩度S = 背景色の彩度
輝度L = 背景色の輝度
彩度や輝度での差別化は少々ややこしいアルゴリズムになりそうですので、まずは色相だけで試してみてはいかがでしょうか。
ただし RGB色空間しか使えない環境の場合は、RGBとHSLの変換アルゴリズムを用意する必要があります。
>隣接する色から、色相が60度以上離れている」ことで対応
>色相だけで試す
>RGBとHSLの変換アルゴリズム
この辺りで挑戦してみます。
糸口が全くなかったので具体的に教えて頂き助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[ EXCEL VBA ] 図形を読み込む...
-
実践的な遺伝子的アルゴリズム...
-
正しい五十音順について
-
期間重複チェックがわかりません
-
G4圧縮をTIFに変換アルゴリズム...
-
経路探索について
-
アルゴリズムとプロトコールの違い
-
C# 再帰よるスタックオーバー...
-
複数の点を最短距離で全て繋ぐ...
-
BCDについて
-
テンプレートマッチングの高速...
-
visual basic プログラミング
-
アルゴリズムが全くわからない
-
65536は2の何乗なのでしょうか?
-
Excelで4096点以上のFFTの方法
-
モジュロ
-
バッチファイルでウインドウを...
-
あるプログラムのコマンドライ...
-
クリックするとページ内で説明...
-
バッチ、vbs等でのソフトウェア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
SNSをやらない理由ってなんです...
-
アルゴリズムとプロトコールの違い
-
[ EXCEL VBA ] 図形を読み込む...
-
BCDについて
-
期間重複チェックがわかりません
-
最大公約数を求めたい!
-
c言語で画像から文字を認識 キ...
-
C♯で電卓を作成しています。演...
-
多変数関数の最小値を求めるプ...
-
画像から文字を認識してテキス...
-
ハッシュアルゴリズム
-
偏りのある乱数のアルゴリズム
-
乗換案内の作り方が知りたいです。
-
JPEG圧縮で8×8に分割する理由に...
-
書籍のソースコードを別言語に...
-
グループを均等に分けるには?...
-
複数の点を最短距離で全て繋ぐ...
-
gooという検索エンジンの後にGo...
-
シードを考慮したトーナメント...
おすすめ情報