Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 4
1

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

18.06.2014, 11:18. Показов 1922. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите сделать фрактал Кривой Гильберта с уровнями!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2014, 11:18
Ответы с готовыми решениями:

Кривая Гильберта в Делфи
Программное средство должно производить построение указанного фрактала исходя из различных...

Кривая по точкам
Привет. Скажите как сделать кривую по точкам и чтобы за эти точки можно было тянуть мышом и чтобы...

Кривая Коха
Программное средство должно производить построение указанного фрактала исходя из различных...

Кривая Серпинского
Помогите нарисовать кривую серпинского... Пожалуйста помогите..

3
3 / 3 / 4
Регистрация: 09.06.2014
Сообщений: 61
18.06.2014, 15:48 2
А в чем то вопрос стал? Показывайте свои наработки, посмотрим
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 4
18.06.2014, 17:50  [ТС] 3
Вопрос в том,как сделать анимированое построение ! Начинаться построение должно с малой кривой и постепенно увеличиваться или же наоборот(всё зависит от выбранного порядка).
У меня есть код полной Кривой Гильберта.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
unit gilbert_;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
var
  p: integer = 5;  // порядок кривой
  u: integer = 7;  // длина штриха
 
{ Кривая Гильберта состоит из четырех соединенных
  прямыми элементов: a,b,c и 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 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;
 
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 TForm1.FormPaint(Sender: TObject);
  begin
    Form1.Canvas.MoveTo(u,u);
    a(5,Form1.Canvas); // вычертить кривую Гильберта
  end;
 
end.
Добавлено через 25 минут
[]http://upload.wikimedia.org/wikipedia/commons/3/3a/Hilbert_curve.png[/]
вот образец
0
0 / 0 / 0
Регистрация: 17.06.2014
Сообщений: 4
18.06.2014, 18:18  [ТС] 4
Помогите нарисовать Кривую Гильберта в Delphi,нужно с помощью рекурсии,разбив на 6 порядков!
вот ход работы
Кривая Гильберта

а вот как примерно должен выглядеть сам проект
Кривая Гильберта
0
18.06.2014, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2014, 18:18
Помогаю со студенческими работами здесь

кривая безье
формула вторая праизводна для кривой безье хач у

Кривая Безье для любого количества точек
Здравствуйте. Есть несколько точек. Нужно построить кривую Безье по ним. Слышал, что вроде...

Кривая Безье, добавить возможность задания координат мышью
Есть программа, которая рисует кривую Безье по заданным в Edit'ах координатах. Подскажите,...

кривая дракона
Задание заключается в построении данного рисунка на Дельфи ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru