Python
Anaconda
Spirograph

スピログラフをPythonで書いてみる

環境

できたもの

n25_h50.png

n50_h100.png

数式

こちらを参考にしました。
-"正多角形とスピログラフの数式"

以下のように実装しました。

計算式実装.py
def get_spirograph(n,h):
    x = []
    y = []
    for idx in range(100000):
        x.append(func_x(t_radian(idx),n,h))
        y.append(func_y(t_radian(idx),n,h))
    return x,y

def func_x(t,n,h):
    ans = 0
    ans = ((n-1)*np.cos(t) + h*np.cos((n-1)*t))/n 
    return ans

def func_y(t,n,h):
    ans = 0
    ans = ((n-1)*np.sin(t) + h*np.sin((n-1)*t))/n 
    return ans

実際にグラフに描かれると面白い

上記の数式がなぜスピログラフを表すことになるのかはさっぱりわかりません。が、子供のころにくるくるやったきれいなグラフが描かれると楽しいです。