仮想計算機構

IT業界と無縁な派遣社員のブログ

【Sage】サイクロイドのアニメーションを作った

サイクロイドのアニメーションを作る。
参考:サイクロイド - Wikipedia

環境

OS:Windows 10
Python 3.7.7
Sage 9.2

用いる式


x=r(\theta-\sin(\theta))\\
y=r(1-\cos(\theta))

プログラム

半径1の円が1回転するまでの様子を描画する。

theta=var('theta')
r=1
ts = [2*pi*(i+1)/30 for i in range(30)]

時刻 t における「サイクロイド」「回転する円」「円の中心とサイクロイドを結ぶベクトル」の3つを描画する。

frames = [arrow((r*t,r),(r*(t-sin(t)),r*(1-cos(t))))
     +circle((r*t,r),radius=r)
     +parametric_plot((r*(theta-sin(theta)),r*(1-cos(theta))),(theta,0,t)) for t in ts]

作成したフレームをanimate関数に渡し、gifファイルとして保存する。

animate(frames,xmin=-0.5,xmax=2*pi+0.5,ymin=-0.5,ymax=2.5).gif(savefile="cycloid.gif")

実行結果