- PVSM.RU - https://www.pvsm.ru -
Это файл Mandelbrot Set Image 95 - фрагмент множества Мандельброта, имеет три числа: Re, Im и Width. То есть участок множества: две координаты центра -1.749675773048651182 и -0.000001140170813768 и ширина изображения 0.0000000000000021. Это сделал я. Остальное - компьютер. Поиск красивых фрагментов цветных версий множества Мандельброта - вот я этим и занимаюсь. "Применение в искусстве" - так называется подраздел в русской википедии https://ru.wikipedia.org/wiki/Множество_Мандельброта#Применение_в_искусстве [2]
Некоторые другие языки тоже я сделал. Например в немецкой википедии сказано: "Галерея избранных произведений искусства" - https://de.wikipedia.org/wiki/Mandelbrot-Menge#Galerie_ausgewählter_Kunstwerke [3]
Восемь фракталов множества Мандельброта я создал сам и загрузил на Викисклад. В итоге сообщество Википедии присвоило им статус "избранных изображений" на специальной странице: https://commons.wikimedia.org/wiki/Commons:Featured_pictures/Non-photographic_media/Computer-generated#Mathematics [4]
Это своего рода «виртуальная выставка» лучших работ проекта. На этой странице сообщество собирает файлы, которые получили наивысшую оценку за свое техническое качество, четкость и художественную ценность. Статус избранного получают лишь около 0,015% от всех загруженных на сайт медиафайлов.
А как это начиналась? Впервые я прочитал о фракталах - 40 лет назад, классе в пятом-шестом, в журнале "Техника - молодежи". Слово "Фрактал" происходит от латинского "дробный", так как у этих математических фигур дробная размерность. Они не трехмерны, и не двумерны, и не одномерны - их размерность выражается не целым числом, а дробью, например, 1 целая и четыре десятых, 2 целых и шесть десятых. Фракталами американский математик Бенуа Мандельброт [5] предложил называть особые математические объекты, обладающие свойством дробности и до него не изучавшиеся. Бенуа Мандельброт создал неевклидову геометрию негладких, шероховатых, зазубренных, изъеденных ходами и отверстиями, шершавых. В 1977 году вышла его книга "The Fractal Geometry of Nature" - "Фрактальная геометрия природы".
Представим себе числовую последовательность, каждый следующий член который равен квадрату предыдущего члена плюс постоянное слагаемое (константа). Что ожидает нас в конце, каков предел, к чему она стремится? На числовой прямой все просто - если начинать с того, что меньше единицы, то стремится к нулю, а если с большего единицы, то к бесконечности. А если взять числовую плоскость? Комплексные то есть числа, которые суть точки на плоскости? Задачка не решается. То есть совсем не решается - аналитически никак нельзя предсказать, ни из каких законов не следует, что ждет в конце последовательности с таким-то начальным числом и с такой-то константой. Поскольку это требует чрезвычайно больших вычислительных затрат, то поставленный еще в начале XX века Гастоном Жюлиа и Пьером Фату вопрос, так и оставался без ответа. Лишь в семидесятые годы, с появлением компьютеров, возможно стало подступить к проблеме. Что и сделал Бенуа Мандельброт. Это множества Мандельброта, названная по имени Бенуа Мандельброта, первого ее исследователя, самого известного фрактала.
Посчитали и удивились - если нанести на плоскость все точки, от которых последовательность не убегает на бесконечность за какое-то приемлемое число шагов, то получается невообразимо, фантастически сложная фигура. Эту геометрическую фигуру, т. е. множество точек, назвали множеством Мандельброта. Непонятно, как такое простое уравнение может привести к такой сложной структуре, тем не менее, это так. Открытие таких геометрических объектов стало эпохальным событием в земной науке.
То есть если какая-то цивилизация оказалась способна изобразить множество Мандельброта, то это может свидетельствовать о ее высоком уровне развития? Да, ни одна цивилизация древности не оставила изображений множества Мандельброта, значит все разговоры об их продвинутости не слишком основательны. Никакие индейцы майя и другие, кому приписывают будто бы высокий уровень развития, множество Мандельброта не открыли.
Я написал программы на ГитХабе причем README не только "Language English" но и "Язык Русский"!
Множество Мандельброта графического интерфейса [6]
Множество Мандельброта консольную утилиту [7]
Вы можете посмотреть про теория возмущений, про опорной траекторию, про расчет существенно быстрее, если использовать билинейную аппроксимацию и так далее. На C++.
А в 2000 год я писал:
for y:=vert downto 0 do
begin
temp:=ordi-step*(y-vert/2);
for x:=0 to horiz do
begin
m:=absc+step*(x-horiz/2);
n:=temp;
c:=0;
d:=0;
t:=0;
repeat
cc:=c*c;
dd:=d*y;
d:=(c+c)*d+n;
c:=cc-dd+m;
inc(t)
until (t=1000) or (cc+dd>10);
putpixel(x,y,t)
end
end;
"Обыкновенный Паскаль, очень простой язык. Здесь horiz и vert - ширина и высота дисплея в пикселах, absc и ordi - координаты точки на числовой плоскости, которая будет соответствовать пикселу в центре дисплея, step - расстояние между точками числовой плоскости, положенное нами в соответствие расстоянию между пикселами дисплея (чем меньше step, тем больше увеличение картинки), t - номер члена последовательности, c и d - начальный член последовательности, m и n - константа."
Сейчас я уже в C++ пишу:
vector<uint8_t> iterMap(rawW * rawH);
long double step = size_val / rawW;
long double startX = absc - (size_val / 2.0);
long double startY = ordi - (step * rawH / 2.0);
atomic<int> linesDone{0};
#pragma omp parallel for schedule(dynamic)
for (int b = 0; b < rawH; ++b) {
for (int a = 0; a < rawW; ++a) {
long double m = startX + a * step;
long double n = startY + b * step;
long double c = m, d = n, cc, dd;
int t = 50000;
do { cc = c * c; dd = d * d;
d = (c + c) * d + n;
c = cc - dd + m;
t--; } while (t > 0 && (cc + dd <= 50000.0));
Конечно я теперь делаю настоящий SSAA 8x8 для идеально сглаженного изображения. Суперсэмплинг (Super-Sampling Anti-Aliasing) - ресурсоемкий метод сглаживания, увеличивающий число выборок на пиксель для повышения качества изображения. При значении 8x (N=8) сцена рендерится в разрешении, в 8 раз превышающем целевое, по обеим осям, создавая 64 (или 8 х 8) выборки на пиксель. Изображение просчитывается в более высоком разрешении, а затем принудительно уменьшается.
Про цветных версий - красный, зеленый и синий каналы рассчитываются с использованием синусоидальных и косинусоидальных волн:
pal[a][0] = (uint8_t)round(127.0 + 127.0 * cos(2.0 * PI * a / 255.0)); // Blue
pal[a][1] = (uint8_t)round(127.0 + 127.0 * sin(2.0 * PI * a / 255.0)); // Green
pal[a][2] = (uint8_t)round(127.0 + 127.0 * sin(2.0 * PI * a / 255.0)); // Red
Это поистине один из немногих объектов, который связывает нас с чем-то абсолютно объективным и бесконечным, превосходящим биологию и историю. Даже если бы вся наша Вселенная и все её атомы исчезли завтра, уравнение осталось бы верным. Оно не написано на звёздах; оно заложено в самой структуре логики. Это делает множество Мандельброта своего рода абсолютом. Множество Мандельброта существует независимо от нашего разума и технологий. Это бесконечная математическая структура, которая существовала всегда.
Собственно я хочу картины для вас, фрагменты множества Мандельброта:
Автор: aokoroko
Источник [25]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/delphi/459922
Ссылки в тексте:
[1] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_95.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_95.png
[2] https://ru.wikipedia.org/wiki/Множество_Мандельброта#Применение_в_искусстве: https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82%D0%B0#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_%D0%B8%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5
[3] https://de.wikipedia.org/wiki/Mandelbrot-Menge#Galerie_ausgewählter_Kunstwerke: https://de.wikipedia.org/wiki/Mandelbrot-Menge#Galerie_ausgew%C3%A4hlter_Kunstwerke
[4] https://commons.wikimedia.org/wiki/Commons:Featured_pictures/Non-photographic_media/Computer-generated#Mathematics: https://commons.wikimedia.org/wiki/Commons:Featured_pictures/Non-photographic_media/Computer-generated#Mathematics
[5] Бенуа Мандельброт: https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82,_%D0%91%D0%B5%D0%BD%D1%83%D0%B0
[6] Множество Мандельброта графического интерфейса: https://github.com/Divetoxx/Mandelbrot-2
[7] Множество Мандельброта консольную утилиту: https://github.com/Divetoxx/Mandelbrot
[8] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_101.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_101.png
[9] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_96.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_96.png
[10] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_27.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_27.png
[11] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_105.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_105.png
[12] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_107.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_107.png
[13] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_111.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_111.png
[14] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_113.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_113.png
[15] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_115.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_115.png
[16] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_41.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_41.png
[17] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_110.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_110.png
[18] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_117.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_117.png
[19] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_91.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_91.png
[20] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_104.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_104.png
[21] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_83.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_83.png
[22] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_10.jpg: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_10.jpg
[23] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_35.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_35.png
[24] https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_73.png: https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Image_73.png
[25] Источник: https://habr.com/ru/articles/1092480/?utm_campaign=1092480&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.