Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2015, 19:05   #1
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию Объясните код(графика) - Pascal ABC

Программа строит фрактал " Кривая дракона", помогите разобраться в коде, если можно добавте побольше комментариев, буду очень благодарен
Код:
Код:
Uses CRT, GraphABC;
Const Z= 13; {Glubina Fraktala}
Procedure ris(x1,y1,x2,y2,k:integer);
Var xn,yn:integer;
Begin
     If k>0 Then
     Begin
          xn:=(x1+x2) div 2 +(y2-y1) div 2;
          yn:=(y1+y2) div 2 -(x2-x1) div 2;
          ris(x1,y1,xn,yn,k-1);
          ris(x2,y2,xn,yn,k-1)
     End
     Else
          line(x1,y1,x2,y2)
 
End;
{Main program}
Begin
     SetWindowCaption('Фракталы: Кривая Дракона');
     SetWindowSize(700,512);
     ClearWindow;
     ris(200,300,500,300,Z);
     Repeat Until KeyPressed
End.
Max00766 вне форума Ответить с цитированием
Старый 25.11.2015, 22:09   #2
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

Очень актуально
Max00766 вне форума Ответить с цитированием
Старый 25.11.2015, 22:25   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
//Подключаем модули для
Uses CRT, //Экрана
       GraphABC; //И графики
//Устанавливаем глубину фрактала константой
Const Z= 13; {Glubina Fraktala}

//Описываем рекурсивную процедуру рисования
//ветвей фрактала
//Которая будет принимать координаты и номер глубины
Procedure ris(x1,y1,x2,y2,k:integer);
Var xn,yn:integer;
Begin
   //Если глубина фрактала не достигнута
     If k>0 Then
     Begin
       //Вычисляем новые координаты ее следующей ветви и
          xn:=(x1+x2) div 2 +(y2-y1) div 2;
          yn:=(y1+y2) div 2 -(x2-x1) div 2;
      //Заряжаем ее рисование
          ris(x1,y1,xn,yn,k-1);
          ris(x2,y2,xn,yn,k-1)
     End
     Else
     //Иначе рисуем линию - часть фрактала
          line(x1,y1,x2,y2)
 
End;
{Main program}
Begin
//Задаем заголовок окна по-русски
     SetWindowCaption('Фракталы: Кривая Дракона');
//Размер окна
     SetWindowSize(700,512);
//Очищаем его от мусора перед рисованием
     ClearWindow;
// И просим нарисовать фрактал
     ris(200,300,500,300,Z);
//Ждем нажатия клавиши на клавиатуре, чтоб полюбоваться нарисованным
     Repeat Until KeyPressed
End.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2015, 22:40   #4
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
//Подключаем модули для
Uses CRT, //Экрана
       GraphABC; //И графики
//Устанавливаем глубину фрактала константой
Const Z= 13; {Glubina Fraktala}

//Описываем рекурсивную процедуру рисования
//ветвей фрактала
//Которая будет принимать координаты и номер глубины
Procedure ris(x1,y1,x2,y2,k:integer);
Var xn,yn:integer;
Begin
   //Если глубина фрактала не достигнута
     If k>0 Then
     Begin
       //Вычисляем новые координаты ее следующей ветви и
          xn:=(x1+x2) div 2 +(y2-y1) div 2;
          yn:=(y1+y2) div 2 -(x2-x1) div 2;
      //Заряжаем ее рисование
          ris(x1,y1,xn,yn,k-1);
          ris(x2,y2,xn,yn,k-1)
     End
     Else
     //Иначе рисуем линию - часть фрактала
          line(x1,y1,x2,y2)
 
End;
{Main program}
Begin
//Задаем заголовок окна по-русски
     SetWindowCaption('Фракталы: Кривая Дракона');
//Размер окна
     SetWindowSize(700,512);
//Очищаем его от мусора перед рисованием
     ClearWindow;
// И просим нарисовать фрактал
     ris(200,300,500,300,Z);
//Ждем нажатия клавиши на клавиатуре, чтоб полюбоваться нарисованным
     Repeat Until KeyPressed
End.
Спасибо большое
Max00766 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
графика в Pascal ABC Анна_ Помощь студентам 1 30.03.2012 19:51
Графика Pascal ABC maxon56 Помощь студентам 2 24.04.2011 19:18
Графика (стрельба из пушки по цели) перевести код с Турбопаскаля в Pascal ABC DANTES68 Помощь студентам 0 07.04.2011 22:27