Главная Регистрация Вход RSS
Приветствую Вас, Гость
Категории раздела
Случайное решение
[14.10.2015][ОГЭ]
На диаграмме представлены семь крупнейших по площади территории (в млн км2) стран мира. Какие из следующих утверждений верны? (0)
[19.09.2015][ЕГЭ (П)]
Пользователь предполагает, что его трафик составит 650 Мб в ме­сяц, и исходя из этого выбирает наиболее дешёвый тарифный план. Сколько рубле (0)
[01.02.2016][ЕГЭ (П)]
а) Решите уравнение sin(x)/cos(x+3pi/2)=1 Найдите все корни этого уравнения принадлежащие отрезку [-4pi;-5pi/2] (0)
[15.05.2015][ЕГЭ (П)]
На диаграмме показан средний балл участников 10 стран в тестиро¬вании учащихся 8-го класса по естествознанию в 2007 году (по 1000- балльной (0)
[17.08.2013][Pascal, Delphi, Lazarus]
Lazarus. Решение квадратного уравнения. (0)
[24.09.2015][ОГЭ]
В параллелограмме ABCD диагональ АС в 2 раза больше стороны АВ и ZACD =74°. Най¬дите угол между диагоналями параллелограм¬ма. Ответ дайте (0)
[11.04.2015][ЕГЭ (П)]
На диаграмме показана средняя температура воздуха в Симферо¬поле за каждый месяц 1988 года. По горизонтали указываются месяцы, по вертика (0)
[11.02.2016][ЕГЭ (П)]
Из пункта А круговой трассы, длина которой равна 30 км, одновременно в одном направлении стартовали два автомобилиста. Скорость первого равн (0)
Статистика
Яндекс.Метрика
Поделиться
Реклама
Вход на сайт
Популярное
[14.10.2015][ОГЭ]
Площадь четырёхугольника можно вычислить по формуле s=d1*d2*sin a/2 , где d1 и d2 — длины диагоналей четырехугольника, а —угол между диа (0)
[21.12.2014][ЕГЭ (П)]
Диагональ правильной четырёхугольной призмы наклонена к плоскости основания под углом 30°. Боковое ребро равно 3. Найдите диагональ призмы. (0)
[11.03.2016][ОГЭ]
Найдите площадь квадрата, описанного около окружности радиуса 9. (0)
[15.04.2015][ЕГЭ (П)]
В прямоугольном параллелепипеде ABCDA1B1C1D1 известны длины рёбер: АВ = 3, AD = 4, АА1 = 32. Найдите площадь сечения, про¬ходящего через вер (0)
[21.12.2014][ЕГЭ (П)]
В случайном эксперименте симметричную монету бросают триж¬ды. Найдите вероятность того, что решка выпадет все три раза (0)
[21.12.2014][ЕГЭ (П)]
Корень(9 - 4*корень(5)) - корень(5) или √9-4√5-√5 (0)
[29.01.2016][ОГЭ]
Биссектриса равностороннего треугольника равна 9Корень(3) . Найдите его сторону. (0)
[14.10.2015][ОГЭ]
После уценки телевизора его новая цена составила 0,57 старой. На сколько процентов уменьшилась цена телевизора в результате уценки? (0)
[14.10.2015][ОГЭ]
12. На клетчатой бумаге с размером клетки 1x1 изображён параллелограмм. Найдите его пло¬щадь (0)
[15.04.2015][ЕГЭ (П)]
13. Первый сплав содержит 5% меди, второй — 11% меди. Масса второго сплава больше массы первого на 4 кг. Из этих двух спла¬вов получили трет (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)
Просмотров: 2291 | Рейтинг: 0.0/0