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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

Рейтинг@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 кб