Python turtleで幾何学図形を描く

Python学習【365日チャレンジ!】306日目のマスターU(@Udemy11)です。

ネットショップでは福袋のシーズンに突入し、魅力的なアイテムが詰まった福袋がたくさん販売されていますが、どれもいまいち決め手を欠くんですよね。

福袋を物色していると、入っている商品の値段にお買い得感があって、さらに抽選で高額商品が当たるくじが入っている興味をひかれる福袋を見つけて購入しました。

昨日その福袋が届いたので、中身を確認すると、残念ながらくじは外れてしまいました。

お得にものを買えたということで、良しとしましょうか。

それでは今日も、Python学習を始めましょう。

昨日の復習

昨日は、子供向けグラフィックツールのturtleを学習しました。

対話型シェルを使ってグラフィックツールのturtleを使ってみましたが、かんたんに線や円などを描くことができました。

いろいろなメソッドが用意されているので、いろいろと試してみてください。

くわしくは昨日の記事をごらんください。

今日は、大人も楽しめるturtleを使った幾何学模様の描写方法を学習します。

forwardとright

forループ、forwardrightを使って図形を書いてみます。

import turtle

for _ in range(18):
    turtle.forward(100)
    turtle.right(100)
turtle.done()

今回はPycharmで実行していますが、最後にturtle.done()を記述していないとプログラムが終了して、描写ウインドウが閉じてしまいます。

出力結果

colorとfill

colorbegin_fillend_fillを使って先程書いた図形に色を付けてを書いてみます。

import turtle

turtle.color('red', 'blue')

turtle.begin_fill()
for _ in range(18):
    turtle.forward(100)
    turtle.right(100)
turtle.end_fill()

turtle.done()

colorの第1引数が線の色で、第2引数が中の色を指定して、指定する描写をbegin_fillend_fillで挟んでいます。

出力結果

星を描く

次に角度を調整して、広がる星を書いてみましょう。

import turtle

turtle.color('red', 'blue')

turtle.begin_fill()
for i in range(5 * 5):
    turtle.forward(100 + i * 20)
    turtle.right(360 / 5 * 2)
turtle.end_fill()

turtle.done()

線と内部の色は同じで、5回の繰り返しを5回分繰り返して回数の分だけ少しずつ線を伸ばすことで、星を広げながら書いていきます。

8行目の360 / 5 * 2は、描写する線の角度が星の一つの角の角度になるように、ポインターの向きを変える値になります。

出力結果

バラを描く

角度と直線をを少しずつ変えてバラを描いてみます。

import turtle

turtle.color('red','pink')

turtle.begin_fill()
for i in range(50):
    turtle.forward(100 + i * 5)
    turtle.right(360 / 4 + 10)
turtle.end_fill()

turtle.done()

線を赤にして塗りつぶしをピンクにして、直線を繰り返しの回数×5の長さを加えつつ、直角に10度ずつ加えて線を描写します。

360 / 4のままだと四角になりますが、10度加えて長さを少しずつ変えていき、最後にピンクで塗りつぶすことで、ピンクのバラを描くことができます。

出力結果

まとめ

直線と角度だけの変化で色々と幾何学的な図形を描くことができます。

角度を少し変えたり、直線の長さを変えたり、circleを使って円を入れてみたりして、どんな形になるのか想像しながら、幾何学図形を描けば、想像力も向上すること間違いなしです。

線を描くというだけですが、楽しく絵を描くことができるので、ぜひいろいろな図形を描写してみてください。

それでは、明日もGood Python!