一日一Python:スピログラフを描いてみる

一日一Python:スピログラフを描いてみる

参考:

[1] python スピログラフを python で描く-(仮)タイトル 備忘録

[2] スピログラフをPythonで再現-BoxHeadRoom

この手の話はSympyを使ってみたい,という事で,Sympyで[1]をなぞってみる.

結論から云えば,代数的な処理をしないので,普通に書いた方がやっぱり良いかも.

Sympyなら色々と変化させるのも楽かなと思ったんだけど.

from sympy import *
from sympy.plotting import plot_parametric
init_printing()
%matplotlib inline

x, y, rc, rm, rd = symbols('x y rc rm rd')
θ = Symbol('θ')
#変数定義より後,式よりも前に変数の値を定義(plot用)
rc = 96
rm = 63
rd = 30

x = (rc - rm) * cos(θ * pi) + rd * cos(θ * pi * (rc - rm) / rm)
y = (rc - rm) * sin(θ * pi) - rd*sin(θ * pi * (rc - rm) / rm)
#x.subs([(rc, 96), (rm, 63), (rd, 30)])
#y.subs([(rc, 96), (rm, 63), (rd, 30)])

plot_parametric(x, y, (θ, 0, 40))

null

他:

null

null

null

null

null

null

null

null

null

色々変えようと思うと,うまく描けない.変な表現かも知れないけど,線の長さが足りていないんだと思う.

x = (96 - 63) * cos(θ * pi) + rd * cos(θ * pi * (96 - 63) / 63)
y = (96 - 63) * sin(θ * pi) - rd *sin(θ * pi * (96 - 63) / 63)
plot_parametric(x, y, (rd, 5, 40), (θ, 0, 100))

null

numpyの例:

null

カテゴリー: 未分類 パーマリンク