LOGO
Главная Регистрация Вход RSS
Приветствую Вас, Гость
Категории раздела
Статистика
Яндекс.Метрика
Поделиться
Реклама
Вход на сайт
Популярное
[14.10.2015][ОГЭ]
Площадь четырёхугольника можно вычислить по формуле s=d1*d2*sin a/2 , где d1 и d2 — длины диагоналей четырехугольника, а —угол между диа (0)
[11.03.2016][ОГЭ]
Найдите площадь квадрата, описанного около окружности радиуса 9. (0)
[21.12.2014][ЕГЭ (П)]
Диагональ правильной четырёхугольной призмы наклонена к плоскости основания под углом 30°. Боковое ребро равно 3. Найдите диагональ призмы. (0)
[15.04.2015][ЕГЭ (П)]
В прямоугольном параллелепипеде ABCDA1B1C1D1 известны длины рёбер: АВ = 3, AD = 4, АА1 = 32. Найдите площадь сечения, про¬ходящего через вер (0)
[14.10.2015][ОГЭ]
12. На клетчатой бумаге с размером клетки 1x1 изображён параллелограмм. Найдите его пло¬щадь (0)
[21.12.2014][ЕГЭ (П)]
Корень(9 - 4*корень(5)) - корень(5) или √9-4√5-√5 (0)
[29.01.2016][ОГЭ]
Биссектриса равностороннего треугольника равна 9Корень(3) . Найдите его сторону. (0)
[11.02.2016][ОГЭ]
На клетчатой бумаге с размером клетки 1x1 изображена трапеция. Найдите длину её средней линии. (0)
[21.12.2014][ЕГЭ (П)]
В случайном эксперименте симметричную монету бросают триж¬ды. Найдите вероятность того, что решка выпадет все три раза (0)
[14.10.2015][ОГЭ]
После уценки телевизора его новая цена составила 0,57 старой. На сколько процентов уменьшилась цена телевизора в результате уценки? (0)
Свидетельство
Главная » Статьи » Программирование » Фракталы

Кривая Гильберта

 

 
 
var
 
  p: integer; // порядок кривой
 
  u: integer; // длина штриха
 
  { Кривую Гильберта можно получить путем
 
  соединения элементов а,b,с и d.
 
  Каждый элемент строит
 
  соответствующая процедура. }
 
procedure a(i: integer; canvas: TCanvas); forward;
procedure b(i: integer; canvas: TCanvas); forward;
procedure c(i: integer; canvas: TCanvas); forward;
procedure d(i: integer; canvas: TCanvas); forward;
 
  // Элементы кривой
   procedure b(i: integer; canvas: TCanvas);
 
  begin
 
  if i > 0 then begin
 
  c(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X-u,canvas.PenPos.Y);
 
  b(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y-u);
 
  b(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X+u, canvas.PenPos.Y);
 
  d(i-1, canvas);
 
  end;
 
  end;
  procedure c(i: integer; canvas: TCanvas);
 
  begin
 
  if i > 0 then begin
 
  b(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y-u);
 
  c (i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X-u,canvas.PenPos.Y);
 
  c(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y+u);
 
  a(i-1, canvas);
 
  end;
 
  end;
 
  procedure d(i: integer; canvas: TCanvas);
 
  begin
 
  if i > 0 then begin
 
  a(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y+u);
 
  d(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X+u,canvas.PenPos. Y) ;
 
  d(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y-u);
 
  b(i-1, canvas);
 
  end;
 
  end;
 
 
 
 
  procedure a(i: integer; canvas: TCanvas);
 
  begin
 
  if i > 0 then begin
 
  d(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X+u,canvas.PenPos.Y);
 
  a(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X,canvas.PenPos.Y+u);
 
  a(i-1, canvas);
 
  canvas.LineTo(canvas.PenPos.X-u,canvas.PenPos.Y);
 
  c (i-1, canvas);
 
  end;
 
  end;               
 
u:=strtoint(edit62.Text);
 image28.Canvas.MoveTo(u, u) ;
 
a(strtoint(edit63.Text),image28.Canvas);
 
 
Категория: Фракталы | Добавил: Ret-Ar (03.01.2014)
Просмотров: 2490 | Рейтинг: 0.0/0