はじめに
本記事では、白黒の縞模様を背景にした「足踏みアニメーション」という錯視を再現します。このアニメーションでは、同じスピードで伸びる棒が、背景の縞模様の影響で異なる速度で動いているように見える現象を扱います。matplotlibを使って、この錯視効果を視覚的に表現する方法を解説します。
コード
解説
モジュールのインポート
図の生成
縞模様の作成
複数の横長長方形を表示するために、axhspanをリスト内包表記で繰り返しプロットします。これにより黒とグレーの縞模様の背景を作成します。
各色の長方形を表示
patches.Rectangleを使用して、各色の長方形を作成します。xy引数で長方形の左下の座標を指定し、widthで幅、heightで高さを設定します。fcで色を指定し、ax[0].add_patch()メソッドによって図に長方形を追加します。
右図のax[1]には、ストライプ模様を表示せずに、棒のみを表示します。
表示範囲の設定
ax[0].axis(‘off’)で軸を非表示にできます。
アニメーションの設定
set_heightにより、棒の高さを変化させます。return figとする必要があります。
アニメーションの表示
animation.FuncAnimationにより、フレーム数100、間隔50msとした5秒のアニメーションを作成し、HTML(ani.to_html5_video())でjupyter lab or notebook上に表示します。
まとめ
本記事では、白黒のストライプを背景にして伸びる棒のアニメーションが、実際には同じ速度で動いているにもかかわらず、異なる速度に見える錯視効果をmatplotlibで実装しました。この「足踏みアニメーション」と呼ばれる錯視は、背景のパターンが人間の動きの知覚に影響を与えることを示しています。このような錯視を通じて、私たちの視覚システムの特性について学ぶことができます。
参考

ちょっと脳を混乱させたい人の為の6つの面白錯視アニメーション | カラパイア
なんとも不思議な錯視の中にはもはやわが目も信じられなくなり混乱をきたしたユーザーが救いを求める現象を招くものもある…
matplotlib.patches.Rectangle — Matplotlib 3.1.2 documentation
matplotlib.axes.Axes.axhspan — Matplotlib 3.1.2 documentation
コメント