読者です 読者をやめる 読者になる 読者になる

アジマティクス

ここをこうするとおもしろい

Googleのカラーピッカーを見て思ったこと

注:この記事では色に関することを扱っています。環境によっては、色が正しく表示されていない場合がありますが本題を考える上では影響ありません。

検索するだけで計算してくれたり翻訳してくれたりすることでおなじみGoogleですが、「カラーピッカー」と検索するとカラーピッカーそのものが出てきてグリグリ動かすことができます。

カラーピッカーでGoogle検索

f:id:motcho:20170125145451g:plain

やだなにこれめっちゃ便利......!

楽しいので小一時間グリグリしてたら、色々興味深いことがわかりましたのでシェアします。

色相環の構造

このカラーピッカー、左側にrgbの値が表示されています。これは赤(r)、緑(g)、青(b)の三原色それぞれがその色にどれだけ含まれているかを0から255までの値で示す表示なわけですが、ここをよく見ていると、一度に動くのは一つの値だけということがわかります。

赤から始まって、緑が動く、赤が動く、青が動く、緑が動く、青が動く......という風に遷移しながら最終的に赤に戻ります。二つ同時に増えたり減ったりすることはない、増え始めたものが途中で止まったりすることもない。

グラフで示すとこのような感じになります。

f:id:motcho:20170125150443p:plain

グラフが上に行くほどその色が多く含まれていることを示します。赤と緑で黄色、緑と青でシアン(水色)、青と赤でマゼンタ(紫)なわけですから、たしかに二つの成分が多くなるところにその混ざった色が見えます。いままでなんとなくで「色相」というものを捉えていたけれども、こうして見ると意外と簡潔でわかりやすい構造を持っていたのだということがよくわかります。

解像度を下げる

さて、「増え始めたものが途中で止まったりすることもない」のだから、変化する途中を無視して、色成分の有無を0と1とで表すこともできます。構造を理解するだけならそれでも問題はないというわけです。こうなります。

f:id:motcho:20170126091320p:plain

3桁の0か1を使って、例えば「100」は赤を、「110」は黄色を表すというわけです。隣り合う色はRGBどれか一つの成分だけが変化しているということがお分かりいただけるかと思います。端はループしています。

「000」と「111」はそれぞれ黒と白のことなのでここには入っていませんが、その二つを除いた0と1との組み合わせ6種類は、一つの成分だけが変化するように並べると一列に並ぶ、しかもループする、ということがわかりました。まさに「色相環」なわけです。

黒と白も含めたい

そうなると気になるのは、「000(黒)」と「111(白)」も含めるとどういう構造になるのか? ということです。

まず、どの色を考えても成分が3つしかないので、どの色もちょうど3色の遷移先をもつことになります。例えば「010()」からどれか一つの成分だけを変化させてたどり着けるのは「110」「000」「011」の3色です。これらはそれぞれシアンを表します。これが「101(マゼンタ)」から始めると、「001」「111」「100」の3色となります。これらはそれぞれです。

この「一つの成分だけ変えて移れる」という関係性を線で繋ぐとこうなりました。

f:id:motcho:20170126110816p:plain

どの色からも3本の線が出ていることが、「ちょうど3色の遷移先をもつ」ことと対応しています。

さらに外側の「111(白)」が共通しているのでもっとうまいこと描くとこうです。

f:id:motcho:20170126110827p:plain

あら〜〜〜〜〜美しい〜〜〜〜〜〜〜〜〜〜〜

色の関係性を調べていたらまさかの立方体が出てきました。色をRGBで表すとこんな美しい関係性が見えてくるんですねぇ。しびれます。

さっきの「000と111を除いた6種類を並べると一列に並んでループする」というのはつまり、

f:id:motcho:20170126114314p:plain

このピンクの部分のループのことを言っていたにすぎなかったわけです。そう考えるとほかにも、

f:id:motcho:20170126115632p:plain

この部分にだってループはできています。さっきのループ上の色を並べると冒頭に出てきた虹色の色相環ができていたわけですが、このループ上の色を並べると、

f:id:motcho:20170126115900p:plain

このようなまた別の色相環ができることになります。「色相環と言えば虹色、黒と白はまた別の軸」みたいなイメージがなんとなくありましたが、黒と白をも組み込んだ色相環、すなわち「色相球」みたいなものを考えることもできるというわけです。

これに関しては「色立体」という色相環の3次元バージョンみたいなものがすでに考えられてます。よろしくおググりください。色立体で検索

四原色だったらどうなる?

いったんここまでの話を振り返ります。

3桁の0か1で表現された色を、そのRGB成分のうち一つだけが異なるような色に遷移させる。そしてそれらを線でつなぐと、立方体の構造ができる。と、ここまではそういう話でした。しびれました。そうなってくると今度は「4桁だったら?」ということが気になってきます。

人間は三色型色覚です。網膜にある3種類の錐体細胞がそれぞれ赤緑青を捉えているからそうなっているのですが、あまりこの「3」という数字に深い意味があるわけではないようなのです。つまり物理法則として「3」でないと色をちゃんと認識できないとかそういうことがあるわけではなく、別に4でもよかった。現に四色型色覚の生物もいるらしいです。トリとか。

ということで先述の「4桁だったら?」という疑問は「四色型色覚を持つ生物にとっての色立体はどのようなものか?」という疑問として捉えることができるでしょう。考えてみます。

すべての遷移を並べる

4桁の0と1との組み合わせは全部で2⁴=16通りあります。この16個を、一つの桁だけが変わるように並べる方法としては、例えば以下のようなものが考えられます。

0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
0000

この並べ方はたしかに条件に当てはまっています。どこか一桁だけが0から1、または1から0に変化している。しかもループしてるし。しかしこれではまずいのです。なぜか?

この並べ方には例えば0111→1111のような遷移は含まれていません。このような遷移だって、一桁だけが変化しているので条件は満たしています。それなのに、上記の列のどこにも入っていない。つまり上記の並べ方では、すべての遷移の仕方を取り尽くせていないのです。

3色のときは全ての遷移を取り尽くせていたからこそ、すべての色から色へ連続的に遷移できる色相球、すなわち色立体が作れていたのです。だったら4色でも色立体を作るにはすべての遷移を取り尽くせているべきと思うのは当然でしょう。何かうまい方法を考えなくてはなりません。

平面に配置する

まず4桁なわけですから、それぞれの色の遷移先はちょうど4つあるわけです。0101からだったら0100と0111と0001と1101、というふうに。そして「上下左右」はちょうど4方向です。だったら、ある色の上下左右4方向に遷移先の色を配置して、うまいこと16種類全部が並ぶようにできないでしょうか。さすがにそんなに都合良くはいかないでしょうか。

やってみたらできました。こうです。

f:id:motcho:20170128225307p:plain

なんとちゃんと平面に敷き詰められるんですねぇ。25種類あるように見えますが上下左右がループしているので16種類です。しかしうまいことできてるもんです。この図が、というよりは、数学自体が。うまいことできてる。

3色のときのように色をつけて表すのはもはや無理です。人間は三色型色覚なので。しかし「上下左右どちらに動いても、どこか一桁だけが変化している」ということははっきりと見て取れると思います。

サラッと流しましたけどこれを並べる試行錯誤が相当楽しかったんですよね。特に平面に敷き詰められるのかどうかすらわかっていない状態からどうもちゃんと敷き詰められるぞ、ということがわかったときの快感といったらありませんでした。

さておき。これをずっと見てたら4桁の0と1が二進数の数に見えてきたので十進数に変換してみました。

f:id:motcho:20170128234618p:plain

それで思ったたんですけど、「検索窓」って一次元なんですよね。

知らない数列に出くわしたら検索してみるとなんらかの情報が見つかることが多いけれど、上記の表のような「縦と横に広がる数の並び」「数の行列」ってどうにも探しようがないんですよ。この数行列ってなんか名前あるんでしょうか。そもそも名前ついてる数行列ってほとんどない気がします。パスカルの三角形かウラムの螺旋ぐらい? 名前のついた「数列」だったらいくらでもあるのに不思議です。まずもって数列が縦にも広がったもののことをここでは「数行列」って呼んでるけどそんな言葉ないし。もしかしたらこのへん、鉱脈かもしれません。どんどん新しい数行列を発見して数学史に名を残してやりたくなります。ひとまず上のやつに私の名前を冠するってのはどうかな??????

トーラスが見えてきた

上記の数行列は、「四角いものの上下左右がループしている」のでこれはドラクエの地図と同じです。ドラクエの地図といえばトーラス(ドーナツ型)です。

f:id:motcho:20170129002800p:plain

トーラス。画像はWikipediaより(パブリックドメイン)。

四角形をペラッとやって上下をくっつけると円筒になります。その円筒をニュッとやって左右をくっつけるとトーラスになります。

……はい。そういうことですね。四色型色覚の生物にとっての色立体はトーラスだったのです。

知りませんでした。びっくりです。

そして、はい。言いたいことはわかります。当然です。五色型色覚、さらにはn色型色覚の生物にとっての色立体はどのようなものか? ですよね。わかります。気になります。

そんな生物いんのかよということは置いておきます。まだちゃんと考えてはいませんが、5色の場合は上下左右では足りないので三次元方向にはみ出して配置する必要がある気がします。二次元のまま五角形状に配置することもできるかもしれませんが、複雑になりすぎるような気もします。いずれにせよ、球→トーラスと来てるのだから次はもしかして穴が二つ......?みたいな予想も立てられると思います。しかし本当のところはまだわかりません。今後の課題としましょう。

おわりに

Googleのカラーピッカーきっかけでいろいろなことがわかりました。

色相環を生み出すRGBの構造。

・3桁の01で表された色相環に黒と白も含めると立方体の構造をなすこと。

色相環は一種類ではないこと。

・4桁の01の遷移がうまいこと平面に敷き詰められること。

・四色型色覚の生物にとっての色立体はトーラス型であること。

まさか最初にカラーピッカー機能を見つけたときにはここまでのことがわかるなんて予想だにしていませんでした。自分で考えなくても、事実だけを積み重ねていけばどんどん新たな事実にたどり着けるということも、数学の魅力の一つですね。なんたって自分で見つけた事実に自分で驚けるのですから。では今回はこのへんで。