Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

31.05.2012, 06:01. Просмотров 4291. Ответов 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 – постоянное целое число: чем оно больше единицы, тем большее количество цветов будет в построенном изображении.

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

Реализация алгоритма Мандельброта - C++
Знаю, этим уже давно никого не удивить, но я еще раз решил почтить память Бенуа Мандельброта простой коонсльной программой с реализацией...

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

На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов ур - C++
На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов уравнения). Найти две такие...

На плоскости заданы множество точек А и множество прямых B - C++
На плоскости заданы множество точек А и множество прямых B. Найти две такие различные точки из А, чтобы проходящая через них прямая была...

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

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

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

Добавлено через 55 минут
и ещё можно вас пропросить сделать кпопки с увеличением и уменьшением фрагтала в 2/4/6 раз
1
vxg
Модератор
3222 / 2025 / 231
Регистрация: 13.01.2012
Сообщений: 7,849
01.06.2012, 17:28 #4
в программе ровно столько строк что бы вы не смогли запутаться. если дело не идет на этом количестве строк никакие танцы не помогут. кнопку сделать не могу. могу подсказать как сделать)
0
14091994San9
1 / 1 / 0
Регистрация: 18.04.2010
Сообщений: 19
01.06.2012, 19:01  [ТС] #5
ну тогда подскажите как это сделать)
0
vxg
Модератор
3222 / 2025 / 231
Регистрация: 13.01.2012
Сообщений: 7,849
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
1
01.06.2012, 22:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2012, 22:30
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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