Раздел «Язык Си».PythonFractalDragon:

Пример: Кривая дракона (генерация последовательностей)

Написать функцию, которая строит кривую дракона глубины n.

t12_dragon_iter.png

Можно подойти к построению кривой по-другому. Запишем правила создания кривой как "что-то заменить на другое"

# -*- coding: utf-8 -*-
import turtle           
import time
import math

def gen(size, n):   # Первый отрезок обозначим как АF
  t.fd(size)
  A(size, n-1)
  
def A(size, n):
  if n==0:          # A не рисуем никак
    return
                    # из А получаем A+BF+
  A(size, n-1)      # A
  t.right(90)       # +
  B(size, n-1)      # B
  t.fd(size)        # F
  t.right(90)       # +
    
def B(size, n):
  if n==0:          # B не рисуем никак
    return
                    # из В получаем −FA−B
  t.left(90)        # -
  t.fd(size)        # F
  A(size, n-1)      # A
  t.left(90)        # -
  B(size, n-1)      # B
  
t = turtle.Turtle()
t.shape("turtle")
t.width(3)
t.speed(0)
t.color('blue')

gen(10, 10)     # правила применили глубиной 10

t.hideturtle()
turtle.done()

Attachment sort Action Size Date Who Comment
t12_dragon_iter.png manage 20.1 K 13 May 2017 - 20:14 TatyanaDerbysheva  
e12_dragon.png manage 4.5 K 16 May 2017 - 21:24 TatyanaDerbysheva