[matplotlibで錯視] 12. 大きさが変わって見える回転する四角形

その他

はじめに

4隅の四角形によって一部が隠れている四角形の回転アニメーションを作成する。

コード

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

解説

モジュールのインポート

データの生成

各種パラメータの生成

anglesは回転する角度で、sizeは4隅の四角の幅と高さを変化させるためのパラメータとなっている。

図の表示

patches.Rectangleにより、4隅の長方形を作成する。xyでは長方形の左下の座標を指定し, widthで幅、heightで高さを設定する。colorで色を設定する。zorderで表示順を設定する。大きいほど前面に表示される。add_patch()により図中に挿入する。
angleを変化させることで長方形が表示される角度が変わるので、長方形の大きさが変化する方向を変えることができる。

回転する正方形はax.fillで作成する。

アニメーションの設定

回転行列を用いて、x,yの座標を回転させて、回転したデータをset_xyで表示されているプロットにセットする。

アニメーションのフレーム数が100を超えてから、set_width, set_heightを用いて4隅の四角の大きさを変化させる。

アニメーションの表示

animation.FuncAnimationにより、フレーム数200、間隔25msとした5秒のアニメーションを作成し、HTML(ani.to_html5_video())でjupyter lab または notebook上に表示する。

参考

ちょっと脳を混乱させたい人の為の6つの面白錯視アニメーション : カラパイア
image credit:lenstore なんとも不思議な錯視の中にはもはやわが目も信じられなくなり混乱をきたしたユーザーが救いを求める現象を招くものもある。  そんな事態に役立ちそうな動画が反響を呼んでいる。うっかりだまされがちな運動系の6つの錯視とその仕組みをきっちり
matplotlib.patches.Rectangle — Matplotlib 3.1.2 documentation

コメント