Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.77
14091994San9
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 19
#1

Множество Мандельброта - C++

31.05.2012, 06:01. Просмотров 3677. Ответов 5
Метки нет (Все метки)

Необходимо написать программу выполняющую построение фрагтала Мондельброта задающегося следующимися формулами:
Zj+1 = Zj^2 + C j = 1, 2, …N (1)
Где Zj = Xj + i*Yj Z1=0 ( X1=0, Y1=0)
C = a + i*b
Z^2j = X^2j – Y^2j + i*2* Xj * Yj
|Zj|= (X^2j + Y^2j)^(1/2)
Числа Zj и число С – комплексные числа.
Алгоритм вычислений и построения картинки
1. Для заданного значения С (т.е. для заданных чисел а и b - значения а и b лежат в интервале [-3, 3]) выполняем итерационные вычисления по формуле (1) и считаем число итераций, пока |Zj| не превысит 2 либо число выполненных итераций не станет больше заданного значения N (достаточно задать значение в интервале [50, 100] ).
2. На экране компьютера строим точку с координатами
(Целое(a*Mx) + сдвиг_по_X, Целое(b*My) + сдвиг_по_Y, Цвет),
где
Mx, Мy – масштабные коэффициенты, определяющие размер графической области изображения;
сдвиг_по_X и сдвиг_по_Y задают сдвиг начальной точки отсчета координат (на графическом экране точка с координатами (0, 0) находится в левом верхнем углу области для рисования);
Цвет – цвет текущей точки, определяющийся формулой:
Цвет = количество_выполненных_итераций*Const.
Здесь Const – постоянное целое число: чем оно больше единицы, тем большее количество цветов будет в построенном изображении.

Прошу помочь в решении данной задачи, только не очень заумный код пжлст
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 06:01     Множество Мандельброта
Посмотрите здесь:

Исправить ошибку в коде, рисующую фрактал Мандельброта с помощью CUDA - C++
uint* d_image_buffer; cudaAssertSuccess(cudaMalloc(&d_image_buffer, WIDTH * HEIGHT)); dim3 block_size(16, 16); dim3...

Множество точек.Найти множество треугльники - C++
ДАно 3n точек на плоскости , причем не какие три не лежат на одной прямой. Построить множество треугольников с вершинами в этих точках так...

Множество точек m - C++
Трям. Имеется условие: Задано множество точек m в трехмерном пространстве. Найти такую из них, что шар заданного радиуса с центром в...

Класс Множество - C++
Описать класс множество, позволяющий выполнять основные операции, добавление и удаление элемента, пересечение, объединение и разность.

Класс – множество - C++
Требуется написать программу , но при запуске очень много ошибок помогите!!! Задача 3 Задачи для самостоятельного решения Общее ...

Сформировать множество [К, 2К, 3К, 4К] - C++
Составить программа, которая формирует множество А где К - произвольное число, которое вводится.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3141 / 1943 / 214
Регистрация: 13.01.2012
Сообщений: 7,435
31.05.2012, 22:36     Множество Мандельброта #2
см. прикрепленный файл. можете еще поиграться с закомментированными стоками - там несколько из бесчисленного множества вариантов закраски. и почему вам самим не интересно сделать это?
Вложения
Тип файла: rar fractal.rar (212.6 Кб, 431 просмотров)
14091994San9
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 19
01.06.2012, 13:08  [ТС]     Множество Мандельброта #3
а подскажите пожалуйста где именно нада изменить чтобы поменялся цвет?

Добавлено через 55 минут
и ещё можно вас пропросить сделать кпопки с увеличением и уменьшением фрагтала в 2/4/6 раз
vxg
Модератор
3141 / 1943 / 214
Регистрация: 13.01.2012
Сообщений: 7,435
01.06.2012, 17:28     Множество Мандельброта #4
в программе ровно столько строк что бы вы не смогли запутаться. если дело не идет на этом количестве строк никакие танцы не помогут. кнопку сделать не могу. могу подсказать как сделать)
14091994San9
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 19
01.06.2012, 19:01  [ТС]     Множество Мандельброта #5
ну тогда подскажите как это сделать)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2012, 22:30     Множество Мандельброта
Еще ссылки по теме:

множество точек - C++
Задано множество точек, найти пару самых удаленных и самих близких плз помогите P.S. попроше напишите а то проеподша требует от простоту

Множество ошибок - C++
Суть вот в чём, при запуске игры вылезает ошибка(и). Хотелось бы узнать как решить эти проблемы? Вот скрины.

Класс множество - C++
Нужно написать класс множество с конструкторами, деструкторами, операторами. Так вот возник вопрос...как понимать тип данных...

Множество Man - C++
У меня есть класс Man. В нем записаны имя человека, возраст, рост, здоровье и еще другие значения Теперь хочу создать множество...

Тип множество - C++
Кто знает в делфи есть тип множество например set of char= , а в с++ есть аналог? или приходится довольствоваться массивами.

Класс «Множество» - C++
Всем привет) Сижу над этой задачей 2 день - это объектно-ориентированное программирование. Помогите пожалуйста с решением :wall: ...


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

Или воспользуйтесь поиском по форуму:
vxg
Модератор
3141 / 1943 / 214
Регистрация: 13.01.2012
Сообщений: 7,435
01.06.2012, 22:30     Множество Мандельброта #6
что бы поменялся цвет шаманим прямо перед return функции get_color. например вот такое я делал на delphi - очень красиво выходило
Pascal
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
function voltaic_arc_paint(z_Re, z_Im: Double;
  k, k_max: Integer): TColor;
var
  t: Integer;
  edge, co_color, r, g, b: Byte;
begin
  //путь (r, g, b): (1, 1, 0) - (0, 1, 0) - (0, 1, 1) - (0, 0, 1) - дальше
  //косое ребро по направлению (1, 0, 0);
  //1170 = 1024 + 128 + 16 + 2 - красиво;
  //4 основных рёбра по 256, последнее ребро 146; нулевое ребро - чёрное;
  //четвёртое ребро косое
 
  t := Trunc(1170 * (k_max - k) / k_max);
 
  edge := t div 256;
  co_color := t mod 256;
 
  r := 0;
  g := 0;
  b := 0;
 
  if edge = 1 then
  begin
    g := 255;
    r := 255 - co_color;
  end
  else if edge = 2 then
  begin
    g := 255;
    b := co_color;
  end
  else if edge = 3 then
  begin
    b := 255;
    g := 255 - co_color;
  end
  else if edge = 4 then
  begin
    b := 255 - co_color;
    r := co_color;
  end;
 
  Result := RGB(r, g, b);
end;
для масштабирования - размещаем кнопку на форме. в обработчике клика на эту кнопку пишем нечто изменяющее area_width и area_height в нужное количество раз.

Добавлено через 22 секунды
что бы поменялся цвет шаманим прямо перед return функции get_color. например вот такое я делал на delphi - очень красиво выходило
Pascal
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
function voltaic_arc_paint(z_Re, z_Im: Double;
  k, k_max: Integer): TColor;
var
  t: Integer;
  edge, co_color, r, g, b: Byte;
begin
  //путь (r, g, b): (1, 1, 0) - (0, 1, 0) - (0, 1, 1) - (0, 0, 1) - дальше
  //косое ребро по направлению (1, 0, 0);
  //1170 = 1024 + 128 + 16 + 2 - красиво;
  //4 основных рёбра по 256, последнее ребро 146; нулевое ребро - чёрное;
  //четвёртое ребро косое
 
  t := Trunc(1170 * (k_max - k) / k_max);
 
  edge := t div 256;
  co_color := t mod 256;
 
  r := 0;
  g := 0;
  b := 0;
 
  if edge = 1 then
  begin
    g := 255;
    r := 255 - co_color;
  end
  else if edge = 2 then
  begin
    g := 255;
    b := co_color;
  end
  else if edge = 3 then
  begin
    b := 255;
    g := 255 - co_color;
  end
  else if edge = 4 then
  begin
    b := 255 - co_color;
    r := co_color;
  end;
 
  Result := RGB(r, g, b);
end;
для масштабирования - размещаем кнопку на форме. в обработчике клика на эту кнопку пишем нечто изменяющее area_width и area_height в нужное количество раз.

Добавлено через 10 минут
более красочно по фракталам http://alphacity.netii.net/tree/prjs-graph.htm

Добавлено через 12 секунд
более красочно по фракталам http://alphacity.netii.net/tree/prjs-graph.htm
Yandex
Объявления
01.06.2012, 22:30     Множество Мандельброта
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru