16306

Построить фрактал треугольник Серпинского

Домашняя работа

Информатика, кибернетика и программирование

Построить фрактал треугольник Серпинского Самым знаменитым примером площадного геометрического фрактала является треугольник Серпинского строящийся путем разбиения треугольника необязательно равностороннего – средними линиями на четыре подобных треугольника и

Русский

2013-06-20

40.5 KB

18 чел.

Построить фрактал треугольник Серпинского

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

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

Алгоритм построения треугольника Серпинского довольно прост:
1) строится большой внешний треугольник (А);
2) строится треугольник, получающийся при соединении середин сторон большого треугольника (Б);
3) строятся треугольники, получающиеся аналогично элементу Б, но в качестве большого треугольника берутся треугольники,
образованные элементами А и Б.
Изображение состоит из однотипных элементов, связанных между собой зависимостью каждого следующего элемента от координат предыдущего.

Данная программа позволяет рисовать изображение в зависимости от введённого пользователем n уровней.

Uses Crt,Graph;

{$S+}

Var x1,y1,x2,y2,x3,y3, a,b,n: integer;

{процедура, которая делит внешний треугольник на части в зависимости от заданного n. Эта процедура выполняется до тех пор пока n не станет равное 0}

PROCEDURE TRI(x1,y1,x2,y2,x3,y3, N: integer);  

Var x12,y12,x23,y23,x31,y31: integer;

Begin If N=0 then EXIT;

 

      x12:=(x1+x2) div 2;    y12:=(y1+y2) div 2; { вычисление координат нового треугольника}

      x23:=(x2+x3) div 2;    y23:=(y2+y3) div 2;

      x31:=(x3+x1) div 2;    y31:=(y3+y1) div 2;

      setcolor(15-n); delay(25000);

MoveTo(x31,y31); LineTo(x12,y12); {выводна экран нового треугольника}

                LineTo(x23,y23);

                LineTo(x31,y31);

if keypressed then halt;

TRI(x1,y1,x12,y12,x31,y31, N-1);

TRI(x2,y2,x12,y12,x23,y23, N-1);

TRI(x3,y3,x31,y31,x23,y23, N-1)

 end;

Begin write('n= ');readln(n);  {пользователем вводится колличество уровней n}

     a:=detect;b:=detect;     {подключение графики}

     InitGraph(a,b,'c:\lg\bgi');

x1:=320; y1:=0; x2:=639; y2:=479; x3:=0; y3:=479; {координаты боьшого внешнего треугольника (А)}

Moveto(x1,y1);   Lineto(x2,y2);     {на экран выводится внешний треугольник}

                LineTo(x3,y3);

                LineTo(x1,y1);

outtextxy(10,10,'Press any key for exit ...');

TRI(x1,y1,x2,y2,x3,y3, n);   {вызов процедуры}

ReadKey;  CloseGraph; end.

 


 

А также другие работы, которые могут Вас заинтересовать

6181. Транспортна логістика 102.5 KB
  Транспортна логістика План Сутність і задачі транспортної логістики. Вибір виду транспортного засобу. Складання маршрутів руху транспорту. Транспортні тарифи та правила їх застосування. Сутність і задачі транспортної ло...
6182. Создание и редактирование программ в интегрированной среде разработки Turbo Pascal 7.0 (MS-DOS) 63 KB
  Создание и редактирование программ в интегрированной среде разработки Turbo Pascal 7.0 (MS-DOS) Цель: Изучить теоретическую часть, изложенную в разделе Теоретические сведения данной работы и в конспекте лекций. Работая непосредственно ...
6183. Выполнение и отладка программ в интегрированной среде программирования Turbo Pascal (MS-Dos) 198.5 KB
  Выполнение и отладка программ в интегрированной среде программирования Turbo Pascal(MS-Dos) Цель лабораторной работы - выработать навыки практического использования интегрированных сред программирования с целью выполнения и отладки программ на...
6184. Дослідження цілих типів даних 86.5 KB
  Дослідження цілих типів даних Мета лабораторної роботи - дослідити та вивчити систему напередвизначених типів мов Паскаль та Сі, устрій значень напередвизначених типів та операції над значеннями цих типів. Теоретичні відомості Програмні об'єкти...
6185. Дослідження дійсних типів даних 62 KB
  Дослідження дійсних типів даних Теоретичні відомості Змінні дійсного типу можуть містити числа з дробовою частиною. Такі дані можуть бути представлені у двох формах: стандартної десятинній або експоненціальній. Зображення стандартної десятинної форм...
6186. Исследование арифметических операций и математических функций для работ из программными объектами 247.5 KB
  Составить схему алгоритма и написать программу вычисления функции при заданных значениях Алгоритм вычисления функций имеет линейную структуру.
6187. Розподільча логістика 117.5 KB
  Розподільча логістика План Поняття розподільчої логістики. Задачі розподільчої логістики. Логістичні канали та логістичні ланцюги. Розвиток інфраструктури товарних ринків. Ухвалення рішення з побудови системи розподілу...
6188. Дослідження бітових операцій над цілими значеннями 62 KB
  Дослідження бітових операцій над цілими значеннями Теоретичні відомості Бітові операції дозволяють обробляти цілі дані за допомогою операцій з їх бітовою структурою. Будь-які дані представляються у пам'яті комп'ютеру як ланцюг бітів. Біт...
6189. Определение моментов трения в подшипниках качения 55 KB
  Определение моментов трения в подшипниках качения Цель работы: определение моментов трения в шарикоподшипниках. Расчетные методы определения моментов трения в подшипниках качения Моменты трения Тп, Н.мм, в шарикоподшипниках с внут...