Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/104: Рейтинг темы: голосов - 104, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 09.09.2014
Сообщений: 4

Нарисовать дерево Пифагора

09.09.2014, 16:54. Показов 23134. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
господа, по заданию нужно нарисовать дерево пифагора.
код я вроде бы написал, но работает очень некорректно.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import turtle
import math
 
def piphagor_tree(x, y, side, angle_alfa, angle_fi, deep):
    turtle.degrees()
    if deep>1:
        turtle.penup()
        turtle.goto(int(x),int(y))
        turtle.pendown()
        x_next =int( x + side*math.cos(int(angle_fi)))
        y_next =int( y + side*math.sin(int(angle_fi)))
        turtle.goto(int(x_next),int(y_next))
        x = x_next
        y = y_next
        piphagor_tree(x,y,side, angle_fi+math.pi/angle_alfa,angle_alfa,deep-1)
        piphagor_tree(x,y,side,angle_fi-math.pi/angle_alfa,angle_alfa,deep-1)
 
 
side = 1
angle_alfa = 30
angle_fi = 45
deep = 10
x = 100
y = 400
 
turtle.reset()
turtle.color("red")
 
piphagor_tree(x,y,side,angle_alfa,angle_fi,deep)
 
turtle.done()
На питоне пишу недавно, прошу указать на ошибки
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2014, 16:54
Ответы с готовыми решениями:

Нарисовать дерево Пифагора, используя рекурсию
чет ни как не могу подружиться с рекурсией=( на Паскале тоже ее не любил=) помогите пожалуйста нарисовать дерево Пифагора... вот что...

Нарисовать дерево Пифагора, используя рекурсию
чет ни как не могу подружиться с рекурсией=( на Паскале тоже ее не любил=) помогите пожалуйста нарисовать дерево Пифагора... вот что...

Дерево Пифагора
Хочу разобраться в коде. Мне не понятна эта строка: LineTo(x1 + Round(l * sqrt(2) * cos(a1 + pi / 4)), y1 - Round(l * sqrt(2) * sin(a1 +...

5
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
10.09.2014, 07:57
Если верить именам переменных, то side для новых квадратов должна уменьшаться. Кроме того, они должны быть разные, в общем случае.
Ну и менять параметры (x и y) - это дурной тон.
0
0 / 0 / 1
Регистрация: 09.09.2014
Сообщений: 4
11.09.2014, 02:08  [ТС]
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Вроде разобрался, вот результат
раскритикуйте говнокод, пожалуйста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!usr/bin/env python3
import math
from tkinter import *
 
def exit_(event):
    """Выход при нажатии ctr+z"""
    root.destroy()
 
def draw_tree( x, y, side, fi, alfa, deep, count_deep):
    """Рекурсивно рисует дерево пифагора"""
    x1=x
    y1=y
 
    dx=side*math.sin(fi)
    dy=side*math.cos(fi)
 
    x2=x+dx
    y2=y-dy
 
    x3=x+dx-dy
    y3=y-dy-dx
 
    x4=x-dy
    y4=y-dx
 
    x5=x-dy+side*math.cos(alfa)*math.sin(fi-alfa)
    y5=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(x1, y1, x2, y2, x3, y3, x4, y4, fill=colour)
    canv.create_polygon(x4, y4, x3, y3, x5, y5, fill=colour)
 
    if deep>1:
        draw_tree(x5, y5, side*math.sin(alfa), fi-alfa+math.pi/2, alfa, deep-1,count_deep+1)
        draw_tree(x4, y4, side*math.cos(alfa), fi-alfa, alfa, deep-1,count_deep+1)
 
#инициализация окна
root=Tk();
root.title("Pifagor's tree")
root.bind('<Control-z>',exit_)
#создание холста
canv = Canvas(root, width = 1800, height = 1200, bg = "lightblue")
canv.pack()
 
x=600
y=650
side=100
deep=15
alfa=math.pi/3
 
canv.create_rectangle(0,1200,1800,1200-y, fill="#ADFF2F")
 
draw_tree(x/2-100, y-100, side/2, math.pi/2, alfa*3/4, deep, 1)
draw_tree(x, y, side, math.pi/2, alfa, deep, 1)
 
root.mainloop()
Миниатюры
Нарисовать дерево Пифагора  
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
11.09.2014, 06:58
Красивенько
В принципе, нормально. По мелочи можно придраться, но лень.
0
119 / 103 / 53
Регистрация: 13.04.2014
Сообщений: 233
12.09.2014, 23:29
Python
1
2
colour="#"+str(count_deep*20)+"0000"
colour="#%s0000" % cout_deep*20
Так питоничней, более читабильно и быстрее работает.
0
0 / 0 / 1
Регистрация: 09.09.2014
Сообщений: 4
15.09.2014, 01:08  [ТС]
а не подскажите, где можно почитать про питоничные способы вывода?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.09.2014, 01:08
Помогаю со студенческими работами здесь

Дерево Пифагора
Нужно создать код на Windows Forms Дерево Пифагора.

Дерево Пифагора
Нужно под код сделать блок-схему using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

Фрактал «Дерево Пифагора 1»
Здравствуйте! Помогите, пожалуйста, разработать приложение для рисования фрактала – объекта, в точности совпадающего с частью себя самого....

[GameLogo] Дерево Пифагора
Здравствуйте! Вот есть код программы для среды GameLogo. Можете подсказать можно ли как-то иначе ещё написать его для дерева Пифагора?...

Фрактал Дерево Пифагора
Вот что получилось. Проблемы: 1) Нет вывода, то есть просто чёрное окно 2) Что ещё не так подскажите Спасибо #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru