Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
fractal
6 лет назад

Создаем дерево Пифагора средствами Python

Автор: @meskalinerush


Привет, друзья! На прошлом занятии мы рассмотрели структуру дерева Пифагора, как пример систем Линдмайера, и попытались разобраться, что оно собой представляет. А сегодня мы попытаемся его построить самостоятельно с помощью языка программирования Python.

Python – это один из самых популярных языков программирования на сегодняшний день, обладающий широким функционалом. Но у нас нет цели изучать этот язык. Для нас важно построить какой-нибудь фрактал на нем, что мы и будем делать. Знаний языка вам не потребуется, я все расскажу.

  1. Скачиваем Anaconda: https://www.anaconda.com/download/

  2. Устанавливаем. На всякий случай вот описание установки на руссом: http://devpractice.ru/python-lesson-1-install/

  3. После успешной установки идем по следующему пути: C:/ProgramData/Anaconda3/Scripts/

  4. Запускаем jupyter-notebook-script.exe из этой папки. Открывается черное окошко и заполняется текстом:

  1. Ждем. В браузере открывается новое окно с веб-интерфейсом:

  1. Не обращаем никакого внимания на все и жмем New и далее Python 3

  1. Созерцаем новое окно с редактором:

  1. Теперь непосредственно переходим к коду.

Я вам дам готовый код, который вы просто вставите в данное окно, и объясню, как именно он работает.

За знаком # следуют пояснения и комментарии, которые не учитываются компилятором и пропускаются машиной, так как они предназначены для людей, чтобы делать пометки. В комментариях вы можете писать все, что угодно, даже стихи!

Копируем код с самого начала и до конца:

import math 
#Модуль math – один из наиважнейших. 
#Этот модуль предоставляет обширный функционал для работы с числами
from tkinter import * 
#В данном случае эта запись означает, 
#что мы импортируем модуль math из Tkinter 
#Tkinter - кроссплатформенная библиотека 
#для разработки графического интерфейса на языке Python
x=750 #это параметры расположения дерева
y=750
side=100 #сторона квадрата
deep=12  #количество итераций
alfa=math.pi/3
# объявляем функцию для построения дерева, 
# которая принимает на вход заданные выше параметры
def Pyth_tree( x, y, side, fi, alfa, deep, count_deep):
    #эта функция рекурсивно рисует дерево Пифагора
    dx=side*math.sin(fi)
    dy=side*math.cos(fi)
    x1=x+dx
    y1=y-dy   
    x2=x+dx-dy
    y2=y-dy-dx
    x3=x-dy
    y3=y-dx
    x4=x-dy+side*math.cos(alfa)*math.sin(fi-alfa)
    y4=y-dx-side*math.cos(alfa)*math.cos(fi-alfa)
    
    if count_deep<5:
        colour="#"+str(count_deep*20)+"0000"
    elif count_deep<9:
        colour="#00"+str(count_deep*10)+"00"
    else: colour="#009900"
    canv.create_polygon(x, y, x1, y1, x2, y2, x3, y3, fill=colour)
    canv.create_polygon(x3, y3, x2, y2, x4, y4, fill=colour)
     
    if deep>1:
        Pyth_tree(x4, y4, side*math.sin(alfa), fi-alfa+math.pi/2, alfa, deep-1,count_deep+1)
        Pyth_tree(x3, y3, side*math.cos(alfa), fi-alfa, alfa, deep-1,count_deep+1)
#при вызове нижеприведенной команды мы создаем базовое окно приложения
root=Tk();
root.title("Pifagor's tree")
#создание холста
canv = Canvas(root, width = 1600, height = 1200, bg = "lightgreen")
canv.pack() 
canv.create_rectangle(0,1200,1600,1200-y, fill="#ADFF2F")
#рисуем 1 дерево
Pyth_tree(x-100, y-100, side, math.pi/2, alfa*3/4, deep, 1) 
root.mainloop()
  1. Для ознакомления с результатом кода нажимаем на запуск:

Вот какое у нас получилось фрактальное деревцо!

Теперь мы сохраним результат.

И в заключение сохраним его в файл в удобное место на компьютере. Он нам понадобится на следующем уроке.

Надеюсь, теперь вам понятно, как примерно работают наши любимые фрактальные программы. Они похожи на нашу, только немного сложнее. :)

Пост подготовил @meskalinerush для сообщества Fractal

Вы можете найти нас в:
Telegram: https://t.me/joinchat/GZmeKA5cSfYip429CpiMjA
E-mail: fractalteam@mail.ru
Также читайте нас в Steemit: https://steemit.com/@fractal-team


Дизайн: @dasarts

31
60.488 GOLOS
На Golos с September 2017
Комментарии (12)
Сортировать по:
Сначала старые