python turtle 기반 기하학 적 도형 그리 기

1.터 틀 이란 무엇 인가
turtle 은 사람 이 천 을 그리 기 전에 그림 을 그 리 는 과정 을 모 의 했다.펜(Pen)한 자루,붓(pendown),붓 을 움 직 여 그림 을 그리고 색칠 을 하 는 등 이다.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)는 화필 이 앞으로 이동 하 는 것 을 의미한다.
  • 화필 색상:color('red','yellow'),첫 번 째 red 는 화필 색 을 나타 내 고 yellow 는 충전 색 을 나타 낸다
  • 충전 범위:beginfill()과 endfill()사이 의 부분
  • 화필 의 이동:forward 는 앞으로 몇 거리 이 고 left 는 왼쪽 각도 이 며 이에 대응 하 는 것 은 뒤로 backward 와 오른쪽으로 right 입 니 다.goto()는 특정한 좌표 값
  • 으로 이동 합 니 다.
  • 화필 의 현재 속성:예 를 들 어 위치 pos()즉 바다거북 의 현재 좌표(x,y),그리고 방향 각도 값:heading()
  • 화필 의 제어:penup 과 pendown,기본 화필 은 pendown 상태 에서 이동 이 있 으 면 캔버스 에 도형 을 그립 니 다.위 치 를 조정 해 야 한다 면 다른 위치 에서 붓 을 내 려 야 합 니 다.먼저 penup 이 필요 합 니 다.그렇지 않 으 면 화필 을 이동 할 때 도 선 이 나 옵 니 다.이것 은 현실 에서 그림 을 그 리 는 것 과 같다.
  • 붓 의 가시 성:정상 적 인 상황 에서 붓 을 그 릴 때 화살표 모양 은 hidturtle()과 showturtle()을 통 해 붓 을 숨 기 고 표시 할 수 있 습 니 다.
  • Screen 중요 동작:
  • 배경 색 설정:bgcolor("white")
  • 3.기타 turtle 기능
    위의 예 에서 turtle 의 상용 기능 함수 와 관련 된 것 을 제외 하고 중요 한 기능 도 있다.
  • 원형 circle()앞의 예 는 직선 적 인 예(직선 은 삼각형,다각형 등 을 구성 할 수 있다)를 보 여 주 었 고,또 다른 중요 한 도형 은 원형 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()
  • radius:반지름,radius 가 플러스 이면 시계 반대 방향 으로 원 호 를 그립 니 다.그렇지 않 으 면 시계 방향
  • 으로 갑 니 다.
  • extent:부분의 원 을 그 릴 지 여 부 를 나타 낸다.예 를 들 어 반원 은 180 이 고 기본 값 은 전체 원
  • 이다.
  • steps:원 을 그 리 는 데 몇 개의 다각형 으로 그 리 는 지 나타 낸다.원 은 사실 무한 여러 개의 다각형 으로 비슷 하 게 얻 을 수 있다.그러나 일반적으로 어느 정도 다각형 이면 육안 으로 원 을 이 루 는 폭 은 매 끄 러 운
  • 이다.

    태극 도 는 2 개의 작은 반원 과 2 개의 큰 반원,그리고 2 개의 더 작은 정원 으로 구성 되 어 있 음 을 알 수 있다.
  • 애니메이션 이 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 의 로고 언어 turtle 라 이브 러 리 를 공유 하여 그림 과 애니메이션 을 그 릴 수 있 습 니 다.총 결 은 다음 과 같다.
  • turtle 두 가지 중요 한 요소:캔버스 Screen 과 화필 Turtle
  • 기본 값 은 현재 하나의 붓 입 니 다.turtle.Pen()은 여러 개의 붓 을 설명 합 니 다.
  • 화필 속성:색상 color,대소 pensize,위치 pos
  • 화필 충전:beginfill()과 endfill()
  • 화필 이동:앞 뒤 forward 와 backward,각도 left 와 right
  • 원형 화필:circle
  • 화필 제어:penup 과 pendown
  • 애니메이션 제어:update 와 trace 추적
  • 6.참고 자료
    https://docs.python.org/zh-cn/3/library/turtle.html #
    이상 은 python 이 turtle 을 바탕 으로 기하학 적 도형 을 그 리 는 상세 한 내용 입 니 다.python turtle 이 기하학 적 도형 을 그 리 는 것 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기