2

論理的な順序で可能なすべてのRGBカラーの組み合わせのグリッドを作成するにはどうすればよいですか?このようなもの:

ここに画像の説明を入力してください 色ごとに256の値を使用すると、(256 ^ 3 =)16,777,216の可能な色が生成され、(16,777,216 =)4,096x4,096の正方形に配置できます。

色の配列を作成して表示する方法は知っていますが、私が求めているのは、色間のスムーズな遷移を行うための背後にあるロジックです。

4

3 に答える 3

4

RGB で考えないでください。HSL (色相、彩度、明度) または HSV 色空間で考えてください。それらは、人間が互いに「近い」と認識するものにはるかに近い.

あなたの例のような色を得るには:

  1. 彩度を「1」のままにします。
  2. (異なる色、RED->YELLOW->GREEN->ETC) に移動するには、「色相」を増やします。
  3. 下げる (色が暗くなる) には、明度を下げます。

HSL および HSV 色空間に関する記事はこちらです。その記事には、RGB に戻す変換アルゴリズムがいくつかありますが、C での変換に関する簡単な記事を次に示します。

編集:そしてc#の1つ

于 2012-11-29T21:53:29.827 に答える
1

コンピューターが表示する RGB カラーは 3 次元空間にあるため、リンクされた 4kX4k の正方形の画像のような配置では、可能なすべての色に到達することはできません。そのため、通常 3 つの値セレクターを表示するか、少なくとも 1 つのディメンションを線形セレクター コントロールに引き出し、他の 2 つのディメンションを正方形のコントロールに残すグラフィックス プログラムには、さまざまなカラー モデルがあります。

六角形のコントロールまたは三角形の色と別の明るさセレクターの配置も見られることがあります。

リンクされた画像では、グレーの色が完全に失われています。実際には、HSL 色空間の色相と明度を組み合わせたセレクターです。強烈な色の中間線は、1 つの基本色を開始し、次の基本色を段階的に追加し、最大値に達したら最初の色を減らし、同じスキーマで 3 番目の色に移行し、最後に元の色に戻ることで簡単に決定できます。最初の色。上に行く途中で白へ、下へ行く途中で黒への直線的な移行があります。

最終的に、色空間内の 6 つの境界面にすべての色が含まれますが、面間の空間全体はまだカバーされていません。そのためには、色の彩度用の別のセレクターが必要です。彩度を最大レベルから下げると、灰色がカバーされます。

正方形のスペースにすべての色が必要な場合は、256x256 のサイズのブロックを作成し、3 番目の色を少し追加して何度も繰り返すことができます。

于 2012-11-29T22:23:47.020 に答える
0

一般に、平面上で 3D 空間を表現することは、特に不透明な雲の中に何かを見たい場合は困難です。

HSI/HSL/HSV を調べます - http://en.wikipedia.org/wiki/HSI_color_space

于 2012-11-29T21:55:26.680 に答える