Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/91: Рейтинг темы: голосов - 91, средняя оценка - 4.86
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1

Построение фрактала Мандельброта

20.01.2013, 18:45. Показов 21718. Ответов 220
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добавил поток для построения, но рано обрадовался: прога как зависала, так виснет и сейчас.
И как использовать все ядра процессора на все 100? Кто-нибудь знает?
Вложения
Тип файла: zip Mandelbrot.zip (847.5 Кб, 103 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2013, 18:45
Ответы с готовыми решениями:

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

Масштабирование фрактала Мандельброта
Помогите, пожалуйста, есть программа рисующая фрактал Мандельброта, которое выполняет масштабирование, там используются комплексные числа. ...

Генерация фрактала Мандельброта. NASM + OpenGL
Всем здравия! Помогите мне, нужна помощь опытных людей. Замучился совсем. Вроде делаю всё как надо, но выводит непонятно что. Основная...

220
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
25.01.2013, 09:37  [ТС]
Студворк — интернет-сервис помощи студентам
А где указывать его значение? В FormCreate указал - пишет, что не может '.' быть присвоена левой части! Что за фигня? Я это ещё долго искал в System.SysUtils.TFormatSettings.Create(б ез Create не работает).DecimalSeparator:='.'
Не работает!
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
25.01.2013, 09:39
DecimalSeparator:='.'; // вот и вся премудрость
0
251 / 156 / 31
Регистрация: 07.10.2012
Сообщений: 401
25.01.2013, 10:51
В ХЕ надо так:
Delphi
1
FormatSettings.DecimalSeparator := '.';
1
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
25.01.2013, 21:36  [ТС]
Ладно, проехали. По поводу Z=0 - точка входит в границу. Цикл не выполняется. Строит медленно. Что Ultra fractal делает за 10 мс, то моя прога делает за 20 секунд!
Ваши предложения?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
25.01.2013, 21:52
Это же учебная задача, насколько это видно по подходу ?
Так какая нафих разница медленно или быстро ?
Работает твоя шняга ? Препод доволен ? Ну и гуляй себе вольно !) Чего заморачиваться-то всякой хренью ?)

На это ж не один год "упорного мозгового штурма" нужно потратить, чтобы оно заработало в 20 / 0.01 = 2000 раз быстрее))
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
25.01.2013, 23:15  [ТС]
mss, при чём тут препод или комиссия? Я для себя пишу. Не каждый поймёт, что такое красота фракталов. А мозговой штурм у меня ежедневно блин. Если я буду увеличивать глубже, чем поддерживает тип Extended, то оно нахрен зависнет, поэтому надо, чтобы всё было продумано до мелочей)))
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
03.02.2013, 23:51  [ТС]
Народ, тут любому понятно будет, что этот поток ПРОСТО НЕ ПАШЕТ С ГРАФИКОЙ! Да, графона тут никакого, только вычисления. Нужно сделать быструю визуализацию в ОТДЕЛЬНОМ потоке, чтобы он не мешал вычислять! Помогите, пожалуйста...
Вложения
Тип файла: rar Mandelbrot.rar (592.6 Кб, 11 просмотров)
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
09.03.2013, 19:57  [ТС]
Реально, как запустить 2 потока одновременно? Чтобы шла визуализация и вычисление не затрудняясь? У меня четырёхъядерный 3.2ГГц проц. Я способен на большее! Fractal Extreme и даже Ultra fractal это показывают! Тут нужна комплексная плоскость! А пока прога забита преобразованиями, куда уж ей к вычислениям! Помогите ускорить!!! Я смотрел слабейшие проги для построения - строили мгновенно!
Я сам далеко не уйду в этом деле. Помогите, пожалуйста...
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.03.2013, 20:00
Цитата Сообщение от SeryZone Посмотреть сообщение
Я способен на большее!
Это заметно, особенно с учетом того что с момента первого твоего поста в этой теме прошло более полутора месяцев, а воз и ныне там.
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
09.03.2013, 21:01  [ТС]
mss, спасибо, кэп, но твои комменты тоже ни капли воз не подвинули)))))))
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
09.03.2013, 21:30
Вот статейку нашел интересную:
http://fadedead.org/museum/man... -introduce
1
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
09.03.2013, 23:19  [ТС]
gorfil, прочитал до конца. Я не знаком с таким как "CreateDIBSection" и так далее.
А на этой плоскости как я буду указывать координаты изображения и зум? Я раньше пытался разобраться - но у меня ничего не вышло. Неужели прийдётся писать новый код?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.03.2013, 23:32
Цитата Сообщение от SeryZone Посмотреть сообщение
Неужели прийдётся писать новый код?
Придется новый.
Тот который ты бесплодно мучаешь который уже месяц, совершенно не присособлен для поставленной тобой цели.
И дело даже не в DIB (для этого у TBitmap, кстати, есть метод Dormant) - в первую очередь следует сосредоточиться именно на распараллеливании алгоритма самих вычислений, а не отрисовки результатов этих вычислений.
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
10.03.2013, 12:41  [ТС]
Получаем квадратное изображение. В статье очень много теории, а сама реализация теории забирает много времени. У меня 720x720 строит за... несколько секунд с 500 итерациями. В If-часть можно добавить взаимодействие с множеством Жюлиа: http://elementy.ru/posters/fractals/how_to_draw

Добавлено через 11 минут
И про DIB-версию я так и не понял. Как её создать:
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
10.03.2013, 13:22
Автор статьи обещается исходник выложить. Правда не понятно, когда это случится.
С DIB я не работал.
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
10.03.2013, 14:10  [ТС]
Множество Мандельброта
Здесь добрый форумчанин выложил недоработанный исходник. Там разрешение низкое, на высоком и не собирается строить, зато строит на низком мгновенно, но там сложная конструкция BitMap'а
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
10.03.2013, 17:37  [ТС]
А вот и моя версия.
Кто-нибудь слышал, что такое Boundary Tracing или Periodicity checking? Я находил информацию только на английском языке. Эти методы позволяют просчитывать границу, не затрачивая драгоценного времени. Всё вычислило, а границу - прорисовало. Да и вообще, почему у меня считает за 3 секунды, потом 3 секунды визуализирует, когда у автора статейки считает за 72 миллисекунды? Просто считает, не говоря о визуализации. У меня так и пишет "вычисления завершены", потом идёт визуализация. Кто поможет?
Вложения
Тип файла: zip The Mandelbrot Set.zip (8.3 Кб, 9 просмотров)
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
10.03.2013, 17:55  [ТС]
• Необходимо отрисовку проводить в 2 шага, т.е делать 2 прохода по изображению.
• В первом проходе, нужно определить, какое минимальное значение итераций возвращает функция фрактала.
• Во втором проходе, необходимо увеличить глубину (максимальное количество итераций) на то минимальное число, которое мы получили в предыдущем проходе, а перед определением цвета, из каждого значения функции фрактала, это значение вычитать.
• В итоге, мы получим картинку, в которой область с меньшим количеством итераций всегда начинается с нуля, а не с какого-то линейно возрастающего по мере увеличения числа.
Вот так надо оптимизировать. И минимум/максимум итераций сделать глобальными переменными. А то 3 секунды на поиск минимума и максимума - это слишком.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33465 / 21564 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
10.03.2013, 20:18
SeryZone, не там блох ищешь, проблема - не в поиске минимума и максимума, хотя для их поиска тоже можно использовать не самописные функции, а стандартные MinIntValue/MaxIntValue, достаточно скастовать эту двумерную матрицу в одномерный массив точно такого же размера.

Главная проблема твоего кода - это постоянное обращение к canvas.pixels, это ОЧЕНЬ медленно. Смотри аттач (память освободи сам, просто проверь, есть ли увеличение скорости отрисовки). Этот код тоже еще можно ускорить, но это уже сам...
Вложения
Тип файла: zip mdbset.zip (79.5 Кб, 10 просмотров)
0
 Аватар для SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
11.03.2013, 16:39  [ТС]
Спасибо, стало быстрее. опять вернёмся к потокам и распараллеливанию вычислений
Цитата Сообщение от UI Посмотреть сообщение
Этот код тоже еще можно ускорить
Каким образом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2013, 16:39

Написать код для создания фрактала Мандельброта и Кантора
Кто может предоставить код для создания фрактала Мандельброта и Кантора. Не могу найти реализацию этих двух фракталов на C#.

Построение фрактала
При нажатие на btn2 выдает ошибку ссылаясь на строку 55 и выдает такое сообщение ...

Анимационное построение звёдного фрактала
Необходимо нарисовать звёздный фрактал с использованием анимации. Есть программа рисующая фрактал без анимации.

Построение трехмерного фрактала: как установить точки
Хотел построить трехмерный фрактал в wpf как установить точки? пробовал кубы рисовать вокруг точек но получается слишком большой массив...

Построение фрактала «Треугольник Серпинского» с возможностью изменения числа образующих примитивов с помощью клавиш
Доброго времени суток. Помогите реализовать программу на языке Java реализующую построение фрактала «Треугольник Серпинского» с...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru