[matplotlib animation] 102.クロソイド曲線

matplotlib

はじめに

クロソイド曲線をsympyとmatplotlibのFuncAnimationで表示する方法について説明する。

解説

モジュールのインポート

バージョン

Sympyで積分を計算

始点の座標を原点とすると、クロソイド曲線の座標は以下の式で表される。

\[{\left\{
\begin{array}{}
x(t) = \int_0^t cos (\frac{θ^2}{2})dθ\\
y(t) = \int_0^t sin (\frac{θ^2}{2})dθ
\end{array}
\right.\\
}\]

この式をsympyのintegrateで解くと以下のようになる。

座標データの生成

np.arange(-4*np.pi, 4*np.pi, 0.05)で角度を変化させて、各角度における座標を得られた式で求めていく。求めた座標はリストへ追加していく。

クロソイド曲線の表示

アニメーションで表示

clo, = ax.plot(xx[0], yy[0],"C5-")でプロットを作成し、clo.set_data()により、データを更新していくことでアニメーションとする。

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

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

参考

クロソイド曲線 - Wikipedia
Integrals - SymPy 1.13.2 documentation
【Python】高速道路のIC/JCTは本当にクロソイド曲線状に建設されているのか?検証してみた - Qiita
はじめにこの記事は、趣味で宇宙開発を行う団体「リーマンサット・プロジェクト」の新春アドベントカレンダーです。私は当団体にて、月面探査などの用途に使用するローバーのソフトウェア開発を担当しています。…
scipy.special.gamma — SciPy v1.14.1 Manual
フレネル積分 - Wikipedia

コメント