論理的な順序で可能なすべてのRGBカラーの組み合わせのグリッドを作成するにはどうすればよいですか?このようなもの:
色ごとに256の値を使用すると、(256 ^ 3 =)16,777,216の可能な色が生成され、(16,777,216 =)4,096x4,096の正方形に配置できます。
色の配列を作成して表示する方法は知っていますが、私が求めているのは、色間のスムーズな遷移を行うための背後にあるロジックです。
RGB で考えないでください。HSL (色相、彩度、明度) または HSV 色空間で考えてください。それらは、人間が互いに「近い」と認識するものにはるかに近い.
あなたの例のような色を得るには:
HSL および HSV 色空間に関する記事はこちらです。その記事には、RGB に戻す変換アルゴリズムがいくつかありますが、C での変換に関する簡単な記事を次に示します。
編集:そしてc#の1つ
コンピューターが表示する RGB カラーは 3 次元空間にあるため、リンクされた 4kX4k の正方形の画像のような配置では、可能なすべての色に到達することはできません。そのため、通常 3 つの値セレクターを表示するか、少なくとも 1 つのディメンションを線形セレクター コントロールに引き出し、他の 2 つのディメンションを正方形のコントロールに残すグラフィックス プログラムには、さまざまなカラー モデルがあります。
六角形のコントロールまたは三角形の色と別の明るさセレクターの配置も見られることがあります。
リンクされた画像では、グレーの色が完全に失われています。実際には、HSL 色空間の色相と明度を組み合わせたセレクターです。強烈な色の中間線は、1 つの基本色を開始し、次の基本色を段階的に追加し、最大値に達したら最初の色を減らし、同じスキーマで 3 番目の色に移行し、最後に元の色に戻ることで簡単に決定できます。最初の色。上に行く途中で白へ、下へ行く途中で黒への直線的な移行があります。
最終的に、色空間内の 6 つの境界面にすべての色が含まれますが、面間の空間全体はまだカバーされていません。そのためには、色の彩度用の別のセレクターが必要です。彩度を最大レベルから下げると、灰色がカバーされます。
正方形のスペースにすべての色が必要な場合は、256x256 のサイズのブロックを作成し、3 番目の色を少し追加して何度も繰り返すことができます。
一般に、平面上で 3D 空間を表現することは、特に不透明な雲の中に何かを見たい場合は困難です。
HSI/HSL/HSV を調べます - http://en.wikipedia.org/wiki/HSI_color_space。