Python Turtle graphicsで渦巻き(Spiral)を描く

最近、Youtubeのチャンネルに2つの動画をアップロードして公開しました。動画は以下のようなPythonのTurtle graphicsで渦巻き模様を描くというものです。


このブログではこの動画の描き方についての簡単な説明していきます。
渦巻きを描く基本となるPythonのプログラミングコードは以下の通りです。

import turtle
import math

r = 1
k = 5
c = 10

i = 0
while  i < 360*c:
    turtle.goto(r*math.cos(math.radians(i))*math.exp(math.radians(i/k)), r*math.sin(math.radians(i))*math.exp(math.radians(i/k)))
    i+=1

turtle.mainloop()

このコードの実行結果は以下のようになります。

渦巻きを描いていく数式は
  • x = r * cosθ * exp(θ/k)
  • y = r * sinθ * exp(θ/k)
としています。指数関数部分が無ければ単に円を描くだけの式ですが、指数関数部分があることでθが増えるとともに円の大きさも増大して渦巻きが形成されます。
(渦巻きにもいろいろ種類があって、この形式のものは対数螺旋と呼ばれるようです)

動画ではこの基本形に手を加えて複数の渦巻きを同時に描くようにしています。Turtle graphicsはプログラミングの練習として簡単な図を描くのに用いられることが多いですし、条件を変えながら描いていくと意外におもしろいものがかけたりもします。
Pythonが使えるようならTurtle graphicsはすぐ使えるので、ものは試しに遊んでみてはいかがでしょう。
(Ubuntuの場合、python3-tkのパッケージをインストールする必要があるかも)


コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)