Обнаженное дерево Пифагора
Содержание
Описание
Визуализация фрактала Обнаженное дерево Пифагора на языке программирования JavaScript
Исполнитель: Смирнов Михаил
Группа 3630103/00001 Кафедра Теоретической механики
Визуализация
Введение
Данный курсовой проект “Обнаженное дерево Пифагора” предназначен для ознакомления и понимания фракталов. Сама визуализация фрактала показывает принцип их работы, а также различные вариации данного фрактала "Обнаженное дерево Пифагора".
Актуальность
Актуальность темы обусловлена следующим. Мир фракталов очень разнообразен. Фракталы окружают нас повсюду: в природе, их используют в науке, в компьютерных технологиях, в экономике, в медицине.
Теория
Дерево Пифагора — разновидность фрактала, основанная на фигуре, известной как «Пифагоровы штаны». Если в классическом дереве Пифагора угол равен 45 градусам, то также можно построить и обобщённое дерево Пифагора при использовании других углов. Такое дерево часто называют обдуваемое ветром дерево Пифагора. Если изображать только отрезки, соединяющие каким-либо образом выбранные «центры» треугольников, то получается обнаженное дерево Пифагора.
Алгоритм построения:
1) Строим вертикальный отрезок
2) Из верхнего конца этого отрезка рекурсивно строим еще 2 отрезка под определенными углами
3) Вызываем функцию построения двух последующих отрезков для каждой ветви дерева
Особенности реализации
Код программы на Javascript
function drawLine(x, y, ln, angle) { context.moveTo(x, y); context.lineTo(Math.round(x + ln * Math.cos(angle)), Math.round(y - ln * Math.sin(angle))); } // Функция рисует дерево function drawTree(x, y, ln, minLn, angle) {
var n2; n2 = document.getElementById('a2').value; var n3; n3 = document.getElementById('a3').value;
if (ln > minLn) { ln = ln*0.75 ;//на сколько уменьшается линия drawLine(x, y, ln, angle); x = Math.round(x + ln * Math.cos(angle)); y = Math.round(y - ln * Math.sin(angle)); drawTree(x, y, ln, minLn, angle + n2 * Math.PI / 180); drawTree(x, y, ln, minLn, angle - n3 * Math.PI / 180); } } // Инициализация переменных function init() {
var n1; n1 = document.getElementById('a1').value;
var canvas = document.getElementById("tree"); context = canvas.getContext("2d"); canvas.width = 800; // Ширина холста canvas.height = 550; // высота холста var x = canvas.width / 2; var y = canvas.height; var ln = 180; // начальная длина линии var minLn ; // минимальная длина до которой рисуются линии
minLn = n1;
context.fillStyle = "black"; // цвет фона context.strokeStyle = "green"; //цвет линий context.fillRect(0, 0, canvas.width, canvas.height); context.lineWidth = 1; // ширина линий context.beginPath(); drawTree(x, y, ln, minLn, Math.PI / 2); context.stroke(); }
Вывод
Таким образом, реализация и визуализация фрактала дерево Пифагора оказались успешными, мне удалось выполнить поставленные задачи и также освоить использование новых функций. Подводя итоги, я получил новый и полезный опыт при работе с JavaScript и HTML.