Дерево Пифагора

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

Де́рево Пифаго́ра — разновидность фрактала, основанная на фигуре, известной как «Пифагоровы штаны».

Дерево Пифагора
Вариация на Дерево Пифагора

Пифагор, доказывая свою знаменитую теорему, построил фигуру, где на сторонах прямоугольного треугольника расположены квадраты. В наш век эта фигура Пифагора выросла в целое дерево. Впервые дерево Пифагора построил А. Е. Босман (18911961) во время второй мировой войны, используя обычную чертёжную линейку. Одним из свойств дерева Пифагора является то, что, если площадь первого квадрата равна единице, то на каждом уровне сумма площадей квадратов тоже будет равна единице.

Если в классическом дереве Пифагора угол равен 45 градусам, то также можно построить и обобщённое дерево Пифагора при использовании других углов. Такое дерево часто называют «обдуваемое ветром дерево Пифагора». А рисуя вместо квадратов линии, можно получать картинки, очень похожие на настоящие деревья.

Дерево Пифагора строится рекурсивно. Ниже приведен код программы для рисования дерева (язык ЛОГО):

# Рисуем дерево Пифагора
сброс
#Высота холста. Рисунок будет ей пропорционален
Разм = 600
нов_размер_холста Разм*1.5, Разм
#Цвет неба
нов_цвет_холста 230, 255, 255
иди 0, Разм-9
#Ширина и цвет земли
нов_ширина_пера 20
нов_цвет_пера 24, 118, 30
направление 90
вперёд Разм*1.5
 
#Функция, рисующая квадрат с треугольником
#Параметры - ширина квадрата, "глубина" элемента
выучи ПШ ширина, номер [
	нов_ширина_пера 7 - номер/2
	нов_цвет_пера 49+номер*4, 41+номер*16, 25+номер*4
	перо_опусти
	# Рисуем квадрат
	повтори 4 [
		вперёд ширина
		налево 90
	]
	вперёд ширина
	#Рисуем треугольник
	налево 45
	вперёд 1.4142*ширина/2
	налево 90
	вперёд 1.4142*ширина/2
	#Перемещаемся в начало следующего квадрата
	перо_подними
	налево 135
	вперёд ширина
	налево 45
	#"Глубина" элемента
	номер = номер + 1
	#Если глубина рекурси меньше 10, то рисуем
						#следующий элемент
	если (номер <10) [
		#Рисуем правую ветвь
		ПШ ширина / 1.4142, номер
		направо 90
		#Рисуем левую ветвь
		ПШ ширина / 1.4142, номер
		налево 45
		вперёд ширина
		налево 45
	]
	#Возвращаемся в начало квадрато
	налево 135
	вперёд ширина
	налево 90
	вперёд ширина
	номер = номер - 1
]
 
#Перемещаемся к точке, откуда рисуем дерево
иди Разм*0.75+Разм/8.2, Разм-10
направление 0
#Рисуем дерево (Можно вызвать столько раз,
		#сколько нужно нарисовать деревьев
ПШ Разм/4.1, 0
спрячь