pythonはturtleに基づいて幾何学図形を描きます。


1.turtleとは何ですか
turtleは人がキャンバスの前で絵を描く過程を模擬しました。ペンをあげます。下書きします。ペンを動かしてあなたの図形を描きます。そして色を塗ります。turtleはいくつかの簡単な命令を提供しています。彼らの順番を組み合わせることによって、辛抱強くさえあれば、turtleは驚くべき作品を描いて、子供たちを導いてプログラムを学ぶのに適しています。
まず作品を感じてみます。

2.turtleの例
簡単な例を通してturtleの基本的な操作を理解します。

import turtle

# screen       
canvas = turtle.Screen()
canvas.bgcolor("white")

#     
pen = turtle.Pen()
pen.hideturtle()
pen.color('red', 'yellow')

#         ,     
pen.begin_fill()
while True:
    pen.forward(200)
    pen.left(170)
    if abs(pen.pos()) < 1:
        break
pen.end_fill()

#   ,     ,      
pen.penup()
pen.goto(-100, -100)
pen.pendown()

for i in range(5):
    pen.forward(30) #  300  
    pen.right(144) #  144 

turtle.done()

上からturtleには画筆Turtleと画布Screenの二つの部分があり、TurtleはScreenの上を移動して作画していることが分かります。
なお、turtleの開始位置は(0,0)であり、カンバスの中心に位置し、左と下の座標は負である。
ブラシTurtleの重要操作:
  • 画筆で説明します。もしペンにたくさんの絵筆があるなら、turtle.Penを説明してください。そうでないと、デフォルトは画筆です。説明する必要はありません。turtle.forward(50)は画筆が前に移動することを表しています。
  • ブラシの色:カラー、最初のredはブラシの色を表し、yellowは塗りつぶし色
  • を表します。
  • 充填範囲:begin_fill()とend_fill()間の部分
  • のペンの移動:forwardはどれぐらいの距離ですか?leftは左の角度で、これに対応するのはバックバックパッカーと右のrightです。goto()は、ある座標値に移動する
  • です。
  • ブラシの現在の属性:例えば、位置pos()は海亀の現在の座標(x,y)であり、また、角度値:heading()
  • に向かっている。
  • ブラシのコントロール:penupとpendown、デフォルトのブラシは、ペンの状態では、移動があれば、キャンバスに図形を描画します。位置を調整する必要があれば、他の位置でペンを押す必要があります。そうでなければ、ペンを移動する時にも線が出てきます。これは現実の絵と同じです。
  • ブラシの視認性:通常の場合、ペンを描く時の矢印の形は、hideturtle()とshowturtle()によって隠して表示することができます。
  • Screen重要な操作:
  • 背景色を設定する:bgカラー(「ホワイト」)
  • 3.他のturtle機能
    上記の例に加えて、turtleの一般的な機能関数にも関わる重要な機能があります。
  • 円形circele()の前の例は直線の例(直線は三角形、多角形などを構成することができます)を示しています。もう一つの重要な図形は円形turtle.circle(radius、extent=None、steps=None)です。
  • 太極拳の例を見に来ました。
    
    import turtle
    from turtle import *  # turtle       
    radius = 100     #   100
    color("black", "black")  #      ,      
    begin_fill()  #    
    circle(radius/2, 180)  #     ,   50,180°
    circle(radius, 180)  #     ,   100,180°
    left(180)  #  180°
    circle(-radius/2, 180)  #     ,  50,180°
    end_fill()  #    
    #              ,      
    left(90)#   90°,          
    penup()#  ,    
    forward(radius*0.35)#  ,   0.35=35  
    right(90)#   90°,           
    pendown()#  ,    
    #              
    color("white", "white")#       ,       
    begin_fill()#    
    circle(radius*0.15)#     ,   0.15=15  (35+15+15+35=100)
    end_fill() #    
    
    left(90)#   90°
    penup()#  ,    
    backward(radius*0.7)#     ,    0.7=70,            
    pendown()#  ,      
    left(90)#  90°,            
    #               
    color("black", "black")#       ,     
    begin_fill()#    
    circle(radius*0.15)#       ,   0.15=15   
    end_fill() #    
    
    right(90)#   90°,            
    penup()#  ,    
    backward(radius*0.65)#      0.65=65   ,               
    right(90)#  90°,           
    pendown()#  ,      
    circle(radius, 180)#     ,  100,180°,            
    hideturtle()#    hideturtle
    turtle.done()
  • ラジディウス:半径、ラジディウスは正の値で反時計回りに円弧を描き、そうでなければ時計回りに
  • を描きます。
  • extent:描くかどうかの部分の円を表しています。半円は180円で、デフォルトは丸
  • です。
  • steps:円を描くにはいくつかの多角形を使うという意味です。円は無限の多角形で近似されます。しかし、一般的には、ある程度の多角形は、肉眼では円の大きさが滑らかな
  • です。

    太極図は二つの小さな半円と二つの大きな半円と二つの小さな丸で構成されていることが分かります。
  • アニメーション制御turtleが画像を描く過程は実はダイナミックで、一部の画面を描くごとに一つのビデオフレームとして理解でき、動画を描き終わると終了します。だから、turtleは図形を描く以外に、アニメーションのデモンストレーションやインタラクティブゲームをすることもできます。次の例で説明します。
  • 
      import turtle, time
      #        
      turtle.tracer(0)
    
      #    
      wall = turtle.Pen()
      wall.pencolor('red')
      wall.pensize(10)
      wall.hideturtle()
      wall.penup()
      wall.goto(-300, -200)
      wall.pendown()
      wall.forward(600)
    
      #   
      R = 15
      ball = turtle.Turtle('circle')
      ball.shapesize(R / 10)
      ball.penup()
      pos_x, pos_y = [100, 100]
      pos_x, pos_y = ball.pos()
      ball.goto(pos_x, pos_y)
      wall_x, wall_y = wall.pos()
    
      #    
      FPS = 60  #   60 
      G = 0.03  #        
      DRAG = 0.9956 #   
      v_y = 1 #     
    
      while True:
    
          #     
          ball.clearstamps()
    
          v_y += G  #        
          if pos_y - R - 10 < wall_y:  #    
              v_y *= -1
    
          pos_x, pos_y = pos_x, pos_y - v_y
          ball.goto(pos_x, pos_y)
          v_y = v_y * DRAG
    
          #        
          ball.stamp()
    
          #       
          turtle.update()
          time.sleep(1 / FPS)

    4.より多くの例
    バラのカーブ
    
    from turtle import *
    from math import *
    color("red")
    def draw(a,end):
        t=0
        while t<(14*end):
            x=a*sin(t*3.14)*cos(t)
            y=a*sin(t*3.14)*sin(t)
            goto(x,y)
            t=t+0.03
    
    draw(100,3.14)
    done()

    らせん
    
    import turtle
    t=turtle.Pen()
    for x in range(360):
        t.forward(x)
        t.left(59)
    
    done()

    扇子
    
    from turtle import *
    forward(200)
    left(90)
    fillcolor('red')
    begin_fill()
    circle(100,180)
    end_fill()
    left(90)
    forward(100)
    for i in range(17):
        left(10)
        pencolor('yellow')
        forward(100)
        backward(100)
    left(100)
    pensize(10)
    pencolor('red')
    forward(100)
    hideturtle()
    done()

    5.まとめ
    この文章はpythonのlogo言語turtleライブラリを共有しています。絵やアニメを描くことができます。まとめは以下の通りです
  • turtleの2つの重要な要素:キャンバスSreenとブラシTurtle
  • デフォルトは現在1つのブラシで、turtle.Pen()は複数のブラシを説明します。
  • ブラシのプロパティ:カラー、サイズpensize、位置pos
  • ブラシ充填:ベルギーfill()とend_fill()
  • ブラシ移動:前後forwardとbackward、角度leftとright
  • 丸絵筆:circe
  • ブラシ制御:ペンアップとペンダウン
  • アニメーション制御:udateとtrace追跡
  • 6.参考資料
    https://docs.python.org/zh-cn/3/library/turtle.html
    以上はpythonがturtleに基づいて幾何学図形を描いています。詳細はpython turtleの幾何学図形についての資料です。他の関連記事に注目してください。