PythonのTurtleモジュールで猫のイラストを描く手法

基本設定と背景描画

以下のコードはTurtleグラフィックスを用いた猫のイラスト作成手順を示します。環境はPython 3.8以上と仮定し、描画パラメータを最適化しています。

import turtle as trt

# 画面初期設定
trt.setup(500, 500)
trt.speed(0)
trt.bgcolor("lightgray")

# 顔外周の青円
trt.pensize(8)
trt.hideturtle()
trt.fillcolor("#00A1E8")
trt.begin_fill()
trt.circle(120)
trt.end_fill()

目と鼻の詳細描画

目玉の楕円形状は動的ステップ制御で実装します。角度ごとの進み方を変化させることで自然なカーブを表現します。

# 顔内側の白円
trt.penup()
trt.goto(0, 20)
trt.pensize(3)
trt.fillcolor("white")
trt.begin_fill()
trt.circle(100)
trt.end_fill()

# 鼻の赤円
trt.penup()
trt.goto(0, 134)
trt.pensize(4)
trt.fillcolor("#EA0014")
trt.begin_fill()
trt.circle(18)
trt.end_fill()

# 左目描画ロジック
trt.penup()
trt.goto(-30, 160)
trt.pensize(4)
trt.color("black", "white")
trt.begin_fill()
step = 0.4
for angle in range(120):
    if angle < 30 or 60 <= angle < 90:
        step += 0.08
    else:
        step -= 0.08
    trt.left(3)
    trt.forward(step)
trt.end_fill()

口と装飾要素

口の曲線は複合円弧で構成します。複数の円弧セグメントを組み合わせることで滑らかな形状を実現します。

# 口の赤い部分
trt.penup()
trt.goto(-70, 70)
trt.pensize(6)
trt.color("black", "red")
trt.setheading(-60)
trt.begin_fill()
trt.circle(80, 40)
trt.circle(80, 80)
trt.end_fill()

# 上唇ライン
trt.penup()
trt.goto(-80, 70)
trt.pendown()
trt.forward(160)

# 鈴の詳細
trt.penup()
trt.goto(0, -46)
trt.pensize(3)
trt.color("black", "#f8d102")
trt.begin_fill()
trt.circle(25)
trt.end_fill()

# 描画終了処理
trt.hideturtle()
trt.done()

ヒゲの精密制御

左右のヒゲは対称性を考慮した角度設定で描画します。各ヒゲの開始位置をY軸でオフセットし、個別に角度を調整します。

def draw_whiskers(start_y, angle_offset, direction):
    """ヒゲの描画汎用関数"""
    for i in range(3):
        trt.penup()
        trt.goto(0, start_y - i*10)
        trt.pensize(3)
        trt.pencolor("black")
        trt.pendown()
        trt.left(angle_offset + i*4 * direction)
        trt.forward(80)

# 右側ヒゲ (正の角度)
draw_whiskers(124, 10, 1)
# 左側ヒゲ (180度オフセット)
draw_whiskers(124, 170, -1)

タグ: turtle-graphics python-drawing vector-illustration

6月10日 17:34 投稿