ロボットの切り絵と猫の切り絵を重ねると……この仕組み、あなたには理解できるかな?

世の中には頭のいい人がいるもんだ

こんな動画が話題になりました。すごい。

さて問題です。 ロボットの切り絵と猫の切り絵を重ねるとどうなるでしょう? え?簡単だった?そうかー・・・。 https://t.co/B1CYzhez1Y

ロボットの切り絵と猫の切り絵を重ねると、なんとドラえもんの絵が現れます。投稿したのはシステムエンジニアの落合雄介さん。

どうしてこんなことが可能なのか。BuzzFeedは落合さんにその仕組を聞いてみました。


ーーあのドラえもんは一体どうなってるんですか。

説明しますね。まず、白と黒の2×2のブロックを1つの「ドット」とします。

重ねる前のもの

・4マス中2マスが黒いブロック→白い点

・4マス中3マスが黒いブロック→黒い点

重ねた後のもの

・4マス中3マスが黒いブロック→白い点

・4マス中4マスが黒いブロック→黒い点

としています。


ポイントは、重ねる前は

・4マス中3マスが黒いブロック→黒い点

だったものが、

重ねた後は、

・4マス中3マスが黒いブロック→白い点

となっているところです。

これにより、重ねる前に「黒」だった場所が、重ねた後に「白」になります。

ーーなるほど。

ブロックの調整は、まだ手動でやっています。プログラムを書いて自動化したいと思っていますが、それはまだやっていません。使っているのは、Windowsのペイント、Excel、ImageMagickです。

ImageMagickは、画像をコマンドで変換するツールで、例えば、白黒2色の画像を、0と1の並びで表現するデータ形式に変換してくれます。

そうすれば、Excelでも画像データをドット単位で編集できます。で、それを元のpngファイルに戻します。

ーーなるほどなるほど。

ペイントの使い方はこうです。

心優しい落合さん。説明用の動画を2つ作ってくれました。

YouTubeでこの動画を見る

youtube.com

ちょっとわかりにくいかもしれませんが、例えば、左上画面が、「左上と右下が黒のブロックが並んだ格子模様」、左下画面が「左下と右上が黒のブロックが並んだ格子模様」とします。

左上の画像を、白い部分を透明にして左下の画像の上に重ねると、全体が真っ黒になります。

これを利用して、「BuzzFeed」の、黒い部分が左上のパターン、白い部分が左下のパターンになるようにして、これを右下に作ります。こうしてできた右下の画像と左下の画像は、白い部分を透明にして重ね合わせると、「BuzzFeed」の文字が浮かび上がります(下の動画参照)。

これの応用で、ずらしたときに別の絵に変わるようにしたり、重ねる前から何かの絵柄に見えるようにしたりするのですが、そのためには、もう少し複雑な調整が必要です。

その調整は、「Excel方眼紙」と呼ばれるような、縦横のセルを同じ幅と高さにした表示にして、各マスに0と1の数字を並べて、足し算や引き算をして、必要なパターンを作ります。

自動化する際には、Excel上で目で見ながらやっていた操作を、何らかのプログラミング言語で書けばOKです。


みんな、わかった?

Facebookページもよろしくね!