Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
PascalABC.NET
Статья по теме: 

Запуск кода:
Для того чтобы запустить код нужно открыть приложение PascalABC.NET. Далее нужно скопировать код в рабочую зону и нажать на кнопку "Выполнить". После чего произойдет компиляция кода и с помощью модуля GraphABC появится окно в котором уже и будет построен фрактал.

Код программы: 

Program Selim; 
   uses GraphABC;
 
   type
 
 
 
     квадрат = class
        const минимальнаяДлинаСтороныКвадрата = 2;
        private
           x : integer; y: integer; длинаСтороныКвадрата: integer;
           внутренниеКвадраты : array [1..8] of квадрат;
 
           procedure создать8квадратов();
 
        public
          constructor Create(x : integer; y: integer; длинаСтороныКвадрата: integer);
          procedure Нарисовать();
     end;
 
 
 
 
   procedure квадрат.создать8квадратов();
   var
     новаяДлинаСтороны,i : integer;
    begin
     новаяДлинаСтороны := round( длинаСтороныКвадрата / 3 );
     if новаяДлинаСтороны > минимальнаяДлинаСтороныКвадрата then
       begin
         внутренниеКвадраты[1] := new квадрат( x, y, новаяДлинаСтороны);
         внутренниеКвадраты[2] := new квадрат( x + новаяДлинаСтороны, y, новаяДлинаСтороны);
         внутренниеКвадраты[3] := new квадрат( x + 2 * новаяДлинаСтороны, y, новаяДлинаСтороны);
         внутренниеКвадраты[4] := new квадрат( x, y + новаяДлинаСтороны, новаяДлинаСтороны);
         внутренниеКвадраты[5] := new квадрат( x + 2 *новаяДлинаСтороны, y + новаяДлинаСтороны, новаяДлинаСтороны);
         внутренниеКвадраты[6] := new квадрат( x, y + 2 * новаяДлинаСтороны, новаяДлинаСтороны);
         внутренниеКвадраты[7] := new квадрат( x + новаяДлинаСтороны, y  + 2 * новаяДлинаСтороны, новаяДлинаСтороны);
         внутренниеКвадраты[8] := new квадрат( x + 2 * новаяДлинаСтороны, y  + 2 * новаяДлинаСтороны, новаяДлинаСтороны);
       end
      else
      begin
      //если мы находимся на глубине и длина стороны меньше минимальнаяДлинаСтороныКвадрата то квадраты не создаются и они равны NIL
        for i:=1 to 8 do
          begin
            внутренниеКвадраты[i] := NIL;
          end;
      end;
    end;
 
 
 
    constructor квадрат.Create(x : integer; y: integer; длинаСтороныКвадрата: integer);
    begin
      Self.x := x;
      Self.y := y;
      Self.длинаСтороныКвадрата := длинаСтороныКвадрата;
    end;
 
    procedure квадрат.Нарисовать();
    var
       новаяДлина,i : integer;
    begin
       SetBrushColor(clBlack); //устанавливаем цвет кисти
       //закрашиваем первый квадрат
       FillRect(x, y,  x + длинаСтороныКвадрата, y + длинаСтороныКвадрата);
       SetBrushColor(clWhite); //устанавливаем белый цвет кисти
       //закрашиваем центральный квадрат
       новаяДлина := round( длинаСтороныКвадрата / 3);
       FillRect(x + новаяДлина, y + новаяДлина,  x + 2 * новаяДлина, y + 2 * новаяДлина);
 
       //формируем 8 новых квадратов и у каждого вызываем метод Нарисовать
       //при этом в каждом вызове формируется еще 8 квадратов и рисуются они
       // и в каждом из вызовов снова формируются 8 квадратов и так опускаемся вглубь до самого маленького 
       // квадратика со стороной не меньше минимальнаяДлинаСтороныКвадрата
 
       создать8квадратов;
       //если мы находимся на глубине и длина стороны меньше минимальнаяДлинаСтороныКвадрата то квадраты не создаются и они равны NIL
       //иначе рисуем
       for i:=1 to 8 do
         begin
           if внутренниеКвадраты[i] <> NIL then внутренниеКвадраты[i].Нарисовать;
         end;
 
    end;
 
  var
    стартовыйКвадрат : квадрат;
 
    стартоваяДлина : integer;
 
   begin
     стартоваяДлина := 600;
     SetWindowSize(стартоваяДлина, стартоваяДлина); //задаем размер графического окна
 
 
     стартовыйКвадрат :=  new квадрат(0,0,стартоваяДлина);//координаты начального угла и длина стороны квадрата
     стартовыйКвадрат.Нарисовать;
 
 
end.

Прикрепленный файлРазмер
Selim_examples_frac_1.zip1.26 кб