Кривая Гильберта - Фракталы - Программирование - Каталог статей - Учись!
Главная Регистрация Вход RSS
Приветствую Вас, Гость
Категории раздела
Случайное решение
[19.09.2015][ЕГЭ (П)]
Вероятность того, что новый тостер прослужит больше года, равна 0,98. Вероятность того, что он прослужит больше двух лет, равна 0,86. Найдит (0)
[24.09.2015][ОГЭ]
Выписано несколько последовательных чле­нов геометрической прогрессии: 20; х; 5; -2,5; ... Найдите член прогрессии, обозна­ченный буквой х (0)
[30.12.2013][Фракталы]
Ковер Серпинского (0)
[01.11.2015][ОГЭ]
Арифметическая прогрессия задана условиями: а1= -5, а(n + 1) = аn + 12. Найдите сумму первых 9 её членов. (0)
[28.02.2016][ЕГЭ (П)]
Решите уравнение Корень(х + 4) = 7 (0)
[19.09.2015][ОГЭ]
В период распродажи магазин снижал цены дважды: в первый раз — на 50%, во второй — на 10%. Сколько рублей стал стоить чайник после второго с (0)
[21.11.2013][Школьная документация]
ИНСТРУКЦИЯ по правилам безопасного поведения на водоемах в летний, осенне-зимний и весенний период (0)
[10.04.2014][ОГЭ]
Тройка чисел x, y и z удовлетворяют неравенству x-y>z. Какому из следующих неравенств не удовлетворяет эта тройка чисел. (0)
Реклама
Статистика
Яндекс.Метрика
Поделиться
Реклама
Вход на сайт
Популярное
[14.10.2015][ОГЭ]
Площадь четырёхугольника можно вычислить по формуле s=d1*d2*sin a/2 , где d1 и d2 — длины диагоналей четырехугольника, а —угол между диа (0)
[21.12.2014][ЕГЭ (П)]
Диагональ правильной четырёхугольной призмы наклонена к плоскости основания под углом 30°. Боковое ребро равно 3. Найдите диагональ призмы. (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)
[14.10.2015][ОГЭ]
После уценки телевизора его новая цена составила 0,57 старой. На сколько процентов уменьшилась цена телевизора в результате уценки? (0)
[15.04.2015][ЕГЭ (П)]
13. Первый сплав содержит 5% меди, второй — 11% меди. Масса второго сплава больше массы первого на 4 кг. Из этих двух спла¬вов получили трет (0)
[11.03.2016][ОГЭ]
Найдите площадь квадрата, описанного около окружности радиуса 9. (0)
[14.10.2015][ОГЭ]
10. Отрезки АС и BD — диаметры окружности с центром О. Угол АСВ равен 78° . Найдите угол AOD. Ответ дайте в градусах (0)
[21.12.2014][ЕГЭ (П)]
В кубе ABCDA1B1C1D1 точки Е, F, Е1 и F1 являются серединами рёбер ВС, DC, B1C1 и D1C1 соответственно. Объём призмы, отсекаемой от куба плоск (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)
Просмотров: 2083 | Рейтинг: 0.0/0
-->