リスト6.7(p.206)と同じ処理です. numpy ライブラリを使うのでインストールしておきましょう.
import numpy as np
# ローターの大きさを半径で指定
R=50.0
# ステーショナリギアとインナーギアの中心差分を指定
e=10.0
# 分割数
s=120.0
t=2.0*np.pi/s
for q in np.arange(0.0, 2.0*np.pi*3.0, t):
q3 = q / 3.0
px = e * np.cos(q) + R * np.cos(q3)
py = e * np.sin(q) + R * np.sin(q3)
print(str(px)+','+str(py))
ついでに結果をグラフ化してみます. matplotlib ライブラリが必要です.
import numpy as np
import fileinput
import matplotlib.pyplot as plt
dx, dy = np.loadtxt(fileinput.input(), delimiter=',', unpack=True)
plt.plot(dx, dy, c='k')
plt.axhline(0, linewidth=2)
plt.axvline(0, linewidth=2)
plt.show()
p.206 の実行例6.8 では Excel に読ませるためファイル(CSV)に出力しましたが,
py rotary.py | py graph.py
とすると,以下のようなグラフを出力します.
matplotlib はグラフ作成には必須のライブラリなので,ぜひご活用ください.