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

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

Построения
на плоскости (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 Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
Borland Delphi 7.0

Для построения классического фракатал Дракон Хартера возьмем отрезок, на втором шаге повернем его на 90 вокруг одной из вершин и добавим новый полученный отрезок к исходному. Получим уголок из двух отрезков. Повторим описанную процедуру. Повернем уголок на 90о вокруг вершины и добавим полученную ломаную к исходной.

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

Для построения изображения нажмите кнопку "Button1"

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

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    procedure Button1Click(Sender: TObject);
    procedure Paint(x1,y1,x2,y2,k:Longint);
  private
    { Private declarations }
  public
   n: integer
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
// рекурсивная функция рисования кривой
procedure TForm1.Paint(x1,y1,x2,y2,k:Longint);
  var tx,ty:Longint;
  begin
  if n=1 then
  begin
  PaintBox1.Canvas.Pen.Color:=clRed;
  end else begin
  PaintBox1.Canvas.Pen.Color:=clRed;
  end;
   if k=0 then
    begin
     PaintBox1.Canvas.MoveTo(x1,y1);
     PaintBox1.Canvas.LineTo(x2,y2);
     Exit;
    end;
//  формулы вычисления точки, находящейся на середине отрезка и удаленной от прямой на такое расстояние,
//чтобы при соединении точки с концами отрезка с данной точкой
   tx := (x1+x2) div 2 + (y2-y1) div 2;
   ty := (y1+y2) div 2 - (x2-x1) div 2;
// рекурсивный вызов функции, соединяющих концы отрезка с данной точкой
   Paint(x2,y2,tx,ty,k-1);
   Paint(x1,y1,tx,ty,k-1);
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
Var x1,y1,x2,y2,k: Integer;
begin
 PaintBox1.Width := 1000;
 PaintBox1.Height:= 650;
 
 PaintBox1.Canvas.Brush.Color := clWhite;
 PaintBox1.Canvas.Rectangle(0,0,PaintBox1.width,PaintBox1.height);
 
// задаем начальные значения кривой и устанавливаем счетчик
 
 
     x1 := 200;
     y1 := 200;
     x2 := 500;
     y2 := 500;
     k  := 24;
     Paint(x1,y1,x2,y2,k);
 
 
end;
 
 
end.

Прикрепленный файлРазмер
Исходный код4.47 кб