Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2013, 16:22   #1
Irk@
 
Регистрация: 14.04.2013
Сообщений: 6
Сообщение Программа в Delphi - сделать фрактал "Закрученный квадрат".

Помогите сделать фрактал "Закрученный квадрат". Пожалуйста.
Irk@ вне форума Ответить с цитированием
Старый 26.04.2013, 15:00   #2
Irk@
 
Регистрация: 14.04.2013
Сообщений: 6
По умолчанию Программа в Delphi

Как сделать фрактал "Закрученный квадрат"
Изображения
Тип файла: jpg фрактал.jpg (76.0 Кб, 170 просмотров)
Irk@ вне форума Ответить с цитированием
Старый 26.04.2013, 16:21   #3
Irk@
 
Регистрация: 14.04.2013
Сообщений: 6
По умолчанию

Можете написать алгоритм?
Irk@ вне форума Ответить с цитированием
Старый 26.04.2013, 16:29   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Можете написать алгоритм?
1) Насколько могу судить, изображение не является изображением фрактала.
2) Картинки недостаточно для формального описания. Как именно расположены квадраты? Математически?
Abstraction вне форума Ответить с цитированием
Старый 26.04.2013, 18:19   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Чисто внешнее сходство:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, x, y, a: integer;
  p: array of tpoint;
const
  x0: integer = 300;
  y0: integer = 300;
  b: integer = 10;
  c: integer = 2;
  count: integer = 500;
begin
  setlength(p, 4);
  for i := 1 to count do
  begin
    x := x0 + round(i / c * cos(i / b));
    y := y0 + round(i / c * sin(i / b));
    a := i div b;
    for j := 0 to 3 do
    begin
      p[j].x := x + round(a * cos(i / b + pi * j / 2));
      p[j].y := y + round(a * sin(i / b + pi * j / 2));
    end;
    if (i mod 2 = 1) then
      canvas.Brush.Color := clblack
    else
      canvas.Brush.Color := clbtnface;
    canvas.Polygon(p);
  end;
  setlength(p, 0);
end;
Замечания Abstractionа в силе.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.05.2013, 15:29   #6
Irk@
 
Регистрация: 14.04.2013
Сообщений: 6
Вопрос

Можете объяснить как Вы сделали эту программу?
Irk@ вне форума Ответить с цитированием
Старый 21.05.2013, 15:57   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Хороший вопрос, спустя месяц после написания
Взял уравнение Архимедовой спирали - .
Перевел координаты из полярных в декартовы - .
Сдвинул полученные x и y на x0 и y0 соответственно и получил центры квадратов.
Рассчитал координаты вершин квадрата с учетом текущего угла поворота и длины стороны.
Нарисовал квадрат нужным цветом.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.05.2013, 13:37   #8
Irk@
 
Регистрация: 14.04.2013
Сообщений: 6
По умолчанию

Спасибо!!!!!
Irk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно сделать программу магический квадрат hpc Помощь студентам 0 18.11.2012 20:02
Сделать, чтобы пустой квадрат был в нижнем правом углу (игра пятнашки) Nikitos_ Паскаль, Turbo Pascal, PascalABC.NET 21 03.06.2012 22:04
Фрактал Коха в Delphi 7 foxy342 Помощь студентам 2 25.04.2011 18:34
!!! Можно ли сделать так,чтобы программа в Delphi работала с самим компьютером?!!! kotaina Общие вопросы Delphi 19 07.04.2011 13:40
Фрактал Дерево Пифагора Delphi yulia Помощь студентам 2 25.09.2008 08:27